From 7c29036b752c3cfa6362ea40bec68e03c44b55ea Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 24 Mar 2003 16:11:46 +0000 Subject: [PATCH] Add --info command line switch --- binutils/ChangeLog | 12 ++++++++++++ binutils/NEWS | 2 ++ binutils/doc/binutils.texi | 11 +++++++++-- binutils/objcopy.c | 39 +++++++++++++++++++++++++++++++++----- 4 files changed, 57 insertions(+), 7 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index e1c79ed8a08..276a3eb387d 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,5 +1,17 @@ 2003-03-24 Elias Athanasopoulos + * objcopy (OPTION_FORMATS_INFO): Define. + (strip_options): Add "info"/OPTION_FORMATS_INFO option. + (copy_options): Likewise. + (strip_usage): Add "--info" to usage. + (copy_usage): Likewise. + (strip_main): Declare formats_info. Iniatilize it to FALSE. + Handle "info". + (copy_main). Likewise. + * doc/binutils.texi. Document the "--info" option for + objcopy/strip. + * NEWS: Mention the new command line switch. + * objdump.c (endian_string): Move to bucomm.c. (display_info): Likewise. (display_target_list): Likewise. diff --git a/binutils/NEWS b/binutils/NEWS index d538cb42a7d..3730a7b9269 100644 --- a/binutils/NEWS +++ b/binutils/NEWS @@ -1,5 +1,7 @@ -*- text -*- +* Added --info switch to objcopy and strip. + * Support for Vitesse IQ2000 added by Red Hat. * Added 'S' encoding to strings to allow the display of 8-bit characters. diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi index 5c38b84e73d..4afcb6d45bb 100644 --- a/binutils/doc/binutils.texi +++ b/binutils/doc/binutils.texi @@ -970,7 +970,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}] [@option{--prefix-alloc-sections=}@var{string}] [@option{-v}|@option{--verbose}] [@option{-V}|@option{--version}] - [@option{--help}] + [@option{--help}] [@option{--info}] @var{infile} [@var{outfile}] @c man end @end smallexample @@ -1348,6 +1348,9 @@ archives, @samp{objcopy -V} lists all members of the archive. @item --help Show a summary of the options to @command{objcopy}. + +@item --info +Display a list showing all architectures and object formats available. @end table @c man end @@ -2051,7 +2054,8 @@ strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname} ] [@option{-x}|@option{--discard-all} ] [@option{-X} |@option{--discard-locals}] [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname} ] [@option{-o} @var{file} ] [@option{-p}|@option{--preserve-dates}] - [@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}] [@option{--help}] + [@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}] + [@option{--help}] [@option{--info}] @var{objfile}@dots{} @c man end @end smallexample @@ -2079,6 +2083,9 @@ code format @var{bfdname}, and rewrite it in the same format. @item --help Show a summary of the options to @command{strip} and exit. +@item --info +Display a list showing all architectures and object formats available. + @item -I @var{bfdname} @itemx --input-target=@var{bfdname} Treat the original @var{objfile} as a file with the object diff --git a/binutils/objcopy.c b/binutils/objcopy.c index f62ed694ee4..45072495c1e 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -275,6 +275,7 @@ static char *prefix_alloc_sections_string = 0; #define OPTION_PREFIX_SYMBOLS (OPTION_ALT_MACH_CODE + 1) #define OPTION_PREFIX_SECTIONS (OPTION_PREFIX_SYMBOLS + 1) #define OPTION_PREFIX_ALLOC_SECTIONS (OPTION_PREFIX_SECTIONS + 1) +#define OPTION_FORMATS_INFO (OPTION_PREFIX_ALLOC_SECTIONS + 1) /* Options to handle if running as "strip". */ @@ -284,6 +285,7 @@ static struct option strip_options[] = {"discard-locals", no_argument, 0, 'X'}, {"format", required_argument, 0, 'F'}, /* Obsolete */ {"help", no_argument, 0, 'h'}, + {"info", no_argument, 0, OPTION_FORMATS_INFO}, {"input-format", required_argument, 0, 'I'}, /* Obsolete */ {"input-target", required_argument, 0, 'I'}, {"keep-symbol", required_argument, 0, 'K'}, @@ -327,6 +329,7 @@ static struct option copy_options[] = {"format", required_argument, 0, 'F'}, /* Obsolete */ {"gap-fill", required_argument, 0, OPTION_GAP_FILL}, {"help", no_argument, 0, 'h'}, + {"info", no_argument, 0, OPTION_FORMATS_INFO}, {"input-format", required_argument, 0, 'I'}, /* Obsolete */ {"input-target", required_argument, 0, 'I'}, {"interleave", required_argument, 0, 'i'}, @@ -457,6 +460,7 @@ copy_usage (stream, exit_status) -v --verbose List all object files modified\n\ -V --version Display this program's version number\n\ -h --help Display this output\n\ + --info List object formats & architectures supported\n\ ")); list_supported_targets (program_name, stream); if (exit_status == 0) @@ -488,6 +492,7 @@ strip_usage (stream, exit_status) -v --verbose List all object files modified\n\ -V --version Display this program's version number\n\ -h --help Display this output\n\ + --info List object formats & architectures supported\n\ -o Place stripped output into \n\ ")); @@ -2081,9 +2086,12 @@ strip_main (argc, argv) int argc; char *argv[]; { - char *input_target = NULL, *output_target = NULL; + char *input_target = NULL; + char *output_target = NULL; bfd_boolean show_version = FALSE; - int c, i; + bfd_boolean formats_info = FALSE; + int c; + int i; struct section_list *p; char *output_file = NULL; @@ -2141,6 +2149,9 @@ strip_main (argc, argv) case 'V': show_version = TRUE; break; + case OPTION_FORMATS_INFO: + formats_info = TRUE; + break; case 0: /* We've been given a long option. */ break; @@ -2152,6 +2163,12 @@ strip_main (argc, argv) } } + if (formats_info) + { + display_info (); + return 0; + } + if (show_version) print_version ("strip"); @@ -2214,10 +2231,13 @@ copy_main (argc, argv) char *argv[]; { char * binary_architecture = NULL; - char *input_filename = NULL, *output_filename = NULL; - char *input_target = NULL, *output_target = NULL; + char *input_filename = NULL; + char *output_filename = NULL; + char *input_target = NULL; + char *output_target = NULL; bfd_boolean show_version = FALSE; bfd_boolean change_warn = TRUE; + bfd_boolean formats_info = FALSE; int c; struct section_list *p; struct stat statbuf; @@ -2325,6 +2345,10 @@ copy_main (argc, argv) show_version = TRUE; break; + case OPTION_FORMATS_INFO: + formats_info = TRUE; + break; + case OPTION_WEAKEN: weaken = TRUE; break; @@ -2659,6 +2683,12 @@ copy_main (argc, argv) } } + if (formats_info) + { + display_info (); + return 0; + } + if (show_version) print_version ("objcopy"); @@ -2705,7 +2735,6 @@ copy_main (argc, argv) /* If there is no destination file then create a temp and rename the result into the input. */ - if (output_filename == (char *) NULL) { char *tmpname = make_tempname (input_filename); -- 2.30.2