mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
Add --binary-architecture switch to objcopy to allow the output architecture
to be set when the input file type is binary.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2001-03-12 Stefan Geuken <mail@stefan-geuken.de>
|
||||||
|
|
||||||
|
* binary.c (bfd_external_binary_architecture): Declare.
|
||||||
|
(binary_object_p): If bfd_external_binary_architecture is defined,
|
||||||
|
set the architecture to this string.
|
||||||
|
|
||||||
2001-03-11 Philip Blundell <philb@gnu.org>
|
2001-03-11 Philip Blundell <philb@gnu.org>
|
||||||
|
|
||||||
* elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make PLT
|
* elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make PLT
|
||||||
|
11
bfd/binary.c
11
bfd/binary.c
@ -55,6 +55,10 @@ static boolean binary_set_section_contents
|
|||||||
PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
|
PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
|
||||||
static int binary_sizeof_headers PARAMS ((bfd *, boolean));
|
static int binary_sizeof_headers PARAMS ((bfd *, boolean));
|
||||||
|
|
||||||
|
/* Set by external programs - specifies the BFD architecture
|
||||||
|
to use when creating binary BFDs. */
|
||||||
|
enum bfd_architecture bfd_external_binary_architecture = bfd_arch_unknown;
|
||||||
|
|
||||||
/* Create a binary object. Invoked via bfd_set_format. */
|
/* Create a binary object. Invoked via bfd_set_format. */
|
||||||
|
|
||||||
static boolean
|
static boolean
|
||||||
@ -101,6 +105,13 @@ binary_object_p (abfd)
|
|||||||
|
|
||||||
abfd->tdata.any = (PTR) sec;
|
abfd->tdata.any = (PTR) sec;
|
||||||
|
|
||||||
|
if (bfd_get_arch_info (abfd) != NULL)
|
||||||
|
{
|
||||||
|
if ((bfd_get_arch_info (abfd)->arch == bfd_arch_unknown)
|
||||||
|
&& (bfd_external_binary_architecture != bfd_arch_unknown))
|
||||||
|
bfd_set_arch_info (abfd, bfd_lookup_arch (bfd_external_binary_architecture, 0));
|
||||||
|
}
|
||||||
|
|
||||||
return abfd->xvec;
|
return abfd->xvec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
2001-03-12 Stefan Geuken <mail@stefan-geuken.de>
|
||||||
|
|
||||||
|
* NEWS: Document addition of -B switch to objcopy.
|
||||||
|
* binutils.texi: Document addition of -B switch to objcopy.
|
||||||
|
* objcopy.c: (copy_options): Add --binary-architecture.
|
||||||
|
(copy_usage): Document -B/--binary-architecture.
|
||||||
|
(copy_main): Support -B/--binary-architecture. Set
|
||||||
|
bfd_external_binary_architecture.
|
||||||
|
|
||||||
2001-03-11 Andreas Jaeger <aj@suse.de>
|
2001-03-11 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
* readelf.c (guess_is_rela): Handle EM_S390_OLD.
|
* readelf.c (guess_is_rela): Handle EM_S390_OLD.
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
-*- text -*-
|
-*- text -*-
|
||||||
|
|
||||||
|
* New command line switch to objcopy -B (or --binary-architecture) which sets
|
||||||
|
the archiceture of the output file to the given argument. This option only
|
||||||
|
makes sense, if the input target is binary. Otherwise it is ignored.
|
||||||
|
By Stefan Geuken.
|
||||||
|
|
||||||
* Support for PDP-11 by Lars Brinkhoff.
|
* Support for PDP-11 by Lars Brinkhoff.
|
||||||
|
|
||||||
* Add support for ARM v5t and v5te architectures and Intel's XScale ARM
|
* Add support for ARM v5t and v5te architectures and Intel's XScale ARM
|
||||||
|
@ -874,6 +874,7 @@ Show a summary of the options to @code{nm} and exit.
|
|||||||
objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
|
objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
|
||||||
[ -I @var{bfdname} | --input-target=@var{bfdname} ]
|
[ -I @var{bfdname} | --input-target=@var{bfdname} ]
|
||||||
[ -O @var{bfdname} | --output-target=@var{bfdname} ]
|
[ -O @var{bfdname} | --output-target=@var{bfdname} ]
|
||||||
|
[ -B @var{bfdarch} | --binary-architecture=@var{bfdarch} ]
|
||||||
[ -S | --strip-all ] [ -g | --strip-debug ]
|
[ -S | --strip-all ] [ -g | --strip-debug ]
|
||||||
[ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
|
[ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
|
||||||
[ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
|
[ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
|
||||||
@ -960,6 +961,17 @@ Use @var{bfdname} as the object format for both the input and the output
|
|||||||
file; i.e., simply transfer data from source to destination with no
|
file; i.e., simply transfer data from source to destination with no
|
||||||
translation. @xref{Target Selection}, for more information.
|
translation. @xref{Target Selection}, for more information.
|
||||||
|
|
||||||
|
@item -B @var{bfdarch}
|
||||||
|
@itemx --binary-architecture=@var{bfdarch}
|
||||||
|
Useful when transforming a raw binary input file into an object file.
|
||||||
|
In this case the output architecture can be set to @var{bfdarch}. This
|
||||||
|
option will be ignored if the input file has a known @var{bfdarch}. You
|
||||||
|
can access this binary data inside a program by referencing the special
|
||||||
|
symbols that are created by the conversion process. These symbols are
|
||||||
|
called _binary_@var{objfile}_start, _binary_@var{objfile}_end and
|
||||||
|
_binary_@var{objfile}_size. e.g. you can transform a picture file into
|
||||||
|
an object file and then access it in your code using these symbols.
|
||||||
|
|
||||||
@item -j @var{sectionname}
|
@item -j @var{sectionname}
|
||||||
@itemx --only-section=@var{sectionname}
|
@itemx --only-section=@var{sectionname}
|
||||||
Copy only the named section from the input file to the output file.
|
Copy only the named section from the input file to the output file.
|
||||||
|
@ -252,6 +252,7 @@ static struct option copy_options[] =
|
|||||||
{"adjust-vma", required_argument, 0, OPTION_CHANGE_ADDRESSES},
|
{"adjust-vma", required_argument, 0, OPTION_CHANGE_ADDRESSES},
|
||||||
{"adjust-section-vma", required_argument, 0, OPTION_CHANGE_SECTION_ADDRESS},
|
{"adjust-section-vma", required_argument, 0, OPTION_CHANGE_SECTION_ADDRESS},
|
||||||
{"adjust-warnings", no_argument, 0, OPTION_CHANGE_WARNINGS},
|
{"adjust-warnings", no_argument, 0, OPTION_CHANGE_WARNINGS},
|
||||||
|
{"binary-architecture", required_argument, 0, 'B'},
|
||||||
{"byte", required_argument, 0, 'b'},
|
{"byte", required_argument, 0, 'b'},
|
||||||
{"change-addresses", required_argument, 0, OPTION_CHANGE_ADDRESSES},
|
{"change-addresses", required_argument, 0, OPTION_CHANGE_ADDRESSES},
|
||||||
{"change-leading-char", no_argument, 0, OPTION_CHANGE_LEADING_CHAR},
|
{"change-leading-char", no_argument, 0, OPTION_CHANGE_LEADING_CHAR},
|
||||||
@ -314,6 +315,9 @@ extern unsigned int Chunk;
|
|||||||
on by the --srec-forceS3 command line switch. */
|
on by the --srec-forceS3 command line switch. */
|
||||||
extern boolean S3Forced;
|
extern boolean S3Forced;
|
||||||
|
|
||||||
|
/* Defined in bfd/binary.c. Used to set architecture of input binary files. */
|
||||||
|
extern enum bfd_architecture bfd_external_binary_architecture;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
copy_usage (stream, exit_status)
|
copy_usage (stream, exit_status)
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
@ -324,6 +328,7 @@ copy_usage (stream, exit_status)
|
|||||||
fprintf (stream, _("\
|
fprintf (stream, _("\
|
||||||
-I --input-target <bfdname> Assume input file is in format <bfdname>\n\
|
-I --input-target <bfdname> Assume input file is in format <bfdname>\n\
|
||||||
-O --output-target <bfdname> Create an output file in format <bfdname>\n\
|
-O --output-target <bfdname> Create an output file in format <bfdname>\n\
|
||||||
|
-B --binary-architecture <arch> Set arch of output file, when input is binary\n\
|
||||||
-F --target <bfdname> Set both input and output format to <bfdname>\n\
|
-F --target <bfdname> Set both input and output format to <bfdname>\n\
|
||||||
--debugging Convert debugging information, if possible\n\
|
--debugging Convert debugging information, if possible\n\
|
||||||
-p --preserve-dates Copy modified/access timestamps to the output\n\
|
-p --preserve-dates Copy modified/access timestamps to the output\n\
|
||||||
@ -1813,6 +1818,7 @@ copy_main (argc, argv)
|
|||||||
int argc;
|
int argc;
|
||||||
char *argv[];
|
char *argv[];
|
||||||
{
|
{
|
||||||
|
char * binary_architecture = NULL;
|
||||||
char *input_filename = NULL, *output_filename = NULL;
|
char *input_filename = NULL, *output_filename = NULL;
|
||||||
char *input_target = NULL, *output_target = NULL;
|
char *input_target = NULL, *output_target = NULL;
|
||||||
boolean show_version = false;
|
boolean show_version = false;
|
||||||
@ -1821,7 +1827,7 @@ copy_main (argc, argv)
|
|||||||
struct section_list *p;
|
struct section_list *p;
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
|
||||||
while ((c = getopt_long (argc, argv, "b:i:I:j:K:N:s:O:d:F:L:R:SpgxXVvW:",
|
while ((c = getopt_long (argc, argv, "b:B:i:I:j:K:N:s:O:d:F:L:R:SpgxXVvW:",
|
||||||
copy_options, (int *) 0)) != EOF)
|
copy_options, (int *) 0)) != EOF)
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c)
|
||||||
@ -1832,6 +1838,10 @@ copy_main (argc, argv)
|
|||||||
fatal (_("byte number must be non-negative"));
|
fatal (_("byte number must be non-negative"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'B':
|
||||||
|
binary_architecture = optarg;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'i':
|
case 'i':
|
||||||
interleave = atoi (optarg);
|
interleave = atoi (optarg);
|
||||||
if (interleave < 1)
|
if (interleave < 1)
|
||||||
@ -2189,11 +2199,29 @@ copy_main (argc, argv)
|
|||||||
if (output_target == (char *) NULL)
|
if (output_target == (char *) NULL)
|
||||||
output_target = input_target;
|
output_target = input_target;
|
||||||
|
|
||||||
if (preserve_dates)
|
if (binary_architecture != (char *) NULL)
|
||||||
{
|
{
|
||||||
if (stat (input_filename, &statbuf) < 0)
|
if (input_target && strcmp (input_target, "binary") == 0)
|
||||||
fatal (_("Cannot stat: %s: %s"), input_filename, strerror (errno));
|
{
|
||||||
|
const bfd_arch_info_type * temp_arch_info;
|
||||||
|
|
||||||
|
temp_arch_info = bfd_scan_arch (binary_architecture);
|
||||||
|
|
||||||
|
if (temp_arch_info != NULL)
|
||||||
|
bfd_external_binary_architecture = temp_arch_info->arch;
|
||||||
|
else
|
||||||
|
fatal (_("architecture %s unknown"), binary_architecture);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
non_fatal (_("Warning: input target 'binary' required for binary architecture parameter."));
|
||||||
|
non_fatal (_(" Argument %s ignored"), binary_architecture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preserve_dates)
|
||||||
|
if (stat (input_filename, & statbuf) < 0)
|
||||||
|
fatal (_("Cannot stat: %s: %s"), input_filename, strerror (errno));
|
||||||
|
|
||||||
/* If there is no destination file then create a temp and rename
|
/* If there is no destination file then create a temp and rename
|
||||||
the result into the input. */
|
the result into the input. */
|
||||||
|
Reference in New Issue
Block a user