diff options
author | Nick Clifton <nickc@redhat.com> | 2012-05-11 09:41:21 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2012-05-11 09:41:21 +0000 |
commit | 6750a3a77504bb879eb639c34a2911e704644ba4 (patch) | |
tree | 03fdd91adddb0263e8e65c891b35dbe5e0791895 /opcodes | |
parent | 268a8d3ac407c5ce6bd6fe27736a1b9265e84f25 (diff) | |
download | gdb-6750a3a77504bb879eb639c34a2911e704644ba4.zip gdb-6750a3a77504bb879eb639c34a2911e704644ba4.tar.gz gdb-6750a3a77504bb879eb639c34a2911e704644ba4.tar.bz2 |
PR binutils/14006
* arm-dis.c (print_insn): Fix detection of instruction mode in
files containing multiple executable sections.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 6 | ||||
-rw-r--r-- | opcodes/arm-dis.c | 16 |
2 files changed, 19 insertions, 3 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index a43dd3d..c1cc70b 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2012-05-11 Nick Clifton <nickc@redhat.com> + + PR binutils/14006 + * arm-dis.c (print_insn): Fix detection of instruction mode in + files containing multiple executable sections. + 2012-05-03 Sean Keys <skeys@ipdatasys.com> * Makefile.in, configure: regenerate diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c index 03062ad..1269cf7 100644 --- a/opcodes/arm-dis.c +++ b/opcodes/arm-dis.c @@ -4697,9 +4697,19 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little) /* Start scanning at the start of the function, or wherever we finished last time. */ - start = info->symtab_pos + 1; - if (start < private_data->last_mapping_sym) - start = private_data->last_mapping_sym; + /* PR 14006. When the address is 0 we are either at the start of the + very first function, or else the first function in a new, unlinked + executable section (eg because uf -ffunction-sections). Either way + start scanning from the beginning of the symbol table, not where we + left off last time. */ + if (pc == 0) + start = 0; + else + { + start = info->symtab_pos + 1; + if (start < private_data->last_mapping_sym) + start = private_data->last_mapping_sym; + } found = FALSE; /* First, look for mapping symbols. */ |