X-Git-Url: https://git.saurik.com/apple/dyld.git/blobdiff_plain/2028a9150e06923c02d26423650de665cf4470dc..17a1d27dac9f840f614dcca486e07a34f9380394:/src/dyld.h diff --git a/src/dyld.h b/src/dyld.h index 5ae4796..d8bca0d 100644 --- a/src/dyld.h +++ b/src/dyld.h @@ -1,6 +1,6 @@ /* -*- mode: C++; c-basic-offset: 4; tab-width: 4 -*- * - * Copyright (c) 2004-2006 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2009 Apple Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * @@ -23,6 +23,8 @@ */ #include +#include +#include #include "ImageLoader.h" #include "mach-o/dyld_priv.h" @@ -38,13 +40,14 @@ namespace dyld { struct LoadContext { bool useSearchPaths; + bool useFallbackPaths; bool useLdLibraryPath; bool implicitRPath; bool matchByInstallName; bool dontLoad; bool mustBeBundle; bool mustBeDylib; - bool findDLL; + bool canBePIE; const char* origin; // path for expanding @loader_path const ImageLoader::RPathChain* rpath; // paths for expanding @rpath }; @@ -52,58 +55,88 @@ namespace dyld { typedef void (*ImageCallback)(const struct mach_header* mh, intptr_t slide); - typedef void (*BundleNotificationCallBack)(const char* imageName, ImageLoader* image); - typedef ImageLoader* (*BundleLocatorCallBack)(const char* symbolName); typedef void (*UndefinedHandler)(const char* symbolName); typedef const char* (*ImageLocator)(const char* dllName); extern ImageLoader::LinkContext gLinkContext; + extern struct dyld_all_image_infos* gProcessInfo; extern bool gLogAPIs; - extern bool gSharedCacheNotFound; - extern bool gSharedCacheNeedsUpdating; - extern bool gSharedCacheDontNotify; +#if SUPPORT_ACCELERATE_TABLES + extern bool gLogAppAPIs; +#endif +#if DYLD_SHARED_CACHE_SUPPORT + extern bool gSharedCacheOverridden; +#endif extern const struct LibSystemHelpers* gLibSystemHelpers; #if SUPPORT_OLD_CRT_INITIALIZATION extern bool gRunInitializersOldWay; #endif extern void registerAddCallback(ImageCallback func); extern void registerRemoveCallback(ImageCallback func); - extern void registerZeroLinkHandlers(BundleNotificationCallBack, BundleLocatorCallBack); extern void registerUndefinedHandler(UndefinedHandler); extern void initializeMainExecutable(); - extern void preflight(ImageLoader* image, const ImageLoader::RPathChain& loaderRPaths); - extern void link(ImageLoader* image, bool forceLazysBound, const ImageLoader::RPathChain& loaderRPaths); + extern void preflight(ImageLoader* image, const ImageLoader::RPathChain& loaderRPaths, unsigned cacheIndex); + extern void link(ImageLoader* image, bool forceLazysBound, bool neverUnload, const ImageLoader::RPathChain& loaderRPaths, unsigned cacheIndex); extern void runInitializers(ImageLoader* image); - extern void runTerminators(void*); + extern void runImageStaticTerminators(ImageLoader* image); extern const char* getExecutablePath(); extern bool validImage(const ImageLoader*); extern ImageLoader* getIndexedImage(uint32_t index); extern uint32_t getImageCount(); extern ImageLoader* findImageByMachHeader(const struct mach_header* target); extern ImageLoader* findImageContainingAddress(const void* addr); + extern ImageLoader* findImageContainingSymbol(const void* symbol); extern ImageLoader* findImageByName(const char* path); extern ImageLoader* findLoadedImageByInstallPath(const char* path); extern bool flatFindExportedSymbol(const char* name, const ImageLoader::Symbol** sym, const ImageLoader** image); extern bool flatFindExportedSymbolWithHint(const char* name, const char* librarySubstring, const ImageLoader::Symbol** sym, const ImageLoader** image); - extern ImageLoader* load(const char* path, const LoadContext& context); + extern ImageLoader* load(const char* path, const LoadContext& context, unsigned& cacheIndex); extern ImageLoader* loadFromMemory(const uint8_t* mem, uint64_t len, const char* moduleName); extern void removeImage(ImageLoader* image); extern ImageLoader* cloneImage(ImageLoader* image); extern void forEachImageDo( void (*)(ImageLoader*, void*), void*); - extern uintptr_t _main(const struct mach_header* mainExecutableMH, uintptr_t mainExecutableSlide, int argc, const char* argv[], const char* envp[], const char* apple[]); + extern uintptr_t _main(const macho_header* mainExecutableMH, uintptr_t mainExecutableSlide, int argc, const char* argv[], const char* envp[], + const char* apple[], uintptr_t* startGlue) __attribute__((noinline)); //