[binutils-gdb] aarch64: Use section names for empty stub symbols

Richard Earnshaw rearnsha@sourceware.org
Fri Jan 9 10:21:23 GMT 2026


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8b908f3199007f27dee25cc1024d5148490fdc73

commit 8b908f3199007f27dee25cc1024d5148490fdc73
Author: Richard Earnshaw <rearnsha@arm.com>
Date:   Tue Dec 16 14:04:10 2025 +0000

    aarch64: Use section names for empty stub symbols
    
    If the target symbol for a stub was empty we would previously end up
    using an anonymous stub name of the form ___veneer.  To make things a
    little clearer use the section symbol for the target section in this
    case.  We now end up with veneer symbols like __.text_veneer.
    
    Adjusted the tests accordingly.

Diff:
---
 bfd/elfnn-aarch64.c                               |  7 ++-
 ld/testsuite/ld-aarch64/farcall-b-section.d       | 10 ++--
 ld/testsuite/ld-aarch64/farcall-bl-section.d      | 10 ++--
 ld/testsuite/ld-aarch64/protections/bti-far-1.d   | 18 ++++----
 ld/testsuite/ld-aarch64/protections/bti-far-2.d   | 16 +++----
 ld/testsuite/ld-aarch64/protections/bti-far-opt.d | 56 +++++++++++------------
 6 files changed, 60 insertions(+), 57 deletions(-)

diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 0e0200a47db..a3fd1dd7561 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -4494,6 +4494,8 @@ _bfd_aarch64_add_call_stub_entries (bool *stub_changed, bfd *output_bfd,
 		    = bfd_elf_string_from_elf_section (input_bfd,
 						       symtab_hdr->sh_link,
 						       sym->st_name);
+		  if (sym_name == NULL || sym_name[0] == 0)
+		    sym_name = bfd_section_name (sym_sec);
 		}
 	      else
 		{
@@ -4629,8 +4631,9 @@ _bfd_aarch64_add_call_stub_entries (bool *stub_changed, bfd *output_bfd,
 	      stub_entry->h = hash;
 	      stub_entry->st_type = st_type;
 
-	      if (sym_name == NULL)
-		sym_name = "unnamed";
+	      if (sym_name == NULL || sym_name[0] == 0)
+		sym_name = bfd_section_name (section);
+
 	      len = sizeof (STUB_ENTRY_NAME) + strlen (sym_name);
 	      stub_entry->output_name = bfd_alloc (htab->stub_bfd, len);
 	      if (stub_entry->output_name == NULL)
diff --git a/ld/testsuite/ld-aarch64/farcall-b-section.d b/ld/testsuite/ld-aarch64/farcall-b-section.d
index 40b10720953..fd83c25d00e 100644
--- a/ld/testsuite/ld-aarch64/farcall-b-section.d
+++ b/ld/testsuite/ld-aarch64/farcall-b-section.d
@@ -8,20 +8,20 @@
 Disassembly of section .text:
 
 .* <_start>:
-    1000:	1400000a 	b	1028 <___veneer>
-    1004:	14000005 	b	1018 <___veneer>
+    1000:	1400000a 	b	1028 <__\.foo_veneer>
+    1004:	14000005 	b	1018 <__\.foo_veneer>
     1008:	d65f03c0 	ret
     100c:	d503201f 	nop
-    1010:	1400000e 	b	1048 <___veneer\+0x20>
+    1010:	1400000e 	b	1048 <__\.foo_veneer\+0x20>
     1014:	d503201f 	nop
 
-.* <___veneer>:
+.* <__\.foo_veneer>:
     1018:	90040010 	adrp	x16, 8001000 <bar>
     101c:	91001210 	add	x16, x16, #0x4
     1020:	d61f0200 	br	x16
     1024:	00000000 	udf	#0
 
-.* <___veneer>:
+.* <__\.foo_veneer>:
     1028:	90040010 	adrp	x16, 8001000 <bar>
     102c:	91000210 	add	x16, x16, #0x0
     1030:	d61f0200 	br	x16
diff --git a/ld/testsuite/ld-aarch64/farcall-bl-section.d b/ld/testsuite/ld-aarch64/farcall-bl-section.d
index b3ed36fbb94..665d9a4ef7e 100644
--- a/ld/testsuite/ld-aarch64/farcall-bl-section.d
+++ b/ld/testsuite/ld-aarch64/farcall-bl-section.d
@@ -8,20 +8,20 @@
 Disassembly of section .text:
 
 .* <_start>:
-    1000:	9400000a 	bl	1028 <___veneer>
-    1004:	94000005 	bl	1018 <___veneer>
+    1000:	9400000a 	bl	1028 <__\.foo_veneer>
+    1004:	94000005 	bl	1018 <__\.foo_veneer>
     1008:	d65f03c0 	ret
     100c:	d503201f 	nop
-    1010:	1400000e 	b	1048 <___veneer\+0x20>
+    1010:	1400000e 	b	1048 <__\.foo_veneer\+0x20>
     1014:	d503201f 	nop
 
-.* <___veneer>:
+.* <__\.foo_veneer>:
     1018:	90040010 	adrp	x16, 8001000 <bar>
     101c:	91001210 	add	x16, x16, #0x4
     1020:	d61f0200 	br	x16
     1024:	00000000 	udf	#0
 
-.* <___veneer>:
+.* <__\.foo_veneer>:
     1028:	90040010 	adrp	x16, 8001000 <bar>
     102c:	91000210 	add	x16, x16, #0x0
     1030:	d61f0200 	br	x16
diff --git a/ld/testsuite/ld-aarch64/protections/bti-far-1.d b/ld/testsuite/ld-aarch64/protections/bti-far-1.d
index eb295cffbe8..8ee26614385 100644
--- a/ld/testsuite/ld-aarch64/protections/bti-far-1.d
+++ b/ld/testsuite/ld-aarch64/protections/bti-far-1.d
@@ -36,19 +36,19 @@ Disassembly of section \.text:
 
 0000000000020000 <_start>:
    20000:	97ffe008 	bl	18020 <foo@plt>
-   20004:	94000007 	bl	20020 <___veneer>
+   20004:	94000007 	bl	20020 <__\.far_veneer>
    20008:	94000001 	bl	2000c <baz>
 
 000000000002000c <baz>:
    2000c:	d65f03c0 	ret
-   20010:	1400000a 	b	20038 <___veneer\+0x18>
+   20010:	1400000a 	b	20038 <__\.far_veneer\+0x18>
    20014:	d503201f 	nop
 
-0000000000020018 <___bti_veneer>:
+0000000000020018 <__\.text_bti_veneer>:
    20018:	d503245f 	bti	c
    2001c:	17fffffc 	b	2000c <baz>
 
-0000000000020020 <___veneer>:
+0000000000020020 <__\.far_veneer>:
    20020:	90091910 	adrp	x16, 12340000 <foo>
    20024:	9100c210 	add	x16, x16, #0x30
    20028:	d61f0200 	br	x16
@@ -57,13 +57,13 @@ Disassembly of section \.text:
 Disassembly of section \.far:
 
 0000000012340000 <foo>:
-    12340000:	9400000e 	bl	12340038 <___veneer>
+    12340000:	9400000e 	bl	12340038 <__\.text_veneer>
 
 0000000012340004 <bar>:
-    12340004:	9400000d 	bl	12340038 <___veneer>
+    12340004:	9400000d 	bl	12340038 <__\.text_veneer>
     12340008:	94000004 	bl	12340018 <__foo_veneer>
     1234000c:	00000000 	udf	#0
-    12340010:	14000010 	b	12340050 <___veneer\+0x18>
+    12340010:	14000010 	b	12340050 <__\.text_veneer\+0x18>
     12340014:	d503201f 	nop
 
 0000000012340018 <__foo_veneer>:
@@ -72,11 +72,11 @@ Disassembly of section \.far:
     12340020:	d61f0200 	br	x16
 	\.\.\.
 
-0000000012340030 <___bti_veneer>:
+0000000012340030 <__\.far_bti_veneer>:
     12340030:	d503245f 	bti	c
     12340034:	17fffff4 	b	12340004 <bar>
 
-0000000012340038 <___veneer>:
+0000000012340038 <__\.text_veneer>:
     12340038:	90f6e710 	adrp	x16, 20000 <_start>
     1234003c:	91006210 	add	x16, x16, #0x18
     12340040:	d61f0200 	br	x16
diff --git a/ld/testsuite/ld-aarch64/protections/bti-far-2.d b/ld/testsuite/ld-aarch64/protections/bti-far-2.d
index cb59b372fe8..db5dcab5c4d 100644
--- a/ld/testsuite/ld-aarch64/protections/bti-far-2.d
+++ b/ld/testsuite/ld-aarch64/protections/bti-far-2.d
@@ -11,7 +11,7 @@ Disassembly of section \.text:
 
 0000000000020000 <_start>:
    20000:	9400000e 	bl	20038 <__foo_veneer>
-   20004:	94000007 	bl	20020 <___veneer>
+   20004:	94000007 	bl	20020 <__\.far_veneer>
    20008:	94000001 	bl	2000c <baz>
 
 000000000002000c <baz>:
@@ -19,11 +19,11 @@ Disassembly of section \.text:
    20010:	14000010 	b	20050 <__foo_veneer\+0x18>
    20014:	d503201f 	nop
 
-0000000000020018 <___bti_veneer>:
+0000000000020018 <__\.text_bti_veneer>:
    20018:	d503245f 	bti	c
    2001c:	17fffffc 	b	2000c <baz>
 
-0000000000020020 <___veneer>:
+0000000000020020 <__\.far_veneer>:
    20020:	90091910 	adrp	x16, 12340000 <foo>
    20024:	91008210 	add	x16, x16, #0x20
    20028:	d61f0200 	br	x16
@@ -38,24 +38,24 @@ Disassembly of section \.text:
 Disassembly of section \.far:
 
 0000000012340000 <foo>:
-    12340000:	9400000a 	bl	12340028 <___veneer>
+    12340000:	9400000a 	bl	12340028 <__\.text_veneer>
 
 0000000012340004 <bar>:
-    12340004:	94000009 	bl	12340028 <___veneer>
+    12340004:	94000009 	bl	12340028 <__\.text_veneer>
     12340008:	97fffffe 	bl	12340000 <foo>
     1234000c:	00000000 	udf	#0
-    12340010:	1400000c 	b	12340040 <___veneer\+0x18>
+    12340010:	1400000c 	b	12340040 <__\.text_veneer\+0x18>
     12340014:	d503201f 	nop
 
 0000000012340018 <__foo_bti_veneer>:
     12340018:	d503245f 	bti	c
     1234001c:	17fffff9 	b	12340000 <foo>
 
-0000000012340020 <___bti_veneer>:
+0000000012340020 <__\.far_bti_veneer>:
     12340020:	d503245f 	bti	c
     12340024:	17fffff8 	b	12340004 <bar>
 
-0000000012340028 <___veneer>:
+0000000012340028 <__\.text_veneer>:
     12340028:	90f6e710 	adrp	x16, 20000 <_start>
     1234002c:	91006210 	add	x16, x16, #0x18
     12340030:	d61f0200 	br	x16
diff --git a/ld/testsuite/ld-aarch64/protections/bti-far-opt.d b/ld/testsuite/ld-aarch64/protections/bti-far-opt.d
index ce202815c9a..433d705b2ac 100644
--- a/ld/testsuite/ld-aarch64/protections/bti-far-opt.d
+++ b/ld/testsuite/ld-aarch64/protections/bti-far-opt.d
@@ -36,7 +36,7 @@ Disassembly of section \.text:
 
 0000000000020000 <_start>:
    20000:	97ffe008 	bl	18020 <foo@plt>
-   20004:	9400000d 	bl	20038 <___veneer>
+   20004:	9400000d 	bl	20038 <__\.far_veneer>
    20008:	94000001 	bl	2000c <baz>
 
 000000000002000c <baz>:
@@ -59,45 +59,45 @@ Disassembly of section \.text:
 
 0000000000020024 <baz_pacibsp>:
    20024:	d503237f 	pacibsp
-   20028:	1400000c 	b	20058 <___bti_veneer\+0x8>
+   20028:	1400000c 	b	20058 <__\.text_bti_veneer\+0x8>
    2002c:	d503201f 	nop
 
-0000000000020030 <___bti_veneer>:
+0000000000020030 <__\.text_bti_veneer>:
    20030:	d503245f 	bti	c
    20034:	17fffff6 	b	2000c <baz>
 
-0000000000020038 <___veneer>:
+0000000000020038 <__\.far_veneer>:
    20038:	90091910 	adrp	x16, 12340000 <foo>
    2003c:	9102a210 	add	x16, x16, #0xa8
    20040:	d61f0200 	br	x16
 	\.\.\.
 
-0000000000020050 <___bti_veneer>:
+0000000000020050 <__\.text_bti_veneer>:
    20050:	d503245f 	bti	c
    20054:	17ffffef 	b	20010 <baz_bti_>
 
 Disassembly of section \.far:
 
 0000000012340000 <foo>:
-    12340000:	94000032 	bl	123400c8 <___veneer>
-    12340004:	9400001d 	bl	12340078 <___veneer>
-    12340008:	94000022 	bl	12340090 <___veneer>
-    1234000c:	94000035 	bl	123400e0 <___veneer>
-    12340010:	9400003a 	bl	123400f8 <___veneer>
-    12340014:	94000013 	bl	12340060 <___veneer>
-    12340018:	94000026 	bl	123400b0 <___veneer>
+    12340000:	94000032 	bl	123400c8 <__\.text_veneer>
+    12340004:	9400001d 	bl	12340078 <__\.text_veneer>
+    12340008:	94000022 	bl	12340090 <__\.text_veneer>
+    1234000c:	94000035 	bl	123400e0 <__\.text_veneer>
+    12340010:	9400003a 	bl	123400f8 <__\.text_veneer>
+    12340014:	94000013 	bl	12340060 <__\.text_veneer>
+    12340018:	94000026 	bl	123400b0 <__\.text_veneer>
 
 000000001234001c <bar>:
     1234001c:	1400000b 	b	12340048 <__foo_veneer>
-    12340020:	1400002a 	b	123400c8 <___veneer>
-    12340024:	14000015 	b	12340078 <___veneer>
-    12340028:	1400001a 	b	12340090 <___veneer>
-    1234002c:	1400002d 	b	123400e0 <___veneer>
-    12340030:	14000032 	b	123400f8 <___veneer>
-    12340034:	1400000b 	b	12340060 <___veneer>
-    12340038:	1400001e 	b	123400b0 <___veneer>
+    12340020:	1400002a 	b	123400c8 <__\.text_veneer>
+    12340024:	14000015 	b	12340078 <__\.text_veneer>
+    12340028:	1400001a 	b	12340090 <__\.text_veneer>
+    1234002c:	1400002d 	b	123400e0 <__\.text_veneer>
+    12340030:	14000032 	b	123400f8 <__\.text_veneer>
+    12340034:	1400000b 	b	12340060 <__\.text_veneer>
+    12340038:	1400001e 	b	123400b0 <__\.text_veneer>
     1234003c:	00000000 	udf	#0
-    12340040:	14000034 	b	12340110 <___veneer\+0x18>
+    12340040:	14000034 	b	12340110 <__\.text_veneer\+0x18>
     12340044:	d503201f 	nop
 
 0000000012340048 <__foo_veneer>:
@@ -106,47 +106,47 @@ Disassembly of section \.far:
     12340050:	d61f0200 	br	x16
 	\.\.\.
 
-0000000012340060 <___veneer>:
+0000000012340060 <__\.text_veneer>:
     12340060:	90f6e710 	adrp	x16, 20000 <_start>
     12340064:	91008210 	add	x16, x16, #0x20
     12340068:	d61f0200 	br	x16
 	\.\.\.
 
-0000000012340078 <___veneer>:
+0000000012340078 <__\.text_veneer>:
     12340078:	90f6e710 	adrp	x16, 20000 <_start>
     1234007c:	91014210 	add	x16, x16, #0x50
     12340080:	d61f0200 	br	x16
 	\.\.\.
 
-0000000012340090 <___veneer>:
+0000000012340090 <__\.text_veneer>:
     12340090:	90f6e710 	adrp	x16, 20000 <_start>
     12340094:	91005210 	add	x16, x16, #0x14
     12340098:	d61f0200 	br	x16
 	\.\.\.
 
-00000000123400a8 <___bti_veneer>:
+00000000123400a8 <__\.far_bti_veneer>:
     123400a8:	d503245f 	bti	c
     123400ac:	17ffffdc 	b	1234001c <bar>
 
-00000000123400b0 <___veneer>:
+00000000123400b0 <__\.text_veneer>:
     123400b0:	90f6e710 	adrp	x16, 20000 <_start>
     123400b4:	91009210 	add	x16, x16, #0x24
     123400b8:	d61f0200 	br	x16
 	\.\.\.
 
-00000000123400c8 <___veneer>:
+00000000123400c8 <__\.text_veneer>:
     123400c8:	90f6e710 	adrp	x16, 20000 <_start>
     123400cc:	9100c210 	add	x16, x16, #0x30
     123400d0:	d61f0200 	br	x16
 	\.\.\.
 
-00000000123400e0 <___veneer>:
+00000000123400e0 <__\.text_veneer>:
     123400e0:	90f6e710 	adrp	x16, 20000 <_start>
     123400e4:	91006210 	add	x16, x16, #0x18
     123400e8:	d61f0200 	br	x16
 	\.\.\.
 
-00000000123400f8 <___veneer>:
+00000000123400f8 <__\.text_veneer>:
     123400f8:	90f6e710 	adrp	x16, 20000 <_start>
     123400fc:	91007210 	add	x16, x16, #0x1c
     12340100:	d61f0200 	br	x16


More information about the Binutils-cvs mailing list