On Mon, Nov 1, 2021 at 6:18 PM Martin Sebor via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Patch 1 in the series detects a small subset of uses of pointers > made indeterminate by calls to deallocation functions like free > or C++ operator delete. To control the conditions the warnings > are issued under the new -Wuse-after-free= option provides three > levels. At the lowest level the warning triggers only for > unconditional uses of freed pointers and doesn't warn for uses > in equality expressions. Level 2 warns also for come conditional > uses, and level 3 also for uses in equality expressions. > > I debated whether to make level 2 or 3 the default included in > -Wall. I decided on 3 for two reasons: 1) to raise awareness > of both the problem and GCC's new ability to detect it: using > a pointer after it's been freed, even only in principle, by > a successful call to realloc, is undefined, and 2) because > it's trivial to lower the level either globally, or locally > by suppressing the warning around such misuses. > > I've tested the patch on x86_64-linux and by building Glibc > and Binutils/GDB. It triggers a number of times in each, all > due to comparing invalidated pointers for equality (i.e., level > 3). I have suppressed these in GCC (libiberty) by a #pragma, > and will see how the Glibc folks want to deal with theirs (I > track them in BZ #28521). > > The tests contain a number of xfails due to limitations I'm > aware of. I marked them pr?????? until the patch is approved. > I will open bugs for them before committing if I don't resolve > them in a followup. > > Martin
Hi, I'm just wondering how this fares compared to the static analyzer's -Wanalyzer-use-after-free; could you compare and contrast them for us? Thanks, Eric