* objcopy.c (use_alt_mach_code): Change type to unsigned long.
(copy_object): If bfd_alt_mach_code fails emit a more helpful message and if the target architecture is ELF use the alternative as replacement value for the e_machine number. (copy_main): Use strtoul to parse the number provided with the --alt-mach-code switch. * doc/binutils.texi (--alt-mach-code): Document that this switch can now set the absolute e_machine value.
This commit is contained in:
parent
9f6f925e1e
commit
f9d4ad2a13
3 changed files with 35 additions and 10 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
2006-02-28 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* objcopy.c (use_alt_mach_code): Change type to unsigned long.
|
||||||
|
(copy_object): If bfd_alt_mach_code fails emit a more helpful
|
||||||
|
message and if the target architecture is ELF use the alternative
|
||||||
|
as replacement value for the e_machine number.
|
||||||
|
(copy_main): Use strtoul to parse the number provided with the
|
||||||
|
--alt-mach-code switch.
|
||||||
|
* doc/binutils.texi (--alt-mach-code): Document that this switch
|
||||||
|
can now set the absolute e_machine value.
|
||||||
|
|
||||||
2006-02-27 Carlos O'Donell <carlos@codesourcery.com>
|
2006-02-27 Carlos O'Donell <carlos@codesourcery.com>
|
||||||
|
|
||||||
* po/Make-in: Add html target.
|
* po/Make-in: Add html target.
|
||||||
|
|
|
@ -1399,7 +1399,9 @@ If the output architecture has alternate machine codes, use the
|
||||||
@var{index}th code instead of the default one. This is useful in case
|
@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
|
a machine is assigned an official code and the tool-chain adopts the
|
||||||
new code, but other applications still depend on the original code
|
new code, but other applications still depend on the original code
|
||||||
being used.
|
being used. For ELF based architectures if the @var{index}
|
||||||
|
alternative does not exist then the value is treated as an absolute
|
||||||
|
number to be stored in the e_machine field of the ELF header.
|
||||||
|
|
||||||
@item --writable-text
|
@item --writable-text
|
||||||
Mark the output text as writable. This option isn't meaningful for all
|
Mark the output text as writable. This option isn't meaningful for all
|
||||||
|
|
|
@ -147,8 +147,8 @@ static bfd_byte gap_fill = 0;
|
||||||
static bfd_boolean pad_to_set = FALSE;
|
static bfd_boolean pad_to_set = FALSE;
|
||||||
static bfd_vma pad_to;
|
static bfd_vma pad_to;
|
||||||
|
|
||||||
/* Use alternate machine code? */
|
/* Use alternative machine code? */
|
||||||
static int use_alt_mach_code = 0;
|
static unsigned long use_alt_mach_code = 0;
|
||||||
|
|
||||||
/* Output BFD flags user wants to set or clear */
|
/* Output BFD flags user wants to set or clear */
|
||||||
static flagword bfd_flags_to_set;
|
static flagword bfd_flags_to_set;
|
||||||
|
@ -473,7 +473,7 @@ copy_usage (FILE *stream, int exit_status)
|
||||||
--globalize-symbols <file> --globalize-symbol for all in <file>\n\
|
--globalize-symbols <file> --globalize-symbol for all in <file>\n\
|
||||||
--keep-global-symbols <file> -G 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\
|
--weaken-symbols <file> -W for all symbols listed in <file>\n\
|
||||||
--alt-machine-code <index> Use alternate machine code for output\n\
|
--alt-machine-code <index> Use the target's <index>'th alternative machine\n\
|
||||||
--writable-text Mark the output text as writable\n\
|
--writable-text Mark the output text as writable\n\
|
||||||
--readonly-text Make the output text write protected\n\
|
--readonly-text Make the output text write protected\n\
|
||||||
--pure Mark the output file as demand paged\n\
|
--pure Mark the output file as demand paged\n\
|
||||||
|
@ -1667,9 +1667,21 @@ copy_object (bfd *ibfd, bfd *obfd)
|
||||||
/* Switch to the alternate machine code. We have to do this at the
|
/* Switch to the alternate machine code. We have to do this at the
|
||||||
very end, because we only initialize the header when we create
|
very end, because we only initialize the header when we create
|
||||||
the first section. */
|
the first section. */
|
||||||
if (use_alt_mach_code != 0
|
if (use_alt_mach_code != 0)
|
||||||
&& ! bfd_alt_mach_code (obfd, use_alt_mach_code))
|
{
|
||||||
non_fatal (_("unknown alternate machine code, ignored"));
|
if (! bfd_alt_mach_code (obfd, use_alt_mach_code))
|
||||||
|
{
|
||||||
|
non_fatal (_("this target does not support %lu alternative machine codes"),
|
||||||
|
use_alt_mach_code);
|
||||||
|
if (bfd_get_flavour (obfd) == bfd_target_elf_flavour)
|
||||||
|
{
|
||||||
|
non_fatal (_("treating that number as an absolute e_machine value instead"));
|
||||||
|
elf_elfheader (obfd)->e_machine = use_alt_mach_code;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
non_fatal (_("ignoring the alternative value"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -3069,9 +3081,9 @@ copy_main (int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPTION_ALT_MACH_CODE:
|
case OPTION_ALT_MACH_CODE:
|
||||||
use_alt_mach_code = atoi (optarg);
|
use_alt_mach_code = strtoul (optarg, NULL, 0);
|
||||||
if (use_alt_mach_code <= 0)
|
if (use_alt_mach_code == 0)
|
||||||
fatal (_("alternate machine code index must be positive"));
|
fatal (_("unable to parse alternative machine code"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPTION_PREFIX_SYMBOLS:
|
case OPTION_PREFIX_SYMBOLS:
|
||||||
|
|
Loading…
Add table
Reference in a new issue