This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: AArch64 testsuite failures


Nick Clifton writes:

> Hi Jiong,
>
>    I am seeing some new failures in the LD tests for AArch64:
>
> Checking Binutils in: aarch64-elf ... LD: 5 done
>    LD REGRESSION: ld-aarch64/emit-relocs-86
>    LD REGRESSION: ld-aarch64/emit-relocs-86-overflow
>    LD REGRESSION: aarch64-farcall-b-plt
>    LD REGRESSION: aarch64-farcall-bl-plt
>    LD REGRESSION: ld-aarch64/emit-relocs-86
>    LD REGRESSION: ld-aarch64/emit-relocs-86-overflow
>    LD REGRESSION: aarch64-farcall-b-plt
>    LD REGRESSION: aarch64-farcall-bl-plt
>
> Checking Binutils in: aarch64_be-elf ... LD: 4 done
>    LD REGRESSION: ld-aarch64/emit-relocs-86
>    LD REGRESSION: ld-aarch64/emit-relocs-86-overflow
>    LD REGRESSION: aarch64-farcall-b-plt
>    LD REGRESSION: aarch64-farcall-bl-plt
>    LD REGRESSION: ld-aarch64/emit-relocs-86
>    LD REGRESSION: ld-aarch64/emit-relocs-86-overflow
>    LD REGRESSION: aarch64-farcall-b-plt
>    LD REGRESSION: aarch64-farcall-bl-plt
>
> This is testing with and without -mabi=ilp32 specified, which is why 
> each failure is appearing twice for each target.
>
> The failures appear to be because the tests are assuming a linux target. 
>   Eg:
>
>    ./ld-new: unrecognised emulation mode: aarch64linux32
>    Supported emulations: aarch64elf aarch64elf32 aarch64elf32b 
> aarch64elfb armelf armelfb
>    FAIL: ld-aarch64/emit-relocs-28
>
> Or:
>
>    regexp "^.*:	f941f611 	ldr	x17, \[x16,#1000\]$"
>    line   " 2e0:	f9421a11 	ldr	x17, [x16,#1072]"
>    [...]
>    FAIL: aarch64-farcall-b-plt
>
> Please could you update these tests to fix this problem ?
>
> Cheers
>    Nick

Nick,

  Thanks for noticing this.

  Yes, I was testing under --target=aarch64-linux. How about the
  following patch which:

   * improve the ILP32 target selector "aarch64_choose_ilp32_emul",
     makes it more robust. I copied those triple from configure.tgt

   * updated emit-relocs-86/-overflow.d to use aarch64_choose_ilp32_emul
     which is following what I have done with emit-relocs-28.

   * those instruction encoding mismatch is because those encoding
     contains pc-relative address. As under elf, we may have different
     start address. I relaxed encodind check, especially for
     aarch64-farcall-b/bl-plt, as the main purpose of those check are
     ELF text/data layout, we just want to make sure veneer to plt stub
     is generated.


2015-08-12  Jiong Wang  <jiong.wang@arm.com>

ld/testsuite/
  * ld-aarch64/aarch64-elf.exp (aarch64_choose_ilp32_emul): Support all
  four triple shape: aarch64-*-linux*, aarch64-*-elf,
  aarch64_be-*-linux*, aarch64_be-*-elf.
  * ld-aarch64/emit-relocs-86.d: Use aarch64_choose_ilp32_emul.
  * ld-aarch64/emit-relocs-86-overflow.d: Likewise.
  * ld-aarch64/ld-aarch64/farcall-b-plt.d: Relax instrucion encoding
  check when they reflect address.
  * ld-aarch64/ld-aarch64/farcall-bl-plt.d: Likewise.
-- 
Regards,
Jiong

diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
index 9554ea1..e0aed65 100644
--- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
+++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
@@ -46,10 +46,17 @@ set aarch64elftests {
 }
 
 proc aarch64_choose_ilp32_emul {} {
-    if [istarget aarch64_be*-*-*] then {
+    if [istarget aarch64-*-linux*] then {
+        return "aarch64linux32"
+    } elseif [istarget aarch64-*-elf] {
+        return "aarch64elf32"
+    } elseif [istarget aarch64_be-*-linux*] {
+        return "aarch64linux32b"
+    } elseif [istarget aarch64_be-*-elf] {
         return "aarch64elf32b"
     } else {
-        return "aarch64linux32"
+      perror "Unknown target triple."
+      exit 1
     }
 }
 
diff --git a/ld/testsuite/ld-aarch64/emit-relocs-86-overflow.d b/ld/testsuite/ld-aarch64/emit-relocs-86-overflow.d
index fb727b3..a9781a9 100644
--- a/ld/testsuite/ld-aarch64/emit-relocs-86-overflow.d
+++ b/ld/testsuite/ld-aarch64/emit-relocs-86-overflow.d
@@ -1,5 +1,5 @@
 #source: emit-relocs-86-overflow.s
 #as: -mabi=ilp32
-#ld: -m aarch64linux32 -e0 --emit-relocs
+#ld: -m [aarch64_choose_ilp32_emul] -e0 --emit-relocs
 #objdump: -dr
 #error: .*\(.text\+0x\d+\): relocation truncated to fit: R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12 against symbol `v2' .*
diff --git a/ld/testsuite/ld-aarch64/emit-relocs-86.d b/ld/testsuite/ld-aarch64/emit-relocs-86.d
index c0f5aca..0047785 100644
--- a/ld/testsuite/ld-aarch64/emit-relocs-86.d
+++ b/ld/testsuite/ld-aarch64/emit-relocs-86.d
@@ -1,8 +1,8 @@
 #source: emit-relocs-86.s
 #as: -mabi=ilp32
-#ld: -m aarch64linux32 -e0 --emit-relocs
+#ld: -m [aarch64_choose_ilp32_emul] -e0 --emit-relocs
 #objdump: -dr
 #...
-00400094 <.text>:
-  400094:	11001134 	add	w20, w9, #0x4
-			400094: R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12	v2
+.* <\.text>:
+  .*:	.* 	add	w20, w9, #0x4
+			.*: R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12	v2
diff --git a/ld/testsuite/ld-aarch64/farcall-b-plt.d b/ld/testsuite/ld-aarch64/farcall-b-plt.d
index 9e2c891..49c82eb 100644
--- a/ld/testsuite/ld-aarch64/farcall-b-plt.d
+++ b/ld/testsuite/ld-aarch64/farcall-b-plt.d
@@ -7,32 +7,32 @@
 
 Disassembly of section .plt:
 
-.* <foo@plt-0x20>:
+.* <foo@plt.*>:
 .*:	a9bf7bf0 	stp	x16, x30, \[sp,#-16\]!
-.*:	90040090 	adrp	x16, 8010000 <__foo_veneer\+.*>
-.*:	f941f611 	ldr	x17, \[x16,#1000\]
-.*:	910fa210 	add	x16, x16, #0x3e8
+.*:	.* 	adrp	x16, .* <__foo_veneer\+.*>
+.*:	.* 	ldr	x17, \[x16,#.*\]
+.*:	.* 	add	x16, x16, #.*
 .*:	d61f0220 	br	x17
 .*:	d503201f 	nop
 .*:	d503201f 	nop
 .*:	d503201f 	nop
 
 .* <foo@plt>:
-.*:	90040090 	adrp	x16, 8010000 <__foo_veneer\+.*>
-.*:	f941fa11 	ldr	x17, \[x16,#1008\]
-.*:	910fc210 	add	x16, x16, #0x3f0
+.*:	.* 	adrp	x16, .* <__foo_veneer\+.*>
+.*:	.* 	ldr	x17, \[x16,#.*\]
+.*:	.* 	add	x16, x16, #.*
 .*:	d61f0220 	br	x17
 
 Disassembly of section .text:
 
 .* <_start>:
 	...
-.*:	14000003 	b	80002c8 <__foo_veneer>
+.*:	.* 	b	.* <__foo_veneer>
 .*:	d65f03c0 	ret
-.*:	14000007 	b	80002e0 <__foo_veneer\+.*>
+.*:	.* 	b	.* <__foo_veneer\+.*>
 
 .* <__foo_veneer>:
-.*:	90fc0010 	adrp	x16, 0 <foo@plt-0x2b0>
-.*:	910ac210 	add	x16, x16, #0x2b0
+.*:	.* 	adrp	x16, 0 <foo@plt.*>
+.*:	.* 	add	x16, x16, #.*
 .*:	d61f0200 	br	x16
 	...
diff --git a/ld/testsuite/ld-aarch64/farcall-bl-plt.d b/ld/testsuite/ld-aarch64/farcall-bl-plt.d
index 205a810..457a4fa 100644
--- a/ld/testsuite/ld-aarch64/farcall-bl-plt.d
+++ b/ld/testsuite/ld-aarch64/farcall-bl-plt.d
@@ -7,32 +7,32 @@
 
 Disassembly of section .plt:
 
-.* <foo@plt-0x20>:
+.* <foo@plt.*>:
 .*:	a9bf7bf0 	stp	x16, x30, \[sp,#-16\]!
-.*:	90040090 	adrp	x16, 8010000 <__foo_veneer\+.*>
-.*:	f941f611 	ldr	x17, \[x16,#1000\]
-.*:	910fa210 	add	x16, x16, #0x3e8
+.*:	.* 	adrp	x16, .* <__foo_veneer\+.*>
+.*:	.* 	ldr	x17, \[x16,#.*\]
+.*:	.* 	add	x16, x16, #.*
 .*:	d61f0220 	br	x17
 .*:	d503201f 	nop
 .*:	d503201f 	nop
 .*:	d503201f 	nop
 
 .* <foo@plt>:
-.*:	90040090 	adrp	x16, 8010000 <__foo_veneer\+.*>
-.*:	f941fa11 	ldr	x17, \[x16,#1008\]
-.*:	910fc210 	add	x16, x16, #0x3f0
+.*:	.* 	adrp	x16, .* <__foo_veneer\+.*>
+.*:	.* 	ldr	x17, \[x16,#.*\]
+.*:	.* 	add	x16, x16, #.*
 .*:	d61f0220 	br	x17
 
 Disassembly of section .text:
 
 .* <_start>:
 	...
-.*:	94000003 	bl	80002c8 <__foo_veneer>
+.*:	.* 	bl	.* <__foo_veneer>
 .*:	d65f03c0 	ret
-.*:	14000007 	b	80002e0 <__foo_veneer\+.*>
+.*:	.* 	b	.* <__foo_veneer\+.*>
 
 .* <__foo_veneer>:
-.*:	90fc0010 	adrp	x16, 0 <foo@plt-0x2b0>
-.*:	910ac210 	add	x16, x16, #0x2b0
+.*:	.* 	adrp	x16, 0 <foo@plt.*>
+.*:	.* 	add	x16, x16, #.*
 .*:	d61f0200 	br	x16
 	...

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]