https://sourceware.org/bugzilla/show_bug.cgi?id=24784
Bug ID: 24784 Summary: elf_x86_64_check_tls_transition should allow R_X86_64_GOTPCREL (-fno-plt) Product: binutils Version: 2.33 (HEAD) Status: UNCONFIRMED Severity: normal Priority: P2 Component: ld Assignee: unassigned at sourceware dot org Reporter: maskray at google dot com Target Milestone: --- thread_local int a; int main() { return a; } % g++ -fno-plt -fpic a.cc -Wa,-mrelax-relocations=no -fuse-ld=bfd /usr/bin/ld.bfd: /tmp/ccLggG8h.o: TLS transition from R_X86_64_TLSGD to R_X86_64_GOTTPOFF against `a' at 0x8 in section `.text' failed /usr/bin/ld.bfd: final link failed: Nonrepresentable section on output collect2: error: ld returned 1 exit status static thread_local int a; int main() { return a; } % g++ -fno-plt -fpic a.cc -Wa,-mrelax-relocations=no -fuse-ld=bfd /usr/bin/ld.bfd: /tmp/ccO9KvlL.o: TLS transition from R_X86_64_TLSGD to R_X86_64_TPOFF32 against `_ZL1a' at 0x8 in section `.text' failed /usr/bin/ld.bfd: final link failed: Nonrepresentable section on output collect2: error: ld returned 1 exit status Due to -Wa,-mrelax-relocations=no, R_X86_64_GOTPCREL instead of R_X86_64_GOTPCRELX is generated. a9: callq *(%rip) 00000000000000ad: R_X86_64_GOTPCREL __tls_get_addr-4 // bfd/elf-x86-64.c:elf_x86_64_check_tls_transition ... if (largepic) return r_type == R_X86_64_PLTOFF64; else if (indirect_call) return r_type == R_X86_64_GOTPCRELX; // It should allow R_X86_64_GOTPCREL else return (r_type == R_X86_64_PC32 || r_type == R_X86_64_PLT32); -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils