From d460e92e4111484ffb8b6e898fde7adb619e4722 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 30 Mar 2009 14:41:31 +0000 Subject: [PATCH] gas/testsuite: * gas/arm/mapsecs.d, gas/arm/mapsecs.s: New. opcodes: * arm-dis.c (print_insn): Also check section matches in backwards search for mapping symbol. --- gas/testsuite/ChangeLog | 4 ++++ gas/testsuite/gas/arm/mapsecs.d | 45 +++++++++++++++++++++++++++++++++++++++++ gas/testsuite/gas/arm/mapsecs.s | 15 ++++++++++++++ opcodes/ChangeLog | 5 +++++ opcodes/arm-dis.c | 4 +++- 5 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/arm/mapsecs.d create mode 100644 gas/testsuite/gas/arm/mapsecs.s 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 + + * gas/arm/mapsecs.d, gas/arm/mapsecs.s: New. + 2009-03-26 Ramana Radhakrishnan * 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 : + 0: e1a00000 nop \(mov r0,r0\) + 4: e1a00000 nop \(mov r0,r0\) + +00000008 : + 8: e1a00000 nop \(mov r0,r0\) + +Disassembly of section .text.f2: + +00000000 : + 0: e1a00000 nop \(mov r0,r0\) + 4: 00000001 .word 0x00000001 + +00000008 : + 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 + + * arm-dis.c (print_insn): Also check section matches in backwards + search for mapping symbol. + 2009-03-26 H.J. Lu * 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; -- 2.7.4