This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[Patch, AArch64] Fix ld ifunc test failures in aarch64-*-elf
- From: Yufeng Zhang <Yufeng dot Zhang at arm dot com>
- To: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Cc: Marcus Shawcroft <Marcus dot Shawcroft at arm dot com>, Will Newton <will dot newton at linaro dot org>
- Date: Fri, 14 Jun 2013 14:24:02 +0100
- Subject: [Patch, AArch64] Fix ld ifunc test failures in aarch64-*-elf
The patch fixes the failures of the ld ifunc tests in aarch64-*-elf.
The failures are due to two reasons:
1. the expected dump contains hard-coded immediate offsets that seem to
be from the linux-gnu environment.
2. the change to emulparams/aarch64elf.sh of adding IREL_IN_PLT seems to
be forgotten to commit; this causes the mismatch of relocation section
name (.rela.plt versus .rela.dyn). This missing change was mentioned in
the changelog entry for the original ifunc patch.
OK for the trunk?
Thanks,
Yufeng
ld/
* emulparams/aarch64elf.sh: Add IREL_IN_PLT.
ld/testsuite/
* ld-aarch64/ifunc-1-local.d: Replace hard-coded immediate offset
with regexp.
* ld-aarch64/ifunc-1.d: Likewise.
* ld-aarch64/ifunc-2-local.d: Likewise.
* ld-aarch64/ifunc-2.d: Likewise.
* ld-aarch64/ifunc-3a.d: Likewise.
* ld-aarch64/ifunc-2-local.s: Change not to declare __GI_foo and foo
global.
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh
index 53ccd6a..99f4844 100644
--- a/ld/emulparams/aarch64elf.sh
+++ b/ld/emulparams/aarch64elf.sh
@@ -18,6 +18,8 @@ MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
ENTRY=_start
EMBEDDED=yes
SEPARATE_GOTPLT=24
+IREL_IN_PLT=
+
TEXT_START_ADDR=0x00400000
DATA_START_SYMBOLS='__data_start = . ;';
diff --git a/ld/testsuite/ld-aarch64/ifunc-1-local.d b/ld/testsuite/ld-aarch64/ifunc-1-local.d
index 0cce7f6..0b49004 100644
--- a/ld/testsuite/ld-aarch64/ifunc-1-local.d
+++ b/ld/testsuite/ld-aarch64/ifunc-1-local.d
@@ -3,5 +3,5 @@
#target: aarch64-*-*
#...
-[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x2a0@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x[0-9a-f]+@plt>
#pass
diff --git a/ld/testsuite/ld-aarch64/ifunc-1.d b/ld/testsuite/ld-aarch64/ifunc-1.d
index 8a17cd7..0b49004 100644
--- a/ld/testsuite/ld-aarch64/ifunc-1.d
+++ b/ld/testsuite/ld-aarch64/ifunc-1.d
@@ -3,5 +3,5 @@
#target: aarch64-*-*
#...
-[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x2c0@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x[0-9a-f]+@plt>
#pass
diff --git a/ld/testsuite/ld-aarch64/ifunc-2-local.d b/ld/testsuite/ld-aarch64/ifunc-2-local.d
index 07616ca..07cc0bf 100644
--- a/ld/testsuite/ld-aarch64/ifunc-2-local.d
+++ b/ld/testsuite/ld-aarch64/ifunc-2-local.d
@@ -3,7 +3,7 @@
#target: aarch64-*-*
#...
-[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x2c0@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x[0-9a-f]+@plt>
[ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <_GLOBAL_OFFSET_TABLE_>
-[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x2b0
+[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x[0-9a-f]+
#pass
diff --git a/ld/testsuite/ld-aarch64/ifunc-2-local.s b/ld/testsuite/ld-aarch64/ifunc-2-local.s
index da350df..632c31f 100644
--- a/ld/testsuite/ld-aarch64/ifunc-2-local.s
+++ b/ld/testsuite/ld-aarch64/ifunc-2-local.s
@@ -1,9 +1,6 @@
.type foo, %gnu_indirect_function
- .global __GI_foo
- .hidden __GI_foo
.set __GI_foo, foo
.text
-.globl foo
.type foo, @function
foo:
ret
diff --git a/ld/testsuite/ld-aarch64/ifunc-2.d b/ld/testsuite/ld-aarch64/ifunc-2.d
index 07616ca..07cc0bf 100644
--- a/ld/testsuite/ld-aarch64/ifunc-2.d
+++ b/ld/testsuite/ld-aarch64/ifunc-2.d
@@ -3,7 +3,7 @@
#target: aarch64-*-*
#...
-[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x2c0@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x[0-9a-f]+@plt>
[ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <_GLOBAL_OFFSET_TABLE_>
-[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x2b0
+[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x[0-9a-f]+
#pass
diff --git a/ld/testsuite/ld-aarch64/ifunc-3a.d b/ld/testsuite/ld-aarch64/ifunc-3a.d
index 1335480..91ba4aa 100644
--- a/ld/testsuite/ld-aarch64/ifunc-3a.d
+++ b/ld/testsuite/ld-aarch64/ifunc-3a.d
@@ -4,5 +4,5 @@
#target: aarch64-*-*
#...
-[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x2e0@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x[0-9a-f]+@plt>
#pass