diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2025-07-30 20:34:46 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2025-07-31 06:16:04 -0700 |
commit | 3ac83564eb3c858eb1add02b6e86b5628e4abd78 (patch) | |
tree | 1e9106b2f0e0a16bff57a96ecd07e58a54aae55f /binutils | |
parent | c7c272f06d2d456d1d99762325fd0dd7db31d540 (diff) | |
download | binutils-3ac83564eb3c858eb1add02b6e86b5628e4abd78.zip binutils-3ac83564eb3c858eb1add02b6e86b5628e4abd78.tar.gz binutils-3ac83564eb3c858eb1add02b6e86b5628e4abd78.tar.bz2 |
strip: Treat "default" output_target as unspecified
Treat output target as unspecified if it is set to "default".
binutils/
PR binutils/33230
* objcopy.c (copy_file): Treat "default" output_target as
unspecified.
binutils/testsuite/
PR binutils/33230
* binutils-all/x86-64/x86-64.exp (run_pr33230_test): New.
Run binutils/33230 tests with readelf if supported.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/objcopy.c | 6 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/x86-64/x86-64.exp | 76 |
2 files changed, 60 insertions, 22 deletions
diff --git a/binutils/objcopy.c b/binutils/objcopy.c index e90117a..5774711 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -3953,7 +3953,8 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, /* bfd_get_target does not return the correct value until bfd_check_format succeeds. */ - if (output_target == NULL) + if (output_target == NULL + || strcmp (output_target, "default") == 0) { output_target = bfd_get_target (ibfd); force_output_target = false; @@ -4008,7 +4009,8 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, /* bfd_get_target does not return the correct value until bfd_check_format succeeds. */ - if (output_target == NULL) + if (output_target == NULL + || strcmp (output_target, "default") == 0) output_target = bfd_get_target (ibfd); if (ofd >= 0) diff --git a/binutils/testsuite/binutils-all/x86-64/x86-64.exp b/binutils/testsuite/binutils-all/x86-64/x86-64.exp index a3fe6b1..6d1b308 100644 --- a/binutils/testsuite/binutils-all/x86-64/x86-64.exp +++ b/binutils/testsuite/binutils-all/x86-64/x86-64.exp @@ -255,6 +255,56 @@ run_pr33198_test "-fat" "-R .gnu.lto_* -R .gnu.debuglto_* -R .llvm.lto -N __gnu_ run_pr33198_test "" "-R .llvm.lto" run_pr33198_test "-fat" "-R .llvm.lto" +proc run_pr33230_test { testname obj strip_flags run_readelf } { + global srcdir + global subdir + global READELF + global STRIP + + append strip_flags " --strip-debug" + append testname " ($strip_flags)" + + set cmd "$STRIP $strip_flags $obj -o ${obj}.strip" + send_log "$cmd\n" + verbose "$cmd" 1 + catch "exec $cmd" got + if { $run_readelf == "yes" } { + if ![string match "" $got] then { + send_log "$got\n" + verbose "$got" 1 + fail "$testname (${obj})" + return + } + set cmd "$READELF -h $obj" + send_log "$cmd\n" + verbose "$cmd" 1 + catch "exec $cmd" got + if { ![regexp "Machine: +AArch64" $got] } then { + send_log "$got\n" + verbose "$got" 1 + fail "$testname (${obj})" + return + } + set cmd "$READELF -h ${obj}.strip" + send_log "$cmd\n" + verbose "$cmd" 1 + catch "exec $cmd" got + if { ![regexp "Machine: +AArch64" $got] } then { + send_log "$got\n" + verbose "$got" 1 + fail "$testname (${obj}.strip)" + return + } + } elseif { ![regexp "Unable to recognise the format" $got] } then { + send_log "$got\n" + verbose "$got" 1 + fail "$testname" + return + } + + pass "$testname" +} + set t $srcdir/$subdir/pr33230.obj.bz2 # We need to strip the ".bz2", but can leave the dirname. set test $subdir/[file tail $t] @@ -264,26 +314,12 @@ set obj tmpdir/pr33230.o if {[catch "system \"bzip2 -dc $t > $obj\""] != 0} { untested "bzip2 -dc ($testname)" } else { - set cmd "$STRIP $obj -o ${obj}.strip" - send_log "$cmd\n" - verbose "$cmd" 1 - catch "exec $cmd" got - if [regexp "Unable to recognise the format" $got] then { - pass "$testname" - } else { - send_log "$got\n" - verbose "$got" 1 - fail "$testname" - } - set cmd "$STRIP --input-target=default $obj -o ${obj}.strip" - send_log "$cmd\n" - verbose "$cmd" 1 - catch "exec $cmd" got - if [regexp "Unable to recognise the format" $got] then { - pass "$testname" + catch "exec $STRIP --help" got + if { [regexp "elf64-littleaarch64" $got] } { + set run_readelf "yes" } else { - send_log "$got\n" - verbose "$got" 1 - fail "$testname (--input-target=default)" + set run_readelf "no" } + run_pr33230_test "$testname" $obj "" $run_readelf + run_pr33230_test "$testname" $obj "--input-target=default" $run_readelf } |