]> git.saurik.com Git - apple/ld64.git/blobdiff - src/ld/Resolver.h
ld64-134.9.tar.gz
[apple/ld64.git] / src / ld / Resolver.h
index 65e20065740032287ba2f7b15cc3cae317f6ba9d..a26748987934fe55aefde526126ea2c66cef7c27 100644 (file)
@@ -57,10 +57,10 @@ namespace tool {
 class Resolver : public ld::File::AtomHandler
 {
 public:
-                                                       Resolver(const Options& opts, const InputFiles& inputs, ld::Internal& state) 
+                                                       Resolver(const Options& opts, InputFiles& inputs, ld::Internal& state) 
                                                                : _options(opts), _inputFiles(inputs), _internal(state), 
                                                                  _symbolTable(opts, state.indirectBindingTable),
-                                                                 _haveLLVMObjs(false), _addToFinalSection(false),
+                                                                 _haveLLVMObjs(false),
                                                                  _completedInitialObjectFiles(false) {}
                                                                
 
@@ -80,7 +80,7 @@ private:
        void                                    initializeState();
        void                                    buildAtomList();
        void                                    addInitialUndefines();
-       void                                    deadStripOptimize();
+       void                                    deadStripOptimize(bool force=false);
        void                                    resolveUndefines();
        void                                    checkUndefines(bool force=false);
        void                                    checkDylibSymbolCollisions();
@@ -88,14 +88,16 @@ private:
        void                                    fillInInternalState();
        void                                    fillInHelpersInInternalState();
        void                                    removeCoalescedAwayAtoms();
+  void                                 fillInEntryPoint();
        void                                    linkTimeOptimize();
        void                                    convertReferencesToIndirect(const ld::Atom& atom);
        const ld::Atom*                 entryPoint(bool searchArchives);
        void                                    markLive(const ld::Atom& atom, WhyLiveBackChain* previous);
        bool                                    isDtraceProbe(ld::Fixup::Kind kind);
        void                                    liveUndefines(std::vector<const char*>&);
+       void                                    remainingUndefines(std::vector<const char*>&);
        bool                                    printReferencedBy(const char* name, SymbolTable::IndirectBindingSlot slot);
-                       
+       void                                    tweakWeakness();
 
        class CStringEquals {
        public:
@@ -118,14 +120,13 @@ private:
        };
 
        const Options&                                  _options;
-       const InputFiles&                               _inputFiles;
+       InputFiles&                                             _inputFiles;
        ld::Internal&                                   _internal;
        std::vector<const ld::Atom*>    _atoms;
        std::set<const ld::Atom*>               _deadStripRoots;
        std::vector<const ld::Atom*>    _atomsWithUnresolvedReferences;
        SymbolTable                                             _symbolTable;
        bool                                                    _haveLLVMObjs;
-       bool                                                    _addToFinalSection;
        bool                                                    _completedInitialObjectFiles;
 };