]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Make emit-relocs-morello-6 work on different targets
authorMatthew Malcomson <matthew.malcomson@arm.com>
Fri, 1 Jul 2022 10:48:55 +0000 (11:48 +0100)
committerMatthew Malcomson <matthew.malcomson@arm.com>
Fri, 1 Jul 2022 10:48:55 +0000 (11:48 +0100)
This testcase has not been passing on linux targets for a while due to
the hard-coding of addresses.  Here we use the record/check feature to
make the testcase more robust and explain what's getting checked a
little better.

ld/testsuite/ld-aarch64/aarch64-elf.exp
ld/testsuite/ld-aarch64/emit-relocs-morello-6.d

index f6d579dab0ad88ee9e778a09cf7e3bf69a2f0be7..95c0e1bfec10bfb3810d88c5ae27c279dcbbb3b5 100644 (file)
@@ -100,6 +100,14 @@ proc aarch64_page_plus_offset { page offset } {
   return [format %x [expr "0x$page + 0x$offset"] ];
 }
 
+# Return the 8-hexdigit truncation of an address.
+proc aarch64_8digit_addr { addr { plusLSB 0 } } {
+  if { $plusLSB } {
+    return [aarch64_8digit_addr [format %08x [expr "0x$addr + 1"]]];
+  }
+  return [string range "$addr" end-7 end];
+}
+
 set eh-frame-merge-lp64 [list [list "EH Frame merge" \
                              [concat "-m " [aarch64_choose_lp64_emul] \
                                      " -Ttext 0x8000"] \
index 0baf1c49fbde25731b97f4fe71cb9c98b864d021..6c8af70a7a6cdcde79cb919f2526a27ec8989615 100644 (file)
@@ -1,13 +1,9 @@
 # Check handling relocations into the got that require a GOT entry.
 # This case handles PIE binaries.
 #
-# This testcase uses exact values in order to check that of the two GOT entries
-# created, the one that is referenced by the first instruction in _start is
-# the one which has the LSB set in its value.
-#
-# Have tried to mitigate the flakyness of the test with a linker script that
-# aligns .text and the GOT to 12 bits so that the ldr addends are just offsets
-# into the GOT and we are likely to get .text at 0x1000.
+# This testcase checks that of the GOT entries created, the ones that are
+# referenced by the first and ast instructions are the one which have the LSB
+# set in their value.
 #source: emit-relocs-morello-6.s
 #as: -march=morello+c64
 #ld: -Ttext-segment 0x100000 -T emit-relocs-morello-7.ld -pie -static
 
 Disassembly of section \.text:
 
-0000000000100100 <_start>:
-  100100:      c2400c00        ldr     c0, \[c0, #48\]
-  100104:      c2400800        ldr     c0, \[c0, #32\]
-  100108:      c2401000        ldr     c0, \[c0, #64\]
-  10010c:      c2400400        ldr     c0, \[c0, #16\]
+#record: START_ADDR
+([0-9a-f]+) <_start>:
+  .*   ldr     c0, \[c0, #48\]
+  .*   ldr     c0, \[c0, #32\]
+  .*   ldr     c0, \[c0, #64\]
+  .*   ldr     c0, \[c0, #16\]
 
 Disassembly of section \.data:
 
-00000000001001e8 <data_obj>:
-  1001e8:      0000000a        .*
+#record: DATA_OBJ_ADDR
+([0-9a-f]+) <data_obj>:
+  .*:  0000000a        .*
 
-00000000001001ec <data_func>:
-  1001ec:      0000000a        .*
+#record: DATA_FUNC_ADDR
+([0-9a-f]+) <data_func>:
+  .*:  0000000a        .*
 
 Disassembly of section \.got:
 
-0000000000101000 <\.got>:
-  101000:      00100000        .*
+#record: GOT_ADDR
+([0-9a-f]+) <\.got>:
+  .*
        \.\.\.
-  101010:      001001ed        .*
-                       101010: R_MORELLO_RELATIVE      \*ABS\*
-  101014:      00000000        .*
-  101018:      00000004        .*
-  10101c:      02000000        .*
-  101020:      00100100        .*
-                       101020: R_MORELLO_RELATIVE      \*ABS\*
-  101024:      00000000        .*
-  101028:      00000f50        .*
-  10102c:      04000000        .*
-  101030:      00100100        .*
-                       101030: R_MORELLO_RELATIVE      \*ABS\*\+0x1
-  101034:      00000000        .*
-  101038:      00000f50        .*
-  10103c:      04000000        .*
-  101040:      001001e8        .*
-                       101040: R_MORELLO_RELATIVE      \*ABS\*
-  101044:      00000000        .*
-  101048:      00000004        .*
-  10104c:      02000000        .*
+#check: DATA_FUNC aarch64_8digit_addr $DATA_FUNC_ADDR 1
+  .*:  DATA_FUNC       .*
+                       .*: R_MORELLO_RELATIVE  \*ABS\*
+  .*:  00000000        .*
+  .*:  00000004        .*
+  .*:  02000000        .*
+#check: START_ADDR_NOFUNC aarch64_8digit_addr $START_ADDR
+  .*:  START_ADDR_NOFUNC       .*
+                       .*: R_MORELLO_RELATIVE  \*ABS\*
+  .*:  00000000        .*
+#record: PCC_BOUNDS
+  .*:  (00000[1-9a-f][0-9a-f]+)        .*
+  .*:  04000000        .*
+#check: START_ADDR_FUNC aarch64_8digit_addr $START_ADDR
+  .*:  START_ADDR_FUNC         .*
+                       .*: R_MORELLO_RELATIVE  \*ABS\*\+0x1
+  .*:  00000000        .*
+#check: PCC_BOUNDED string tolower $PCC_BOUNDS
+  .*:  PCC_BOUNDED     .*
+  .*:  04000000        .*
+#check: DATA_OBJ aarch64_8digit_addr $DATA_OBJ_ADDR
+  .*:  DATA_OBJ        .*
+                       .*: R_MORELLO_RELATIVE  \*ABS\*
+  .*:  00000000        .*
+  .*:  00000004        .*
+  .*:  02000000        .*