[llvm-objcopy] Add --strip-all-gnu and change --strip-all
GNU's --strip-all doesn't strip as aggressively as it could in general.
Currently llvm-objcopy copies the exact behavoir of GNU's --strip-all.
eu-strip is used as a drop in replacement for GNU strip/objcopy in many many
places without issue. eu-strip removes non-allocated sections and keeps
.gnu.warning* sections. Because --strip-all will likely be the most widely
used stripping option we should make --strip-all as aggressive as it can safely
be. Since we have evidence from eu-strip that this is a safe option we should
allow it. For those that might still have an issue afterwards I've added
--strip-all-gnu as an exact drop in replacement for GNU's --strip-all as well.
llvm-svn: 319071
diff --git a/llvm/test/tools/llvm-objcopy/strip-all-gnu.test b/llvm/test/tools/llvm-objcopy/strip-all-gnu.test
new file mode 100644
index 0000000..48d34e8
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/strip-all-gnu.test
@@ -0,0 +1,54 @@
+# RUN: yaml2obj %s > %t
+# RUN: llvm-objcopy --strip-all-gnu %t %t2
+# RUN: llvm-readobj -file-headers -sections %t2 | FileCheck %s
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .dynstr
+ Type: SHT_STRTAB
+ Flags: [ SHF_ALLOC ]
+ - Name: .symtab.dyn
+ Type: SHT_SYMTAB
+ Flags: [ SHF_ALLOC ]
+ Type: SHT_NOBITS
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Size: 4
+ - Name: .debug_info
+ Type: SHT_PROGBITS
+ Flags: [ ]
+ AddressAlign: 0x1
+ Size: 4
+ - Name: .debug_loc
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+ AddressAlign: 0x1
+ Size: 4
+ - Name: .comment
+ Type: SHT_PROGBITS
+ - Name: .random_section_name
+ Type: SHT_PROGBITS
+ - Name: .debug_not_a_real_debug_section
+ Type: SHT_PROGBITS
+ - Name: .rel.text
+ Type: SHT_REL
+ Info: .text
+ - Name: .rela.text
+ Type: SHT_RELA
+ Info: .text
+
+# CHECK: SectionHeaderCount: 8
+
+# CHECK: Name: .dynstr
+# CHECK: Name: .symtab.dyn
+# CHECK: Name: .text
+# CHECK: Name: .debug_loc
+# CHECK: Name: .comment
+# CHECK: Name: .random_section_name
+# CHECK: Name: .shstrtab
diff --git a/llvm/test/tools/llvm-objcopy/strip-all.test b/llvm/test/tools/llvm-objcopy/strip-all.test
index fc0ae03..3e6d0d0 100644
--- a/llvm/test/tools/llvm-objcopy/strip-all.test
+++ b/llvm/test/tools/llvm-objcopy/strip-all.test
@@ -9,46 +9,21 @@
Type: ET_REL
Machine: EM_X86_64
Sections:
- - Name: .dynstr
- Type: SHT_STRTAB
- Flags: [ SHF_ALLOC ]
- - Name: .symtab.dyn
- Type: SHT_SYMTAB
- Flags: [ SHF_ALLOC ]
+ - Name: .bss
Type: SHT_NOBITS
+ Flags: [ SHF_ALLOC ]
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
- Size: 4
- - Name: .debug_info
+ - Name: .blarg
Type: SHT_PROGBITS
Flags: [ ]
- AddressAlign: 0x1
- Size: 4
- - Name: .debug_loc
+ - Name: .gnu.warning.foo
Type: SHT_PROGBITS
- Flags: [ SHF_ALLOC ]
- AddressAlign: 0x1
- Size: 4
- - Name: .comment
- Type: SHT_PROGBITS
- - Name: .random_section_name
- Type: SHT_PROGBITS
- - Name: .debug_not_a_real_debug_section
- Type: SHT_PROGBITS
- - Name: .rel.text
- Type: SHT_REL
- Info: .text
- - Name: .rela.text
- Type: SHT_RELA
- Info: .text
-# CHECK: SectionHeaderCount: 8
+# CHECK: SectionHeaderCount: 5
-# CHECK: Name: .dynstr
-# CHECK: Name: .symtab.dyn
-# CHECK: Name: .text
-# CHECK: Name: .debug_loc
-# CHECK: Name: .comment
-# CHECK: Name: .random_section_name
-# CHECK: Name: .shstrtab
+# CHECK: Name: .bss
+# CHECK: Name: .text
+# CHECK: Name: .gnu.warning.foo
+# CHECK: Name: .shstrtab