]> git.saurik.com Git - apple/ld64.git/blobdiff - src/ObjectFile.h
ld64-59.2.tar.gz
[apple/ld64.git] / src / ObjectFile.h
index 0be49104af67e3db486456fa3157e1e48123d87c..98e59f4862d569a5c7c53d752da999dd43fa41a0 100644 (file)
@@ -59,13 +59,16 @@ struct LineInfo
 class ReaderOptions
 {
 public:
-                                               ReaderOptions() : fFullyLoadArchives(false), fLoadObjcClassesInArchives(false), fFlatNamespace(false),
-                                                                                 fDebugInfoStripping(kDebugInfoFull), fTraceDylibs(false), fTraceIndirectDylibs(false), fTraceArchives(false), fTraceOutputFile(NULL) {}
+                                               ReaderOptions() : fFullyLoadArchives(false), fLoadObjcClassesInArchives(false), fFlatNamespace(false), 
+                                                                               fForFinalLinkedImage(false), fWhyLoad(false), fDebugInfoStripping(kDebugInfoFull),
+                                                                                fTraceDylibs(false), fTraceIndirectDylibs(false), fTraceArchives(false), fTraceOutputFile(NULL) {}
        enum DebugInfoStripping { kDebugInfoNone, kDebugInfoMinimal, kDebugInfoFull };
 
        bool                            fFullyLoadArchives;
        bool                            fLoadObjcClassesInArchives;
        bool                            fFlatNamespace;
+       bool                            fForFinalLinkedImage;
+       bool                            fWhyLoad;
        DebugInfoStripping      fDebugInfoStripping;
        bool                            fTraceDylibs;
        bool                            fTraceIndirectDylibs;
@@ -190,7 +193,7 @@ class Atom
 public:
        enum Scope { scopeTranslationUnit, scopeLinkageUnit, scopeGlobal };
        enum DefinitionKind { kRegularDefinition, kWeakDefinition, kTentativeDefinition, kExternalDefinition, kExternalWeakDefinition };
-       enum SymbolTableInclusion { kSymbolTableNotIn, kSymbolTableIn, kSymbolTableInAndNeverStrip };
+       enum SymbolTableInclusion { kSymbolTableNotIn, kSymbolTableIn, kSymbolTableInAndNeverStrip, kSymbolTableInAsAbsolute };
 
        virtual Reader*                                                 getFile() const = 0;
        virtual bool                                                    getTranslationUnitSource(const char** dir, const char** name) const = 0;
@@ -199,6 +202,7 @@ public:
        virtual Scope                                                   getScope() const = 0;
        virtual DefinitionKind                                  getDefinitionKind() const = 0;
        virtual SymbolTableInclusion                    getSymbolTableInclusion() const = 0;
+       virtual bool                                                    dontDeadStrip() const = 0;
        virtual bool                                                    isZeroFill() const = 0;
        virtual uint64_t                                                getSize() const = 0;
        virtual std::vector<ObjectFile::Reference*>&  getReferences() const = 0;
@@ -218,23 +222,20 @@ public:
                        uint64_t                                                getAddress() const      { return fSection->getBaseAddress() + fSectionOffset; }
                        unsigned int                                    getSortOrder() const { return fSortOrder; }
                        class Section*                                  getSection() const { return fSection; }
-                       bool                                                    dontDeadStrip() const { return fDontDeadStrip; }
 
                        void                                                    setSegmentOffset(uint64_t offset) { fSegmentOffset = offset; }
                        void                                                    setSectionOffset(uint64_t offset) { fSectionOffset = offset; }
                        void                                                    setSection(class Section* sect) { fSection = sect; }
                        unsigned int                                    setSortOrder(unsigned int order); // recursively sets follow-on atoms
-                       void                                                    setDontDeadStrip() { fDontDeadStrip = true; }
 
 protected:
-                                                                                       Atom() : fSegmentOffset(0), fSectionOffset(0), fSortOrder(0), fSection(NULL), fDontDeadStrip(false) {}
+                                                                                       Atom() : fSegmentOffset(0), fSectionOffset(0), fSortOrder(0), fSection(NULL) {}
                virtual                                                         ~Atom() {}
 
                uint64_t                                                        fSegmentOffset;
                uint64_t                                                        fSectionOffset;
                unsigned int                                            fSortOrder;
                class Section*                                          fSection;
-               bool                                                            fDontDeadStrip;
 };