_symbolTable(opts, state.indirectBindingTable),
_haveLLVMObjs(false),
_completedInitialObjectFiles(false),
- _ltoCodeGenFinished(false) {}
+ _ltoCodeGenFinished(false),
+ _haveAliases(false) {}
virtual void doAtom(const ld::Atom&);
void resolve();
-
+
private:
struct WhyLiveBackChain
{
void fillInInternalState();
void fillInHelpersInInternalState();
void removeCoalescedAwayAtoms();
+ void syncAliases();
void fillInEntryPoint();
void linkTimeOptimize();
void convertReferencesToIndirect(const ld::Atom& atom);
void remainingUndefines(std::vector<const char*>&);
bool printReferencedBy(const char* name, SymbolTable::IndirectBindingSlot slot);
void tweakWeakness();
+ void buildArchivesList();
void doLinkerOption(const std::vector<const char*>& linkerOption, const char* fileName);
void dumpAtoms();
ld::Internal& _internal;
std::vector<const ld::Atom*> _atoms;
std::set<const ld::Atom*> _deadStripRoots;
+ std::vector<const ld::Atom*> _dontDeadStripIfReferencesLive;
std::vector<const ld::Atom*> _atomsWithUnresolvedReferences;
std::vector<const class AliasAtom*> _aliasesFromCmdLine;
SymbolTable _symbolTable;
bool _haveLLVMObjs;
bool _completedInitialObjectFiles;
bool _ltoCodeGenFinished;
+ bool _haveAliases;
};