2011-05-16 Tristan Gingold <gingold@adacore.com>

* od-xcoff.c: New file.
	* objdump.h: New file.
	* objdump.c: Include objdump.h
	(dump_private_options, objdump_private_vectors): New variables.
	(usage): Mention -P/--private.  Display handled options.
	(long_options): Add -P/--private.
	(dump_target_specific): New function.
	(dump_bfd): Handle dump_private_options.
	(main): Handle -P.
	* doc/binutils.texi (objdump): Document -P/--private.
	* configure.in (OBJDUMP_PRIVATE_VECTORS, OBJDUMP_PRIVATE_OFILES):
	New variables, compute them.
	(od_vectors): Add vectors for private dumpers. Make them uniq.
	(OBJDUMP_DEFS): Add OBJDUMP_PRIVATE_VECTORS.
	* Makefile.am (HFILES): Add objdump.h
	(CFILES): Add od-xcoff.c
	(OBJDUMP_PRIVATE_OFILES): New variable.
	(objdump_DEPENDENCIES): Append OBJDUMP_PRIVATE_OFILES.
	(objdump_LDADD): Ditto.
	(EXTRA_objdump_SOURCES): Define.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
This commit is contained in:
Tristan Gingold 2011-05-16 12:22:13 +00:00
parent f37a7048a8
commit 6abcee9042
8 changed files with 1928 additions and 13 deletions

View File

@ -85,7 +85,7 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \
HFILES = \
arsup.h binemul.h bucomm.h budbg.h \
coffgrok.h debug.h dlltool.h dwarf.h elfcomm.h nlmconv.h \
sysdep.h unwind-ia64.h windres.h winduni.h windint.h \
objdump.h sysdep.h unwind-ia64.h windres.h winduni.h windint.h \
windmc.h
GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h mcparse.h
@ -99,6 +99,7 @@ CFILES = \
ieee.c is-ranlib.c is-strip.c maybe-ranlib.c maybe-strip.c \
nlmconv.c nm.c not-ranlib.c not-strip.c \
objcopy.c objdump.c prdbg.c \
od-xcoff.c \
rclex.c rdcoff.c rddbg.c readelf.c rename.c \
resbin.c rescoff.c resrc.c resres.c \
size.c srconv.c stabs.c strings.c sysdump.c \
@ -113,6 +114,9 @@ GENERATED_CFILES = \
DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
# Extra object files for objdump
OBJDUMP_PRIVATE_OFILES = @OBJDUMP_PRIVATE_OFILES@
# Code shared by all the binutils.
BULIBS = bucomm.c version.c filemode.c
@ -167,7 +171,7 @@ installcheck-local:
# which depends on libintl, since we don't know whether LIBINTL_DEP will be
# non-empty until configure time. Ugh!
size_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
objdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB) $(OPCODES)
objdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB) $(OPCODES) $(OBJDUMP_PRIVATE_OFILES)
nm_new_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
ar_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
strings_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
@ -206,7 +210,8 @@ strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
nm_new_SOURCES = nm.c $(BULIBS)
objdump_SOURCES = objdump.c dwarf.c prdbg.c $(DEBUG_SRCS) $(BULIBS) $(ELFLIBS)
objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
EXTRA_objdump_SOURCES = od-xcoff.c
objdump_LDADD = $(OBJDUMP_PRIVATE_OFILES) $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
objdump.@OBJEXT@:objdump.c
if am__fastdepCC

View File

