diff options
author | Nick Clifton <nickc@redhat.com> | 2009-06-18 10:31:21 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2009-06-18 10:31:21 +0000 |
commit | 0313a2b8d2bc3ac3a15912d7fa9fe02722eaa14c (patch) | |
tree | dc124b744e50e56ff817cd08c6ef38edeb61e28f /binutils | |
parent | 470c710ef03d4c05314c605b26f47fb5a61beb34 (diff) | |
download | binutils-gdb-0313a2b8d2bc3ac3a15912d7fa9fe02722eaa14c.tar.gz |
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/ChangeLog | 14 | ||||
-rw-r--r-- | binutils/doc/binutils.texi | 11 | ||||
-rw-r--r-- | binutils/objdump.c | 2 |
3 files changed, 25 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index f7974f706ef..ddacde192fa 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 7680c6f3ae7..d74b12b86b2 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 3cf03f7eddb..dfe6a57e16e 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 |