[LLVMdev] lld deadstrip atoms

Shankar Easwaran
Fri, 09 Nov 2012 15:31:16 -0000

Hi Nick,

Dead stripping optimization needs a way to setup the roots which are
live. The current code in Resolver does it by

1) setting all the global defined atoms to be the live set when building
shared libraries (_options.allGlobalsAreDeadStripRoots)
2)  Or, uses a list of names that are dead strip roots (other types)

Question:-
***********
How are the dead strip root names supposed to be set ? Does each Reader
need to set specific information on what are the dead strip roots ?

There is a flag in the DefinedAtom to determine whether to deadstrip an
atom,

deadStripNormal, deadStripAlways, deadStripNever

Question :-
************
a) What is the difference between deadStripNormal/deadStripAlways ?

b) Further looking, there is a compiler attribute __attribute(used)__
which could be set for each symbol, but this is only a compiler hint.
The information is not passed
in the symbol table. If this is not passed in the symbol table to the
linker, why is it in the DefinedAtom ?

Thanks

Shankar Easwaran

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the
Linux Foundation