mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-23 18:06:02 +00:00
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:
parent
f37a7048a8
commit
6abcee9042
@ -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
|
||||
|
@ -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
51
binutils/configure
vendored
@ -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}\""
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -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.])
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
50
binutils/objdump.h
Normal 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
1670
binutils/od-xcoff.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user