@ -200,9 +200,10 @@ SOURCES = $(addr2line_SOURCES) $(ar_SOURCES) $(EXTRA_ar_SOURCES) \
$(coffdump_SOURCES) $(cxxfilt_SOURCES) $(dlltool_SOURCES) \
$(dllwrap_SOURCES) $(elfedit_SOURCES) $(nlmconv_SOURCES) \
$(nm_new_SOURCES) $(objcopy_SOURCES) $(objdump_SOURCES) \
$(ranlib_SOURCES) $(readelf_SOURCES) $(size_SOURCES) \
$(srconv_SOURCES) $(strings_SOURCES) $(strip_new_SOURCES) \
$(sysdump_SOURCES) $(windmc_SOURCES) $(windres_SOURCES)
$(EXTRA_objdump_SOURCES) $(ranlib_SOURCES) $(readelf_SOURCES) \
$(size_SOURCES) $(srconv_SOURCES) $(strings_SOURCES) \
$(strip_new_SOURCES) $(sysdump_SOURCES) $(windmc_SOURCES) \
$(windres_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
@ -298,6 +299,9 @@ NMEDIT = @NMEDIT@
NO_WERROR = @NO_WERROR@
OBJDUMP = @OBJDUMP@
OBJDUMP_DEFS = @OBJDUMP_DEFS@
# Extra object files for objdump
OBJDUMP_PRIVATE_OFILES = @OBJDUMP_PRIVATE_OFILES@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
@ -429,7 +433,7 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \
HFILES = \
arsup.h binemul.h bucomm.h budbg.h \
coffgrok.h debug.h dlltool.h dwarf.h elfcomm.h nlmconv.h \
sysdep.h unwind-ia64.h windres.h winduni.h windint.h \
objdump.h sysdep.h unwind-ia64.h windres.h winduni.h windint.h \
windmc.h
GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h mcparse.h
@ -442,6 +446,7 @@ CFILES = \
ieee.c is-ranlib.c is-strip.c maybe-ranlib.c maybe-strip.c \
nlmconv.c nm.c not-ranlib.c not-strip.c \
objcopy.c objdump.c prdbg.c \
od-xcoff.c \
rclex.c rdcoff.c rddbg.c readelf.c rename.c \
resbin.c rescoff.c resrc.c resres.c \
size.c srconv.c stabs.c strings.c sysdump.c \
@ -487,7 +492,7 @@ CC_FOR_TARGET = ` \
# which depends on libintl, since we don't know whether LIBINTL_DEP will be
# non-empty until configure time. Ugh!
size_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
objdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB) $(OPCODES)
objdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB) $(OPCODES) $(OBJDUMP_PRIVATE_OFILES)
nm_new_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
ar_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
strings_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
@ -517,7 +522,8 @@ elfedit_LDADD = $(LIBINTL) $(LIBIBERTY)
strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
nm_new_SOURCES = nm.c $(BULIBS)
objdump_SOURCES = objdump.c dwarf.c prdbg.c $(DEBUG_SRCS) $(BULIBS) $(ELFLIBS)
objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
EXTRA_objdump_SOURCES = od-xcoff.c
objdump_LDADD = $(OBJDUMP_PRIVATE_OFILES) $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c rename.c binemul.c \
emul_$(EMULATION).c $(BULIBS)
@ -796,6 +802,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/not-strip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objcopy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objdump.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/od-xcoff.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prdbg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rclex.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rcparse.Po@am__quote@

51
binutils/configure vendored
View File

@ -604,6 +604,7 @@ LTLIBOBJS
LIBOBJS
EMULATION_VECTOR
EMULATION
OBJDUMP_PRIVATE_OFILES
OBJDUMP_DEFS
BUILD_INSTALL_MISC
BUILD_MISC
@ -11198,7 +11199,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 11201 "configure"
#line 11202 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -11304,7 +11305,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 11307 "configure"
#line 11308 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -13779,6 +13780,9 @@ BUILD_DLLWRAP=
BUILD_MISC=
BUILD_INSTALL_MISC=
OBJDUMP_DEFS=
OBJDUMP_PRIVATE_VECTORS=
OBJDUMP_PRIVATE_OFILES=
od_vectors=
for targ in $target $canon_targets
do
@ -13796,6 +13800,7 @@ do
fi
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
od_vectors="$od_vectors objdump_private_desc_xcoff"
else
case $targ in
i[3-7]86*-*-netware*)
@ -13815,9 +13820,11 @@ do
NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_SPARC"
;;
esac
case $targ in
*-*-hms*) BUILD_SRCONV='$(SRCONV_PROG)' ;;
esac
case $targ in
arm-epoc-pe*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
@ -13931,9 +13938,46 @@ do
OBJDUMP_DEFS="-DSKIP_ZEROES=256 -DSKIP_ZEROES_AT_END=0"
;;
esac
# Add objdump private vectors.
case $targ in
powerpc-*-aix*)
od_vectors="$od_vectors objdump_private_desc_xcoff"
;;
esac
fi
done
# Uniq objdump private vector, build objdump target ofiles.
od_files=
f=""
for i in $od_vectors ; do
case " $f " in
*" $i "*) ;;
*)
f="$f $i"
OBJDUMP_PRIVATE_VECTORS="$OBJDUMP_PRIVATE_VECTORS &$i,"
case $i in
objdump_private_desc_xcoff)
od_files="$od_files od-xcoff" ;;
*) as_fn_error "*** unknown private vector $i" "$LINENO" 5 ;;
esac
;;
esac
done
# Uniq objdump target ofiles
f=""
for i in $od_files ; do
case " $f " in
*" $i "*) ;;
*)
f="$f $i"
OBJDUMP_PRIVATE_OFILES="$OBJDUMP_PRIVATE_OFILES $i.$objext"
;;
esac
done
DLLTOOL_DEFS="$DLLTOOL_DEFS $DLLTOOL_DEFAULT"
if test "${with_windres+set}" = set; then
@ -13944,6 +13988,9 @@ if test "${with_windmc+set}" = set; then
BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
fi
OBJDUMP_DEFS="${OBJDUMP_DEFS} -DOBJDUMP_PRIVATE_VECTORS=\"${OBJDUMP_PRIVATE_VECTORS}\""

View File

@ -179,6 +179,9 @@ BUILD_DLLWRAP=
BUILD_MISC=
BUILD_INSTALL_MISC=
OBJDUMP_DEFS=
OBJDUMP_PRIVATE_VECTORS=
OBJDUMP_PRIVATE_OFILES=
od_vectors=
for targ in $target $canon_targets
do
@ -196,6 +199,7 @@ do
fi
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
od_vectors="$od_vectors objdump_private_desc_xcoff"
else
case $targ in
changequote(,)dnl
@ -217,9 +221,11 @@ changequote([,])dnl
NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_SPARC"
;;
esac
case $targ in
*-*-hms*) BUILD_SRCONV='$(SRCONV_PROG)' ;;
esac
case $targ in
arm-epoc-pe*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
@ -341,9 +347,46 @@ changequote([,])dnl
OBJDUMP_DEFS="-DSKIP_ZEROES=256 -DSKIP_ZEROES_AT_END=0"
;;
esac
# Add objdump private vectors.
case $targ in
powerpc-*-aix*)
od_vectors="$od_vectors objdump_private_desc_xcoff"
;;
esac
fi
done
# Uniq objdump private vector, build objdump target ofiles.
od_files=
f=""
for i in $od_vectors ; do
case " $f " in
*" $i "*) ;;
*)
f="$f $i"
OBJDUMP_PRIVATE_VECTORS="$OBJDUMP_PRIVATE_VECTORS &$i,"
case $i in
objdump_private_desc_xcoff)
od_files="$od_files od-xcoff" ;;
*) AC_MSG_ERROR(*** unknown private vector $i) ;;
esac
;;
esac
done
# Uniq objdump target ofiles
f=""
for i in $od_files ; do
case " $f " in
*" $i "*) ;;
*)
f="$f $i"
OBJDUMP_PRIVATE_OFILES="$OBJDUMP_PRIVATE_OFILES $i.$objext"
;;
esac
done
DLLTOOL_DEFS="$DLLTOOL_DEFS $DLLTOOL_DEFAULT"
if test "${with_windres+set}" = set; then
@ -354,6 +397,8 @@ if test "${with_windmc+set}" = set; then
BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
fi
OBJDUMP_DEFS="${OBJDUMP_DEFS} -DOBJDUMP_PRIVATE_VECTORS=\"${OBJDUMP_PRIVATE_VECTORS}\""
AC_SUBST(NLMCONV_DEFS)
AC_SUBST(BUILD_NLMCONV)
AC_SUBST(BUILD_SRCONV)
@ -365,6 +410,7 @@ AC_SUBST(BUILD_DLLWRAP)
AC_SUBST(BUILD_MISC)
AC_SUBST(BUILD_INSTALL_MISC)
AC_SUBST(OBJDUMP_DEFS)
AC_SUBST(OBJDUMP_PRIVATE_OFILES)
AC_DEFINE_UNQUOTED(TARGET, "${target}", [Configured target name.])

View File

@ -1744,6 +1744,7 @@ objdump [@option{-a}|@option{--archive-headers}]
[@option{-m} @var{machine}|@option{--architecture=}@var{machine}]
[@option{-M} @var{options}|@option{--disassembler-options=}@var{options}]
[@option{-p}|@option{--private-headers}]
[@option{-P} @var{options}|@option{--private=}@var{options}]
[@option{-r}|@option{--reloc}]
[@option{-R}|@option{--dynamic-reloc}]
[@option{-s}|@option{--full-contents}]
@ -1787,7 +1788,7 @@ object files.
The long and short forms of options, shown here as alternatives, are
equivalent. At least one option from the list
@option{-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-r,-R,-s,-S,-t,-T,-V,-x} must be given.
@option{-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x} must be given.
@table @env
@item -a
@ -2066,6 +2067,17 @@ Print information that is specific to the object file format. The exact
information printed depends upon the object file format. For some
object file formats, no additional information is printed.
@item -P @var{options}
@itemx --private=@var{options}
Print information that is specific to the object file format. The
argument @var{options} is a comma separated list that depends on the
format (the lists of options is displayed with the help).
For XCOFF, the available options are: @option{header}, @option{aout},
@option{sections}, @option{syms}, @option{relocs}, @option{lineno},
@option{loader}, @option{except}, @option{typchk}, @option{traceback}
and @option{toc}.
@item -r
@itemx --reloc
@cindex relocation entries, in object file

View File

@ -65,6 +65,7 @@
#include "filenames.h"
#include "debug.h"
#include "budbg.h"
#include "objdump.h"
#ifdef HAVE_MMAP
#include <sys/mman.h>
@ -93,6 +94,7 @@ static int dump_reloc_info; /* -r */
static int dump_dynamic_reloc_info; /* -R */
static int dump_ar_hdrs; /* -a */
static int dump_private_headers; /* -p */
static char *dump_private_options; /* -P */
static int prefix_addresses; /* --prefix-addresses */
static int with_line_numbers; /* -l */
static bfd_boolean with_source_code; /* -S */
@ -185,6 +187,13 @@ static char *strtab;
static bfd_size_type stabstr_size;
static bfd_boolean is_relocatable = FALSE;
/* Handlers for -P/--private. */
static const struct objdump_private_desc * const objdump_private_vectors[] =
{
OBJDUMP_PRIVATE_VECTORS
NULL
};
static void
usage (FILE *stream, int status)
@ -196,6 +205,7 @@ usage (FILE *stream, int status)
-a, --archive-headers Display archive header information\n\
-f, --file-headers Display the contents of the overall file header\n\
-p, --private-headers Display object format specific file header contents\n\
-P, --private=OPT,OPT... Display object format specific contents\n\
-h, --[section-]headers Display the contents of the section headers\n\
-x, --all-headers Display the contents of all headers\n\
-d, --disassemble Display assembler contents of executable sections\n\
@ -221,6 +231,8 @@ usage (FILE *stream, int status)
"));
if (status != 2)
{
const struct objdump_private_desc * const *desc;
fprintf (stream, _("\n The following switches are optional:\n"));
fprintf (stream, _("\
-b, --target=BFDNAME Specify the target object format as BFDNAME\n\
@ -256,6 +268,14 @@ usage (FILE *stream, int status)
list_supported_architectures (program_name, stream);
disassembler_usage (stream);
if (objdump_private_vectors[0] != NULL)
{
fprintf (stream,
_("\nOptions supported for -P/--private switch:\n"));
for (desc = objdump_private_vectors; *desc != NULL; desc++)
(*desc)->help (stream);
}
}
if (REPORT_BUGS_TO[0] && status == 0)
fprintf (stream, _("Report bugs to %s.\n"), REPORT_BUGS_TO);
@ -282,6 +302,7 @@ static struct option long_options[]=
{"adjust-vma", required_argument, NULL, OPTION_ADJUST_VMA},
{"all-headers", no_argument, NULL, 'x'},
{"private-headers", no_argument, NULL, 'p'},
{"private", required_argument, NULL, 'P'},
{"architecture", required_argument, NULL, 'm'},
{"archive-headers", no_argument, NULL, 'a'},
{"debugging", no_argument, NULL, 'g'},
@ -2595,6 +2616,57 @@ dump_bfd_private_header (bfd *abfd)
bfd_print_private_bfd_data (abfd, stdout);
}
static void
dump_target_specific (bfd *abfd)
{
const struct objdump_private_desc * const *desc;
struct objdump_private_option *opt;
char *e, *b;
/* Find the desc. */
for (desc = objdump_private_vectors; *desc != NULL; desc++)
if ((*desc)->filter (abfd))
break;
if (desc == NULL)
{
non_fatal (_("option -P/--private not supported by this file"));
return;
}
/* Clear all options. */
for (opt = (*desc)->options; opt->name; opt++)
opt->selected = FALSE;
/* Decode options. */
b = dump_private_options;
do
{
e = strchr (b, ',');
if (e)
*e = 0;
for (opt = (*desc)->options; opt->name; opt++)
if (strcmp (opt->name, b) == 0)
{
opt->selected = TRUE;
break;
}
if (opt->name == NULL)
non_fatal (_("target specific dump '%s' not supported"), b);
if (e)
{
*e = ',';
b = e + 1;
}
}
while (e != NULL);
/* Dump. */
(*desc)->dump (abfd);
}
/* Display a section in hexadecimal format with associated characters.
Each line prefixed by the zero padded address. */
@ -3096,6 +3168,8 @@ dump_bfd (bfd *abfd)
dump_bfd_header (abfd);
if (dump_private_headers)
dump_bfd_private_header (abfd);
if (dump_private_options != NULL)
dump_target_specific (abfd);
if (! dump_debugging_tags && ! suppress_bfd_header)
putchar ('\n');
if (dump_section_headers)
@ -3307,7 +3381,7 @@ main (int argc, char **argv)
set_default_bfd_target ();
while ((c = getopt_long (argc, argv,
"pib:m:M:VvCdDlfFaHhrRtTxsSI:j:wE:zgeGW::",
"pP:ib:m:M:VvCdDlfFaHhrRtTxsSI:j:wE:zgeGW::",
long_options, (int *) 0))
!= EOF)
{
@ -3424,6 +3498,10 @@ main (int argc, char **argv)
dump_private_headers = TRUE;
seenflag = TRUE;
break;
case 'P':
dump_private_options = optarg;
seenflag = TRUE;
break;
case 'x':
dump_private_headers = TRUE;
dump_symtab = TRUE;

50
binutils/objdump.h Normal file
View File

@ -0,0 +1,50 @@
/* objdump.h
Copyright 2011 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 51 Franklin Street - Fifth Floor, Boston,
MA 02110-1301, USA. */
#include <stdio.h>
struct objdump_private_option
{
/* Option name. */
const char *name;
/* TRUE if the option is selected. Automatically set and cleared by
objdump. */
unsigned int selected;
};
struct objdump_private_desc
{
/* Help displayed for --help. */
void (*help)(FILE *stream);
/* Return TRUE if these options can be applied to ABFD. */
int (*filter)(bfd *abfd);
/* Do the actual work: display whatever is requested according to the
options whose SELECTED field is set. */
void (*dump)(bfd *abfd);
/* List of options. Terminated by a NULL name. */
struct objdump_private_option *options;
};
/* XCOFF specific target. */
extern const struct objdump_private_desc objdump_private_desc_xcoff;

1670
binutils/od-xcoff.c Normal file

File diff suppressed because it is too large Load Diff