aboutsummaryrefslogtreecommitdiff
path: root/opcodes/arm-dis.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2010-01-06 15:02:45 +0000
committerNick Clifton <nickc@redhat.com>2010-01-06 15:02:45 +0000
commite3e535bc5863ec5a183bfaabcd5d1d36a129305a (patch)
tree460508dec456686ca3450132e898a85b05dda5d4 /opcodes/arm-dis.c
parent15d123c99f48b4b4620d87a0e9ee124de1a0659f (diff)
downloadfsf-binutils-gdb-e3e535bc5863ec5a183bfaabcd5d1d36a129305a.zip
fsf-binutils-gdb-e3e535bc5863ec5a183bfaabcd5d1d36a129305a.tar.gz
fsf-binutils-gdb-e3e535bc5863ec5a183bfaabcd5d1d36a129305a.tar.bz2
* arm-dis.c (print_insn): Fixed search for next
symbol and data dumping condition, and the initial mapping symbol state. * gas/arm/dis-data.d: New test case. * gas/arm/dis-data.s: New file.
Diffstat (limited to 'opcodes/arm-dis.c')
-rw-r--r--opcodes/arm-dis.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index e246fe9..ba16443 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -4355,7 +4355,8 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
long given;
int status;
int is_thumb = FALSE;
- int is_data = FALSE;
+ int is_data = (bfd_asymbol_flavour (*info->symtab)
+ == bfd_target_elf_flavour) ? TRUE : FALSE;
int little_code;
unsigned int size = 4;
void (*printer) (bfd_vma, struct disassemble_info *, long);
@@ -4415,7 +4416,7 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
bfd_vma addr;
int n;
int last_sym = -1;
- enum map_type type = MAP_ARM;
+ enum map_type type = MAP_DATA;
if (pc <= last_mapping_addr)
last_mapping_sym = -1;
@@ -4478,7 +4479,9 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
for (n = last_sym + 1; n < info->symtab_size; n++)
{
addr = bfd_asymbol_value (info->symtab[n]);
- if (addr > pc)
+ if (addr > pc
+ && (info->section == NULL
+ || info->section == info->symtab[n]->section))
{
if (addr - pc < size)
size = addr - pc;