* objcopy.c (use_alt_mach_code): New variable.
(OPTION_ALT_MACH_CODE): Define. (copy_options): Added --alt-machine-code. (copy_main): Handle it. (copy_object): Switch to alternate machine code if requested. * doc/binutils.texi: Document new option. * NEWS: Likewise.
This commit is contained in:
parent
8c98ec7dcc
commit
1ae8b3d2a0
4 changed files with 43 additions and 0 deletions
|
@ -1,3 +1,13 @@
|
|||
2001-08-24 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* objcopy.c (use_alt_mach_code): New variable.
|
||||
(OPTION_ALT_MACH_CODE): Define.
|
||||
(copy_options): Added --alt-machine-code.
|
||||
(copy_main): Handle it.
|
||||
(copy_object): Switch to alternate machine code if requested.
|
||||
* doc/binutils.texi: Document new option.
|
||||
* NEWS: Likewise.
|
||||
|
||||
2001-08-22 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||
|
||||
* readelf.c (get_machine_flags): Add detection of EF_MIPS_UCODE.
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
|
||||
* Support for OpenRISC by Johan Rydberg.
|
||||
|
||||
* New command line switch to objcopy --alt-machine-code which creates a binary
|
||||
with an alternate machine code if one is defined in the architecture
|
||||
description. Only supported for ELF targets. By Alexandre Oliva.
|
||||
|
||||
* New command line switch to objcopy -B (or --binary-architecture) which sets
|
||||
the architecture of the output file to the given argument. This option only
|
||||
makes sense, if the input target is binary. Otherwise it is ignored.
|
||||
|
|
|
@ -954,6 +954,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}]
|
|||
[@option{--keep-global-symbols=}@var{filename}]
|
||||
[@option{--localize-symbols=}@var{filename}]
|
||||
[@option{--weaken-symbols=}@var{filename}]
|
||||
[@option{--alt-machine-code=@var{index}}]
|
||||
[@option{-v}|@option{--verbose}]
|
||||
[@option{-V}|@option{--version}]
|
||||
[@option{--help}]
|
||||
|
@ -1306,6 +1307,13 @@ Apply @option{--weaken-symbol} option to each symbol listed in the file
|
|||
name per line. Line comments may be introduced by the hash character.
|
||||
This option may be given more than once.
|
||||
|
||||
@item --alt-machine-code=@var{index}
|
||||
If the output architecture has alternate machine codes, use the
|
||||
@var{index}th code instead of the default one. This is useful in case
|
||||
a machine is assigned an official code and the tool-chain adopts the
|
||||
new code, but other applications still depend on the original code
|
||||
being used.
|
||||
|
||||
@item -V
|
||||
@itemx --version
|
||||
Show the version number of @command{objcopy}.
|
||||
|
|
|
@ -171,6 +171,9 @@ static bfd_byte gap_fill = 0;
|
|||
static boolean pad_to_set = false;
|
||||
static bfd_vma pad_to;
|
||||
|
||||
/* Use alternate machine code? */
|
||||
static int use_alt_mach_code = 0;
|
||||
|
||||
/* List of sections to add. */
|
||||
struct section_add
|
||||
{
|
||||
|
@ -240,6 +243,7 @@ static boolean weaken = false;
|
|||
#define OPTION_KEEPGLOBAL_SYMBOLS (OPTION_LOCALIZE_SYMBOLS + 1)
|
||||
#define OPTION_WEAKEN_SYMBOLS (OPTION_KEEPGLOBAL_SYMBOLS + 1)
|
||||
#define OPTION_RENAME_SECTION (OPTION_WEAKEN_SYMBOLS + 1)
|
||||
#define OPTION_ALT_MACH_CODE (OPTION_RENAME_SECTION + 1)
|
||||
|
||||
/* Options to handle if running as "strip". */
|
||||
|
||||
|
@ -326,6 +330,7 @@ static struct option copy_options[] =
|
|||
{"keep-global-symbols", required_argument, 0, OPTION_KEEPGLOBAL_SYMBOLS},
|
||||
{"localize-symbols", required_argument, 0, OPTION_LOCALIZE_SYMBOLS},
|
||||
{"weaken-symbols", required_argument, 0, OPTION_WEAKEN_SYMBOLS},
|
||||
{"alt-machine-code", required_argument, 0, OPTION_ALT_MACH_CODE},
|
||||
{0, no_argument, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -408,6 +413,7 @@ copy_usage (stream, exit_status)
|
|||
--localize-symbols <file> -L for all symbols listed in <file>\n\
|
||||
--keep-global-symbols <file> -G for all symbols listed in <file>\n\
|
||||
--weaken-symbols <file> -W for all symbols listed in <file>\n\
|
||||
--alt-machine-code <index> Use alternate machine code for output\n\
|
||||
-v --verbose List all object files modified\n\
|
||||
-V --version Display this program's version number\n\
|
||||
-h --help Display this output\n\
|
||||
|
@ -1244,6 +1250,15 @@ copy_object (ibfd, obfd)
|
|||
status = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Switch to the alternate machine code. We have to do this at the
|
||||
very end, because we only initialize the header when we create
|
||||
the first section. */
|
||||
if (use_alt_mach_code != 0)
|
||||
{
|
||||
if (!bfd_alt_mach_code (obfd, use_alt_mach_code))
|
||||
non_fatal (_("unknown alternate machine code, ignored"));
|
||||
}
|
||||
}
|
||||
|
||||
/* Read each archive element in turn from IBFD, copy the
|
||||
|
@ -2462,6 +2477,12 @@ copy_main (argc, argv)
|
|||
add_specific_symbols (optarg, &weaken_specific_list);
|
||||
break;
|
||||
|
||||
case OPTION_ALT_MACH_CODE:
|
||||
use_alt_mach_code = atoi (optarg);
|
||||
if (use_alt_mach_code <= 0)
|
||||
fatal (_("alternate machine code index must be positive"));
|
||||
break;
|
||||
|
||||
case 0:
|
||||
break; /* we've been given a long option */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue