https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109446

--- Comment #12 from rguenther at suse dot de <rguenther at suse dot de> ---
On Wed, 12 Apr 2023, marxin at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109446
> 
> --- Comment #9 from Martin Li?ka <marxin at gcc dot gnu.org> ---
> (In reply to Richard Biener from comment #8)
> > (In reply to Jakub Jelinek from comment #7)
> > > (In reply to Richard Biener from comment #6)
> > > > not sure if we should prevent all of those transforms.  But the 
> > > > question is
> > > > why ASAN doesn't instrument the generated aggregate copy?  Maybe because
> > > > in C/C++ you cannot write an aggregate array copy?
> > > 
> > > We do instrument those.  But only instrument them by checking the first 
> > > and
> > > last byte
> > > of the copy, not all bytes in between (because that would be for inline
> > > checking too large - we'd need to emit inline a loop over those bytes).
> > 
> > OK, that's lack of an appropriate API then?  But still the first and last
> > byte should be sufficient to detect the problem (but maybe I'm missing
> > something here).
> 
> No, because the last byte is out of redzone:
> 
> =>0x7ffff5300000: f1 f1 f1 f1 00 00 00[f3]f3 f3 f3 f3 00 00 00 00
> 
> the 'f3' redzone is covering 5*8 bytes after the data type only.

OK, so it's lack of an API then.  The alternative would be to
do sth similar to stack-checking - instrument every 5*8 byte,
possibly up to some limit.  Or, as you probably suggest, avoid
folding memcpy with size larger than 5*8 byte inline.

Reply via email to