https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111736
--- Comment #3 from Alexander Monakov <amonakov at gcc dot gnu.org> --- Sorry, the second half of my comment is confusing. To clarify, ASan works fine for TLS data (the compiler knows that TLS base is at fs:0; libsanitizer uses some hacks to initialize shadow for TLS anyway, so it seems explicit registration is not needed). The difference is, &x produces an address in the generic address space by using the knowledge that fs:0 stores the segment base. For __seg_{fs,gs} that can't be done, and &m is the offset w.r.t segment base.