Add -M command line switch to objdump - text of switch is passed on to disassembler
Add support for register name set selection ot ARM disassembler.
This commit is contained in:
parent
5ba624b0f4
commit
dd92f63977
9 changed files with 145 additions and 6 deletions
|
@ -1,3 +1,17 @@
|
|||
1999-06-14 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* objdump.c (disassembler_options): New variable.
|
||||
(usage): Document new -M/--disassembler-options option.
|
||||
(long_options): Add --disassembler-options.
|
||||
(disassemble_data): Initialise disassembler_options field of
|
||||
disassembler_info structure.
|
||||
(main): Add parsing of -M option.
|
||||
|
||||
* binutils.texi: Document new command line switch to objdump.
|
||||
|
||||
* NEWS: Describe new command line switch to objdump.
|
||||
|
||||
|
||||
Mon Jun 14 10:27:54 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
|
||||
|
||||
* binutils.texi: Fix typos.
|
||||
|
|
|
@ -2,6 +2,11 @@
|
|||
|
||||
Changes in binutils 2.10:
|
||||
|
||||
* New command line switch to objdump -M (or --disassembler-options) which takes
|
||||
a parameter which can then be interpreted on a per-target basis by the
|
||||
disassembler. Used by ARM targets to select register name sets, ISA, APCS or
|
||||
raw verions.
|
||||
|
||||
* objdump support for -mi386:intel which causes disassembly to be displayed
|
||||
with intel syntax.
|
||||
|
||||
|
|
|
@ -1137,6 +1137,7 @@ objdump [ -a | --archive-headers ]
|
|||
[ -j @var{section} | --section=@var{section} ]
|
||||
[ -l | --line-numbers ] [ -S | --source ]
|
||||
[ -m @var{machine} | --architecture=@var{machine} ]
|
||||
[ -M @var{options} | --disassembler-options=@var{options}]
|
||||
[ -p | --private-headers ]
|
||||
[ -r | --reloc ] [ -R | --dynamic-reloc ]
|
||||
[ -s | --full-contents ] [ --stabs ]
|
||||
|
@ -1295,6 +1296,21 @@ 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 @samp{-i} option.
|
||||
|
||||
@item -M @var{options}
|
||||
@itemx --disassembler-options=@var{options}
|
||||
Pass target specific information to the disassembler. Only supported on
|
||||
some targets.
|
||||
|
||||
If the target is an ARM architecture then this switch can be used to
|
||||
select which register name set is used during disassembler. Specifying
|
||||
@samp{--disassembler-options=reg-name-std} (the default) will select the
|
||||
register names as used in ARM's instruction set documentation, but with
|
||||
register 13 called 'sp', register 14 called 'lr' and register 15 called
|
||||
'pc'. Specifying @samp{--disassembler-options=reg-names-apcs} will
|
||||
select the name set used by the ARM Procedure Call Standard, whilst
|
||||
specifying @samp{--disassembler-options=reg-names-raw} will just use
|
||||
@samp{r} followed by the register number.
|
||||
|
||||
@item -p
|
||||
@itemx --private-headers
|
||||
Print information that is specific to the object file format. The exact
|
||||
|
|
|
@ -83,6 +83,9 @@ struct objdump_disasm_info {
|
|||
/* Architecture to disassemble for, or default if NULL. */
|
||||
static char *machine = (char *) NULL;
|
||||
|
||||
/* Target specific options to the disassembler. */
|
||||
static char *disassembler_options = (char *) NULL;
|
||||
|
||||
/* Endianness to disassemble for, or default if BFD_ENDIAN_UNKNOWN. */
|
||||
static enum bfd_endian endian = BFD_ENDIAN_UNKNOWN;
|
||||
|
||||
|
@ -217,7 +220,8 @@ usage (stream, status)
|
|||
int status;
|
||||
{
|
||||
fprintf (stream, _("\
|
||||
Usage: %s [-ahifCdDprRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
|
||||
Usage: %s [-ahifCdDprRtTxsSlw] [-b bfdname] [-m machine] \n\
|
||||
[-j section-name] [-M disassembler-options]\n\
|
||||
[--archive-headers] [--target=bfdname] [--debugging] [--disassemble]\n\
|
||||
[--disassemble-all] [--disassemble-zeroes] [--file-headers]\n\
|
||||
[--section-headers] [--headers]\n\
|
||||
|
@ -255,6 +259,7 @@ static struct option long_options[]=
|
|||
{"demangle", no_argument, &do_demangle, 1},
|
||||
{"disassemble", no_argument, NULL, 'd'},
|
||||
{"disassemble-all", no_argument, NULL, 'D'},
|
||||
{"disassembler-options", required_argument, NULL, 'M'},
|
||||
{"disassemble-zeroes", no_argument, &disassemble_zeroes, 1},
|
||||
{"dynamic-reloc", no_argument, NULL, 'R'},
|
||||
{"dynamic-syms", no_argument, NULL, 'T'},
|
||||
|
@ -1564,6 +1569,8 @@ disassemble_data (abfd)
|
|||
disasm_info.flavour = bfd_get_flavour (abfd);
|
||||
disasm_info.arch = bfd_get_arch (abfd);
|
||||
disasm_info.mach = bfd_get_mach (abfd);
|
||||
disasm_info.disassembler_options = disassembler_options;
|
||||
|
||||
if (bfd_big_endian (abfd))
|
||||
disasm_info.display_endian = disasm_info.endian = BFD_ENDIAN_BIG;
|
||||
else if (bfd_little_endian (abfd))
|
||||
|
@ -2694,7 +2701,7 @@ main (argc, argv)
|
|||
bfd_init ();
|
||||
set_default_bfd_target ();
|
||||
|
||||
while ((c = getopt_long (argc, argv, "pib:m:VCdDlfahrRtTxsSj:wE:",
|
||||
while ((c = getopt_long (argc, argv, "pib:m:M:VCdDlfahrRtTxsSj:wE:",
|
||||
long_options, (int *) 0))
|
||||
!= EOF)
|
||||
{
|
||||
|
@ -2707,6 +2714,9 @@ main (argc, argv)
|
|||
case 'm':
|
||||
machine = optarg;
|
||||
break;
|
||||
case 'M':
|
||||
disassembler_options = optarg;
|
||||
break;
|
||||
case 'j':
|
||||
only = optarg;
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue