diff options
-rw-r--r-- | gas/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/mapsecs.d | 45 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/mapsecs.s | 15 | ||||
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/arm-dis.c | 4 |
5 files changed, 72 insertions, 1 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 5495eea..b881c61 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2009-03-30 Joseph Myers <joseph@codesourcery.com> + + * gas/arm/mapsecs.d, gas/arm/mapsecs.s: New. + 2009-03-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * gas/arm/wince_inst.d: Convert to unified syntax. diff --git a/gas/testsuite/gas/arm/mapsecs.d b/gas/testsuite/gas/arm/mapsecs.d new file mode 100644 index 0000000..52bca8c --- /dev/null +++ b/gas/testsuite/gas/arm/mapsecs.d @@ -0,0 +1,45 @@ +#as: -EL +#objdump: --syms --special-syms -d +#name: ARM Mapping Symbols with multiple sections +# This test is only valid on EABI based ports. +#target: *-*-*eabi *-*-symbianelf *-*-linux-* *-*-elf +#source: mapsecs.s + + +.*: +file format .*arm.* + +SYMBOL TABLE: +0+00 l d .text 00000000 .text +0+00 l d .data 00000000 .data +0+00 l d .bss 00000000 .bss +0+00 l d .text.f1 00000000 .text.f1 +0+00 l F .text.f1 00000000 f1 +0+00 l .text.f1 00000000 \$a +0+08 l .text.f1 00000000 f1a +0+00 l d .text.f2 00000000 .text.f2 +0+00 l F .text.f2 00000000 f2 +0+00 l .text.f2 00000000 \$a +0+04 l .text.f2 00000000 \$d +0+08 l .text.f2 00000000 f2a +0+08 l .text.f2 00000000 \$a +0+00 l d .ARM.attributes 00000000 .ARM.attributes + + + +Disassembly of section .text.f1: + +00000000 <f1>: + 0: e1a00000 nop \(mov r0,r0\) + 4: e1a00000 nop \(mov r0,r0\) + +00000008 <f1a>: + 8: e1a00000 nop \(mov r0,r0\) + +Disassembly of section .text.f2: + +00000000 <f2>: + 0: e1a00000 nop \(mov r0,r0\) + 4: 00000001 .word 0x00000001 + +00000008 <f2a>: + 8: e1a00000 nop \(mov r0,r0\) diff --git a/gas/testsuite/gas/arm/mapsecs.s b/gas/testsuite/gas/arm/mapsecs.s new file mode 100644 index 0000000..005c339 --- /dev/null +++ b/gas/testsuite/gas/arm/mapsecs.s @@ -0,0 +1,15 @@ + .text + .section .text.f1,"ax",%progbits + .type f1, %function +f1: + nop + nop +f1a: + nop + .section .text.f2,"ax",%progbits + .type f2, %function +f2: + nop + .word 1 +f2a: + nop diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index fb917ce..a98f288 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2009-03-30 Joseph Myers <joseph@codesourcery.com> + + * arm-dis.c (print_insn): Also check section matches in backwards + search for mapping symbol. + 2009-03-26 H.J. Lu <hongjiu.lu@intel.com> * i386-dis.c (get_valid_dis386): Abort on unhandled table. diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c index aedc9f2..3360b82 100644 --- a/opcodes/arm-dis.c +++ b/opcodes/arm-dis.c @@ -4041,7 +4041,9 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little) for a preceeding one. */ for (; n >= 0; n--) { - if (get_sym_code_type (info, n, &type)) + if ((info->section == NULL + || info->section == info->symtab[n]->section) + && get_sym_code_type (info, n, &type)) { last_sym = n; found = TRUE; |