From: Richard Earnshaw Date: Tue, 16 Dec 2025 14:04:10 +0000 (+0000) Subject: aarch64: Use section names for empty stub symbols X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b908f3199007f27dee25cc1024d5148490fdc73;p=thirdparty%2Fbinutils-gdb.git 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 --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 101c: 91001210 add x16, x16, #0x4 1020: d61f0200 br x16 1024: 00000000 udf #0 -.* <___veneer>: +.* <__\.foo_veneer>: 1028: 90040010 adrp x16, 8001000 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 101c: 91001210 add x16, x16, #0x4 1020: d61f0200 br x16 1024: 00000000 udf #0 -.* <___veneer>: +.* <__\.foo_veneer>: 1028: 90040010 adrp x16, 8001000 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 - 20004: 94000007 bl 20020 <___veneer> + 20004: 94000007 bl 20020 <__\.far_veneer> 20008: 94000001 bl 2000c 000000000002000c : 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 -0000000000020020 <___veneer>: +0000000000020020 <__\.far_veneer>: 20020: 90091910 adrp x16, 12340000 20024: 9100c210 add x16, x16, #0x30 20028: d61f0200 br x16 @@ -57,13 +57,13 @@ Disassembly of section \.text: Disassembly of section \.far: 0000000012340000 : - 12340000: 9400000e bl 12340038 <___veneer> + 12340000: 9400000e bl 12340038 <__\.text_veneer> 0000000012340004 : - 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 -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 000000000002000c : @@ -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 -0000000000020020 <___veneer>: +0000000000020020 <__\.far_veneer>: 20020: 90091910 adrp x16, 12340000 20024: 91008210 add x16, x16, #0x20 20028: d61f0200 br x16 @@ -38,24 +38,24 @@ Disassembly of section \.text: Disassembly of section \.far: 0000000012340000 : - 12340000: 9400000a bl 12340028 <___veneer> + 12340000: 9400000a bl 12340028 <__\.text_veneer> 0000000012340004 : - 12340004: 94000009 bl 12340028 <___veneer> + 12340004: 94000009 bl 12340028 <__\.text_veneer> 12340008: 97fffffe bl 12340000 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 -0000000012340020 <___bti_veneer>: +0000000012340020 <__\.far_bti_veneer>: 12340020: d503245f bti c 12340024: 17fffff8 b 12340004 -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 - 20004: 9400000d bl 20038 <___veneer> + 20004: 9400000d bl 20038 <__\.far_veneer> 20008: 94000001 bl 2000c 000000000002000c : @@ -59,45 +59,45 @@ Disassembly of section \.text: 0000000000020024 : 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 -0000000000020038 <___veneer>: +0000000000020038 <__\.far_veneer>: 20038: 90091910 adrp x16, 12340000 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 Disassembly of section \.far: 0000000012340000 : - 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 : 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 -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