aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2009-06-18 10:31:21 +0000
committerNick Clifton <nickc@redhat.com>2009-06-18 10:31:21 +0000
commit0313a2b8d2bc3ac3a15912d7fa9fe02722eaa14c (patch)
treedc124b744e50e56ff817cd08c6ef38edeb61e28f /binutils
parent470c710ef03d4c05314c605b26f47fb5a61beb34 (diff)
downloadgdb-0313a2b8d2bc3ac3a15912d7fa9fe02722eaa14c.zip
gdb-0313a2b8d2bc3ac3a15912d7fa9fe02722eaa14c.tar.gz
gdb-0313a2b8d2bc3ac3a15912d7fa9fe02722eaa14c.tar.bz2
PR 10288
* arm-dis.c (print_insn_coprocessor): Check that a user specified ARM architecture supports the matched instruction. (print_insn_arm): Likewise. (select_arm_features): New function. Fills in the fields of an arm_feature_set structure based on a given arm machine number. (print_insn): Initialise an arm_feature_set structure. * objdump.c (disassemble_bytes): Set the USER_SPECIFIED_MACHINE_TYPE flag in the disassemble_info structure if the user has invoked the -m switch. * doc/binutils.texi: Document the additional behaviour of objdump's -m switch for ARM targets. * dis-asm.h (USER_SPECIFIED_MACHINE_TYPE): New value for the flags field of struct disassemble_info. * gas/arm/align.s: Add labels so that COFF based targets can correctly locate THUMB code. * gas/arm/copro.d: Do not pass --architecture switch to objdump.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog14
-rw-r--r--binutils/doc/binutils.texi11
-rw-r--r--binutils/objdump.c2
3 files changed, 25 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index f7974f7..ddacde1 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,8 +1,18 @@
+2009-06-18 Nick Clifton <nickc@redhat.com>
+
+ PR 10288
+ * objdump.c (disassemble_bytes): Set the
+ USER_SPECIFIED_MACHINE_TYPE flag in the disassemble_info structure
+ if the user has invoked the -m switch.
+ * doc/binutils.texi: Document the additional behaviour of
+ objdump's -m switch for ARM targets.
+
2009-06-18 Dave Korn <dave.korn.cygwin@gmail.com>
- Merge cegcc and mingw32ce target name changes from CeGCC project.
+ * configure.in: Merge cegcc and mingw32ce target name changes from
+ CeGCC project.
- 2007-12-25 Pedro Alves <pedro_alves@portugalmail.pt>
+2007-12-25 Pedro Alves <pedro_alves@portugalmail.pt>
* configure.in: Add arm*-*-cegcc* and arm*-*-mingw32ce* targets.
* configure: Regenerate.
diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi
index 7680c6f..d74b12b 100644
--- a/binutils/doc/binutils.texi
+++ b/binutils/doc/binutils.texi
@@ -1801,6 +1801,10 @@ expected to contain instructions.
Like @option{-d}, but disassemble the contents of all sections, not just
those expected to contain instructions.
+If the target is an ARM architecture this switch also has the effect
+of forcing the disassembler to decode pieces of data found in code
+sections as if they were instructions.
+
@item --prefix-addresses
When disassembling, print the complete address on each line. This is
the older disassembly format.
@@ -1884,6 +1888,13 @@ can be useful when disassembling object files which do not describe
architecture information, such as S-records. You can list the available
architectures with the @option{-i} option.
+If the target is an ARM architecture then this switch has an
+additional effect. It restricts the disassembly to only those
+instructions supported by the architecture specified by @var{machine}.
+If it is necessary to use this switch because the input file does not
+contain any architecture information, but it is also desired to
+disassemble all the instructions use @option{-marm}.
+
@item -M @var{options}
@itemx --disassembler-options=@var{options}
Pass target specific information to the disassembler. Only supported on
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 3cf03f7..dfe6a57 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1526,6 +1526,8 @@ disassemble_bytes (struct disassemble_info * info,
info->bytes_per_line = 0;
info->bytes_per_chunk = 0;
info->flags = disassemble_all ? DISASSEMBLE_DATA : 0;
+ if (machine)
+ info->flags |= USER_SPECIFIED_MACHINE_TYPE;
if (info->disassembler_needs_relocs
&& (bfd_get_file_flags (aux->abfd) & EXEC_P) == 0