aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiong Wang <jiong.wang@arm.com>2016-01-08 09:47:24 +0000
committerJiong Wang <jiong.wang@arm.com>2016-01-08 09:49:03 +0000
commit109575d7ebac21a0eb67980001ecd4173d696f88 (patch)
tree7fd8ebb931108968b105b9cba028ad88d8f635d8
parent2ed73a6ff5f75c689e9d23603c2078ade27ddf6c (diff)
downloadfsf-binutils-gdb-109575d7ebac21a0eb67980001ecd4173d696f88.zip
fsf-binutils-gdb-109575d7ebac21a0eb67980001ecd4173d696f88.tar.gz
fsf-binutils-gdb-109575d7ebac21a0eb67980001ecd4173d696f88.tar.bz2
[ARM] PR ld/19368: Add missing relocation type class for R_ARM_IRELATIVE
2016-01-08 Richard Sandiford <richard.sandiford@arm.com> Jiong Wang <jiong.wang@arm.com> PR ld/19368 bfd/ * elf32-arm.c (elf32_arm_reloc_type_class): Map R_ARM_IRELATIVE to reloc_class_ifunc. ld/ * testsuite/ld-arm/ifunc-3.rd: Update expected result. * testsuite/ld-arm/ifunc-4.rd: Likewise. * testsuite/ld-arm/ifunc-9.rd: Likewise. * testsuite/ld-arm/ifunc-10.rd: Likewise. * testsuite/ld-arm/ifunc-12.rd: Likewise. * testsuite/ld-arm/ifunc-13.rd: Likewise.
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf32-arm.c2
-rw-r--r--ld/ChangeLog10
-rw-r--r--ld/testsuite/ld-arm/ifunc-10.rd24
-rw-r--r--ld/testsuite/ld-arm/ifunc-12.rd8
-rw-r--r--ld/testsuite/ld-arm/ifunc-13.rd4
-rw-r--r--ld/testsuite/ld-arm/ifunc-3.rd10
-rw-r--r--ld/testsuite/ld-arm/ifunc-4.rd60
-rw-r--r--ld/testsuite/ld-arm/ifunc-9.rd2
9 files changed, 73 insertions, 54 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 33cbe65..d1c5a3b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2016-01-08 Richard Sandiford <richard.sandiford@arm.com>
+ Jiong Wang <jiong.wang@arm.com>
+
+ PR ld/19368
+ * elf32-arm.c (elf32_arm_reloc_type_class): Map R_ARM_IRELATIVE to
+ reloc_class_ifunc.
+
2016-01-06 Andrew Burgess <andrew.burgess@embecosm.com>
* elf32-arc.c (reloc_type_to_name): Change ARC_RELOC_HOWTO to
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index f059950..c594e65 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -15535,6 +15535,8 @@ elf32_arm_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
return reloc_class_plt;
case R_ARM_COPY:
return reloc_class_copy;
+ case R_ARM_IRELATIVE:
+ return reloc_class_ifunc;
default:
return reloc_class_normal;
}
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 528cc6e..09e51b5 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,13 @@
+2016-01-08 Jiong Wang <jiong.wang@arm.com>
+
+ PR ld/19368
+ * testsuite/ld-arm/ifunc-3.rd: Update expected result.
+ * testsuite/ld-arm/ifunc-4.rd: Likewise.
+ * testsuite/ld-arm/ifunc-9.rd: Likewise.
+ * testsuite/ld-arm/ifunc-10.rd: Likewise.
+ * testsuite/ld-arm/ifunc-12.rd: Likewise.
+ * testsuite/ld-arm/ifunc-13.rd: Likewise.
+
2016-01-05 Nick Clifton <nickc@redhat.com>
* emulparams/msp430elf.sh (RAM_START): Move to 0x500 - above the
diff --git a/ld/testsuite/ld-arm/ifunc-10.rd b/ld/testsuite/ld-arm/ifunc-10.rd
index 8846197..250def8 100644
--- a/ld/testsuite/ld-arm/ifunc-10.rd
+++ b/ld/testsuite/ld-arm/ifunc-10.rd
@@ -1,18 +1,6 @@
Relocation section '\.rel\.dyn' at offset 0x8000 contains 24 entries:
Offset Info Type Sym\.Value Sym\. Name
-0001103c ......a0 R_ARM_IRELATIVE
-00011040 ......a0 R_ARM_IRELATIVE
-00011044 ......a0 R_ARM_IRELATIVE
-00011048 ......a0 R_ARM_IRELATIVE
-0001104c ......a0 R_ARM_IRELATIVE
-00011050 ......a0 R_ARM_IRELATIVE
-00011054 ......a0 R_ARM_IRELATIVE
-00011058 ......a0 R_ARM_IRELATIVE
-0001105c ......a0 R_ARM_IRELATIVE
-00011060 ......a0 R_ARM_IRELATIVE
-00011064 ......a0 R_ARM_IRELATIVE
-00011068 ......a0 R_ARM_IRELATIVE
0001108c ......15 R_ARM_GLOB_DAT 00009018 atf2
00011090 ......15 R_ARM_GLOB_DAT 00009024 aaf4
00011094 ......15 R_ARM_GLOB_DAT 00009034 ttf2
@@ -25,6 +13,18 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 24 entries:
000110c8 ......15 R_ARM_GLOB_DAT 0000909c atf4
000110cc ......15 R_ARM_GLOB_DAT 000090a8 taf4
000110d0 ......15 R_ARM_GLOB_DAT 000090b8 abf2
+0001103c ......a0 R_ARM_IRELATIVE
+00011040 ......a0 R_ARM_IRELATIVE
+00011044 ......a0 R_ARM_IRELATIVE
+00011048 ......a0 R_ARM_IRELATIVE
+0001104c ......a0 R_ARM_IRELATIVE
+00011050 ......a0 R_ARM_IRELATIVE
+00011054 ......a0 R_ARM_IRELATIVE
+00011058 ......a0 R_ARM_IRELATIVE
+0001105c ......a0 R_ARM_IRELATIVE
+00011060 ......a0 R_ARM_IRELATIVE
+00011064 ......a0 R_ARM_IRELATIVE
+00011068 ......a0 R_ARM_IRELATIVE
Relocation section '\.rel\.plt' at offset 0x80c0 contains 12 entries:
Offset Info Type Sym\.Value Sym\. Name
diff --git a/ld/testsuite/ld-arm/ifunc-12.rd b/ld/testsuite/ld-arm/ifunc-12.rd
index c5d62c1..69ed420 100644
--- a/ld/testsuite/ld-arm/ifunc-12.rd
+++ b/ld/testsuite/ld-arm/ifunc-12.rd
@@ -5,6 +5,10 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 16 entries:
00010020 ......17 R_ARM_RELATIVE
0001100c ......17 R_ARM_RELATIVE
00011018 ......17 R_ARM_RELATIVE
+00010008 ......02 R_ARM_ABS32 f2\(\) f2
+00011024 ......15 R_ARM_GLOB_DAT f2\(\) f2
+00010014 ......02 R_ARM_ABS32 f2t\(\) f2t
+0001101c ......15 R_ARM_GLOB_DAT f2t\(\) f2t
00010004 ......a0 R_ARM_IRELATIVE
0001000c ......a0 R_ARM_IRELATIVE
00010010 ......a0 R_ARM_IRELATIVE
@@ -13,7 +17,3 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 16 entries:
00011014 ......a0 R_ARM_IRELATIVE
00011020 ......a0 R_ARM_IRELATIVE
00011028 ......a0 R_ARM_IRELATIVE
-00010008 ......02 R_ARM_ABS32 f2\(\) f2
-00011024 ......15 R_ARM_GLOB_DAT f2\(\) f2
-00010014 ......02 R_ARM_ABS32 f2t\(\) f2t
-0001101c ......15 R_ARM_GLOB_DAT f2t\(\) f2t
diff --git a/ld/testsuite/ld-arm/ifunc-13.rd b/ld/testsuite/ld-arm/ifunc-13.rd
index c58ab8a..f4394fa 100644
--- a/ld/testsuite/ld-arm/ifunc-13.rd
+++ b/ld/testsuite/ld-arm/ifunc-13.rd
@@ -1,9 +1,9 @@
Relocation section '\.rel\.dyn' at offset 0x8000 contains 6 entries:
Offset Info Type Sym\.Value Sym\. Name
+0001101c ......15 R_ARM_GLOB_DAT 00000000 f2t
+00011024 ......15 R_ARM_GLOB_DAT 00000000 f2
00011010 ......a0 R_ARM_IRELATIVE
00011014 ......a0 R_ARM_IRELATIVE
00011020 ......a0 R_ARM_IRELATIVE
00011028 ......a0 R_ARM_IRELATIVE
-0001101c ......15 R_ARM_GLOB_DAT 00000000 f2t
-00011024 ......15 R_ARM_GLOB_DAT 00000000 f2
diff --git a/ld/testsuite/ld-arm/ifunc-3.rd b/ld/testsuite/ld-arm/ifunc-3.rd
index 4acb314..0ac011a 100644
--- a/ld/testsuite/ld-arm/ifunc-3.rd
+++ b/ld/testsuite/ld-arm/ifunc-3.rd
@@ -4,16 +4,16 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 13 entries:
00010004 ......17 R_ARM_RELATIVE
0001101c ......17 R_ARM_RELATIVE
00011020 ......17 R_ARM_RELATIVE
-0001000c ......a0 R_ARM_IRELATIVE
-0001001c ......a0 R_ARM_IRELATIVE
-00011010 ......a0 R_ARM_IRELATIVE
-00011014 ......a0 R_ARM_IRELATIVE
-00011018 ......a0 R_ARM_IRELATIVE
00010014 ......02 R_ARM_ABS32 f2\(\) f2
00010018 ......03 R_ARM_REL32 f2\(\) f2
00011024 ......15 R_ARM_GLOB_DAT f2\(\) f2
00010024 ......02 R_ARM_ABS32 f4\(\) f4
00011028 ......15 R_ARM_GLOB_DAT f4\(\) f4
+0001000c ......a0 R_ARM_IRELATIVE
+0001001c ......a0 R_ARM_IRELATIVE
+00011010 ......a0 R_ARM_IRELATIVE
+00011014 ......a0 R_ARM_IRELATIVE
+00011018 ......a0 R_ARM_IRELATIVE
Relocation section '\.rel\.plt' at offset 0x8068 contains 1 entries:
Offset Info Type Sym\.Value Sym\. Name
diff --git a/ld/testsuite/ld-arm/ifunc-4.rd b/ld/testsuite/ld-arm/ifunc-4.rd
index b8079d5..43a0019 100644
--- a/ld/testsuite/ld-arm/ifunc-4.rd
+++ b/ld/testsuite/ld-arm/ifunc-4.rd
@@ -3,36 +3,6 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 62 entries:
Offset Info Type Sym\.Value Sym\. Name
0001106c ......17 R_ARM_RELATIVE
00011070 ......17 R_ARM_RELATIVE
-00010004 ......a0 R_ARM_IRELATIVE
-0001000c ......a0 R_ARM_IRELATIVE
-00010014 ......a0 R_ARM_IRELATIVE
-0001001c ......a0 R_ARM_IRELATIVE
-00010024 ......a0 R_ARM_IRELATIVE
-0001002c ......a0 R_ARM_IRELATIVE
-00010064 ......a0 R_ARM_IRELATIVE
-0001006c ......a0 R_ARM_IRELATIVE
-00010074 ......a0 R_ARM_IRELATIVE
-0001007c ......a0 R_ARM_IRELATIVE
-00010084 ......a0 R_ARM_IRELATIVE
-0001008c ......a0 R_ARM_IRELATIVE
-00011024 ......a0 R_ARM_IRELATIVE
-00011028 ......a0 R_ARM_IRELATIVE
-0001102c ......a0 R_ARM_IRELATIVE
-00011030 ......a0 R_ARM_IRELATIVE
-00011034 ......a0 R_ARM_IRELATIVE
-00011038 ......a0 R_ARM_IRELATIVE
-0001103c ......a0 R_ARM_IRELATIVE
-00011040 ......a0 R_ARM_IRELATIVE
-00011044 ......a0 R_ARM_IRELATIVE
-00011048 ......a0 R_ARM_IRELATIVE
-0001104c ......a0 R_ARM_IRELATIVE
-00011050 ......a0 R_ARM_IRELATIVE
-00011054 ......a0 R_ARM_IRELATIVE
-00011058 ......a0 R_ARM_IRELATIVE
-0001105c ......a0 R_ARM_IRELATIVE
-00011060 ......a0 R_ARM_IRELATIVE
-00011064 ......a0 R_ARM_IRELATIVE
-00011068 ......a0 R_ARM_IRELATIVE
00010034 ......02 R_ARM_ABS32 aaf2\(\) aaf2
00010038 ......03 R_ARM_REL32 aaf2\(\) aaf2
00011088 ......15 R_ARM_GLOB_DAT aaf2\(\) aaf2
@@ -63,6 +33,36 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 62 entries:
00011094 ......15 R_ARM_GLOB_DAT ttf4\(\) ttf4
000100bc ......02 R_ARM_ABS32 tbf4\(\) tbf4
00011090 ......15 R_ARM_GLOB_DAT tbf4\(\) tbf4
+00010004 ......a0 R_ARM_IRELATIVE
+0001000c ......a0 R_ARM_IRELATIVE
+00010014 ......a0 R_ARM_IRELATIVE
+0001001c ......a0 R_ARM_IRELATIVE
+00010024 ......a0 R_ARM_IRELATIVE
+0001002c ......a0 R_ARM_IRELATIVE
+00010064 ......a0 R_ARM_IRELATIVE
+0001006c ......a0 R_ARM_IRELATIVE
+00010074 ......a0 R_ARM_IRELATIVE
+0001007c ......a0 R_ARM_IRELATIVE
+00010084 ......a0 R_ARM_IRELATIVE
+0001008c ......a0 R_ARM_IRELATIVE
+00011024 ......a0 R_ARM_IRELATIVE
+00011028 ......a0 R_ARM_IRELATIVE
+0001102c ......a0 R_ARM_IRELATIVE
+00011030 ......a0 R_ARM_IRELATIVE
+00011034 ......a0 R_ARM_IRELATIVE
+00011038 ......a0 R_ARM_IRELATIVE
+0001103c ......a0 R_ARM_IRELATIVE
+00011040 ......a0 R_ARM_IRELATIVE
+00011044 ......a0 R_ARM_IRELATIVE
+00011048 ......a0 R_ARM_IRELATIVE
+0001104c ......a0 R_ARM_IRELATIVE
+00011050 ......a0 R_ARM_IRELATIVE
+00011054 ......a0 R_ARM_IRELATIVE
+00011058 ......a0 R_ARM_IRELATIVE
+0001105c ......a0 R_ARM_IRELATIVE
+00011060 ......a0 R_ARM_IRELATIVE
+00011064 ......a0 R_ARM_IRELATIVE
+00011068 ......a0 R_ARM_IRELATIVE
Relocation section '\.rel\.plt' at offset 0x81f0 contains 6 entries:
Offset Info Type Sym\.Value Sym\. Name
diff --git a/ld/testsuite/ld-arm/ifunc-9.rd b/ld/testsuite/ld-arm/ifunc-9.rd
index 689f663..e1ceb54 100644
--- a/ld/testsuite/ld-arm/ifunc-9.rd
+++ b/ld/testsuite/ld-arm/ifunc-9.rd
@@ -1,9 +1,9 @@
Relocation section '\.rel\.dyn' at offset 0x8000 contains 3 entries:
Offset Info Type Sym\.Value Sym\. Name
+00011028 ......15 R_ARM_GLOB_DAT 00009014 f2
00011010 ......a0 R_ARM_IRELATIVE
00011014 ......a0 R_ARM_IRELATIVE
-00011028 ......15 R_ARM_GLOB_DAT 00009014 f2
Relocation section '\.rel\.plt' at offset 0x8018 contains 1 entries:
Offset Info Type Sym\.Value Sym\. Name