[PATCH] x86-64: Update R_X86_64_TPOFF32 error message

H.J. Lu hjl.tools@gmail.com
Wed Sep 10 19:19:33 GMT 2025


Change R_X86_64_TPOFF32 error message from

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

to

relocation R_X86_64_TPOFF32 against symbol `foo' can not be used when making a shared object; local-exec is incompatible with -shared

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: Updated.
	* testsuite/ld-x86-64/tls-le-pic-1.d: 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-3-x32.d: Likewise.
	* testsuite/ld-x86-64/tls-le-pic-3.d: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
---
 bfd/elf64-x86-64.c                        | 2 +-
 ld/testsuite/ld-x86-64/tls-le-pic-1-x32.d | 2 +-
 ld/testsuite/ld-x86-64/tls-le-pic-1.d     | 2 +-
 ld/testsuite/ld-x86-64/tls-le-pic-2-x32.d | 2 +-
 ld/testsuite/ld-x86-64/tls-le-pic-2.d     | 2 +-
 ld/testsuite/ld-x86-64/tls-le-pic-3-x32.d | 2 +-
 ld/testsuite/ld-x86-64/tls-le-pic-3.d     | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index ad99cf6754e..236cff97346 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -1718,7 +1718,7 @@ elf_x86_64_need_pic (struct bfd_link_info *info,
       object = _("a shared object");
       if (!pic)
 	pic = (howto->type == R_X86_64_TPOFF32
-	       ? _("; replace local-exec with initial-exec TLS model")
+	       ? _("; local-exec is incompatible with -shared")
 	       : _("; recompile with -fPIC"));
     }
   else
diff --git a/ld/testsuite/ld-x86-64/tls-le-pic-1-x32.d b/ld/testsuite/ld-x86-64/tls-le-pic-1-x32.d
index b0824c4ae10..29df9ec6bec 100644
--- a/ld/testsuite/ld-x86-64/tls-le-pic-1-x32.d
+++ b/ld/testsuite/ld-x86-64/tls-le-pic-1-x32.d
@@ -1,4 +1,4 @@
 #source: tls-le-pic-1.s
 #as: --x32
 #ld: -shared -melf32_x86_64
-#error: .*: 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
+#error: .*: relocation R_X86_64_TPOFF32 against symbol `foo' can not be used when making a shared object; local-exec is incompatible with -shared
diff --git a/ld/testsuite/ld-x86-64/tls-le-pic-1.d b/ld/testsuite/ld-x86-64/tls-le-pic-1.d
index 6db5f029e75..9726c5c60c6 100644
--- a/ld/testsuite/ld-x86-64/tls-le-pic-1.d
+++ b/ld/testsuite/ld-x86-64/tls-le-pic-1.d
@@ -1,3 +1,3 @@
 #as: --64
 #ld: -shared -melf_x86_64
-#error: .*: 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
+#error: .*: relocation R_X86_64_TPOFF32 against symbol `foo' can not be used when making a shared object; local-exec is incompatible with -shared
diff --git a/ld/testsuite/ld-x86-64/tls-le-pic-2-x32.d b/ld/testsuite/ld-x86-64/tls-le-pic-2-x32.d
index e16395a5568..b4ebf5ac78f 100644
--- a/ld/testsuite/ld-x86-64/tls-le-pic-2-x32.d
+++ b/ld/testsuite/ld-x86-64/tls-le-pic-2-x32.d
@@ -1,4 +1,4 @@
 #source: tls-le-pic-2.s
 #as: --x32
 #ld: -shared -melf32_x86_64
-#error: .*: relocation R_X86_64_TPOFF32 against undefined symbol `foo' can not be used when making a shared object; replace local-exec with initial-exec TLS model
+#error: .*: relocation R_X86_64_TPOFF32 against undefined symbol `foo' can not be used when making a shared object; local-exec is incompatible with -shared
diff --git a/ld/testsuite/ld-x86-64/tls-le-pic-2.d b/ld/testsuite/ld-x86-64/tls-le-pic-2.d
index 0e718e01ebc..90ca63429e7 100644
--- a/ld/testsuite/ld-x86-64/tls-le-pic-2.d
+++ b/ld/testsuite/ld-x86-64/tls-le-pic-2.d
@@ -1,3 +1,3 @@
 #as: --64
 #ld: -shared -melf_x86_64
-#error: .*: relocation R_X86_64_TPOFF32 against undefined symbol `foo' can not be used when making a shared object; replace local-exec with initial-exec TLS model
+#error: .*: relocation R_X86_64_TPOFF32 against undefined symbol `foo' can not be used when making a shared object; local-exec is incompatible with -shared
diff --git a/ld/testsuite/ld-x86-64/tls-le-pic-3-x32.d b/ld/testsuite/ld-x86-64/tls-le-pic-3-x32.d
index f6731daa991..ed832e4b00a 100644
--- a/ld/testsuite/ld-x86-64/tls-le-pic-3-x32.d
+++ b/ld/testsuite/ld-x86-64/tls-le-pic-3-x32.d
@@ -1,4 +1,4 @@
 #source: tls-le-pic-3.s
 #as: --x32
 #ld: -shared -melf32_x86_64
-#error: .*: relocation R_X86_64_TPOFF32 against `foo' can not be used when making a shared object; replace local-exec with initial-exec TLS model
+#error: .*: relocation R_X86_64_TPOFF32 against `foo' can not be used when making a shared object; local-exec is incompatible with -shared
diff --git a/ld/testsuite/ld-x86-64/tls-le-pic-3.d b/ld/testsuite/ld-x86-64/tls-le-pic-3.d
index 987e370ad17..84970679498 100644
--- a/ld/testsuite/ld-x86-64/tls-le-pic-3.d
+++ b/ld/testsuite/ld-x86-64/tls-le-pic-3.d
@@ -1,3 +1,3 @@
 #as: --64
 #ld: -shared -melf_x86_64
-#error: .*: relocation R_X86_64_TPOFF32 against `foo' can not be used when making a shared object; replace local-exec with initial-exec TLS model
+#error: .*: relocation R_X86_64_TPOFF32 against `foo' can not be used when making a shared object; local-exec is incompatible with -shared
-- 
2.51.0



More information about the Binutils mailing list