aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2003-12-04 18:24:07 +0000
committerNick Clifton <nickc@redhat.com>2003-12-04 18:24:07 +0000
commitf57a841aea536a33e06a67c13bb15245742ba330 (patch)
tree420b90c76d4d46bd6b0cfba0124eaee82e9686e5 /binutils
parent2051433802d3710a2c35c6eed4f9990ea30e812f (diff)
downloadfsf-binutils-gdb-f57a841aea536a33e06a67c13bb15245742ba330.zip
fsf-binutils-gdb-f57a841aea536a33e06a67c13bb15245742ba330.tar.gz
fsf-binutils-gdb-f57a841aea536a33e06a67c13bb15245742ba330.tar.bz2
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.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/objcopy.c16
2 files changed, 19 insertions, 3 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 526fb12..77f21b0 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2003-12-04 Nick Clifton <nickc@redhat.com>
+
+ * 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 <ian@wasabisystems.com>
* cxxfilt.c (usage): Mention new -p/--no-params options.
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index 6807aac..2589017 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));