[PATCH v4 4/5] AArch64 BTI/PAC PLT tests: remove RWX permissions on segments

Matthieu Longo matthieu.longo@arm.com
Wed Jun 11 11:12:35 GMT 2025


On 2025-06-10 17:43, Richard Earnshaw wrote:
> On 22/05/2025 15:35, Matthieu Longo wrote:
>> The bti-far.ld and bti-plt.ld scripts don't provide information enough 
>> to the
>> linker to assess the right set of permisssions on segments (i.e. Read/ 
>> Write/Execute).
>> This insufficiency caused the linker to bundle all the sections in a 
>> same segment
>> with the union of all the required permissions, i.e. RWX.
>> A segment with such lax permissions constitutes a security hole, so 
>> the linker
>> emits the following warning message:
>>      <ELF file> has a LOAD segment with RWX permissions.
>> This warning message is noisy in the tests, and has no reason to exist.
>>
>> This issue can be addressed in two ways:
>> - either by providing the right set of permissions on a section so 
>> that the
>>    linker assigns them to a segment with compatible permissions.
>> - or by providing alignment constraints so that the linker can move 
>> the sections
>>    automatically to a new segment and set the right permission for 
>> non-executable
>>    data.
>>
>> The second option seems to be the preferred approach, even if not 
>> explicitly
>> recommended. Examples of linker scripts for AArch64 are available at [1].
>> The fixes in bti-far.ld and bti-plt.ld are the same, except that bti- 
>> far.ld also
>> contains a ".far" section, to make sure that it generates the 
>> trampolines correctly.
>>
>> [1]: https://developer.arm.com/documentation/dui0474/m/gnu-ld-script- 
>> support-in
>>       -armlink/default-gnu-ld-scripts-used-by-armlink/default-ld- 
>> script-when
>>       -building-an-executable?lang=en
>> ---
>>   .../protections/bti-and-memory-seal-plt-1-a.d | 10 +++----
>>   .../ld-aarch64/protections/bti-far-1.d        |  4 +--
>>   .../ld-aarch64/protections/bti-far-opt.d      |  4 +--
>>   .../ld-aarch64/protections/bti-far.ld         | 26 ++++++++++++++-----
>>   .../ld-aarch64/protections/bti-pac-plt-1-a.d  |  6 ++---
>>   .../ld-aarch64/protections/bti-pac-plt-1-b.d  |  6 ++---
>>   .../ld-aarch64/protections/bti-pac-plt-2-a.d  |  6 ++---
>>   .../ld-aarch64/protections/bti-pac-plt-2-b.d  |  6 ++---
>>   .../ld-aarch64/protections/bti-pac-plt-3-a.d  |  6 ++---
>>   .../ld-aarch64/protections/bti-pac-plt-3-b.d  |  6 ++---
>>   .../ld-aarch64/protections/bti-plt-1-a.d      |  6 ++---
>>   .../ld-aarch64/protections/bti-plt-1-b.d      |  6 ++---
>>   .../ld-aarch64/protections/bti-plt-1-c.d      |  6 ++---
>>   .../ld-aarch64/protections/bti-plt-3.d        |  6 ++---
>>   .../ld-aarch64/protections/bti-plt.ld         | 25 +++++++++++++-----
>>   .../ld-aarch64/protections/pac-plt-1-a.d      |  6 ++---
>>   .../ld-aarch64/protections/pac-plt-1-b.d      |  6 ++---
>>   .../ld-aarch64/protections/pac-plt-2.d        |  4 +--
>>   18 files changed, 86 insertions(+), 59 deletions(-)
>>
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal- 
>> plt-1-a.d b/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal- 
>> plt-1-a.d
>> index f8b1c214b2b..7409525084c 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-a.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-a.d
>> @@ -13,7 +13,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -21,25 +21,25 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401a11     ldr    x17, \[x16, #48\]
>>   .*:    9100c210     add    x16, x16, #0x30
>>   .*:    d61f0220     br    x17
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401e11     ldr    x17, \[x16, #56\]
>>   .*:    9100e210     add    x16, x16, #0x38
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-far-1.d b/ld/ 
>> testsuite/ld-aarch64/protections/bti-far-1.d
>> index 63fbb43c136..eb295cffbe8 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-far-1.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-far-1.d
>> @@ -13,7 +13,7 @@ Disassembly of section \.plt:
>>   0000000000018000 <\.plt>:
>>      18000:    d503245f     bti    c
>>      18004:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -   18008:    900000d0     adrp    x16, 30000 <_GLOBAL_OFFSET_TABLE_>
>> +   18008:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>      1800c:    f9400e11     ldr    x17, \[x16, #24\]
>>      18010:    91006210     add    x16, x16, #0x18
>>      18014:    d61f0220     br    x17
>> @@ -21,7 +21,7 @@ Disassembly of section \.plt:
>>      1801c:    d503201f     nop
>>   0000000000018020 <foo@plt>:
>> -   18020:    900000d0     adrp    x16, 30000 <_GLOBAL_OFFSET_TABLE_>
>> +   18020:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>      18024:    f9401211     ldr    x17, \[x16, #32\]
>>      18028:    91008210     add    x16, x16, #0x20
>>      1802c:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-far-opt.d b/ld/ 
>> testsuite/ld-aarch64/protections/bti-far-opt.d
>> index cb293b6e90e..f5038c0cb72 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-far-opt.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-far-opt.d
>> @@ -13,7 +13,7 @@ Disassembly of section \.plt:
>>   0000000000018000 <\.plt>:
>>      18000:    d503245f     bti    c
>>      18004:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -   18008:    900000d0     adrp    x16, 30000 <_GLOBAL_OFFSET_TABLE_>
>> +   18008:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>      1800c:    f9400e11     ldr    x17, \[x16, #24\]
>>      18010:    91006210     add    x16, x16, #0x18
>>      18014:    d61f0220     br    x17
>> @@ -21,7 +21,7 @@ Disassembly of section \.plt:
>>      1801c:    d503201f     nop
>>   0000000000018020 <foo@plt>:
>> -   18020:    900000d0     adrp    x16, 30000 <_GLOBAL_OFFSET_TABLE_>
>> +   18020:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>      18024:    f9401211     ldr    x17, \[x16, #32\]
>>      18028:    91008210     add    x16, x16, #0x20
>>      1802c:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-far.ld b/ld/ 
>> testsuite/ld-aarch64/protections/bti-far.ld
>> index 214b8cb919e..bb4076152c4 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-far.ld
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-far.ld
>> @@ -2,14 +2,28 @@ OUTPUT_ARCH(aarch64)
>>   ENTRY(_start)
>>   SECTIONS
>>   {
>> +  PROVIDE(__executable_start = 0x8000);
>> +  . = SEGMENT_START("text-segment", 0x8000) + SIZEOF_HEADERS;
>> +  /* Start of the executable code region.  */
>> +  .hash              : { *(.hash) }
>> +  .gnu.hash          : { *(.gnu.hash) }
>> +  .dynsym            : { *(.dynsym) }
>> +  .dynstr            : { *(.dynstr) }
>>     . = 0x10000;
>> -  .rela.plt       : { *(.rela.plt) *(.rela.iplt) }
>> +  .rela.dyn          : { *(.rela.ifunc) }
>> +  .rela.plt          : { *(.rela.plt) *(.rela.iplt) }
>>     . = 0x18000;
>> -  .plt            : { *(.plt) *(.iplt) }
>> +  .plt               : { *(.plt) *(.iplt) }
>>     . = 0x20000;
>> -  .text           : { *(.text) }
>> -  . = 0x30000;
>> -  .got            : { *(.got) *(.got.plt) }
>> +  .text              : { *(.text) }
>>     . = 0x12340000;
>> -  .far            : { *(.far) }
>> +  .far               : { *(.far) }
>> +  /* Start of the Read Only Data region.  */
>> +  .note.gnu-property : { *(.note.gnu-property) }
>> +
>> +  /* Start of the Read Write Data region.  */
>> +  . = ALIGN (CONSTANT (MAXPAGESIZE));
>> +  .got               : { *(.got) *(.got.plt) }
>> +  /* Start of the metadata region.  */
>> +  .ARM.attributes 0  : { KEEP (*(.ARM.atttributes)) }

Fixed typo before merging.

>>   }
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-a.d b/ 
>> ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-a.d
>> index 96268d3e7d4..4ab1ca82e2e 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-a.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-a.d
>> @@ -11,7 +11,7 @@ Disassembly of section \.plt:
>>   [0-9a-f]+ <\.plt>:
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -20,13 +20,13 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-b.d b/ 
>> ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-b.d
>> index 041bf22415d..ef744e16f95 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-b.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-pac-plt-1-b.d
>> @@ -16,7 +16,7 @@ Disassembly of section \.plt:
>>   [0-9a-f]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -24,13 +24,13 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-a.d b/ 
>> ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-a.d
>> index f1ae3cd9b09..0e87bccbd3b 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-a.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-a.d
>> @@ -12,7 +12,7 @@ Disassembly of section \.plt:
>>   [0-9a-f]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -20,7 +20,7 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d503219f     autia1716
>> @@ -28,7 +28,7 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d503219f     autia1716
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-b.d b/ 
>> ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-b.d
>> index 69ccaab4993..199585c204d 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-b.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-pac-plt-2-b.d
>> @@ -12,7 +12,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -21,7 +21,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <.*>:
>>   .*:    d503245f     bti    c
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d503219f     autia1716
>> @@ -29,7 +29,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <.*>:
>>   .*:    d503245f     bti    c
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d503219f     autia1716
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-a.d b/ 
>> ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-a.d
>> index c0c0bdb2af0..1789a98f37d 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-a.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-a.d
>> @@ -12,7 +12,7 @@ Disassembly of section \.plt:
>>   [0-9a-f]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -20,7 +20,7 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d503219f     autia1716
>> @@ -28,7 +28,7 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d503219f     autia1716
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-b.d b/ 
>> ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-b.d
>> index 89a08ae6b7c..a0643ab62d4 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-b.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-pac-plt-3-b.d
>> @@ -12,7 +12,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -21,7 +21,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <.*>:
>>   .*:    d503245f     bti    c
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d503219f     autia1716
>> @@ -29,7 +29,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <.*>:
>>   .*:    d503245f     bti    c
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d503219f     autia1716
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-1-a.d b/ld/ 
>> testsuite/ld-aarch64/protections/bti-plt-1-a.d
>> index 2dc38647417..89c0abc8ca0 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-plt-1-a.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-1-a.d
>> @@ -12,7 +12,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -20,13 +20,13 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-1-b.d b/ld/ 
>> testsuite/ld-aarch64/protections/bti-plt-1-b.d
>> index 4b0e424f77e..c889c1c9c46 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-plt-1-b.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-1-b.d
>> @@ -12,7 +12,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -20,13 +20,13 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-1-c.d b/ld/ 
>> testsuite/ld-aarch64/protections/bti-plt-1-c.d
>> index 2fd0dea08cd..c200b0c2dbf 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-plt-1-c.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-1-c.d
>> @@ -13,7 +13,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -21,13 +21,13 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-3.d b/ld/ 
>> testsuite/ld-aarch64/protections/bti-plt-3.d
>> index e457babb4ce..48db4341b71 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-plt-3.d
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-3.d
>> @@ -12,7 +12,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <\.plt>:
>>   .*:    d503245f     bti    c
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -21,7 +21,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <.*>:
>>   .*:    d503245f     bti    c
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>> @@ -29,7 +29,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <.*>:
>>   .*:    d503245f     bti    c
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt.ld b/ld/ 
>> testsuite/ld-aarch64/protections/bti-plt.ld
>> index cab42091869..de97c0c9804 100644
>> --- a/ld/testsuite/ld-aarch64/protections/bti-plt.ld
>> +++ b/ld/testsuite/ld-aarch64/protections/bti-plt.ld
>> @@ -2,13 +2,26 @@ OUTPUT_ARCH(aarch64)
>>   ENTRY(_start)
>>   SECTIONS
>>   {
>> +  PROVIDE(__executable_start = 0x8000);
>> +  . = SEGMENT_START("text-segment", 0x8000) + SIZEOF_HEADERS;
>> +  /* Start of the executable code region.  */
>> +  .hash              : { *(.hash) }
>> +  .gnu.hash          : { *(.gnu.hash) }
>> +  .dynsym            : { *(.dynsym) }
>> +  .dynstr            : { *(.dynstr) }
>>     . = 0x10000;
>> -  .rela.plt       : { *(.rela.plt) *(.rela.iplt) }
>> +  .rela.dyn          : { *(.rela.ifunc) }
>> +  .rela.plt          : { *(.rela.plt) *(.rela.iplt) }
>>     . = 0x18000;
>> -  .plt            : { *(.plt) *(.iplt) }
>> +  .plt               : { *(.plt) *(.iplt) }
>>     . = 0x20000;
>> -  .text           : { *(.text) }
>> -  . = 0x28000;
>> -  .got            : { *(.got) *(.got.plt) }
>> -  .ARM.attributes 0 : { *(.ARM.attributes) }
>> +  .text              : { *(.text) }
>> +  /* Start of the Read Only Data region.  */
>> +  .note.gnu-property : { *(.note.gnu-property) }
>> +
>> +  /* Start of the Read Write Data region.  */
>> +  . = ALIGN (CONSTANT (MAXPAGESIZE));
>> +  .got               : { *(.got) *(.got.plt) }
>> +  /* Start of the metadata region.  */
>> +  .ARM.attributes 0  : { KEEP (*(.ARM.atttributes)) }
> 
> Same as previous patch: re-introduces the typo.
> 
> Otherwise OK.
> 
> R.
> 

Fixed typo before merging, and merged into master: 
1905f68578faeeb0f2bc89c51d254200471700e3

>>   }
>> diff --git a/ld/testsuite/ld-aarch64/protections/pac-plt-1-a.d b/ld/ 
>> testsuite/ld-aarch64/protections/pac-plt-1-a.d
>> index fc10ec7070b..203cb12d11b 100644
>> --- a/ld/testsuite/ld-aarch64/protections/pac-plt-1-a.d
>> +++ b/ld/testsuite/ld-aarch64/protections/pac-plt-1-a.d
>> @@ -11,7 +11,7 @@ Disassembly of section \.plt:
>>   [0-9]+ <.*>:
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -20,7 +20,7 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d503219f     autia1716
>> @@ -28,7 +28,7 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d503219f     autia1716
>> diff --git a/ld/testsuite/ld-aarch64/protections/pac-plt-1-b.d b/ld/ 
>> testsuite/ld-aarch64/protections/pac-plt-1-b.d
>> index 7a0fd59718d..6592689ff5f 100644
>> --- a/ld/testsuite/ld-aarch64/protections/pac-plt-1-b.d
>> +++ b/ld/testsuite/ld-aarch64/protections/pac-plt-1-b.d
>> @@ -15,7 +15,7 @@ Disassembly of section \.plt:
>>   [0-9a-f]+ <\.plt>:
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9400e11     ldr    x17, \[x16, #24\]
>>   .*:    91006210     add    x16, x16, #0x18
>>   .*:    d61f0220     br    x17
>> @@ -24,13 +24,13 @@ Disassembly of section \.plt:
>>   .*:    d503201f     nop
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401211     ldr    x17, \[x16, #32\]
>>   .*:    91008210     add    x16, x16, #0x20
>>   .*:    d61f0220     br    x17
>>   [0-9a-f]+ <.*>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401611     ldr    x17, \[x16, #40\]
>>   .*:    9100a210     add    x16, x16, #0x28
>>   .*:    d61f0220     br    x17
>> diff --git a/ld/testsuite/ld-aarch64/protections/pac-plt-2.d b/ld/ 
>> testsuite/ld-aarch64/protections/pac-plt-2.d
>> index 1c3d7f4b131..67956451b8e 100644
>> --- a/ld/testsuite/ld-aarch64/protections/pac-plt-2.d
>> +++ b/ld/testsuite/ld-aarch64/protections/pac-plt-2.d
>> @@ -9,7 +9,7 @@ Disassembly of section \.plt:
>>   .* \<.plt\>:
>>   .*:    a9bf7bf0     stp    x16, x30, \[sp, #-16\]!
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401a11     ldr    x17, \[x16, #48\]
>>   .*:    9100c210     add    x16, x16, #0x30
>>   .*:    d61f0220     br    x17
>> @@ -19,7 +19,7 @@ Disassembly of section \.plt:
>>   .* \<__tls_get_addr@plt\>:
>> -.*:    90000090     adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
>> +.*:    [[:xdigit:]]{8}     adrp    x16, [[:xdigit:]]+ 
>> <_GLOBAL_OFFSET_TABLE_>
>>   .*:    f9401e11     ldr    x17, \[x16, #56\]
>>   .*:    9100e210     add    x16, x16, #0x38
>>   .*:    d503219f     autia1716
> 



More information about the Binutils mailing list