From 666edc6b61343aacac7de82058f57b8e6597c0b3 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 17 Jan 2026 18:43:06 +1030 Subject: [PATCH] PR 33801 strip doesn't remove .gnu.lto_.opts OK, so people want to be able to partly destroy gcc slim LTO object files. I don't see why not, despite HJ's policy-setting slim lto strip -R tests. I also don't see why it matters that objcopy/strip won't similarly break LLVM objects (pr33271). So out goes the slim lto strip -R tests, and the strip-debug test expecting slim lto files won't be modified in any way. strip-debug now removes a FILE symbol, which isn't unreasonable. PR 33801 PR 33271 PR 33246 binutils/ * objcopy.c (copy_archive, copy_file): Do not special case gcc LTO IR files. ld/ * testsuite/ld-plugin/lto-binutils.exp: Remove slim lto strip -R tests. (run_pr33246_test): Don't compare slim object files after strip-debug. * testsuite/ld-plugin/strip-1a-s-all.nd: Delete. --- binutils/objcopy.c | 6 ------ ld/testsuite/ld-plugin/lto-binutils.exp | 21 ++------------------- ld/testsuite/ld-plugin/strip-1a-s-all.nd | 6 ------ 3 files changed, 2 insertions(+), 31 deletions(-) delete mode 100644 ld/testsuite/ld-plugin/strip-1a-s-all.nd diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 5f44c6295f2..c237f24adf1 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -3771,9 +3771,6 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target, goto cleanup_and_exit; } - /* Copy slim LTO IR file as unknown object. */ - if (this_element->lto_type == lto_slim_ir_object) - ok_object = false; if (ok_object) { ok = copy_object (this_element, output_element, input_arch); @@ -4067,9 +4064,6 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, return; } - /* Copy slim LTO IR file as unknown file. */ - if (ibfd->lto_type == lto_slim_ir_object) - ok_object = false; if (ok_object ? !copy_object (ibfd, obfd, input_arch) : !copy_unknown_file (ibfd, obfd, diff --git a/ld/testsuite/ld-plugin/lto-binutils.exp b/ld/testsuite/ld-plugin/lto-binutils.exp index 77da082822b..14c8d7b1240 100644 --- a/ld/testsuite/ld-plugin/lto-binutils.exp +++ b/ld/testsuite/ld-plugin/lto-binutils.exp @@ -254,23 +254,6 @@ run_lto_binutils_test [list \ ] \ ] -run_lto_binutils_test [list \ - [list \ - "strip" \ - "-R .gnu.*lto_* -N __gnu_lto_v1" \ - "strip-1a.o" \ - "strip-1a-s-all.o" \ - {{nm -n strip-1a-s-all.nd}} \ - ] \ - [list \ - "strip" \ - "-R .gnu.*lto_* -N __gnu_lto_v1" \ - "libstrip-1a.a" \ - "libstrip-1a-s-all.a" \ - {{nm -n strip-1a-s-all.nd}} \ - ] \ -] - run_cc_link_tests [list \ [list \ "Build strip-1a (strip-1a.o)" \ @@ -449,7 +432,7 @@ proc run_pr33246_test { llvm fat } { fail "$testname (strip $obj)" return } - } else { + } elseif { "$llvm" == "-llvm" } { set cmd "cmp $obj ${obj}.strip" send_log "$cmd\n" verbose "$cmd" 1 @@ -508,7 +491,7 @@ proc run_pr33246_test { llvm fat } { fail "$testname (strip $archive)" return } - } else { + } elseif { "$llvm" == "-llvm" } { set cmd "cmp $archive ${archive}.strip" send_log "$cmd\n" verbose "$cmd" 1 diff --git a/ld/testsuite/ld-plugin/strip-1a-s-all.nd b/ld/testsuite/ld-plugin/strip-1a-s-all.nd deleted file mode 100644 index 52265c2eb3d..00000000000 --- a/ld/testsuite/ld-plugin/strip-1a-s-all.nd +++ /dev/null @@ -1,6 +0,0 @@ -#... - + U foo2 - + U foo3 -0+ T foo1 -0+ T main -#pass