Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/share/mk



On Thu, Aug 03, 2023 at 23:30:31 +0900, Rin Okuyama wrote:

> On 2023/08/03 23:23, Valery Ushakov wrote:
> > On Thu, Aug 03, 2023 at 13:33:27 +0000, Rin Okuyama wrote:
> > 
> > > -Wuse-after-free for GCC 12 is premature. It fires on a common idiom:
> > > 
> > > 	newbuf = realloc(buf, size);
> > > 	p = newbuf + (p - buf);
> > > 
> > > Let shut this up for GCC 12 (with hoping it gets improved for 13!).
> > 
> > C99 says
> > 
> >         J.2  Undefined behavior
> > 
> >         [#1]   The   behavior   is   undefined   in   the  following
> >         circumstances:
> > [...]
> >           -- The  value of a pointer to an object whose lifetime has
> >              ended is used (6.2.4).
> > 
> > 
> > Yes, for the "obvious" implementation of pointers as addresses the
> > above idiom happens to work, but it doesn't make that idiom any less
> > UB.
> 
> Ah, I only thought about "obvious" impl. Thank you for kind
> explanation! I will revert them for now.

We should fix those cases that gcc12 found.

While it may seem like a stretch of imagination (e.g. compiling C to
JVM or something like that, where the pointer is actually a nontrivial
object), "fat" function pointers on itanium were a mundane thing and
caused their fair share of problems for code that naively assumed
trivial "address-only" pointers.  I would imagine UB sanitizers will
trip up on that idiom too...

Thanks!

-uwe


Home | Main Index | Thread Index | Old Index