* [ARM] objdump and disassembler_needs_relocs
@ 2010-02-05 16:40 Christophe LYON
2010-02-08 14:35 ` Nick Clifton
0 siblings, 1 reply; 3+ messages in thread
From: Christophe LYON @ 2010-02-05 16:40 UTC (permalink / raw)
To: Binutils
[-- Attachment #1: Type: text/plain, Size: 301 bytes --]
Hi all,
While working on other bug fixes and analyzing objdump outputs, I
noticed that some addresses were incorrectly displayed.
The is because on ARM 'disassembler_needs_relocs' is true, and
relocations from previous instructions are used to print addresses of
the next ones.
OK?
Christophe.
[-- Attachment #2: objdump-needrelocs.changelog --]
[-- Type: text/plain, Size: 338 bytes --]
2010-02-05 Christophe Lyon <christophe.lyon@st.com>
binutils/
* objdump.c (disassemble_bytes): Clear aux->reloc before printing
a new address, so as not to reuse a previous, non-related reloc.
gas/testsuite/
* gas/arm/arm-it-auto.d, gas/arm/bl-local-v4t.d,
gas/arm/blx-local.d, gas/arm/thumb-w-good.d: Update expected
results.
[-- Attachment #3: objdump-needrelocs.patch --]
[-- Type: text/x-patch, Size: 5100 bytes --]
Index: binutils/objdump.c
===================================================================
RCS file: /cvs/src/src/binutils/objdump.c,v
retrieving revision 1.170
diff -u -b -p -r1.170 objdump.c
--- binutils/objdump.c 28 Jan 2010 15:25:20 -0000 1.170
+++ binutils/objdump.c 5 Feb 2010 16:20:39 -0000
@@ -1516,6 +1516,9 @@ disassemble_bytes (struct disassemble_in
previous_octets = octets;
octets = 0;
+ /* Make sure we don't use relocs from previous instructions. */
+ aux->reloc = NULL;
+
/* If we see more than SKIP_ZEROES octets of zeroes, we just
print `...'. */
for (z = addr_offset * opb; z < stop_offset * opb; z++)
@@ -1619,8 +1622,6 @@ disassemble_bytes (struct disassemble_in
inf->flags |= INSN_HAS_RELOC;
aux->reloc = **relppp;
}
- else
- aux->reloc = NULL;
}
octets = (*disassemble_fn) (section->vma + addr_offset, inf);
Index: gas/testsuite/gas/arm/arm-it-auto.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/arm/arm-it-auto.d,v
retrieving revision 1.2
diff -u -b -p -r1.2 arm-it-auto.d
--- gas/testsuite/gas/arm/arm-it-auto.d 29 Jun 2009 08:08:15 -0000 1.2
+++ gas/testsuite/gas/arm/arm-it-auto.d 5 Feb 2010 16:20:39 -0000
@@ -71,11 +71,11 @@ Disassembly of section .text:
0000008c <main\+0x8c> bf18 it ne
0000008e <main\+0x8e> 200d movne r0, #13
00000090 <main\+0x90> f... f... bl 0000000. <f.*>
-00000094 <f\+0x94> bd10 pop {r4, pc}
-00000096 <f\+0x96> f... f... bl 0000000. <f.*>
-0000009a <f\+0x9a> bfb8 it lt
-0000009c <f\+0x9c> 2000 movlt r0, #0
-0000009e <f\+0x9e> 4348 muls r0, r1
-000000a0 <f\+0xa0> bfb8 it lt
-000000a2 <f\+0xa2> 2000 movlt r0, #0
-000000a4 <f\+0xa4> 4348 muls r0, r1
+00000094 <main\+0x94> bd10 pop {r4, pc}
+00000096 <main\+0x96> f... f... bl 0000000. <f.*>
+0000009a <main\+0x9a> bfb8 it lt
+0000009c <main\+0x9c> 2000 movlt r0, #0
+0000009e <main\+0x9e> 4348 muls r0, r1
+000000a0 <main\+0xa0> bfb8 it lt
+000000a2 <main\+0xa2> 2000 movlt r0, #0
+000000a4 <main\+0xa4> 4348 muls r0, r1
Index: gas/testsuite/gas/arm/bl-local-v4t.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/arm/bl-local-v4t.d,v
retrieving revision 1.2
diff -u -b -p -r1.2 bl-local-v4t.d
--- gas/testsuite/gas/arm/bl-local-v4t.d 30 Jun 2009 11:57:05 -0000 1.2
+++ gas/testsuite/gas/arm/bl-local-v4t.d 5 Feb 2010 16:20:39 -0000
@@ -7,13 +7,13 @@
.*: +file format .*arm.*
Disassembly of section .text:
0+00 <[^>]*> f7ff fffe bl 00+18 <[^>]*> 0: R_ARM_THM_CALL foo2
-0+1c <[^>]*> d004 beq.n 00+28 <[^>]*>
-0+1e <[^>]*> e003 b.n 00+28 <[^>]*>
-0+20 <[^>]*> f000 f808 bl 00+34 <[^>]*>
-0+24 <[^>]*> f000 f802 bl 00+2c <[^>]*>
-0+28 <[^>]*> 46c0 nop ; \(mov r8, r8\)
-0+2a <[^>]*> 46c0 nop ; \(mov r8, r8\)
-0+2c <[^>]*> 46c0 nop ; \(mov r8, r8\)
+0+04 <[^>]*> d004 beq.n 00+10 <[^>]*>
+0+06 <[^>]*> e003 b.n 00+10 <[^>]*>
+0+08 <[^>]*> f000 f808 bl 00+1c <[^>]*>
+0+0c <[^>]*> f000 f802 bl 00+14 <[^>]*>
+0+10 <[^>]*> 46c0 nop ; \(mov r8, r8\)
+0+12 <[^>]*> 46c0 nop ; \(mov r8, r8\)
+0+14 <[^>]*> 46c0 nop ; \(mov r8, r8\)
...
-0+30 <[^>]*> e1a00000 nop ; \(mov r0, r0\)
-0+34 <[^>]*> e1a00000 nop ; \(mov r0, r0\)
+0+18 <[^>]*> e1a00000 nop ; \(mov r0, r0\)
+0+1c <[^>]*> e1a00000 nop ; \(mov r0, r0\)
Index: gas/testsuite/gas/arm/blx-local.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/arm/blx-local.d,v
retrieving revision 1.5
diff -u -b -p -r1.5 blx-local.d
--- gas/testsuite/gas/arm/blx-local.d 30 Jun 2009 11:57:05 -0000 1.5
+++ gas/testsuite/gas/arm/blx-local.d 5 Feb 2010 16:20:39 -0000
@@ -23,7 +23,7 @@ Disassembly of section .text:
0+2c <[^>]*> 0afffffc beq 00000024 <fooundefthumb>
0+30 <[^>]*> eafffffb b 00000024 <fooundefthumb>
0+34 <[^>]*> 0bfffffe bleq 00000020 <foo> 34: R_ARM_JUMP24 foo
-0+58 <[^>]*> 0afffffe beq 00000020 <foo> 38: R_ARM_JUMP24 foo
-0+5c <[^>]*> eafffffe b 00000020 <foo> 3c: R_ARM_JUMP24 foo
-0+60 <[^>]*> e1a00000 nop ; \(mov r0, r0\)
-0+64 <[^>]*> e1a00000 nop ; \(mov r0, r0\)
+0+38 <[^>]*> 0afffffe beq 00000020 <foo> 38: R_ARM_JUMP24 foo
+0+3c <[^>]*> eafffffe b 00000020 <foo> 3c: R_ARM_JUMP24 foo
+0+40 <[^>]*> e1a00000 nop ; \(mov r0, r0\)
+0+44 <[^>]*> e1a00000 nop ; \(mov r0, r0\)
Index: gas/testsuite/gas/arm/thumb-w-good.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/arm/thumb-w-good.d,v
retrieving revision 1.1
diff -u -b -p -r1.1 thumb-w-good.d
--- gas/testsuite/gas/arm/thumb-w-good.d 14 Jul 2009 12:54:47 -0000 1.1
+++ gas/testsuite/gas/arm/thumb-w-good.d 5 Feb 2010 16:20:39 -0000
@@ -6,4 +6,4 @@
Disassembly of section .text:
00000000 <.text> f7ff fffe bl 00000000 <foo>
-00000004 <foo\+0x4> f3ef 8000 mrs r0, CPSR
+00000004 <.text\+0x4> f3ef 8000 mrs r0, CPSR
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [ARM] objdump and disassembler_needs_relocs
2010-02-05 16:40 [ARM] objdump and disassembler_needs_relocs Christophe LYON
@ 2010-02-08 14:35 ` Nick Clifton
2010-02-08 15:20 ` Christophe LYON
0 siblings, 1 reply; 3+ messages in thread
From: Nick Clifton @ 2010-02-08 14:35 UTC (permalink / raw)
To: Christophe LYON; +Cc: Binutils
Hi Christophe,
> OK?
Approved and applied. Note: you had missed one gas testcase - for the
arm-wince toolchain - so I fixed that when I checked in your patch.
Cheers
Nick
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [ARM] objdump and disassembler_needs_relocs
2010-02-08 14:35 ` Nick Clifton
@ 2010-02-08 15:20 ` Christophe LYON
0 siblings, 0 replies; 3+ messages in thread
From: Christophe LYON @ 2010-02-08 15:20 UTC (permalink / raw)
To: Nick Clifton; +Cc: Binutils
>
> Approved and applied. Note: you had missed one gas testcase - for the
> arm-wince toolchain - so I fixed that when I checked in your patch.
>
Thanks. Indeed I had tested only arm-none-eabi.
Christophe.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-02-08 15:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-05 16:40 [ARM] objdump and disassembler_needs_relocs Christophe LYON
2010-02-08 14:35 ` Nick Clifton
2010-02-08 15:20 ` Christophe LYON
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).