mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 02:50:08 +08:00
PR24968, make objcopy use output ELF arch if -B not given
This should make objcopy -B redundant for the common case of producing ELF output where the -O target defaults to the desired arch:mach. PR 24968 * objcopy.c (copy_object): For ELF output and non-ELF input without arch, take arch from output file if not given by -B. Don't bfd_get_arch_info when we already have iarch.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2019-11-19 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 24968
|
||||||
|
* objcopy.c (copy_object): For ELF output and non-ELF input without
|
||||||
|
arch, take arch from output file if not given by -B. Don't
|
||||||
|
bfd_get_arch_info when we already have iarch.
|
||||||
|
|
||||||
2019-11-19 Alan Modra <amodra@gmail.com>
|
2019-11-19 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 25191
|
PR 25191
|
||||||
|
@ -2646,8 +2646,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
|
|||||||
imach = bfd_get_mach (ibfd);
|
imach = bfd_get_mach (ibfd);
|
||||||
if (input_arch)
|
if (input_arch)
|
||||||
{
|
{
|
||||||
if (bfd_get_arch_info (ibfd) == NULL
|
if (iarch == bfd_arch_unknown)
|
||||||
|| bfd_get_arch_info (ibfd)->arch == bfd_arch_unknown)
|
|
||||||
{
|
{
|
||||||
iarch = input_arch->arch;
|
iarch = input_arch->arch;
|
||||||
imach = input_arch->mach;
|
imach = input_arch->mach;
|
||||||
@ -2656,6 +2655,14 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
|
|||||||
non_fatal (_("Input file `%s' ignores binary architecture parameter."),
|
non_fatal (_("Input file `%s' ignores binary architecture parameter."),
|
||||||
bfd_get_archive_filename (ibfd));
|
bfd_get_archive_filename (ibfd));
|
||||||
}
|
}
|
||||||
|
if (iarch == bfd_arch_unknown
|
||||||
|
&& bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|
||||||
|
&& bfd_get_flavour (obfd) == bfd_target_elf_flavour)
|
||||||
|
{
|
||||||
|
const struct elf_backend_data *bed = get_elf_backend_data (obfd);
|
||||||
|
iarch = bed->arch;
|
||||||
|
imach = 0;
|
||||||
|
}
|
||||||
if (!bfd_set_arch_mach (obfd, iarch, imach)
|
if (!bfd_set_arch_mach (obfd, iarch, imach)
|
||||||
&& (ibfd->target_defaulted
|
&& (ibfd->target_defaulted
|
||||||
|| bfd_get_arch (ibfd) != bfd_get_arch (obfd)))
|
|| bfd_get_arch (ibfd) != bfd_get_arch (obfd)))
|
||||||
|
Reference in New Issue
Block a user