From: Nick Clifton Date: Thu, 4 Dec 2003 18:24:07 +0000 (+0000) Subject: Do not copy the object if the output file's format cannot be set to that of X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f57a841aea536a33e06a67c13bb15245742ba330;p=binutils-gdb.git Do not copy the object if the output file's format cannot be set to that of the input file. If the input file's format is unknown, fail. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 526fb12c115..77f21b0cc96 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2003-12-04 Nick Clifton + + * objcopy.c (copy_object): Do not copy the object if the + output file's format cannot be set to that of the input file. + If the input file's format is unknown, fail. + 2003-11-28 Ian Lance Taylor * cxxfilt.c (usage): Mention new -p/--no-params options. diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 6807aac049a..25890176ba9 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -1138,9 +1138,19 @@ copy_object (bfd *ibfd, bfd *obfd) if (!bfd_set_arch_mach (obfd, iarch, imach) && (ibfd->target_defaulted || bfd_get_arch (ibfd) != bfd_get_arch (obfd))) - non_fatal (_("Warning: Output file cannot represent architecture %s"), - bfd_printable_arch_mach (bfd_get_arch (ibfd), - bfd_get_mach (ibfd))); + { + if (bfd_get_arch (ibfd) == bfd_arch_unknown) + fatal (_("Unable to recognise the format of the input file %s"), + bfd_get_filename (ibfd)); + else + { + non_fatal (_("Warning: Output file cannot represent architecture %s"), + bfd_printable_arch_mach (bfd_get_arch (ibfd), + bfd_get_mach (ibfd))); + status = 1; + return; + } + } if (!bfd_set_format (obfd, bfd_get_format (ibfd))) RETURN_NONFATAL (bfd_get_filename (ibfd));