forked from OSchip/llvm-project
Dead strip DESC bits should only be set on object files.
It only makes sense to set on N_NO_DEAD_STRIP on a relocatable object file. Otherwise the bits aren't useful for anything. Matches the ld64 behaviour. llvm-svn: 278419
This commit is contained in:
parent
da2f38e0f4
commit
ef5bea9dca
|
@ -963,7 +963,8 @@ uint16_t Util::descBits(const DefinedAtom* atom) {
|
|||
desc |= REFERENCED_DYNAMICALLY;
|
||||
if (_archHandler.isThumbFunction(*atom))
|
||||
desc |= N_ARM_THUMB_DEF;
|
||||
if (atom->deadStrip() == DefinedAtom::deadStripNever) {
|
||||
if (atom->deadStrip() == DefinedAtom::deadStripNever &&
|
||||
_ctx.outputMachOType() == llvm::MachO::MH_OBJECT) {
|
||||
if ((atom->contentType() != DefinedAtom::typeInitializerPtr)
|
||||
&& (atom->contentType() != DefinedAtom::typeTerminatorPtr))
|
||||
desc |= N_NO_DEAD_STRIP;
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
# RUN: lld -flavor darwin -arch x86_64 -export_dynamic -dead_strip %s -dylib %p/Inputs/x86_64/libSystem.yaml -o %t.dylib -print_atoms | FileCheck -check-prefix=CHECK1 %s
|
||||
# RUN: lld -flavor darwin -arch x86_64 -dead_strip %s -dylib %p/Inputs/x86_64/libSystem.yaml -o %t2.dylib -print_atoms | FileCheck -check-prefix=CHECK2 %s
|
||||
|
||||
# RUN: lld -flavor darwin -arch x86_64 -r %s -dylib %p/Inputs/x86_64/libSystem.yaml -o %t3.o
|
||||
# RUN: llvm-nm -m %t3.o | FileCheck -check-prefix=RELOCATABLE_SYMBOLS %s
|
||||
|
||||
#
|
||||
# Test that -export_dynamic -dead-strip from removing globals.
|
||||
#
|
||||
|
@ -25,3 +28,4 @@ shared-library-atoms:
|
|||
# CHECK2: name: def
|
||||
# CHECK2-NOT: name: dead
|
||||
|
||||
# RELOCATABLE_SYMBOLS: external def
|
||||
|
|
Loading…
Reference in New Issue