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

--- Comment #58 from Florian Weimer <fw at gcc dot gnu.org> ---
(In reply to Dominik Vogt from comment #57)
> libsanitizer miscalculates the Pcs in the backtrace:
> 
>     #0 0x1000839 in NullDeref
>     #1 0x10006c1 in main
>     #2 0x3fff6e23069 in __libc_start_main
>     #3 0x100073d
> 
> These are all odd addresses, pointing to the last byte of the previous
> instruction.  In case of null-deref-1.c that byte belongs to some
> instrumentation code that is associated with line 11.

The address decrement should only happen for call instructions.  This thread
has some background how this is supposed to work:

  https://gcc.gnu.org/ml/gcc/2016-10/msg00165.html
  https://gcc.gnu.org/ml/gcc/2016-10/msg00170.html

Here's my attempt to clarify this for the x86-64 ABI:

  https://www.sourceware.org/ml/gnu-gabi/2016-q4/msg00012.html

Reply via email to