aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Brown <julian@codesourcery.com>2011-10-18 14:41:55 +0000
committerJulian Brown <julian@codesourcery.com>2011-10-18 14:41:55 +0000
commita415b1cd634be934d9d8b0ab73b942fc3af61db9 (patch)
tree28a268b903b0d50f37d78bfb06f048006a5f216a
parent4af315526a36b17da6e2f2661d3c21efe935b5fb (diff)
downloadgdb-a415b1cd634be934d9d8b0ab73b942fc3af61db9.zip
gdb-a415b1cd634be934d9d8b0ab73b942fc3af61db9.tar.gz
gdb-a415b1cd634be934d9d8b0ab73b942fc3af61db9.tar.bz2
Jie Zhang <jie@codesourcery.com>
Julian Brown <julian@codesourcery.com> gas/ * config/tc-arm.c (parse_shifter_operand): Fix handling of explicit rotation. (encode_arm_shifter_operand): Likewise. gas/testsuite/ * gas/arm/adrl.d: Adjust. * gas/arm/immed2.d: New test. * gas/arm/immed2.s: New test. ld/testsuite/ * ld-arm/cortex-a8-fix-b-plt.d: Adjust. * ld-arm/cortex-a8-fix-bcc-plt.d: Adjust. * ld-arm/cortex-a8-fix-bl-plt.d: Adjust. * ld-arm/cortex-a8-fix-bl-rel-plt.d: Adjust. * ld-arm/cortex-a8-fix-blx-plt.d: Adjust. * ld-arm/ifunc-1.dd: Adjust. * ld-arm/ifunc-2.dd: Adjust. * ld-arm/ifunc-3.dd: Adjust. * ld-arm/ifunc-4.dd: Adjust. * ld-arm/ifunc-5.dd: Adjust. * ld-arm/ifunc-6.dd: Adjust. * ld-arm/ifunc-7.dd: Adjust. * ld-arm/ifunc-8.dd: Adjust. * ld-arm/ifunc-9.dd: Adjust. * ld-arm/ifunc-10.dd: Adjust. * ld-arm/ifunc-14.dd: Adjust. * ld-arm/ifunc-15.dd: Adjust. * ld-arm/ifunc-16.dd: Adjust. opcodes/ * arm-dis.c (print_insn_arm): Explicitly specify rotation if needed.
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-arm.c13
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/arm/adrl.d6
-rw-r--r--gas/testsuite/gas/arm/immed2.d8
-rw-r--r--gas/testsuite/gas/arm/immed2.s4
-rw-r--r--ld/testsuite/ChangeLog22
-rw-r--r--ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d4
-rw-r--r--ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d2
-rw-r--r--ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d4
-rw-r--r--ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d4
-rw-r--r--ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d4
-rw-r--r--ld/testsuite/ld-arm/ifunc-1.dd8
-rw-r--r--ld/testsuite/ld-arm/ifunc-10.dd48
-rw-r--r--ld/testsuite/ld-arm/ifunc-14.dd12
-rw-r--r--ld/testsuite/ld-arm/ifunc-15.dd12
-rw-r--r--ld/testsuite/ld-arm/ifunc-16.dd14
-rw-r--r--ld/testsuite/ld-arm/ifunc-2.dd18
-rw-r--r--ld/testsuite/ld-arm/ifunc-3.dd8
-rw-r--r--ld/testsuite/ld-arm/ifunc-4.dd48
-rw-r--r--ld/testsuite/ld-arm/ifunc-5.dd8
-rw-r--r--ld/testsuite/ld-arm/ifunc-6.dd10
-rw-r--r--ld/testsuite/ld-arm/ifunc-7.dd8
-rw-r--r--ld/testsuite/ld-arm/ifunc-8.dd48
-rw-r--r--ld/testsuite/ld-arm/ifunc-9.dd6
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/arm-dis.c22
27 files changed, 213 insertions, 147 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4c43c77..1dbb3dc 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2011-10-18 Jie Zhang <jie@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * config/tc-arm.c (parse_shifter_operand): Fix handling of explicit
+ rotation.
+ (encode_arm_shifter_operand): Likewise.
+
2011-10-13 James Greenhalgh <james.greenhalgh@arm.com>
* config/tc-arm.c (check_ldr_r15_aligned): New.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 8189c51..3871164 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -4884,10 +4884,9 @@ parse_shifter_operand (char **str, int i)
return FAIL;
}
- /* Convert to decoded value. md_apply_fix will put it back. */
- inst.reloc.exp.X_add_number
- = (((inst.reloc.exp.X_add_number << (32 - value))
- | (inst.reloc.exp.X_add_number >> value)) & 0xffffffff);
+ /* Encode as specified. */
+ inst.operands[i].imm = inst.reloc.exp.X_add_number | value << 7;
+ return SUCCESS;
}
inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
@@ -7018,7 +7017,11 @@ encode_arm_shifter_operand (int i)
encode_arm_shift (i);
}
else
- inst.instruction |= INST_IMMEDIATE;
+ {
+ inst.instruction |= INST_IMMEDIATE;
+ if (inst.reloc.type != BFD_RELOC_ARM_IMMEDIATE)
+ inst.instruction |= inst.operands[i].imm;
+ }
}
/* Subroutine of encode_arm_addr_mode_2 and encode_arm_addr_mode_3. */
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index a162952..5de442f 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2011-10-18 Jie Zhang <jie@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * gas/arm/adrl.d: Adjust.
+ * gas/arm/immed2.d: New test.
+ * gas/arm/immed2.s: New test.
+
2011-10-13 James Greenhalgh <james.greenhalgh@arm.com>
* gas/arm/ldr-bad.s: New testcase.
diff --git a/gas/testsuite/gas/arm/adrl.d b/gas/testsuite/gas/arm/adrl.d
index 3261311..6276e8d 100644
--- a/gas/testsuite/gas/arm/adrl.d
+++ b/gas/testsuite/gas/arm/adrl.d
@@ -8,9 +8,9 @@
Disassembly of section .text:
...
0+2000 <.*> e24f0008 sub r0, pc, #8
-0+2004 <.*> e2400c20 sub r0, r0, #8192 ; 0x2000
+0+2004 <.*> e2400c20 sub r0, r0, #32, 24 ; 0x2000
0+2008 <.*> e28f0020 add r0, pc, #32
-0+200c <.*> e2800c20 add r0, r0, #8192 ; 0x2000
+0+200c <.*> e2800c20 add r0, r0, #32, 24 ; 0x2000
0+2010 <.*> e24f0018 sub r0, pc, #24
0+2014 <.*> e1a00000 nop ; \(mov r0, r0\)
0+2018 <.*> e28f0008 add r0, pc, #8
@@ -18,7 +18,7 @@ Disassembly of section .text:
0+2020 <.*> 028f0000 addeq r0, pc, #0
0+2024 <.*> e1a00000 nop ; \(mov r0, r0\)
0+2028 <.*> e24f0030 sub r0, pc, #48 ; 0x30
-0+202c <.*> e2400c20 sub r0, r0, #8192 ; 0x2000
+0+202c <.*> e2400c20 sub r0, r0, #32, 24 ; 0x2000
0+2030 <.*> e28f0c21 add r0, pc, #8448 ; 0x2100
0+2034 <.*> e1a00000 nop ; \(mov r0, r0\)
...
diff --git a/gas/testsuite/gas/arm/immed2.d b/gas/testsuite/gas/arm/immed2.d
new file mode 100644
index 0000000..49fa895
--- /dev/null
+++ b/gas/testsuite/gas/arm/immed2.d
@@ -0,0 +1,8 @@
+# name: modified immediate constants
+# as:
+# objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+0+0000 <[^>]+> b351029c ? cmplt r1, #156, 4 ; 0xc0000009
diff --git a/gas/testsuite/gas/arm/immed2.s b/gas/testsuite/gas/arm/immed2.s
new file mode 100644
index 0000000..0365236
--- /dev/null
+++ b/gas/testsuite/gas/arm/immed2.s
@@ -0,0 +1,4 @@
+@ Tests for modified immediate constants with specified rotate
+ .text
+bar:
+ cmplt r1, #0x9c, 4
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 69df1ad..6bf48c5 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,25 @@
+2011-10-18 Jie Zhang <jie@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * ld-arm/cortex-a8-fix-b-plt.d: Adjust.
+ * ld-arm/cortex-a8-fix-bcc-plt.d: Adjust.
+ * ld-arm/cortex-a8-fix-bl-plt.d: Adjust.
+ * ld-arm/cortex-a8-fix-bl-rel-plt.d: Adjust.
+ * ld-arm/cortex-a8-fix-blx-plt.d: Adjust.
+ * ld-arm/ifunc-1.dd: Adjust.
+ * ld-arm/ifunc-2.dd: Adjust.
+ * ld-arm/ifunc-3.dd: Adjust.
+ * ld-arm/ifunc-4.dd: Adjust.
+ * ld-arm/ifunc-5.dd: Adjust.
+ * ld-arm/ifunc-6.dd: Adjust.
+ * ld-arm/ifunc-7.dd: Adjust.
+ * ld-arm/ifunc-8.dd: Adjust.
+ * ld-arm/ifunc-9.dd: Adjust.
+ * ld-arm/ifunc-10.dd: Adjust.
+ * ld-arm/ifunc-14.dd: Adjust.
+ * ld-arm/ifunc-15.dd: Adjust.
+ * ld-arm/ifunc-16.dd: Adjust.
+
2011-10-14 Hans-Peter Nilsson <hp@axis.com>
* ld-cris/pic-gc-72.d: Adjust for dropping unused undefined
diff --git a/ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d b/ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d
index 59efecb..4f1078d 100644
--- a/ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d
+++ b/ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d
@@ -12,8 +12,8 @@ Disassembly of section \.plt:
8010: 00000ffc \.word 0x00000ffc
8014: 4778 bx pc
8016: 46c0 nop ; \(mov r8, r8\)
- 8018: e28fc600 add ip, pc, #0
- 801c: e28cca00 add ip, ip, #0
+ 8018: e28fc600 add ip, pc, #0, 12
+ 801c: e28cca00 add ip, ip, #0, 20
8020: e5bcfff8 ldr pc, \[ip, #4088\]! ; 0xff8
Disassembly of section \.text:
diff --git a/ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d b/ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d
index 7862008..1e0cab2 100644
--- a/ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d
+++ b/ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d
@@ -12,7 +12,7 @@ Disassembly of section \.plt:
8010: 00001004 \.word 0x00001004
8014: 4778 bx pc
8016: 46c0 nop ; \(mov r8, r8\)
- 8018: e28fc600 add ip, pc, #0
+ 8018: e28fc600 add ip, pc, #0, 12
801c: e28cca01 add ip, ip, #4096 ; 0x1000
8020: e5bcf000 ldr pc, \[ip, #0\]!
diff --git a/ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d b/ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d
index 17cb9ac..ebb480f 100644
--- a/ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d
+++ b/ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d
@@ -10,8 +10,8 @@ Disassembly of section \.plt:
8008: e08fe00e add lr, pc, lr
800c: e5bef008 ldr pc, \[lr, #8\]!
8010: 00000ffc \.word 0x00000ffc
- 8014: e28fc600 add ip, pc, #0
- 8018: e28cca00 add ip, ip, #0
+ 8014: e28fc600 add ip, pc, #0, 12
+ 8018: e28cca00 add ip, ip, #0, 20
801c: e5bcfffc ldr pc, \[ip, #4092\]! ; 0xffc
Disassembly of section \.text:
diff --git a/ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d b/ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d
index e885a17..f8a9c24 100644
--- a/ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d
+++ b/ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d
@@ -10,8 +10,8 @@ Disassembly of section \.plt:
8e08: e08fe00e add lr, pc, lr
8e0c: e5bef008 ldr pc, \[lr, #8\]!
8e10: 0000827c \.word 0x0000827c
- 8e14: e28fc600 add ip, pc, #0
- 8e18: e28cca08 add ip, ip, #32768 ; 0x8000
+ 8e14: e28fc600 add ip, pc, #0, 12
+ 8e18: e28cca08 add ip, ip, #8, 20 ; 0x8000
8e1c: e5bcf27c ldr pc, \[ip, #636\]! ; 0x27c
Disassembly of section \.text:
diff --git a/ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d b/ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d
index 17cb9ac..ebb480f 100644
--- a/ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d
+++ b/ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d
@@ -10,8 +10,8 @@ Disassembly of section \.plt:
8008: e08fe00e add lr, pc, lr
800c: e5bef008 ldr pc, \[lr, #8\]!
8010: 00000ffc \.word 0x00000ffc
- 8014: e28fc600 add ip, pc, #0
- 8018: e28cca00 add ip, ip, #0
+ 8014: e28fc600 add ip, pc, #0, 12
+ 8018: e28cca00 add ip, ip, #0, 20
801c: e5bcfffc ldr pc, \[ip, #4092\]! ; 0xffc
Disassembly of section \.text:
diff --git a/ld/testsuite/ld-arm/ifunc-1.dd b/ld/testsuite/ld-arm/ifunc-1.dd
index de6d813..14b1482 100644
--- a/ld/testsuite/ld-arm/ifunc-1.dd
+++ b/ld/testsuite/ld-arm/ifunc-1.dd
@@ -8,17 +8,17 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 9000: e28fc600 add ip, pc, #0
- 9004: e28cca08 add ip, ip, #32768 ; 0x8000
+ 9000: e28fc600 add ip, pc, #0, 12
+ 9004: e28cca08 add ip, ip, #8, 20 ; 0x8000
9008: e5bcf004 ldr pc, \[ip, #4\]!
0000900c <f3>:
- 900c: e28fc600 add ip, pc, #0
+ 900c: e28fc600 add ip, pc, #0, 12
9010: e28cca07 add ip, ip, #28672 ; 0x7000
9014: e5bcfffc ldr pc, \[ip, #4092\]! ; 0xffc
00009018 <f2>:
- 9018: e28fc600 add ip, pc, #0
+ 9018: e28fc600 add ip, pc, #0, 12
901c: e28cca07 add ip, ip, #28672 ; 0x7000
9020: e5bcfff4 ldr pc, \[ip, #4084\]! ; 0xff4
diff --git a/ld/testsuite/ld-arm/ifunc-10.dd b/ld/testsuite/ld-arm/ifunc-10.dd
index f9bfd09..105b09b 100644
--- a/ld/testsuite/ld-arm/ifunc-10.dd
+++ b/ld/testsuite/ld-arm/ifunc-10.dd
@@ -21,13 +21,13 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ atf2's .plt entry
#------------------------------------------------------------------------------
- 9018: e28fc600 add ip, pc, #0
+ 9018: e28fc600 add ip, pc, #0, 12
901c: e28cca07 add ip, ip, #28672 ; 0x7000
9020: e5bcffec ldr pc, \[ip, #4076\]! ; 0xfec
#------------------------------------------------------------------------------
#------ aaf4's .plt entry
#------------------------------------------------------------------------------
- 9024: e28fc600 add ip, pc, #0
+ 9024: e28fc600 add ip, pc, #0, 12
9028: e28cca07 add ip, ip, #28672 ; 0x7000
902c: e5bcffe4 ldr pc, \[ip, #4068\]! ; 0xfe4
#------------------------------------------------------------------------------
@@ -38,7 +38,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ ttf2's .plt entry
#------------------------------------------------------------------------------
- 9034: e28fc600 add ip, pc, #0
+ 9034: e28fc600 add ip, pc, #0, 12
9038: e28cca07 add ip, ip, #28672 ; 0x7000
903c: e5bcffd8 ldr pc, \[ip, #4056\]! ; 0xfd8
#------------------------------------------------------------------------------
@@ -49,19 +49,19 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ tbf2's .plt entry
#------------------------------------------------------------------------------
- 9044: e28fc600 add ip, pc, #0
+ 9044: e28fc600 add ip, pc, #0, 12
9048: e28cca07 add ip, ip, #28672 ; 0x7000
904c: e5bcffcc ldr pc, \[ip, #4044\]! ; 0xfcc
#------------------------------------------------------------------------------
#------ taf2's .plt entry
#------------------------------------------------------------------------------
- 9050: e28fc600 add ip, pc, #0
+ 9050: e28fc600 add ip, pc, #0, 12
9054: e28cca07 add ip, ip, #28672 ; 0x7000
9058: e5bcffc4 ldr pc, \[ip, #4036\]! ; 0xfc4
#------------------------------------------------------------------------------
#------ aaf2's .plt entry
#------------------------------------------------------------------------------
- 905c: e28fc600 add ip, pc, #0
+ 905c: e28fc600 add ip, pc, #0, 12
9060: e28cca07 add ip, ip, #28672 ; 0x7000
9064: e5bcffbc ldr pc, \[ip, #4028\]! ; 0xfbc
#------------------------------------------------------------------------------
@@ -72,7 +72,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ abf4's .plt entry
#------------------------------------------------------------------------------
- 906c: e28fc600 add ip, pc, #0
+ 906c: e28fc600 add ip, pc, #0, 12
9070: e28cca07 add ip, ip, #28672 ; 0x7000
9074: e5bcffb0 ldr pc, \[ip, #4016\]! ; 0xfb0
#------------------------------------------------------------------------------
@@ -83,7 +83,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ tbf4's .plt entry
#------------------------------------------------------------------------------
- 907c: e28fc600 add ip, pc, #0
+ 907c: e28fc600 add ip, pc, #0, 12
9080: e28cca07 add ip, ip, #28672 ; 0x7000
9084: e5bcffa4 ldr pc, \[ip, #4004\]! ; 0xfa4
#------------------------------------------------------------------------------
@@ -94,7 +94,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ ttf4's .plt entry
#------------------------------------------------------------------------------
- 908c: e28fc600 add ip, pc, #0
+ 908c: e28fc600 add ip, pc, #0, 12
9090: e28cca07 add ip, ip, #28672 ; 0x7000
9094: e5bcff98 ldr pc, \[ip, #3992\]! ; 0xf98
#------------------------------------------------------------------------------
@@ -105,13 +105,13 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ atf4's .plt entry
#------------------------------------------------------------------------------
- 909c: e28fc600 add ip, pc, #0
+ 909c: e28fc600 add ip, pc, #0, 12
90a0: e28cca07 add ip, ip, #28672 ; 0x7000
90a4: e5bcff8c ldr pc, \[ip, #3980\]! ; 0xf8c
#------------------------------------------------------------------------------
#------ taf4's .plt entry
#------------------------------------------------------------------------------
- 90a8: e28fc600 add ip, pc, #0
+ 90a8: e28fc600 add ip, pc, #0, 12
90ac: e28cca07 add ip, ip, #28672 ; 0x7000
90b0: e5bcff84 ldr pc, \[ip, #3972\]! ; 0xf84
#------------------------------------------------------------------------------
@@ -122,7 +122,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ abf2's .plt entry
#------------------------------------------------------------------------------
- 90b8: e28fc600 add ip, pc, #0
+ 90b8: e28fc600 add ip, pc, #0, 12
90bc: e28cca07 add ip, ip, #28672 ; 0x7000
90c0: e5bcff78 ldr pc, \[ip, #3960\]! ; 0xf78
@@ -132,7 +132,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ aaf1's .iplt entry
#------------------------------------------------------------------------------
- 90c4: e28fc600 add ip, pc, #0
+ 90c4: e28fc600 add ip, pc, #0, 12
90c8: e28cca07 add ip, ip, #28672 ; 0x7000
90cc: e5bcff70 ldr pc, \[ip, #3952\]! ; 0xf70
#------------------------------------------------------------------------------
@@ -143,7 +143,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ atf1's .iplt entry
#------------------------------------------------------------------------------
- 90d4: e28fc600 add ip, pc, #0
+ 90d4: e28fc600 add ip, pc, #0, 12
90d8: e28cca07 add ip, ip, #28672 ; 0x7000
90dc: e5bcff64 ldr pc, \[ip, #3940\]! ; 0xf64
#------------------------------------------------------------------------------
@@ -154,13 +154,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ abf1's .iplt entry
#------------------------------------------------------------------------------
- 90e4: e28fc600 add ip, pc, #0
+ 90e4: e28fc600 add ip, pc, #0, 12
90e8: e28cca07 add ip, ip, #28672 ; 0x7000
90ec: e5bcff58 ldr pc, \[ip, #3928\]! ; 0xf58
#------------------------------------------------------------------------------
#------ taf1's .iplt entry
#------------------------------------------------------------------------------
- 90f0: e28fc600 add ip, pc, #0
+ 90f0: e28fc600 add ip, pc, #0, 12
90f4: e28cca07 add ip, ip, #28672 ; 0x7000
90f8: e5bcff50 ldr pc, \[ip, #3920\]! ; 0xf50
#------------------------------------------------------------------------------
@@ -171,7 +171,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ ttf1's .iplt entry
#------------------------------------------------------------------------------
- 9100: e28fc600 add ip, pc, #0
+ 9100: e28fc600 add ip, pc, #0, 12
9104: e28cca07 add ip, ip, #28672 ; 0x7000
9108: e5bcff44 ldr pc, \[ip, #3908\]! ; 0xf44
#------------------------------------------------------------------------------
@@ -182,7 +182,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ tbf1's .iplt entry
#------------------------------------------------------------------------------
- 9110: e28fc600 add ip, pc, #0
+ 9110: e28fc600 add ip, pc, #0, 12
9114: e28cca07 add ip, ip, #28672 ; 0x7000
9118: e5bcff38 ldr pc, \[ip, #3896\]! ; 0xf38
#------------------------------------------------------------------------------
@@ -192,7 +192,7 @@ Disassembly of section \.iplt:
911e: 46c0 nop ; \(mov r8, r8\)
00009120 <atf3>:
- 9120: e28fc600 add ip, pc, #0
+ 9120: e28fc600 add ip, pc, #0, 12
9124: e28cca07 add ip, ip, #28672 ; 0x7000
9128: e5bcff2c ldr pc, \[ip, #3884\]! ; 0xf2c
#------------------------------------------------------------------------------
@@ -202,7 +202,7 @@ Disassembly of section \.iplt:
912e: 46c0 nop ; \(mov r8, r8\)
00009130 <abf3>:
- 9130: e28fc600 add ip, pc, #0
+ 9130: e28fc600 add ip, pc, #0, 12
9134: e28cca07 add ip, ip, #28672 ; 0x7000
9138: e5bcff20 ldr pc, \[ip, #3872\]! ; 0xf20
#------------------------------------------------------------------------------
@@ -212,7 +212,7 @@ Disassembly of section \.iplt:
913e: 46c0 nop ; \(mov r8, r8\)
00009140 <ttf3>:
- 9140: e28fc600 add ip, pc, #0
+ 9140: e28fc600 add ip, pc, #0, 12
9144: e28cca07 add ip, ip, #28672 ; 0x7000
9148: e5bcff14 ldr pc, \[ip, #3860\]! ; 0xf14
#------------------------------------------------------------------------------
@@ -222,17 +222,17 @@ Disassembly of section \.iplt:
914e: 46c0 nop ; \(mov r8, r8\)
00009150 <tbf3>:
- 9150: e28fc600 add ip, pc, #0
+ 9150: e28fc600 add ip, pc, #0, 12
9154: e28cca07 add ip, ip, #28672 ; 0x7000
9158: e5bcff08 ldr pc, \[ip, #3848\]! ; 0xf08
0000915c <taf3>:
- 915c: e28fc600 add ip, pc, #0
+ 915c: e28fc600 add ip, pc, #0, 12
9160: e28cca07 add ip, ip, #28672 ; 0x7000
9164: e5bcff00 ldr pc, \[ip, #3840\]! ; 0xf00
00009168 <aaf3>:
- 9168: e28fc600 add ip, pc, #0
+ 9168: e28fc600 add ip, pc, #0, 12
916c: e28cca07 add ip, ip, #28672 ; 0x7000
9170: e5bcfef8 ldr pc, \[ip, #3832\]! ; 0xef8
diff --git a/ld/testsuite/ld-arm/ifunc-14.dd b/ld/testsuite/ld-arm/ifunc-14.dd
index 8df338a..861f687 100644
--- a/ld/testsuite/ld-arm/ifunc-14.dd
+++ b/ld/testsuite/ld-arm/ifunc-14.dd
@@ -16,13 +16,13 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ f2t's .plt entry
#------------------------------------------------------------------------------
- 9014: e28fc600 add ip, pc, #0
+ 9014: e28fc600 add ip, pc, #0, 12
9018: e28cca07 add ip, ip, #28672 ; 0x7000
901c: e5bcfff0 ldr pc, \[ip, #4080\]! ; 0xff0
#------------------------------------------------------------------------------
#------ f2's .plt entry
#------------------------------------------------------------------------------
- 9020: e28fc600 add ip, pc, #0
+ 9020: e28fc600 add ip, pc, #0, 12
9024: e28cca07 add ip, ip, #28672 ; 0x7000
9028: e5bcffe8 ldr pc, \[ip, #4072\]! ; 0xfe8
@@ -32,23 +32,23 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 902c: e28fc600 add ip, pc, #0
+ 902c: e28fc600 add ip, pc, #0, 12
9030: e28cca07 add ip, ip, #28672 ; 0x7000
9034: e5bcffe0 ldr pc, \[ip, #4064\]! ; 0xfe0
#------------------------------------------------------------------------------
#------ f1t's .iplt entry
#------------------------------------------------------------------------------
- 9038: e28fc600 add ip, pc, #0
+ 9038: e28fc600 add ip, pc, #0, 12
903c: e28cca07 add ip, ip, #28672 ; 0x7000
9040: e5bcffd8 ldr pc, \[ip, #4056\]! ; 0xfd8
00009044 <f3>:
- 9044: e28fc600 add ip, pc, #0
+ 9044: e28fc600 add ip, pc, #0, 12
9048: e28cca07 add ip, ip, #28672 ; 0x7000
904c: e5bcffd0 ldr pc, \[ip, #4048\]! ; 0xfd0
00009050 <f3t>:
- 9050: e28fc600 add ip, pc, #0
+ 9050: e28fc600 add ip, pc, #0, 12
9054: e28cca07 add ip, ip, #28672 ; 0x7000
9058: e5bcffc8 ldr pc, \[ip, #4040\]! ; 0xfc8
diff --git a/ld/testsuite/ld-arm/ifunc-15.dd b/ld/testsuite/ld-arm/ifunc-15.dd
index 886d355..d764841 100644
--- a/ld/testsuite/ld-arm/ifunc-15.dd
+++ b/ld/testsuite/ld-arm/ifunc-15.dd
@@ -16,13 +16,13 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ f2t's .plt entry
#------------------------------------------------------------------------------
- 9014: e28fc600 add ip, pc, #0
+ 9014: e28fc600 add ip, pc, #0, 12
9018: e28cca07 add ip, ip, #28672 ; 0x7000
901c: e5bcfff0 ldr pc, \[ip, #4080\]! ; 0xff0
#------------------------------------------------------------------------------
#------ f2's .plt entry
#------------------------------------------------------------------------------
- 9020: e28fc600 add ip, pc, #0
+ 9020: e28fc600 add ip, pc, #0, 12
9024: e28cca07 add ip, ip, #28672 ; 0x7000
9028: e5bcffe8 ldr pc, \[ip, #4072\]! ; 0xfe8
@@ -32,23 +32,23 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 902c: e28fc600 add ip, pc, #0
+ 902c: e28fc600 add ip, pc, #0, 12
9030: e28cca07 add ip, ip, #28672 ; 0x7000
9034: e5bcffe0 ldr pc, \[ip, #4064\]! ; 0xfe0
#------------------------------------------------------------------------------
#------ f1t's .iplt entry
#------------------------------------------------------------------------------
- 9038: e28fc600 add ip, pc, #0
+ 9038: e28fc600 add ip, pc, #0, 12
903c: e28cca07 add ip, ip, #28672 ; 0x7000
9040: e5bcffd8 ldr pc, \[ip, #4056\]! ; 0xfd8
00009044 <f3>:
- 9044: e28fc600 add ip, pc, #0
+ 9044: e28fc600 add ip, pc, #0, 12
9048: e28cca07 add ip, ip, #28672 ; 0x7000
904c: e5bcffd0 ldr pc, \[ip, #4048\]! ; 0xfd0
00009050 <f3t>:
- 9050: e28fc600 add ip, pc, #0
+ 9050: e28fc600 add ip, pc, #0, 12
9054: e28cca07 add ip, ip, #28672 ; 0x7000
9058: e5bcffc8 ldr pc, \[ip, #4040\]! ; 0xfc8
diff --git a/ld/testsuite/ld-arm/ifunc-16.dd b/ld/testsuite/ld-arm/ifunc-16.dd
index d3b39bd..16c2a97 100644
--- a/ld/testsuite/ld-arm/ifunc-16.dd
+++ b/ld/testsuite/ld-arm/ifunc-16.dd
@@ -8,33 +8,33 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 9000: e28fc600 add ip, pc, #0
- 9004: e28cca08 add ip, ip, #32768 ; 0x8000
+ 9000: e28fc600 add ip, pc, #0, 12
+ 9004: e28cca08 add ip, ip, #8, 20 ; 0x8000
9008: e5bcf004 ldr pc, \[ip, #4\]!
#------------------------------------------------------------------------------
#------ f1t's .iplt entry
#------------------------------------------------------------------------------
- 900c: e28fc600 add ip, pc, #0
+ 900c: e28fc600 add ip, pc, #0, 12
9010: e28cca07 add ip, ip, #28672 ; 0x7000
9014: e5bcfffc ldr pc, \[ip, #4092\]! ; 0xffc
00009018 <f2t>:
- 9018: e28fc600 add ip, pc, #0
+ 9018: e28fc600 add ip, pc, #0, 12
901c: e28cca07 add ip, ip, #28672 ; 0x7000
9020: e5bcfff4 ldr pc, \[ip, #4084\]! ; 0xff4
00009024 <f3>:
- 9024: e28fc600 add ip, pc, #0
+ 9024: e28fc600 add ip, pc, #0, 12
9028: e28cca07 add ip, ip, #28672 ; 0x7000
902c: e5bcffec ldr pc, \[ip, #4076\]! ; 0xfec
00009030 <f2>:
- 9030: e28fc600 add ip, pc, #0
+ 9030: e28fc600 add ip, pc, #0, 12
9034: e28cca07 add ip, ip, #28672 ; 0x7000
9038: e5bcffe4 ldr pc, \[ip, #4068\]! ; 0xfe4
0000903c <f3t>:
- 903c: e28fc600 add ip, pc, #0
+ 903c: e28fc600 add ip, pc, #0, 12
9040: e28cca07 add ip, ip, #28672 ; 0x7000
9044: e5bcffdc ldr pc, \[ip, #4060\]! ; 0xfdc
diff --git a/ld/testsuite/ld-arm/ifunc-2.dd b/ld/testsuite/ld-arm/ifunc-2.dd
index 994069c..f6d57fa 100644
--- a/ld/testsuite/ld-arm/ifunc-2.dd
+++ b/ld/testsuite/ld-arm/ifunc-2.dd
@@ -8,13 +8,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 9000: e28fc600 add ip, pc, #0
- 9004: e28cca08 add ip, ip, #32768 ; 0x8000
+ 9000: e28fc600 add ip, pc, #0, 12
+ 9004: e28cca08 add ip, ip, #8, 20 ; 0x8000
9008: e5bcf004 ldr pc, \[ip, #4\]!
#------------------------------------------------------------------------------
#------ f2's .iplt entry
#------------------------------------------------------------------------------
- 900c: e28fc600 add ip, pc, #0
+ 900c: e28fc600 add ip, pc, #0, 12
9010: e28cca07 add ip, ip, #28672 ; 0x7000
9014: e5bcfffc ldr pc, \[ip, #4092\]! ; 0xffc
#------------------------------------------------------------------------------
@@ -25,7 +25,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f3's .iplt entry
#------------------------------------------------------------------------------
- 901c: e28fc600 add ip, pc, #0
+ 901c: e28fc600 add ip, pc, #0, 12
9020: e28cca07 add ip, ip, #28672 ; 0x7000
9024: e5bcfff0 ldr pc, \[ip, #4080\]! ; 0xff0
#------------------------------------------------------------------------------
@@ -36,7 +36,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f4's .iplt entry
#------------------------------------------------------------------------------
- 902c: e28fc600 add ip, pc, #0
+ 902c: e28fc600 add ip, pc, #0, 12
9030: e28cca07 add ip, ip, #28672 ; 0x7000
9034: e5bcffe4 ldr pc, \[ip, #4068\]! ; 0xfe4
#------------------------------------------------------------------------------
@@ -46,12 +46,12 @@ Disassembly of section \.iplt:
903a: 46c0 nop ; \(mov r8, r8\)
0000903c <f7>:
- 903c: e28fc600 add ip, pc, #0
+ 903c: e28fc600 add ip, pc, #0, 12
9040: e28cca07 add ip, ip, #28672 ; 0x7000
9044: e5bcffd8 ldr pc, \[ip, #4056\]! ; 0xfd8
00009048 <f5>:
- 9048: e28fc600 add ip, pc, #0
+ 9048: e28fc600 add ip, pc, #0, 12
904c: e28cca07 add ip, ip, #28672 ; 0x7000
9050: e5bcffd0 ldr pc, \[ip, #4048\]! ; 0xfd0
#------------------------------------------------------------------------------
@@ -61,12 +61,12 @@ Disassembly of section \.iplt:
9056: 46c0 nop ; \(mov r8, r8\)
00009058 <f8>:
- 9058: e28fc600 add ip, pc, #0
+ 9058: e28fc600 add ip, pc, #0, 12
905c: e28cca07 add ip, ip, #28672 ; 0x7000
9060: e5bcffc4 ldr pc, \[ip, #4036\]! ; 0xfc4
00009064 <f6>:
- 9064: e28fc600 add ip, pc, #0
+ 9064: e28fc600 add ip, pc, #0, 12
9068: e28cca07 add ip, ip, #28672 ; 0x7000
906c: e5bcffbc ldr pc, \[ip, #4028\]! ; 0xfbc
diff --git a/ld/testsuite/ld-arm/ifunc-3.dd b/ld/testsuite/ld-arm/ifunc-3.dd
index 824d516..a1fb37a 100644
--- a/ld/testsuite/ld-arm/ifunc-3.dd
+++ b/ld/testsuite/ld-arm/ifunc-3.dd
@@ -16,7 +16,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ f2's .plt entry
#------------------------------------------------------------------------------
- 9014: e28fc600 add ip, pc, #0
+ 9014: e28fc600 add ip, pc, #0, 12
9018: e28cca07 add ip, ip, #28672 ; 0x7000
901c: e5bcfff0 ldr pc, \[ip, #4080\]! ; 0xff0
@@ -26,19 +26,19 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 9020: e28fc600 add ip, pc, #0
+ 9020: e28fc600 add ip, pc, #0, 12
9024: e28cca07 add ip, ip, #28672 ; 0x7000
9028: e5bcffe8 ldr pc, \[ip, #4072\]! ; 0xfe8
#------------------------------------------------------------------------------
#------ f3's .iplt entry
#------------------------------------------------------------------------------
- 902c: e28fc600 add ip, pc, #0
+ 902c: e28fc600 add ip, pc, #0, 12
9030: e28cca07 add ip, ip, #28672 ; 0x7000
9034: e5bcffe0 ldr pc, \[ip, #4064\]! ; 0xfe0
#------------------------------------------------------------------------------
#------ f4's .iplt entry
#------------------------------------------------------------------------------
- 9038: e28fc600 add ip, pc, #0
+ 9038: e28fc600 add ip, pc, #0, 12
903c: e28cca07 add ip, ip, #28672 ; 0x7000
9040: e5bcffd8 ldr pc, \[ip, #4056\]! ; 0xfd8
diff --git a/ld/testsuite/ld-arm/ifunc-4.dd b/ld/testsuite/ld-arm/ifunc-4.dd
index afac397..f5a4d91 100644
--- a/ld/testsuite/ld-arm/ifunc-4.dd
+++ b/ld/testsuite/ld-arm/ifunc-4.dd
@@ -21,7 +21,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ atf2's .plt entry
#------------------------------------------------------------------------------
- 9018: e28fc600 add ip, pc, #0
+ 9018: e28fc600 add ip, pc, #0, 12
901c: e28cca07 add ip, ip, #28672 ; 0x7000
9020: e5bcffec ldr pc, \[ip, #4076\]! ; 0xfec
#------------------------------------------------------------------------------
@@ -32,7 +32,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ ttf2's .plt entry
#------------------------------------------------------------------------------
- 9028: e28fc600 add ip, pc, #0
+ 9028: e28fc600 add ip, pc, #0, 12
902c: e28cca07 add ip, ip, #28672 ; 0x7000
9030: e5bcffe0 ldr pc, \[ip, #4064\]! ; 0xfe0
#------------------------------------------------------------------------------
@@ -43,19 +43,19 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ tbf2's .plt entry
#------------------------------------------------------------------------------
- 9038: e28fc600 add ip, pc, #0
+ 9038: e28fc600 add ip, pc, #0, 12
903c: e28cca07 add ip, ip, #28672 ; 0x7000
9040: e5bcffd4 ldr pc, \[ip, #4052\]! ; 0xfd4
#------------------------------------------------------------------------------
#------ taf2's .plt entry
#------------------------------------------------------------------------------
- 9044: e28fc600 add ip, pc, #0
+ 9044: e28fc600 add ip, pc, #0, 12
9048: e28cca07 add ip, ip, #28672 ; 0x7000
904c: e5bcffcc ldr pc, \[ip, #4044\]! ; 0xfcc
#------------------------------------------------------------------------------
#------ aaf2's .plt entry
#------------------------------------------------------------------------------
- 9050: e28fc600 add ip, pc, #0
+ 9050: e28fc600 add ip, pc, #0, 12
9054: e28cca07 add ip, ip, #28672 ; 0x7000
9058: e5bcffc4 ldr pc, \[ip, #4036\]! ; 0xfc4
#------------------------------------------------------------------------------
@@ -66,7 +66,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ abf2's .plt entry
#------------------------------------------------------------------------------
- 9060: e28fc600 add ip, pc, #0
+ 9060: e28fc600 add ip, pc, #0, 12
9064: e28cca07 add ip, ip, #28672 ; 0x7000
9068: e5bcffb8 ldr pc, \[ip, #4024\]! ; 0xfb8
@@ -76,7 +76,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ aaf1's .iplt entry
#------------------------------------------------------------------------------
- 906c: e28fc600 add ip, pc, #0
+ 906c: e28fc600 add ip, pc, #0, 12
9070: e28cca07 add ip, ip, #28672 ; 0x7000
9074: e5bcffb0 ldr pc, \[ip, #4016\]! ; 0xfb0
#------------------------------------------------------------------------------
@@ -87,7 +87,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ atf1's .iplt entry
#------------------------------------------------------------------------------
- 907c: e28fc600 add ip, pc, #0
+ 907c: e28fc600 add ip, pc, #0, 12
9080: e28cca07 add ip, ip, #28672 ; 0x7000
9084: e5bcffa4 ldr pc, \[ip, #4004\]! ; 0xfa4
#------------------------------------------------------------------------------
@@ -98,13 +98,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ abf1's .iplt entry
#------------------------------------------------------------------------------
- 908c: e28fc600 add ip, pc, #0
+ 908c: e28fc600 add ip, pc, #0, 12
9090: e28cca07 add ip, ip, #28672 ; 0x7000
9094: e5bcff98 ldr pc, \[ip, #3992\]! ; 0xf98
#------------------------------------------------------------------------------
#------ taf1's .iplt entry
#------------------------------------------------------------------------------
- 9098: e28fc600 add ip, pc, #0
+ 9098: e28fc600 add ip, pc, #0, 12
909c: e28cca07 add ip, ip, #28672 ; 0x7000
90a0: e5bcff90 ldr pc, \[ip, #3984\]! ; 0xf90
#------------------------------------------------------------------------------
@@ -115,7 +115,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ ttf1's .iplt entry
#------------------------------------------------------------------------------
- 90a8: e28fc600 add ip, pc, #0
+ 90a8: e28fc600 add ip, pc, #0, 12
90ac: e28cca07 add ip, ip, #28672 ; 0x7000
90b0: e5bcff84 ldr pc, \[ip, #3972\]! ; 0xf84
#------------------------------------------------------------------------------
@@ -126,13 +126,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ tbf1's .iplt entry
#------------------------------------------------------------------------------
- 90b8: e28fc600 add ip, pc, #0
+ 90b8: e28fc600 add ip, pc, #0, 12
90bc: e28cca07 add ip, ip, #28672 ; 0x7000
90c0: e5bcff78 ldr pc, \[ip, #3960\]! ; 0xf78
#------------------------------------------------------------------------------
#------ aaf4's .iplt entry
#------------------------------------------------------------------------------
- 90c4: e28fc600 add ip, pc, #0
+ 90c4: e28fc600 add ip, pc, #0, 12
90c8: e28cca07 add ip, ip, #28672 ; 0x7000
90cc: e5bcff70 ldr pc, \[ip, #3952\]! ; 0xf70
#------------------------------------------------------------------------------
@@ -143,7 +143,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ atf3's .iplt entry
#------------------------------------------------------------------------------
- 90d4: e28fc600 add ip, pc, #0
+ 90d4: e28fc600 add ip, pc, #0, 12
90d8: e28cca07 add ip, ip, #28672 ; 0x7000
90dc: e5bcff64 ldr pc, \[ip, #3940\]! ; 0xf64
#------------------------------------------------------------------------------
@@ -154,7 +154,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ abf3's .iplt entry
#------------------------------------------------------------------------------
- 90e4: e28fc600 add ip, pc, #0
+ 90e4: e28fc600 add ip, pc, #0, 12
90e8: e28cca07 add ip, ip, #28672 ; 0x7000
90ec: e5bcff58 ldr pc, \[ip, #3928\]! ; 0xf58
#------------------------------------------------------------------------------
@@ -165,7 +165,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ ttf3's .iplt entry
#------------------------------------------------------------------------------
- 90f4: e28fc600 add ip, pc, #0
+ 90f4: e28fc600 add ip, pc, #0, 12
90f8: e28cca07 add ip, ip, #28672 ; 0x7000
90fc: e5bcff4c ldr pc, \[ip, #3916\]! ; 0xf4c
#------------------------------------------------------------------------------
@@ -176,13 +176,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ tbf3's .iplt entry
#------------------------------------------------------------------------------
- 9104: e28fc600 add ip, pc, #0
+ 9104: e28fc600 add ip, pc, #0, 12
9108: e28cca07 add ip, ip, #28672 ; 0x7000
910c: e5bcff40 ldr pc, \[ip, #3904\]! ; 0xf40
#------------------------------------------------------------------------------
#------ taf3's .iplt entry
#------------------------------------------------------------------------------
- 9110: e28fc600 add ip, pc, #0
+ 9110: e28fc600 add ip, pc, #0, 12
9114: e28cca07 add ip, ip, #28672 ; 0x7000
9118: e5bcff38 ldr pc, \[ip, #3896\]! ; 0xf38
#------------------------------------------------------------------------------
@@ -193,7 +193,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ abf4's .iplt entry
#------------------------------------------------------------------------------
- 9120: e28fc600 add ip, pc, #0
+ 9120: e28fc600 add ip, pc, #0, 12
9124: e28cca07 add ip, ip, #28672 ; 0x7000
9128: e5bcff2c ldr pc, \[ip, #3884\]! ; 0xf2c
#------------------------------------------------------------------------------
@@ -204,7 +204,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ tbf4's .iplt entry
#------------------------------------------------------------------------------
- 9130: e28fc600 add ip, pc, #0
+ 9130: e28fc600 add ip, pc, #0, 12
9134: e28cca07 add ip, ip, #28672 ; 0x7000
9138: e5bcff20 ldr pc, \[ip, #3872\]! ; 0xf20
#------------------------------------------------------------------------------
@@ -215,13 +215,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ ttf4's .iplt entry
#------------------------------------------------------------------------------
- 9140: e28fc600 add ip, pc, #0
+ 9140: e28fc600 add ip, pc, #0, 12
9144: e28cca07 add ip, ip, #28672 ; 0x7000
9148: e5bcff14 ldr pc, \[ip, #3860\]! ; 0xf14
#------------------------------------------------------------------------------
#------ aaf3's .iplt entry
#------------------------------------------------------------------------------
- 914c: e28fc600 add ip, pc, #0
+ 914c: e28fc600 add ip, pc, #0, 12
9150: e28cca07 add ip, ip, #28672 ; 0x7000
9154: e5bcff0c ldr pc, \[ip, #3852\]! ; 0xf0c
#------------------------------------------------------------------------------
@@ -232,13 +232,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ atf4's .iplt entry
#------------------------------------------------------------------------------
- 915c: e28fc600 add ip, pc, #0
+ 915c: e28fc600 add ip, pc, #0, 12
9160: e28cca07 add ip, ip, #28672 ; 0x7000
9164: e5bcff00 ldr pc, \[ip, #3840\]! ; 0xf00
#------------------------------------------------------------------------------
#------ taf4's .iplt entry
#------------------------------------------------------------------------------
- 9168: e28fc600 add ip, pc, #0
+ 9168: e28fc600 add ip, pc, #0, 12
916c: e28cca07 add ip, ip, #28672 ; 0x7000
9170: e5bcfef8 ldr pc, \[ip, #3832\]! ; 0xef8
diff --git a/ld/testsuite/ld-arm/ifunc-5.dd b/ld/testsuite/ld-arm/ifunc-5.dd
index 0fe8255..b0bf597 100644
--- a/ld/testsuite/ld-arm/ifunc-5.dd
+++ b/ld/testsuite/ld-arm/ifunc-5.dd
@@ -8,19 +8,19 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 9000: e28fc600 add ip, pc, #0
- 9004: e28cca08 add ip, ip, #32768 ; 0x8000
+ 9000: e28fc600 add ip, pc, #0, 12
+ 9004: e28cca08 add ip, ip, #8, 20 ; 0x8000
9008: e5bcf004 ldr pc, \[ip, #4\]!
#------------------------------------------------------------------------------
#------ f3's .iplt entry
#------------------------------------------------------------------------------
- 900c: e28fc600 add ip, pc, #0
+ 900c: e28fc600 add ip, pc, #0, 12
9010: e28cca07 add ip, ip, #28672 ; 0x7000
9014: e5bcfffc ldr pc, \[ip, #4092\]! ; 0xffc
#------------------------------------------------------------------------------
#------ f2's .iplt entry
#------------------------------------------------------------------------------
- 9018: e28fc600 add ip, pc, #0
+ 9018: e28fc600 add ip, pc, #0, 12
901c: e28cca07 add ip, ip, #28672 ; 0x7000
9020: e5bcfff4 ldr pc, \[ip, #4084\]! ; 0xff4
diff --git a/ld/testsuite/ld-arm/ifunc-6.dd b/ld/testsuite/ld-arm/ifunc-6.dd
index c78c8d4..3c9cbd5 100644
--- a/ld/testsuite/ld-arm/ifunc-6.dd
+++ b/ld/testsuite/ld-arm/ifunc-6.dd
@@ -13,13 +13,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f3's .iplt entry
#------------------------------------------------------------------------------
- 9004: e28fc600 add ip, pc, #0
- 9008: e28cca08 add ip, ip, #32768 ; 0x8000
+ 9004: e28fc600 add ip, pc, #0, 12
+ 9008: e28cca08 add ip, ip, #8, 20 ; 0x8000
900c: e5bcf000 ldr pc, \[ip, #0\]!
#------------------------------------------------------------------------------
#------ f2's .iplt entry
#------------------------------------------------------------------------------
- 9010: e28fc600 add ip, pc, #0
+ 9010: e28fc600 add ip, pc, #0, 12
9014: e28cca07 add ip, ip, #28672 ; 0x7000
9018: e5bcfff8 ldr pc, \[ip, #4088\]! ; 0xff8
#------------------------------------------------------------------------------
@@ -30,13 +30,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f4's .iplt entry
#------------------------------------------------------------------------------
- 9020: e28fc600 add ip, pc, #0
+ 9020: e28fc600 add ip, pc, #0, 12
9024: e28cca07 add ip, ip, #28672 ; 0x7000
9028: e5bcffec ldr pc, \[ip, #4076\]! ; 0xfec
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 902c: e28fc600 add ip, pc, #0
+ 902c: e28fc600 add ip, pc, #0, 12
9030: e28cca07 add ip, ip, #28672 ; 0x7000
9034: e5bcffe4 ldr pc, \[ip, #4068\]! ; 0xfe4
diff --git a/ld/testsuite/ld-arm/ifunc-7.dd b/ld/testsuite/ld-arm/ifunc-7.dd
index 5db88fb..e9a9681 100644
--- a/ld/testsuite/ld-arm/ifunc-7.dd
+++ b/ld/testsuite/ld-arm/ifunc-7.dd
@@ -16,13 +16,13 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ f2's .plt entry
#------------------------------------------------------------------------------
- 9014: e28fc600 add ip, pc, #0
+ 9014: e28fc600 add ip, pc, #0, 12
9018: e28cca07 add ip, ip, #28672 ; 0x7000
901c: e5bcfff0 ldr pc, \[ip, #4080\]! ; 0xff0
#------------------------------------------------------------------------------
#------ f4's .plt entry
#------------------------------------------------------------------------------
- 9020: e28fc600 add ip, pc, #0
+ 9020: e28fc600 add ip, pc, #0, 12
9024: e28cca07 add ip, ip, #28672 ; 0x7000
9028: e5bcffe8 ldr pc, \[ip, #4072\]! ; 0xfe8
@@ -32,13 +32,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 902c: e28fc600 add ip, pc, #0
+ 902c: e28fc600 add ip, pc, #0, 12
9030: e28cca07 add ip, ip, #28672 ; 0x7000
9034: e5bcffe0 ldr pc, \[ip, #4064\]! ; 0xfe0
#------------------------------------------------------------------------------
#------ f3's .iplt entry
#------------------------------------------------------------------------------
- 9038: e28fc600 add ip, pc, #0
+ 9038: e28fc600 add ip, pc, #0, 12
903c: e28cca07 add ip, ip, #28672 ; 0x7000
9040: e5bcffd8 ldr pc, \[ip, #4056\]! ; 0xfd8
diff --git a/ld/testsuite/ld-arm/ifunc-8.dd b/ld/testsuite/ld-arm/ifunc-8.dd
index f14ab34..5b255e2 100644
--- a/ld/testsuite/ld-arm/ifunc-8.dd
+++ b/ld/testsuite/ld-arm/ifunc-8.dd
@@ -21,13 +21,13 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ atf2's .plt entry
#------------------------------------------------------------------------------
- 9018: e28fc600 add ip, pc, #0
+ 9018: e28fc600 add ip, pc, #0, 12
901c: e28cca07 add ip, ip, #28672 ; 0x7000
9020: e5bcffec ldr pc, \[ip, #4076\]! ; 0xfec
#------------------------------------------------------------------------------
#------ aaf4's .plt entry
#------------------------------------------------------------------------------
- 9024: e28fc600 add ip, pc, #0
+ 9024: e28fc600 add ip, pc, #0, 12
9028: e28cca07 add ip, ip, #28672 ; 0x7000
902c: e5bcffe4 ldr pc, \[ip, #4068\]! ; 0xfe4
#------------------------------------------------------------------------------
@@ -38,7 +38,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ ttf2's .plt entry
#------------------------------------------------------------------------------
- 9034: e28fc600 add ip, pc, #0
+ 9034: e28fc600 add ip, pc, #0, 12
9038: e28cca07 add ip, ip, #28672 ; 0x7000
903c: e5bcffd8 ldr pc, \[ip, #4056\]! ; 0xfd8
#------------------------------------------------------------------------------
@@ -49,19 +49,19 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ tbf2's .plt entry
#------------------------------------------------------------------------------
- 9044: e28fc600 add ip, pc, #0
+ 9044: e28fc600 add ip, pc, #0, 12
9048: e28cca07 add ip, ip, #28672 ; 0x7000
904c: e5bcffcc ldr pc, \[ip, #4044\]! ; 0xfcc
#------------------------------------------------------------------------------
#------ taf2's .plt entry
#------------------------------------------------------------------------------
- 9050: e28fc600 add ip, pc, #0
+ 9050: e28fc600 add ip, pc, #0, 12
9054: e28cca07 add ip, ip, #28672 ; 0x7000
9058: e5bcffc4 ldr pc, \[ip, #4036\]! ; 0xfc4
#------------------------------------------------------------------------------
#------ aaf2's .plt entry
#------------------------------------------------------------------------------
- 905c: e28fc600 add ip, pc, #0
+ 905c: e28fc600 add ip, pc, #0, 12
9060: e28cca07 add ip, ip, #28672 ; 0x7000
9064: e5bcffbc ldr pc, \[ip, #4028\]! ; 0xfbc
#------------------------------------------------------------------------------
@@ -72,7 +72,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ abf4's .plt entry
#------------------------------------------------------------------------------
- 906c: e28fc600 add ip, pc, #0
+ 906c: e28fc600 add ip, pc, #0, 12
9070: e28cca07 add ip, ip, #28672 ; 0x7000
9074: e5bcffb0 ldr pc, \[ip, #4016\]! ; 0xfb0
#------------------------------------------------------------------------------
@@ -83,7 +83,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ tbf4's .plt entry
#------------------------------------------------------------------------------
- 907c: e28fc600 add ip, pc, #0
+ 907c: e28fc600 add ip, pc, #0, 12
9080: e28cca07 add ip, ip, #28672 ; 0x7000
9084: e5bcffa4 ldr pc, \[ip, #4004\]! ; 0xfa4
#------------------------------------------------------------------------------
@@ -94,7 +94,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ ttf4's .plt entry
#------------------------------------------------------------------------------
- 908c: e28fc600 add ip, pc, #0
+ 908c: e28fc600 add ip, pc, #0, 12
9090: e28cca07 add ip, ip, #28672 ; 0x7000
9094: e5bcff98 ldr pc, \[ip, #3992\]! ; 0xf98
#------------------------------------------------------------------------------
@@ -105,13 +105,13 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ atf4's .plt entry
#------------------------------------------------------------------------------
- 909c: e28fc600 add ip, pc, #0
+ 909c: e28fc600 add ip, pc, #0, 12
90a0: e28cca07 add ip, ip, #28672 ; 0x7000
90a4: e5bcff8c ldr pc, \[ip, #3980\]! ; 0xf8c
#------------------------------------------------------------------------------
#------ taf4's .plt entry
#------------------------------------------------------------------------------
- 90a8: e28fc600 add ip, pc, #0
+ 90a8: e28fc600 add ip, pc, #0, 12
90ac: e28cca07 add ip, ip, #28672 ; 0x7000
90b0: e5bcff84 ldr pc, \[ip, #3972\]! ; 0xf84
#------------------------------------------------------------------------------
@@ -122,7 +122,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ abf2's .plt entry
#------------------------------------------------------------------------------
- 90b8: e28fc600 add ip, pc, #0
+ 90b8: e28fc600 add ip, pc, #0, 12
90bc: e28cca07 add ip, ip, #28672 ; 0x7000
90c0: e5bcff78 ldr pc, \[ip, #3960\]! ; 0xf78
@@ -132,7 +132,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ aaf1's .iplt entry
#------------------------------------------------------------------------------
- 90c4: e28fc600 add ip, pc, #0
+ 90c4: e28fc600 add ip, pc, #0, 12
90c8: e28cca07 add ip, ip, #28672 ; 0x7000
90cc: e5bcff70 ldr pc, \[ip, #3952\]! ; 0xf70
#------------------------------------------------------------------------------
@@ -143,7 +143,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ atf1's .iplt entry
#------------------------------------------------------------------------------
- 90d4: e28fc600 add ip, pc, #0
+ 90d4: e28fc600 add ip, pc, #0, 12
90d8: e28cca07 add ip, ip, #28672 ; 0x7000
90dc: e5bcff64 ldr pc, \[ip, #3940\]! ; 0xf64
#------------------------------------------------------------------------------
@@ -154,13 +154,13 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ abf1's .iplt entry
#------------------------------------------------------------------------------
- 90e4: e28fc600 add ip, pc, #0
+ 90e4: e28fc600 add ip, pc, #0, 12
90e8: e28cca07 add ip, ip, #28672 ; 0x7000
90ec: e5bcff58 ldr pc, \[ip, #3928\]! ; 0xf58
#------------------------------------------------------------------------------
#------ taf1's .iplt entry
#------------------------------------------------------------------------------
- 90f0: e28fc600 add ip, pc, #0
+ 90f0: e28fc600 add ip, pc, #0, 12
90f4: e28cca07 add ip, ip, #28672 ; 0x7000
90f8: e5bcff50 ldr pc, \[ip, #3920\]! ; 0xf50
#------------------------------------------------------------------------------
@@ -171,7 +171,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ ttf1's .iplt entry
#------------------------------------------------------------------------------
- 9100: e28fc600 add ip, pc, #0
+ 9100: e28fc600 add ip, pc, #0, 12
9104: e28cca07 add ip, ip, #28672 ; 0x7000
9108: e5bcff44 ldr pc, \[ip, #3908\]! ; 0xf44
#------------------------------------------------------------------------------
@@ -182,7 +182,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ tbf1's .iplt entry
#------------------------------------------------------------------------------
- 9110: e28fc600 add ip, pc, #0
+ 9110: e28fc600 add ip, pc, #0, 12
9114: e28cca07 add ip, ip, #28672 ; 0x7000
9118: e5bcff38 ldr pc, \[ip, #3896\]! ; 0xf38
#------------------------------------------------------------------------------
@@ -193,7 +193,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ atf3's .iplt entry
#------------------------------------------------------------------------------
- 9120: e28fc600 add ip, pc, #0
+ 9120: e28fc600 add ip, pc, #0, 12
9124: e28cca07 add ip, ip, #28672 ; 0x7000
9128: e5bcff2c ldr pc, \[ip, #3884\]! ; 0xf2c
#------------------------------------------------------------------------------
@@ -204,7 +204,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ abf3's .iplt entry
#------------------------------------------------------------------------------
- 9130: e28fc600 add ip, pc, #0
+ 9130: e28fc600 add ip, pc, #0, 12
9134: e28cca07 add ip, ip, #28672 ; 0x7000
9138: e5bcff20 ldr pc, \[ip, #3872\]! ; 0xf20
#------------------------------------------------------------------------------
@@ -215,7 +215,7 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ ttf3's .iplt entry
#------------------------------------------------------------------------------
- 9140: e28fc600 add ip, pc, #0
+ 9140: e28fc600 add ip, pc, #0, 12
9144: e28cca07 add ip, ip, #28672 ; 0x7000
9148: e5bcff14 ldr pc, \[ip, #3860\]! ; 0xf14
#------------------------------------------------------------------------------
@@ -226,19 +226,19 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ tbf3's .iplt entry
#------------------------------------------------------------------------------
- 9150: e28fc600 add ip, pc, #0
+ 9150: e28fc600 add ip, pc, #0, 12
9154: e28cca07 add ip, ip, #28672 ; 0x7000
9158: e5bcff08 ldr pc, \[ip, #3848\]! ; 0xf08
#------------------------------------------------------------------------------
#------ taf3's .iplt entry
#------------------------------------------------------------------------------
- 915c: e28fc600 add ip, pc, #0
+ 915c: e28fc600 add ip, pc, #0, 12
9160: e28cca07 add ip, ip, #28672 ; 0x7000
9164: e5bcff00 ldr pc, \[ip, #3840\]! ; 0xf00
#------------------------------------------------------------------------------
#------ aaf3's .iplt entry
#------------------------------------------------------------------------------
- 9168: e28fc600 add ip, pc, #0
+ 9168: e28fc600 add ip, pc, #0, 12
916c: e28cca07 add ip, ip, #28672 ; 0x7000
9170: e5bcfef8 ldr pc, \[ip, #3832\]! ; 0xef8
diff --git a/ld/testsuite/ld-arm/ifunc-9.dd b/ld/testsuite/ld-arm/ifunc-9.dd
index be8f3d0..36139d9 100644
--- a/ld/testsuite/ld-arm/ifunc-9.dd
+++ b/ld/testsuite/ld-arm/ifunc-9.dd
@@ -16,7 +16,7 @@ Disassembly of section \.plt:
#------------------------------------------------------------------------------
#------ f2's .plt entry
#------------------------------------------------------------------------------
- 9014: e28fc600 add ip, pc, #0
+ 9014: e28fc600 add ip, pc, #0, 12
9018: e28cca07 add ip, ip, #28672 ; 0x7000
901c: e5bcfff0 ldr pc, \[ip, #4080\]! ; 0xff0
@@ -26,12 +26,12 @@ Disassembly of section \.iplt:
#------------------------------------------------------------------------------
#------ f1's .iplt entry
#------------------------------------------------------------------------------
- 9020: e28fc600 add ip, pc, #0
+ 9020: e28fc600 add ip, pc, #0, 12
9024: e28cca07 add ip, ip, #28672 ; 0x7000
9028: e5bcffe8 ldr pc, \[ip, #4072\]! ; 0xfe8
0000902c <f3>:
- 902c: e28fc600 add ip, pc, #0
+ 902c: e28fc600 add ip, pc, #0, 12
9030: e28cca07 add ip, ip, #28672 ; 0x7000
9034: e5bcffe0 ldr pc, \[ip, #4064\]! ; 0xfe0
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 42dcc60..e14b99f 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-18 Jie Zhang <jie@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * arm-dis.c (print_insn_arm): Explicitly specify rotation if needed.
+
2011-10-10 Nick Clifton <nickc@redhat.com>
* po/es.po: Updated Spanish translation.
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index fafa7f6..03062ad 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -3140,13 +3140,23 @@ print_insn_arm (bfd_vma pc, struct disassemble_info *info, long given)
case 'o':
if ((given & 0x02000000) != 0)
{
- int rotate = (given & 0xf00) >> 7;
- int immed = (given & 0xff);
+ unsigned int rotate = (given & 0xf00) >> 7;
+ unsigned int immed = (given & 0xff);
+ unsigned int a, i;
+
+ a = (((immed << (32 - rotate))
+ | (immed >> rotate)) & 0xffffffff);
+ /* If there is another encoding with smaller rotate,
+ the rotate should be specified directly. */
+ for (i = 0; i < 32; i += 2)
+ if ((a << i | a >> (32 - i)) <= 0xff)
+ break;
- immed = (((immed << (32 - rotate))
- | (immed >> rotate)) & 0xffffffff);
- func (stream, "#%d", immed);
- value_in_comment = immed;
+ if (i != rotate)
+ func (stream, "#%d, %d", immed, rotate);
+ else
+ func (stream, "#%d", a);
+ value_in_comment = a;
}
else
arm_decode_shift (given, func, stream, TRUE);