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]

[PATCH, ARM] Fix assembly & disassembly of ARM immediates with explicit rotations


Hi,

This patch (originally by Jie Zhang) fixes assembly and disassembly of
immediates with explicit rotations, and tweaks the expected output of
several tests which use non-canonical immediate representations to
match the revised disassembled output.

Disassembly only uses explicit-rotation syntax if the immediate in
question uses a non-canonical form, i.e. if it does not use a minimal
rotation amount. PLT entries (in particular) use a non-canonical form
of immediate, hence the changes in test output (changing the form of
the PLT entries themselves is, I think, unwise).

OK to apply?

Thanks,

Julian

ChangeLog

    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.
Index: gas/config/tc-arm.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-arm.c,v
retrieving revision 1.501
diff -u -p -r1.501 tc-arm.c
--- gas/config/tc-arm.c	13 Oct 2011 08:15:15 -0000	1.501
+++ gas/config/tc-arm.c	13 Oct 2011 17:20:42 -0000
@@ -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.  */
Index: gas/testsuite/gas/arm/adrl.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/arm/adrl.d,v
retrieving revision 1.7
diff -u -p -r1.7 adrl.d
--- gas/testsuite/gas/arm/adrl.d	30 Jun 2009 11:57:05 -0000	1.7
+++ gas/testsuite/gas/arm/adrl.d	13 Oct 2011 17:20:42 -0000
@@ -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\)
 	...
Index: gas/testsuite/gas/arm/immed2.d
===================================================================
RCS file: gas/testsuite/gas/arm/immed2.d
diff -N gas/testsuite/gas/arm/immed2.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/arm/immed2.d	13 Oct 2011 17:20:42 -0000
@@ -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
Index: gas/testsuite/gas/arm/immed2.s
===================================================================
RCS file: gas/testsuite/gas/arm/immed2.s
diff -N gas/testsuite/gas/arm/immed2.s
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/testsuite/gas/arm/immed2.s	13 Oct 2011 17:20:42 -0000
@@ -0,0 +1,4 @@
+@	Tests for modified immediate constants with specified rotate
+	.text
+bar:
+	cmplt	r1, #0x9c, 4
Index: ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d,v
retrieving revision 1.1
diff -u -p -r1.1 cortex-a8-fix-b-plt.d
--- ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d	6 May 2011 10:21:32 -0000	1.1
+++ ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d	13 Oct 2011 17:20:42 -0000
@@ -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:
Index: ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d,v
retrieving revision 1.2
diff -u -p -r1.2 cortex-a8-fix-bcc-plt.d
--- ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d	2 Jun 2011 15:32:09 -0000	1.2
+++ ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d	13 Oct 2011 17:20:42 -0000
@@ -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\]!
 
