http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58543

--- Comment #5 from Yury Gribov <y.gribov at samsung dot com> ---
> I guess you mean *un*poison here.

Right you are!

> My understanding is that in the loop above, we are setting the memory
> pointed to by frame_shadow_base + { 0, 4, 8, 12, 16} to zero.
>
> And in the code below, we are preparing to set the memory pointed to by
> frame_shadow_base + {24, 28} to zero.

Exactly.

>   add  r3, r4, #24   ; r3 gets invalid value here

> Why is r3 invalid?  It's being set to #24,
> so that the strb r2, [r3] below writes a zero byte to [r4,#24].

Not really - it's set to #40 because r4 was changed to #16 inside the loop

> Would it be possible that you file it
> so that I can understand better what is going on?

Sure - simply compile the attached repro with `-O0 -fsanitize-address'. But
note that you need to use ARM target because x86 does not trigger this bug
(most probably because it uses different code path in asan_clear_shadow).

-Y

Reply via email to