From 0313a2b8d2bc3ac3a15912d7fa9fe02722eaa14c Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 18 Jun 2009 10:31:21 +0000 Subject: 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. --- binutils/ChangeLog | 14 ++++++++++++-- binutils/doc/binutils.texi | 11 +++++++++++ binutils/objdump.c | 2 ++ 3 files changed, 25 insertions(+), 2 deletions(-) (limited to 'binutils') 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 + + 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 - 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 +2007-12-25 Pedro Alves * 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 -- cgit v1.1