+ bool errorOnOtherArchFiles() const { return fErrorOnOtherArchFiles; }
+ bool markAutoDeadStripDylib() const { return fMarkDeadStrippableDylib; }
+ bool removeEHLabels() const { return fNoEHLabels; }
+ bool useSimplifiedDylibReExports() const { return fUseSimplifiedDylibReExports; }
+ bool objCABIVersion2POverride() const { return fObjCABIVersion2Override; }
+ bool useUpwardDylibs() const { return fCanUseUpwardDylib; }
+ bool fullyLoadArchives() const { return fFullyLoadArchives; }
+ bool loadAllObjcObjectsFromArchives() const { return fLoadAllObjcObjectsFromArchives; }
+ bool autoOrderInitializers() const { return fAutoOrderInitializers; }
+ bool optimizeZeroFill() const { return fOptimizeZeroFill; }
+ bool mergeZeroFill() const { return fMergeZeroFill; }
+ bool logAllFiles() const { return fLogAllFiles; }
+ DebugInfoStripping debugInfoStripping() const { return fDebugInfoStripping; }
+ bool flatNamespace() const { return fFlatNamespace; }
+ bool linkingMainExecutable() const { return fLinkingMainExecutable; }
+ bool implicitlyLinkIndirectPublicDylibs() const { return fImplicitlyLinkPublicDylibs; }
+ bool whyLoad() const { return fWhyLoad; }
+ const char* traceOutputFile() const { return fTraceOutputFile; }
+ bool outputSlidable() const { return fOutputSlidable; }
+ bool haveCmdLineAliases() const { return (fAliases.size() != 0); }
+ const std::vector<AliasPair>& cmdLineAliases() const { return fAliases; }
+ bool makeTentativeDefinitionsReal() const { return fMakeTentativeDefinitionsReal; }
+ const char* dyldInstallPath() const { return fDyldInstallPath; }
+ bool warnWeakExports() const { return fWarnWeakExports; }
+ bool noWeakExports() const { return fNoWeakExports; }
+ bool objcGcCompaction() const { return fObjcGcCompaction; }
+ bool objcGc() const { return fObjCGc; }
+ bool objcGcOnly() const { return fObjCGcOnly; }
+ bool canUseThreadLocalVariables() const { return fTLVSupport; }
+ bool addVersionLoadCommand() const { return fVersionLoadCommand && (platforms().count() != 0); }
+ bool addFunctionStarts() const { return fFunctionStartsLoadCommand; }
+ bool addDataInCodeInfo() const { return fDataInCodeInfoLoadCommand; }
+ bool canReExportSymbols() const { return fCanReExportSymbols; }
+ const char* ltoCachePath() const { return fLtoCachePath; }
+ bool ltoPruneIntervalOverwrite() const { return fLtoPruneIntervalOverwrite; }
+ int ltoPruneInterval() const { return fLtoPruneInterval; }
+ int ltoPruneAfter() const { return fLtoPruneAfter; }
+ unsigned ltoMaxCacheSize() const { return fLtoMaxCacheSize; }
+ const char* tempLtoObjectPath() const { return fTempLtoObjectPath; }
+ const char* overridePathlibLTO() const { return fOverridePathlibLTO; }
+ const char* mcpuLTO() const { return fLtoCpu; }
+ const char* kextObjectsPath() const { return fKextObjectsDirPath; }
+ int kextObjectsEnable() const { return fKextObjectsEnable; }
+ const char* toolchainPath() const { return fToolchainPath; }
+ bool objcCategoryMerging() const { return fObjcCategoryMerging; }
+ bool pageAlignDataAtoms() const { return fPageAlignDataAtoms; }
+ bool keepDwarfUnwind() const { return fKeepDwarfUnwind; }
+ bool verboseOptimizationHints() const { return fVerboseOptimizationHints; }
+ bool ignoreOptimizationHints() const { return fIgnoreOptimizationHints; }
+ bool generateDtraceDOF() const { return fGenerateDtraceDOF; }
+ bool allowBranchIslands() const { return fAllowBranchIslands; }
+ bool traceSymbolLayout() const { return fTraceSymbolLayout; }
+ bool markAppExtensionSafe() const { return fMarkAppExtensionSafe; }
+ bool checkDylibsAreAppExtensionSafe() const { return fCheckAppExtensionSafe; }
+ bool forceLoadSwiftLibs() const { return fForceLoadSwiftLibs; }
+ bool bundleBitcode() const { return fBundleBitcode; }
+ bool hideSymbols() const { return fHideSymbols; }
+ bool verifyBitcode() const { return fVerifyBitcode; }
+ bool renameReverseSymbolMap() const { return fReverseMapUUIDRename; }
+ bool deduplicateFunctions() const { return fDeDupe; }
+ bool verboseDeduplicate() const { return fVerboseDeDupe; }
+ bool useLinkedListBinding() const { return fUseLinkedListBinding; }
+#if SUPPORT_ARCH_arm64e
+ bool useAuthenticatedStubs() const { return fUseAuthenticatedStubs; }
+ bool supportsAuthenticatedPointers() const { return fSupportsAuthenticatedPointers; }
+#endif
+ bool noLazyBinding() const { return fNoLazyBinding; }
+ bool debugVariant() const { return fDebugVariant; }
+ const char* reverseSymbolMapPath() const { return fReverseMapPath; }
+ std::string reverseMapTempPath() const { return fReverseMapTempPath; }
+ bool ltoCodegenOnly() const { return fLTOCodegenOnly; }
+ bool ignoreAutoLink() const { return fIgnoreAutoLink; }
+ bool allowDeadDuplicates() const { return fAllowDeadDups; }
+ bool allowWeakImports() const { return fAllowWeakImports; }
+ Treatment initializersTreatment() const { return fInitializersTreatment; }
+ BitcodeMode bitcodeKind() const { return fBitcodeKind; }
+ bool sharedRegionEncodingV2() const { return fSharedRegionEncodingV2; }
+ bool useDataConstSegment() const { return fUseDataConstSegment; }
+ bool useTextExecSegment() const { return fUseTextExecSegment; }
+ bool hasWeakBitTweaks() const;
+ bool forceWeak(const char* symbolName) const;
+ bool forceNotWeak(const char* symbolName) const;
+ bool forceWeakNonWildCard(const char* symbolName) const;
+ bool forceNotWeakNonWildcard(const char* symbolName) const;
+ bool forceCoalesce(const char* symbolName) const;
+ Snapshot& snapshot() const { return fLinkSnapshot; }
+ bool errorBecauseOfWarnings() const;
+ bool needsThreadLoadCommand() const { return fNeedsThreadLoadCommand; }
+ bool needsEntryPointLoadCommand() const { return fEntryPointLoadCommand; }
+ bool needsSourceVersionLoadCommand() const { return fSourceVersionLoadCommand; }
+ bool canUseAbsoluteSymbols() const { return fAbsoluteSymbols; }
+ bool allowSimulatorToLinkWithMacOSX() const { return fAllowSimulatorToLinkWithMacOSX; }
+ uint64_t sourceVersion() const { return fSourceVersion; }
+ uint32_t sdkVersion() const { return fSDKVersion; }
+ const char* demangleSymbol(const char* sym) const;
+ bool pipelineEnabled() const { return fPipelineFifo != NULL; }
+ const char* pipelineFifo() const { return fPipelineFifo; }
+ bool dumpDependencyInfo() const { return (fDependencyInfoPath != NULL); }
+ const char* dependencyInfoPath() const { return fDependencyInfoPath; }
+ bool targetIOSSimulator() const { return platforms().contains(ld::simulatorPlatforms); }
+ ld::relocatable::File::LinkerOptionsList&
+ linkerOptions() const { return fLinkerOptions; }
+ FileInfo findFramework(const char* frameworkName) const;
+ FileInfo findLibrary(const char* rootName, bool dylibsOnly=false) const;
+ bool armUsesZeroCostExceptions() const;
+ const std::vector<SectionRename>& sectionRenames() const { return fSectionRenames; }
+ const std::vector<SegmentRename>& segmentRenames() const { return fSegmentRenames; }
+ bool moveRoSymbol(const char* symName, const char* filePath, const char*& seg, bool& wildCardMatch) const;
+ bool moveRwSymbol(const char* symName, const char* filePath, const char*& seg, bool& wildCardMatch) const;
+ bool moveAXMethodList(const char* className) const;
+ const ld::VersionSet& platforms() const { return fPlatforms; }
+ const std::vector<const char*>& sdkPaths() const { return fSDKPaths; }
+ std::vector<std::string> writeBitcodeLinkOptions() const;
+ std::string getSDKVersionStr() const;
+ uint8_t maxDefaultCommonAlign() const { return fMaxDefaultCommonAlign; }
+ bool hasDataSymbolMoves() const { return !fSymbolsMovesData.empty(); }
+ bool hasCodeSymbolMoves() const { return !fSymbolsMovesCode.empty(); }
+ void writeToTraceFile(const char* buffer, size_t len) const;
+ UnalignedPointerTreatment unalignedPointerTreatment() const { return fUnalignedPointerTreatment; }
+ bool zeroModTimeInDebugMap() const { return fZeroModTimeInDebugMap; }
+ void writeDependencyInfo() const;
+ std::vector<TAPIInterface> &TAPIFiles() { return fTAPIFiles; }
+ void addTAPIInterface(tapi::LinkerInterfaceFile* interface, const char *path) const;
+ const char* buildContextName() const { return fBuildContextName; }
+
+ static uint32_t parseVersionNumber32(const char*);