https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71042
--- Comment #9 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> --- Right, I wasn't aware of this RPM symbol handling. I see that guard pointer can be obtained on aarch64 by: uintptr_t get_guard_ptr (void) { jmp_buf jb; uintptr_t expected, mangled; setjmp (jb); asm volatile ("adr %0, ." : "=r" (expected)); mangled = ((uintptr_t*)jb)[11]; return expected ^ mangled; } So I think we can add a local variable to hold its value and set tsan_rtl_aarch64.S to use it instead.