forked from OSchip/llvm-project
[llvm-objcopy] Make llvm-strip --only-keep-debug suppress default --strip-all
Fixes #54417 Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D123798
This commit is contained in:
parent
15650b320b
commit
3787de40de
|
@ -3,9 +3,9 @@ RUN: yaml2obj %p/Inputs/only-keep-sections.yaml -o %t.in.exe
|
|||
RUN: llvm-objcopy --only-keep-debug %t.in.exe %t.out.exe
|
||||
RUN: llvm-readobj --sections %t.out.exe | FileCheck %s --check-prefix=SECTIONS
|
||||
RUN: llvm-objdump -t %t.out.exe | FileCheck %s --check-prefix=SYMBOLS
|
||||
# Run llvm-strip with --strip-symbol on a non-existent symbol to prevent
|
||||
# defaulting to --strip-all.
|
||||
RUN: llvm-strip --only-keep-debug --strip-symbol foo %t.in.exe -o %t-strip.out.exe
|
||||
|
||||
## --only-keep-debug suppresses the default --strip-all.
|
||||
RUN: llvm-strip --only-keep-debug %t.in.exe -o %t-strip.out.exe
|
||||
RUN: cmp %t.out.exe %t-strip.out.exe
|
||||
|
||||
Check that all non-debug/buildid sections with IMAGE_SCN_CNT_CODE
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
# RUN: yaml2obj --docnum=1 %s -o %t1
|
||||
# RUN: llvm-objcopy --only-keep-debug %t1 %t1.dbg
|
||||
# RUN: llvm-readelf -S -l -x .note1 -x .note2 -x .debug_abbrev -x .debug_frame -x .debug_info %t1.dbg | FileCheck %s
|
||||
## --only-keep-debug suppresses the default --strip-all.
|
||||
# RUN: llvm-strip --only-keep-debug %t1
|
||||
# RUN: llvm-readelf -S -l -x .note1 -x .note2 -x .debug_abbrev -x .debug_frame -x .debug_info %t1 | FileCheck %s
|
||||
|
||||
## Check that SHT_NOTE and .debug* are kept, but others are changed to SHT_NOBITS.
|
||||
## SHT_NOBITS sections do not occupy space in the output.
|
||||
|
|
|
@ -1313,8 +1313,9 @@ objcopy::parseStripOptions(ArrayRef<const char *> RawArgsArr,
|
|||
return std::move(E);
|
||||
|
||||
if (!InputArgs.hasArg(STRIP_no_strip_all) && !Config.StripDebug &&
|
||||
!Config.StripUnneeded && Config.DiscardMode == DiscardType::None &&
|
||||
!Config.StripAllGNU && Config.SymbolsToRemove.empty())
|
||||
!Config.OnlyKeepDebug && !Config.StripUnneeded &&
|
||||
Config.DiscardMode == DiscardType::None && !Config.StripAllGNU &&
|
||||
Config.SymbolsToRemove.empty())
|
||||
Config.StripAll = true;
|
||||
|
||||
if (Config.DiscardMode == DiscardType::All) {
|
||||
|
|
Loading…
Reference in New Issue