diff options
author | Alex Brachet <abrachet@google.com> | 2022-02-17 19:24:53 +0000 |
---|---|---|
committer | Alex Brachet <abrachet@google.com> | 2022-02-17 19:24:53 +0000 |
commit | df2812d8de2ac99d46c8786c00922c09a5b65db0 (patch) | |
tree | cbfbd6469a73798d074ef58afa42e7f413a26319 | |
parent | a52b9102d1f75ca0229e5e395d317fb9ecd51590 (diff) | |
download | llvm-df2812d8de2ac99d46c8786c00922c09a5b65db0.zip llvm-df2812d8de2ac99d46c8786c00922c09a5b65db0.tar.gz llvm-df2812d8de2ac99d46c8786c00922c09a5b65db0.tar.bz2 |
[ifs] Add --strip-needed flag
Reviewed By: haowei, mcgrathr
Differential Revision: https://reviews.llvm.org/D119907
-rw-r--r-- | llvm/test/tools/llvm-ifs/strip-needed.test | 26 | ||||
-rw-r--r-- | llvm/tools/llvm-ifs/llvm-ifs.cpp | 6 |
2 files changed, 32 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-ifs/strip-needed.test b/llvm/test/tools/llvm-ifs/strip-needed.test new file mode 100644 index 0000000..1ef579f8 --- /dev/null +++ b/llvm/test/tools/llvm-ifs/strip-needed.test @@ -0,0 +1,26 @@ +## Test --strip-needed flag + +# RUN: llvm-ifs --input-format=IFS --strip-needed --output-ifs=- %s | FileCheck %s + +# RUN: llvm-ifs --input-format=IFS --output-elf=- %s | \ +# RUN: obj2yaml | FileCheck %s --check-prefix=FROM-ELF + +# RUN: llvm-ifs --input-format=IFS --strip-needed --output-elf=- %s | \ +# RUN: obj2yaml | FileCheck %s --check-prefix=FROM-ELF-STRIP-NEEDED + +--- !ifs-v1 +IfsVersion: 3.0 +Target: { ObjectFormat: ELF, Arch: AArch64, Endianness: little, BitWidth: 64 } +NeededLibs: + - '' +Symbols: [] +... + +# CHECK: --- !ifs-v1 +# CHECK-NEXT: IfsVersion: {{[1-9]\d*\.(0|([1-9]\d*))}} +# CHECK-NEXT: Target: { ObjectFormat: ELF, Arch: AArch64, Endianness: little, BitWidth: 64 } +# CHECK-NEXT: Symbols: [] +# CHECK-NEXT: ... + +# FROM-ELF: DT_NEEDED +# FROM-ELF-STRIP-NEEDED-NOT: DT_NEEDED diff --git a/llvm/tools/llvm-ifs/llvm-ifs.cpp b/llvm/tools/llvm-ifs/llvm-ifs.cpp index 2dcd0c5..ef8864e 100644 --- a/llvm/tools/llvm-ifs/llvm-ifs.cpp +++ b/llvm/tools/llvm-ifs/llvm-ifs.cpp @@ -103,6 +103,9 @@ cl::opt<bool> StripUndefined("strip-undefined", cl::desc("Strip undefined symbols from IFS output"), cl::cat(IfsCategory)); +cl::opt<bool> StripNeededLibs("strip-needed", + cl::desc("Strip needed libs from output"), + cl::cat(IfsCategory)); cl::opt<std::string> SoName("soname", @@ -417,6 +420,9 @@ int main(int argc, char *argv[]) { if (OverrideError) fatalError(std::move(OverrideError)); + if (StripNeededLibs) + Stub.NeededLibs.clear(); + if (OutputELFFilePath.getNumOccurrences() == 0 && OutputIFSFilePath.getNumOccurrences() == 0 && OutputTBDFilePath.getNumOccurrences() == 0) { |