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

--- Comment #12 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Created attachment 40050
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40050&action=edit
unreduced testcase

Indeed it look like gcc simply ignores the attribute:

g++ -fPIC -O2 -g -c tsan_rtl.ii
vs.
clang++ -fPIC -O2 -g -c tsan_rtl.ii

gcc:
  cur_thread()->ignore_interceptors++;
        .byte   0x66
        leaq    _ZN6__tsan22cur_thread_placeholderE@tlsgd(%rip), %rdi   #
        .value  0x6666
        rex64
        call    __tls_get_addr@PLT      #

clang:
        movq    _ZN6__tsan22cur_thread_placeholderE@GOTTPOFF(%rip), %rax
        incl    %fs:131736(%rax)
        movb    $1,
_ZZN6__tsan10InitializeEPNS_11ThreadStateEE14is_initialized(%rip)
        leaq    .L.str.8(%rip), %rax

And indeed if I compile only tsan_rtl.cc with clang and the rest with gcc,
threadsanitzer works fine.

Reply via email to