X-Git-Url: https://git.saurik.com/apple/ld64.git/blobdiff_plain/fb9a160cc46cd88a41dda5ab61012c5572e56f33..ec29ba20dfd4abc0cb74366b39dda06af136e073:/src/ld/ld.hpp diff --git a/src/ld/ld.hpp b/src/ld/ld.hpp index e297036..89c091b 100644 --- a/src/ld/ld.hpp +++ b/src/ld/ld.hpp @@ -246,12 +246,13 @@ namespace dylib { }; File(const char* pth, time_t modTime, Ordinal ord) - : ld::File(pth, modTime, ord, Dylib), _dylibInstallPath(NULL), + : ld::File(pth, modTime, ord, Dylib), _dylibInstallPath(NULL), _frameworkName(NULL), _dylibTimeStamp(0), _dylibCurrentVersion(0), _dylibCompatibilityVersion(0), _explicitlyLinked(false), _implicitlyLinked(false), _lazyLoadedDylib(false), _forcedWeakLinked(false), _reExported(false), _upward(false), _dead(false) { } const char* installPath() const { return _dylibInstallPath; } + const char* frameworkName() const { return _frameworkName; } uint32_t timestamp() const { return _dylibTimeStamp; } uint32_t currentVersion() const { return _dylibCurrentVersion; } uint32_t compatibilityVersion() const{ return _dylibCompatibilityVersion; } @@ -285,13 +286,9 @@ namespace dylib { virtual bool installPathVersionSpecific() const { return false; } virtual bool appExtensionSafe() const = 0; - protected: - struct ReExportChain { ReExportChain* prev; const File* file; }; - virtual std::pair hasWeakDefinitionImpl(const char* name) const = 0; - virtual bool containsOrReExports(const char* name, bool& weakDef, bool& tlv, uint64_t& defAddress) const = 0; - virtual void assertNoReExportCycles(ReExportChain*) const = 0; - + public: const char* _dylibInstallPath; + const char* _frameworkName; uint32_t _dylibTimeStamp; uint32_t _dylibCurrentVersion; uint32_t _dylibCompatibilityVersion; @@ -446,7 +443,7 @@ struct Fixup // data-in-code markers kindDataInCodeStartData, kindDataInCodeStartJT8, kindDataInCodeStartJT16, kindDataInCodeStartJT32, kindDataInCodeStartJTA32, kindDataInCodeEnd, - // linker optimzation hints + // linker optimization hints kindLinkerOptimizationHint, // pointer store combinations kindStoreTargetAddressLittleEndian32, // kindSetTargetAddress + kindStoreLittleEndian32 @@ -895,8 +892,11 @@ public: AtomToSection atomToSection; CStringSet linkerOptionLibraries; CStringSet linkerOptionFrameworks; + CStringSet linkerOptionLibrariesProcessed; + CStringSet linkerOptionFrameworksProcessed; std::vector indirectBindingTable; std::vector filesWithBitcode; + std::unordered_set allUndefProxies; const ld::dylib::File* bundleLoader; const Atom* entryPoint; const Atom* classicBindingHelper;