Index: ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d,v
retrieving revision 1.1
diff -u -p -r1.1 cortex-a8-fix-bl-plt.d
--- ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d	6 May 2011 10:21:32 -0000	1.1
+++ ld/testsuite/ld-arm/cortex-a8-fix-bl-plt.d	13 Oct 2011 17:20:42 -0000
@@ -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:
Index: ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d,v
retrieving revision 1.1
diff -u -p -r1.1 cortex-a8-fix-bl-rel-plt.d
--- ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d	7 May 2010 18:24:48 -0000	1.1
+++ ld/testsuite/ld-arm/cortex-a8-fix-bl-rel-plt.d	13 Oct 2011 17:20:42 -0000
@@ -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:
Index: ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d,v
retrieving revision 1.1
diff -u -p -r1.1 cortex-a8-fix-blx-plt.d
--- ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d	6 May 2011 10:21:32 -0000	1.1
+++ ld/testsuite/ld-arm/cortex-a8-fix-blx-plt.d	13 Oct 2011 17:20:42 -0000
@@ -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:
Index: ld/testsuite/ld-arm/ifunc-1.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-1.dd,v
retrieving revision 1.1
diff -u -p -r1.1 ifunc-1.dd
--- ld/testsuite/ld-arm/ifunc-1.dd	14 Mar 2011 16:04:14 -0000	1.1
+++ ld/testsuite/ld-arm/ifunc-1.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-10.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-10.dd,v
retrieving revision 1.2
diff -u -p -r1.2 ifunc-10.dd
--- ld/testsuite/ld-arm/ifunc-10.dd	2 Jun 2011 15:32:10 -0000	1.2
+++ ld/testsuite/ld-arm/ifunc-10.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-14.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-14.dd,v
retrieving revision 1.1
diff -u -p -r1.1 ifunc-14.dd
--- ld/testsuite/ld-arm/ifunc-14.dd	14 Mar 2011 16:04:14 -0000	1.1
+++ ld/testsuite/ld-arm/ifunc-14.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-15.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-15.dd,v
retrieving revision 1.1
diff -u -p -r1.1 ifunc-15.dd
--- ld/testsuite/ld-arm/ifunc-15.dd	14 Mar 2011 16:04:14 -0000	1.1
+++ ld/testsuite/ld-arm/ifunc-15.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-16.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-16.dd,v
retrieving revision 1.1
diff -u -p -r1.1 ifunc-16.dd
--- ld/testsuite/ld-arm/ifunc-16.dd	14 Mar 2011 16:04:14 -0000	1.1
+++ ld/testsuite/ld-arm/ifunc-16.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-2.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-2.dd,v
retrieving revision 1.1
diff -u -p -r1.1 ifunc-2.dd
--- ld/testsuite/ld-arm/ifunc-2.dd	14 Mar 2011 16:04:14 -0000	1.1
+++ ld/testsuite/ld-arm/ifunc-2.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-3.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-3.dd,v
retrieving revision 1.2
diff -u -p -r1.2 ifunc-3.dd
--- ld/testsuite/ld-arm/ifunc-3.dd	2 Jun 2011 15:32:10 -0000	1.2
+++ ld/testsuite/ld-arm/ifunc-3.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-4.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-4.dd,v
retrieving revision 1.2
diff -u -p -r1.2 ifunc-4.dd
--- ld/testsuite/ld-arm/ifunc-4.dd	2 Jun 2011 15:32:10 -0000	1.2
+++ ld/testsuite/ld-arm/ifunc-4.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-5.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-5.dd,v
retrieving revision 1.2
diff -u -p -r1.2 ifunc-5.dd
--- ld/testsuite/ld-arm/ifunc-5.dd	2 Jun 2011 15:32:10 -0000	1.2
+++ ld/testsuite/ld-arm/ifunc-5.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-6.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-6.dd,v
retrieving revision 1.2
diff -u -p -r1.2 ifunc-6.dd
--- ld/testsuite/ld-arm/ifunc-6.dd	2 Jun 2011 15:32:10 -0000	1.2
+++ ld/testsuite/ld-arm/ifunc-6.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-7.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-7.dd,v
retrieving revision 1.2
diff -u -p -r1.2 ifunc-7.dd
--- ld/testsuite/ld-arm/ifunc-7.dd	2 Jun 2011 15:32:10 -0000	1.2
+++ ld/testsuite/ld-arm/ifunc-7.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-8.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-8.dd,v
retrieving revision 1.2
diff -u -p -r1.2 ifunc-8.dd
--- ld/testsuite/ld-arm/ifunc-8.dd	2 Jun 2011 15:32:10 -0000	1.2
+++ ld/testsuite/ld-arm/ifunc-8.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: ld/testsuite/ld-arm/ifunc-9.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/ifunc-9.dd,v
retrieving revision 1.1
diff -u -p -r1.1 ifunc-9.dd
--- ld/testsuite/ld-arm/ifunc-9.dd	14 Mar 2011 16:04:14 -0000	1.1
+++ ld/testsuite/ld-arm/ifunc-9.dd	13 Oct 2011 17:20:42 -0000
@@ -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
 
Index: opcodes/arm-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/arm-dis.c,v
retrieving revision 1.148
diff -u -p -r1.148 arm-dis.c
--- opcodes/arm-dis.c	12 Jul 2011 08:45:45 -0000	1.148
+++ opcodes/arm-dis.c	13 Oct 2011 17:20:42 -0000
@@ -3140,13 +3140,23 @@ print_insn_arm (bfd_vma pc, struct disas
 		    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);

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