X-Git-Url: https://git.saurik.com/apple/ld64.git/blobdiff_plain/f80fe69f3f29962e8aa43a99f8ed9201548f3d78..bee7e226299dacc6d80d9cf6f1585c3d5d0645e0:/src/ld/Resolver.h?ds=sidebyside diff --git a/src/ld/Resolver.h b/src/ld/Resolver.h index bdb4e3e..06b7a8b 100644 --- a/src/ld/Resolver.h +++ b/src/ld/Resolver.h @@ -62,7 +62,9 @@ public: : _options(opts), _inputFiles(inputs), _internal(state), _symbolTable(opts, state.indirectBindingTable), _haveLLVMObjs(false), - _completedInitialObjectFiles(false) {} + _completedInitialObjectFiles(false), + _ltoCodeGenFinished(false), + _haveAliases(false) {} virtual void doAtom(const ld::Atom&); @@ -70,7 +72,7 @@ public: void resolve(); - + private: struct WhyLiveBackChain { @@ -89,6 +91,7 @@ private: void fillInInternalState(); void fillInHelpersInInternalState(); void removeCoalescedAwayAtoms(); + void syncAliases(); void fillInEntryPoint(); void linkTimeOptimize(); void convertReferencesToIndirect(const ld::Atom& atom); @@ -99,7 +102,9 @@ private: void remainingUndefines(std::vector&); bool printReferencedBy(const char* name, SymbolTable::IndirectBindingSlot slot); void tweakWeakness(); + void buildArchivesList(); void doLinkerOption(const std::vector& linkerOption, const char* fileName); + void dumpAtoms(); typedef std::unordered_set StringSet; @@ -122,11 +127,14 @@ private: ld::Internal& _internal; std::vector _atoms; std::set _deadStripRoots; + std::vector _dontDeadStripIfReferencesLive; std::vector _atomsWithUnresolvedReferences; std::vector _aliasesFromCmdLine; SymbolTable _symbolTable; bool _haveLLVMObjs; bool _completedInitialObjectFiles; + bool _ltoCodeGenFinished; + bool _haveAliases; };