1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00

[llvm-strip] Support grouped options in llvm-strip

GNU and Apple `strip` implementations seems to support grouped options.
Enable the support for grouped options introduced in
https://reviews.llvm.org/D83639 for `llvm-strip` invocations.

Includes test that checks that both the grouped and non grouped
invocations produces the same result.

Reviewed By: alexander-shaposhnikov, MaskRay

Differential Revision: https://reviews.llvm.org/D105249
This commit is contained in:
Daniel Rodríguez Troitiño 2021-07-01 13:36:32 -07:00 committed by Shoaib Meenai
parent ee40bb98a6
commit 67647eca64
2 changed files with 57 additions and 2 deletions

View File

@ -0,0 +1,53 @@
# This test checks that both grouped and ungrouped options (-S -x and -Sx)
# produce exactly the same result given the same input.
#
# RUN: yaml2obj %s -o %t
# RUN: llvm-strip -S -x -o %t-strip-separated %t
# RUN: llvm-strip -Sx -o %t-strip-grouped %t
# RUN: cmp %t-strip-separated %t-strip-grouped
# RUN: llvm-objcopy -S -x %t %t-objcopy-separated
# RUN: llvm-objcopy -Sx %t %t-objcopy-grouped
# RUN: cmp %t-objcopy-separated %t-objcopy-grouped
!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .debugGlobal
Type: SHT_PROGBITS
Content: "00000000"
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
Address: 0x1000
AddressAlign: 0x0000000000000010
Size: 64
Symbols:
- Name: Local
Type: STT_FUNC
Section: .text
Value: 0x1000
Size: 8
- Name: LocalSection
Type: STT_SECTION
Section: .text
- Name: LocalFile
Type: STT_FILE
- Name: Global
Type: STT_FUNC
Size: 8
Section: .text
Value: 0x1010
Binding: STB_GLOBAL
- Name: Weak
Type: STT_FUNC
Size: 8
Section: .text
Value: 0x1008
- Name: debugGlobal
Section: .debugGlobal
Binding: STB_GLOBAL

View File

@ -60,7 +60,9 @@ static const opt::OptTable::Info ObjcopyInfoTable[] = {
class ObjcopyOptTable : public opt::OptTable {
public:
ObjcopyOptTable() : OptTable(ObjcopyInfoTable) {}
ObjcopyOptTable() : OptTable(ObjcopyInfoTable) {
setGroupedShortOptions(true);
}
};
enum InstallNameToolID {
@ -164,7 +166,7 @@ static const opt::OptTable::Info StripInfoTable[] = {
class StripOptTable : public opt::OptTable {
public:
StripOptTable() : OptTable(StripInfoTable) {}
StripOptTable() : OptTable(StripInfoTable) { setGroupedShortOptions(true); }
};
} // namespace