diff options
author | Alan Modra <amodra@gmail.com> | 2021-04-15 01:33:13 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-04-15 14:16:55 +0930 |
commit | d0ecdcddc363ad7f05fc50cf1eee4028fa7f8964 (patch) | |
tree | 2c075eb545457086b9749fbdeae5d28b9b62cda0 /binutils/objcopy.c | |
parent | ddfe525f2875e76e0c32ff348fc0d3d6aa5fb4a3 (diff) | |
download | binutils-gdb-d0ecdcddc363ad7f05fc50cf1eee4028fa7f8964.tar.gz |
Make objcopy -p work when an output file is specified
More fallout from the PR27456 fixes.
PR 27456
* rename.c (smart_rename): When TO and FROM are equal, just set
file timestamp.
* objcopy.c (strip_main, copy_main): Always call smart_rename.
Diffstat (limited to 'binutils/objcopy.c')
-rw-r--r-- | binutils/objcopy.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 3b6a7e50169..946802ebb78 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -4864,10 +4864,9 @@ strip_main (int argc, char *argv[]) output_target, NULL); if (status == 0) { - if (output_file != tmpname) - status = smart_rename (tmpname, - output_file ? output_file : argv[i], - copyfd, &statbuf, preserve_dates) != 0; + const char *oname = output_file ? output_file : argv[i]; + status = smart_rename (tmpname, oname, copyfd, + &statbuf, preserve_dates) != 0; if (status == 0) status = hold_status; } @@ -5949,9 +5948,9 @@ copy_main (int argc, char *argv[]) output_target, input_arch); if (status == 0) { - if (tmpname != output_filename) - status = smart_rename (tmpname, input_filename, copyfd, - &statbuf, preserve_dates) != 0; + const char *oname = output_filename ? output_filename : input_filename; + status = smart_rename (tmpname, oname, copyfd, + &statbuf, preserve_dates) != 0; } else { |