]> git.saurik.com Git - apple/dyld.git/blobdiff - src/ImageLoaderMachOClassic.h
dyld-551.3.tar.gz
[apple/dyld.git] / src / ImageLoaderMachOClassic.h
index 55685a5995021612dda013fa829b64d8a0327f48..1f63ae09d6de8486e39b79b8730fc3d3f56b8324 100644 (file)
@@ -39,7 +39,7 @@ class ImageLoaderMachOClassic : public ImageLoaderMachO {
 public:
        static ImageLoaderMachOClassic*         instantiateMainExecutable(const macho_header* mh, uintptr_t slide, const char* path, 
                                                                                                                                        unsigned int segCount, unsigned int libCount, const LinkContext& context);
-       static ImageLoaderMachOClassic*         instantiateFromFile(const char* path, int fd, const uint8_t* fileData, 
+       static ImageLoaderMachOClassic*         instantiateFromFile(const char* path, int fd, const uint8_t* fileData, size_t lenFileData, 
                                                                                                                        uint64_t offsetInFat, uint64_t lenInFat, const struct stat& info, 
                                                                                                                        unsigned int segCount, unsigned int libCount, 
                                                                                                                        const struct linkedit_data_command* codeSigCmd, const LinkContext& context);
@@ -59,20 +59,21 @@ public:
        virtual uintptr_t                                       doBindLazySymbol(uintptr_t* lazyPointer, const LinkContext& context);
        virtual uintptr_t                                       doBindFastLazySymbol(uint32_t lazyBindingInfoOffset, const LinkContext& context, void (*lock)(), void (*unlock)());
        virtual const char*                                     findClosestSymbol(const void* addr, const void** closestAddr) const;
-       virtual void                                            initializeCoalIterator(CoalIterator&, unsigned int loadOrder);
+       virtual void                                            initializeCoalIterator(CoalIterator&, unsigned int loadOrder, unsigned);
        virtual bool                                            incrementCoalIterator(CoalIterator&);
        virtual uintptr_t                                       getAddressCoalIterator(CoalIterator&, const LinkContext& contex);
-       virtual void                                            updateUsesCoalIterator(CoalIterator&, uintptr_t newAddr, ImageLoader* target, const LinkContext& context);
+       virtual void                                            updateUsesCoalIterator(CoalIterator&, uintptr_t newAddr, ImageLoader* target, unsigned targetIndex, const LinkContext& context);
 
 protected:
        virtual void                                            doInterpose(const LinkContext& context);
+       virtual void                                            dynamicInterpose(const LinkContext& context);
        virtual void                                            setDyldInfo(const dyld_info_command*) {}
        virtual void                                            setSymbolTableInfo(const macho_nlist*, const char*, const dysymtab_command*);
        virtual bool                                            isSubframeworkOf(const LinkContext& context, const ImageLoader* image) const;
        virtual bool                                            hasSubLibrary(const LinkContext& context, const ImageLoader* child) const;
        virtual uint32_t*                                       segmentCommandOffsets() const;
-       virtual void                                            rebase(const LinkContext& context);
-       virtual const ImageLoader::Symbol*      findExportedSymbol(const char* name, const ImageLoader** foundIn) const;
+       virtual void                                            rebase(const LinkContext& context, uintptr_t slide);
+       virtual const ImageLoader::Symbol*      findShallowExportedSymbol(const char* name, const ImageLoader** foundIn) const;
        virtual bool                                            containsSymbol(const void* addr) const;
        virtual uintptr_t                                       exportedSymbolAddress(const LinkContext& context, const Symbol* symbol, const ImageLoader* requestor, bool runResolver) const;
        virtual bool                                            exportedSymbolIsWeakDefintion(const Symbol* symbol) const;
@@ -101,7 +102,7 @@ private:
        static  bool                                            symbolIsWeakReference(const struct macho_nlist* symbol); 
        static  bool                                            symbolIsWeakDefinition(const struct macho_nlist* symbol); 
        uintptr_t                                                       resolveUndefined(const LinkContext& context, const struct macho_nlist* symbol, bool twoLevel, 
-                                                                                                                       bool dontCoalesce, const ImageLoader **foundIn);
+                                                                                                                       bool dontCoalesce, bool runResolver, const ImageLoader **foundIn);
        uintptr_t                                                       getSymbolAddress(const macho_nlist*, const LinkContext& context, bool runResolver) const;
        bool                                                            isAddrInSection(uintptr_t addr, uint8_t sectionIndex);
        void                                                            doBindExternalRelocations(const LinkContext& context);