]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
x86-64: Fix misleading R_X86_64_TPOFF32 error message
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 9 Sep 2025 20:32:27 +0000 (13:32 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 10 Sep 2025 13:13:43 +0000 (06:13 -0700)
commit86aa0d170d96f380c0e626efc4d40c7d2f27a93a
treef459a72f953ac279fb8ca753f722f1f304b81487
parentf04c774b7d49912cc9dcb0cd613e819edb21c3a2
x86-64: Fix misleading R_X86_64_TPOFF32 error message

R_X86_64_TPOFF32 relocation of local-exec TLS model can only be used in
executable, not in a shared library, even if the source code is compiled
with -fPIC.  Change the linker error message from

relocation R_X86_64_TPOFF32 against symbol `foo' can not be used when making a shared object; recompile with -fPIC

to

relocation R_X86_64_TPOFF32 against symbol `foo' can not be used when making a shared object; replace local-exec with initial-exec TLS model

bfd/

PR ld/33408
* elf64-x86-64.c (elf_x86_64_need_pic): Suggest "replace
local-exec with initial-exec TLS model" for R_X86_64_TPOFF32.
(elf_x86_64_scan_relocs): Drop ABI_64_P check for
R_X86_64_TPOFF32.

ld/

PR ld/33408
* testsuite/ld-x86-64/tls-le-pic-1-x32.d: New file.
* testsuite/ld-x86-64/tls-le-pic-1.d: Likewise.
* testsuite/ld-x86-64/tls-le-pic-1.s: Likewise.
* testsuite/ld-x86-64/tls-le-pic-2-x32.d: Likewise.
* testsuite/ld-x86-64/tls-le-pic-2.d: Likewise.
* testsuite/ld-x86-64/tls-le-pic-2.s: Likewise.
* testsuite/ld-x86-64/tls-le-pic-3-x32.d: Likewise.
* testsuite/ld-x86-64/tls-le-pic-3.d: Likewise.
* testsuite/ld-x86-64/tls-le-pic-3.s: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
bfd/elf64-x86-64.c
ld/testsuite/ld-x86-64/tls-le-pic-1-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-1.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-1.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-2-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-2.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-2.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-3-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-3.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/tls-le-pic-3.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp