]> git.saurik.com Git - apple/ld64.git/blobdiff - src/ld/OutputFile.h
ld64-264.3.101.tar.gz
[apple/ld64.git] / src / ld / OutputFile.h
index 6bb793bf951de806910865b4b783d20fad6e8283..5fd27d80592c0d72253598a2df33826e34edbb0c 100644 (file)
@@ -83,7 +83,6 @@ public:
        ld::Internal::FinalSection*     functionStartsSection;
        ld::Internal::FinalSection*     dataInCodeSection;
        ld::Internal::FinalSection*     optimizationHintsSection;
-       ld::Internal::FinalSection*     dependentDRsSection;
        ld::Internal::FinalSection*     symbolTableSection;
        ld::Internal::FinalSection*     stringPoolSection;
        ld::Internal::FinalSection*     localRelocationsSection;
@@ -132,12 +131,24 @@ public:
        };
        
        struct SplitSegInfoEntry {
-                                               SplitSegInfoEntry(uint64_t a, ld::Fixup::Kind k, uint32_t e=0) : address(a), kind(k), extra(e) {}
-               uint64_t                address;
+                                               SplitSegInfoEntry(uint64_t a, ld::Fixup::Kind k, uint32_t e=0)
+                                                       : fixupAddress(a), kind(k), extra(e) {}
+               uint64_t                fixupAddress;
                ld::Fixup::Kind kind;
         uint32_t        extra;
        };
        
+       struct SplitSegInfoV2Entry {
+                                               SplitSegInfoV2Entry(uint8_t fi, uint64_t fo, uint8_t ti, uint64_t to, uint8_t k)
+                                                       : fixupSectionOffset(fo), targetSectionOffset(to), fixupSectionIndex(fi), targetSectionIndex(ti), referenceKind(k) {}
+               uint64_t                fixupSectionOffset;
+               uint64_t                targetSectionOffset;
+               uint8_t                 fixupSectionIndex;
+               uint8_t                 targetSectionIndex;
+               uint8_t                 referenceKind;
+       };
+       static void                                     dumpAtomsBySection(ld::Internal& state, bool);
+
 private:
        void                                            writeAtoms(ld::Internal& state, uint8_t* wholeBuffer);
        void                                            computeContentUUID(ld::Internal& state, uint8_t* wholeBuffer);
@@ -192,6 +203,7 @@ private:
        void                                            makeSectionRelocations(ld::Internal& state);
        void                                            makeDyldInfo(ld::Internal& state);
        void                                            makeSplitSegInfo(ld::Internal& state);
+       void                                            makeSplitSegInfoV2(ld::Internal& state);
        void                                            writeMapFile(ld::Internal& state);
        uint64_t                                        lookBackAddend(ld::Fixup::iterator fit);
        bool                                            takesNoDiskSpace(const ld::Section* sect);
@@ -226,7 +238,6 @@ private:
                                                                                                                                                                                        
        uint64_t                                        sectionOffsetOf(const ld::Internal& state, const ld::Fixup* fixup);
        uint64_t                                        tlvTemplateOffsetOf(const ld::Internal& state, const ld::Fixup* fixup);
-       void                                            dumpAtomsBySection(ld::Internal& state, bool);
        void                                            synthesizeDebugNotes(ld::Internal& state);
        const char*                                     assureFullPath(const char* path);
        void                                            noteTextReloc(const ld::Atom* atom, const ld::Atom* target);
@@ -271,7 +282,6 @@ private:
        const bool                                                              _hasSplitSegInfo;
        const bool                                                              _hasFunctionStartsInfo;
        const bool                                                              _hasDataInCodeInfo;
-       const bool                                                              _hasDependentDRInfo;
                  bool                                                          _hasDynamicSymbolTable;
                  bool                                                          _hasLocalRelocations;
                  bool                                                          _hasExternalRelocations;
@@ -296,6 +306,7 @@ public:
        std::vector<BindingInfo>                                _lazyBindingInfo;
        std::vector<BindingInfo>                                _weakBindingInfo;
        std::vector<SplitSegInfoEntry>                  _splitSegInfos;
+       std::vector<SplitSegInfoV2Entry>                _splitSegV2Infos;
        class HeaderAndLoadCommandsAbtract*             _headersAndLoadCommandAtom;
        class RelocationsAtomAbstract*                  _sectionsRelocationsAtom;
        class RelocationsAtomAbstract*                  _localRelocsAtom;
@@ -311,7 +322,6 @@ public:
        class LinkEditAtom*                                             _splitSegInfoAtom;
        class LinkEditAtom*                                             _functionStartsAtom;
        class LinkEditAtom*                                             _dataInCodeAtom;
-       class LinkEditAtom*                                             _dependentDRInfoAtom;
        class LinkEditAtom*                                             _optimizationHintsAtom;
 };