Lines Matching refs:config

153   assert(ctx.config.machine != IMAGE_FILE_MACHINE_UNKNOWN);  in mangle()
154 if (ctx.config.machine == I386) in mangle()
160 return getMachineArchType(ctx.config.machine); in getArch()
218 if (ctx.config.mingw) { in addBuffer()
354 (!ctx.config.mingw && sym.contains('@')); in isDecorated()
380 if (ctx.config.machine == I386 && ctx.config.mingw) { in parseDirectives()
387 ctx.config.exports.push_back(exp); in parseDirectives()
418 ctx.config.entry = addUndefined(mangle(arg->getValue())); in parseDirectives()
427 ctx.config.manifestDependencies.insert(arg->getValue()); in parseDirectives()
433 ctx.config.noDefaultLibs.insert(findLib(arg->getValue()).lower()); in parseDirectives()
436 ctx.config.writeCheckSum = true; in parseDirectives()
442 parseNumbers(arg->getValue(), &ctx.config.stackReserve, in parseDirectives()
443 &ctx.config.stackCommit); in parseDirectives()
447 parseSubsystem(arg->getValue(), &ctx.config.subsystem, in parseDirectives()
448 &ctx.config.majorSubsystemVersion, in parseDirectives()
449 &ctx.config.minorSubsystemVersion, &gotVersion); in parseDirectives()
451 ctx.config.majorOSVersion = ctx.config.majorSubsystemVersion; in parseDirectives()
452 ctx.config.minorOSVersion = ctx.config.minorSubsystemVersion; in parseDirectives()
475 if (ctx.config.vfs) in findFile()
476 if (auto statOrErr = ctx.config.vfs->status(filename)) in findFile()
544 if (ctx.config.mingw && ret == filename) in findLib()
553 if (ctx.config.noDefaultLibAll) in findLibIfNew()
559 if (ctx.config.noDefaultLibs.count(path.lower())) in findLibIfNew()
703 ctx.config.gcroot.push_back(b); in addUndefined()
732 assert(ctx.config.subsystem != IMAGE_SUBSYSTEM_UNKNOWN && in findDefaultEntry()
735 if (ctx.config.mingw) in findDefaultEntry()
736 return mangle(ctx.config.subsystem == IMAGE_SUBSYSTEM_WINDOWS_GUI in findDefaultEntry()
740 if (ctx.config.subsystem == IMAGE_SUBSYSTEM_WINDOWS_GUI) { in findDefaultEntry()
757 if (ctx.config.dll) in inferSubsystem()
759 if (ctx.config.mingw) in inferSubsystem()
782 if (ctx.config.is64()) in getDefaultImageBase()
783 return ctx.config.dll ? 0x180000000 : 0x140000000; in getDefaultImageBase()
784 return ctx.config.dll ? 0x10000000 : 0x400000; in getDefaultImageBase()
895 StringRef outFile = ctx.config.outputFile; in getMapFile()
900 if (!ctx.config.implib.empty()) in getImplibPath()
901 return std::string(ctx.config.implib); in getImplibPath()
902 SmallString<128> out = StringRef(ctx.config.outputFile); in getImplibPath()
917 if (ctx.config.importName.empty()) { in getImportName()
918 out.assign(sys::path::filename(ctx.config.outputFile)); in getImportName()
922 out.assign(ctx.config.importName); in getImportName()
925 (ctx.config.dll || asLib) ? ".dll" : ".exe"); in getImportName()
934 for (Export &e1 : ctx.config.exports) { in createImportLibrary()
952 if (!ctx.config.incremental) { in createImportLibrary()
953 checkError(writeImportLibrary(libName, path, exports, ctx.config.machine, in createImportLibrary()
954 ctx.config.mingw)); in createImportLibrary()
963 checkError(writeImportLibrary(libName, path, exports, ctx.config.machine, in createImportLibrary()
964 ctx.config.mingw)); in createImportLibrary()
975 ctx.config.machine, ctx.config.mingw)) { in createImportLibrary()
998 mb->getMemBufferRef(), ctx.config.machine, ctx.config.mingw)); in parseModuleDefs()
1003 if (ctx.config.outputFile.empty()) in parseModuleDefs()
1004 ctx.config.outputFile = std::string(saver().save(m.OutputFile)); in parseModuleDefs()
1005 ctx.config.importName = std::string(saver().save(m.ImportName)); in parseModuleDefs()
1007 ctx.config.imageBase = m.ImageBase; in parseModuleDefs()
1009 ctx.config.stackReserve = m.StackReserve; in parseModuleDefs()
1011 ctx.config.stackCommit = m.StackCommit; in parseModuleDefs()
1013 ctx.config.heapReserve = m.HeapReserve; in parseModuleDefs()
1015 ctx.config.heapCommit = m.HeapCommit; in parseModuleDefs()
1017 ctx.config.majorImageVersion = m.MajorImageVersion; in parseModuleDefs()
1019 ctx.config.minorImageVersion = m.MinorImageVersion; in parseModuleDefs()
1021 ctx.config.majorOSVersion = m.MajorOSVersion; in parseModuleDefs()
1023 ctx.config.minorOSVersion = m.MinorOSVersion; in parseModuleDefs()
1047 ctx.config.exports.push_back(e2); in parseModuleDefs()
1099 if (ctx.config.machine == I386 && !isDecorated(s)) in parseOrderFile()
1103 if (ctx.config.warnMissingOrderSymbol) in parseOrderFile()
1106 ctx.config.order[s] = INT_MIN + ctx.config.order.size(); in parseOrderFile()
1130 if (ctx.config.warnMissingOrderSymbol) in parseCallGraphFile()
1152 ctx.config.callGraphProfile[{from, to}] += count; in parseCallGraphFile()
1182 ctx.config.callGraphProfile[{from, to}] += count; in readCallGraphsFromObjectFiles()
1199 for (Export &r : ctx.config.exports) in findKeepUniqueSections()
1240 sys::path::filename(ctx.config.pdbPath, sys::path::Style::windows); in parsePDBAltPath()
1242 sys::path::extension(ctx.config.outputFile, sys::path::Style::windows); in parsePDBAltPath()
1253 while (cursor < ctx.config.pdbAltPath.size()) { in parsePDBAltPath()
1255 if ((firstMark = ctx.config.pdbAltPath.find('%', cursor)) == in parsePDBAltPath()
1257 (secondMark = ctx.config.pdbAltPath.find('%', firstMark + 1)) == in parsePDBAltPath()
1260 buf.append(ctx.config.pdbAltPath.substr(cursor)); in parsePDBAltPath()
1266 buf.append(ctx.config.pdbAltPath.substr(cursor, firstMark - cursor)); in parsePDBAltPath()
1268 ctx.config.pdbAltPath.substr(firstMark, secondMark - firstMark + 1); in parsePDBAltPath()
1282 ctx.config.pdbAltPath = buf; in parsePDBAltPath()
1297 if (!ctx.config.mingw && in convertResources()
1328 if (!ctx.config.dll) in maybeExportMinGWSymbols()
1331 if (!ctx.config.exports.empty()) in maybeExportMinGWSymbols()
1357 ctx.config.gcroot.push_back(def); in maybeExportMinGWSymbols()
1367 ctx.config.exports.push_back(e); in maybeExportMinGWSymbols()
1420 Configuration *config = &ctx.config; in linkerMain() local
1444 config->timeTraceEnabled = args.hasArg(OPT_time_trace_eq); in linkerMain()
1445 config->timeTraceGranularity = in linkerMain()
1448 if (config->timeTraceEnabled) in linkerMain()
1449 timeTraceProfilerInitialize(config->timeTraceGranularity, argsArr[0]); in linkerMain()
1458 config->mllvmOpts.emplace_back(arg->getValue()); in linkerMain()
1475 config->vfs = getVFS(args); in linkerMain()
1492 config->thinLTOJobs = v.str(); in linkerMain()
1496 config->showTiming = true; in linkerMain()
1498 config->showSummary = args.hasArg(OPT_summary); in linkerMain()
1499 config->printSearchPaths = args.hasArg(OPT_print_search_paths); in linkerMain()
1511 config->mingw = args.hasArg(OPT_lldmingw); in linkerMain()
1512 if (config->mingw) in linkerMain()
1534 config->noEntry = true; in linkerMain()
1545 if (!config->mingw) { in linkerMain()
1568 config->warnMissingOrderSymbol = false; in linkerMain()
1570 config->warnDebugInfoUnusable = false; in linkerMain()
1572 config->warnLocallyDefinedImported = false; in linkerMain()
1574 config->warnLongSectionNames = false; in linkerMain()
1581 config->outputFile = arg->getValue(); in linkerMain()
1585 config->verbose = true; in linkerMain()
1586 errorHandler().verbose = config->verbose; in linkerMain()
1590 config->forceUnresolved = true; in linkerMain()
1594 config->forceMultiple = true; in linkerMain()
1598 config->forceMultipleRes = true; in linkerMain()
1602 if (config->mingw) in linkerMain()
1603 config->warnLongSectionNames = false; in linkerMain()
1623 config->debug = false; in linkerMain()
1624 config->incremental = false; in linkerMain()
1625 config->includeDwarfChunks = false; in linkerMain()
1626 config->debugGHashes = false; in linkerMain()
1627 config->writeSymtab = false; in linkerMain()
1631 config->debug = true; in linkerMain()
1632 config->incremental = true; in linkerMain()
1633 config->includeDwarfChunks = true; in linkerMain()
1635 config->debugGHashes = true; in linkerMain()
1639 config->debug = true; in linkerMain()
1640 config->incremental = true; in linkerMain()
1641 config->includeDwarfChunks = true; in linkerMain()
1642 config->writeSymtab = true; in linkerMain()
1643 config->warnLongSectionNames = false; in linkerMain()
1646 config->includeDwarfChunks = false; in linkerMain()
1648 config->writeSymtab = true; in linkerMain()
1651 config->writeSymtab = false; in linkerMain()
1659 config->demangle = args.hasFlag(OPT_demangle, OPT_demangle_no, true); in linkerMain()
1662 config->debugTypes = parseDebugTypes(args); in linkerMain()
1665 config->driverUponly = args.hasArg(OPT_driver_uponly) || in linkerMain()
1668 config->driverWdm = args.hasArg(OPT_driver_wdm) || in linkerMain()
1671 config->driver = in linkerMain()
1672 config->driverUponly || config->driverWdm || args.hasArg(OPT_driver); in linkerMain()
1677 config->pdbPath = arg->getValue(); in linkerMain()
1679 config->pdbAltPath = arg->getValue(); in linkerMain()
1683 config->natvisFiles = args.getAllArgValues(OPT_natvis); in linkerMain()
1689 config->namedStreams[name] = file; in linkerMain()
1694 config->pdbSourcePath = arg->getValue(); in linkerMain()
1704 config->noEntry = true; in linkerMain()
1711 config->dll = true; in linkerMain()
1712 config->manifestID = 2; in linkerMain()
1721 config->dynamicBase = false; in linkerMain()
1732 config->relocatable = false; in linkerMain()
1733 config->dynamicBase = false; in linkerMain()
1738 config->appContainer = in linkerMain()
1745 config->machine = getMachineType(arg->getValue()); in linkerMain()
1746 if (config->machine == IMAGE_FILE_MACHINE_UNKNOWN) in linkerMain()
1756 config->noDefaultLibs.insert(findLib(arg->getValue()).lower()); in linkerMain()
1761 config->noDefaultLibAll = true; in linkerMain()
1765 parseNumbers(arg->getValue(), &config->imageBase); in linkerMain()
1769 parseNumbers(arg->getValue(), &config->fileAlign); in linkerMain()
1770 if (!isPowerOf2_64(config->fileAlign)) in linkerMain()
1771 error("/filealign: not a power of two: " + Twine(config->fileAlign)); in linkerMain()
1776 parseNumbers(arg->getValue(), &config->stackReserve, &config->stackCommit); in linkerMain()
1784 parseNumbers(arg->getValue(), &config->heapReserve, &config->heapCommit); in linkerMain()
1788 parseVersion(arg->getValue(), &config->majorImageVersion, in linkerMain()
1789 &config->minorImageVersion); in linkerMain()
1793 parseSubsystem(arg->getValue(), &config->subsystem, in linkerMain()
1794 &config->majorSubsystemVersion, in linkerMain()
1795 &config->minorSubsystemVersion); in linkerMain()
1799 parseVersion(arg->getValue(), &config->majorOSVersion, in linkerMain()
1800 &config->minorOSVersion); in linkerMain()
1802 config->majorOSVersion = config->majorSubsystemVersion; in linkerMain()
1803 config->minorOSVersion = config->minorSubsystemVersion; in linkerMain()
1809 config->timestamp = 0; in linkerMain()
1810 config->repro = true; in linkerMain()
1812 config->repro = false; in linkerMain()
1814 if (value.getAsInteger(0, config->timestamp)) in linkerMain()
1819 config->repro = false; in linkerMain()
1823 if (value.getAsInteger(0, config->timestamp)) in linkerMain()
1827 config->timestamp = time(nullptr); in linkerMain()
1841 config->implib = arg->getValue(); in linkerMain()
1843 config->noimplib = args.hasArg(OPT_noimplib); in linkerMain()
1877 if (s.getAsInteger(10, config->ltoo) || config->ltoo > 3) in linkerMain()
1880 config->ltoCgo.emplace(); in linkerMain()
1881 if (s.getAsInteger(10, *config->ltoCgo) || *config->ltoCgo > 3) in linkerMain()
1886 config->thinLTOJobs = s.str(); in linkerMain()
1888 if (s.getAsInteger(10, config->ltoPartitions) || in linkerMain()
1889 config->ltoPartitions == 0) in linkerMain()
1898 config->doGC = doGC; in linkerMain()
1899 config->doICF = *icfLevel; in linkerMain()
1900 config->tailMerge = in linkerMain()
1901 (tailMerge == 1 && config->doICF != ICFLevel::None) || tailMerge == 2; in linkerMain()
1902 config->ltoDebugPassManager = ltoDebugPM; in linkerMain()
1906 config->saveTemps = true; in linkerMain()
1912 config->emit = EmitKind::Obj; in linkerMain()
1914 config->emit = EmitKind::LLVM; in linkerMain()
1916 config->emit = EmitKind::ASM; in linkerMain()
1923 config->killAt = true; in linkerMain()
1927 config->ltoCache = arg->getValue(); in linkerMain()
1931 config->ltoCachePolicy = CHECK( in linkerMain()
1952 if (isArm64EC(config->machine)) in linkerMain()
1955 if (config->mingw) { in linkerMain()
1967 parseNumbers(arg->getValue(), &config->align); in linkerMain()
1968 if (!isPowerOf2_64(config->align)) in linkerMain()
1980 config->manifestDependencies.insert(arg->getValue()); in linkerMain()
1985 config->manifest = Configuration::SideBySide; in linkerMain()
1996 config->manifestFile = arg->getValue(); in linkerMain()
2000 config->manifestInput.push_back(arg->getValue()); in linkerMain()
2002 if (!config->manifestInput.empty() && in linkerMain()
2003 config->manifest != Configuration::Embed) { in linkerMain()
2008 config->dwoDir = args.getLastArgValue(OPT_dwodir); in linkerMain()
2010 config->thinLTOEmitImportsFiles = args.hasArg(OPT_thinlto_emit_imports_files); in linkerMain()
2011 config->thinLTOIndexOnly = args.hasArg(OPT_thinlto_index_only) || in linkerMain()
2013 config->thinLTOIndexOnlyArg = in linkerMain()
2015 std::tie(config->thinLTOPrefixReplaceOld, config->thinLTOPrefixReplaceNew, in linkerMain()
2016 config->thinLTOPrefixReplaceNativeObject) = in linkerMain()
2018 config->thinLTOObjectSuffixReplace = in linkerMain()
2020 config->ltoObjPath = args.getLastArgValue(OPT_lto_obj_path); in linkerMain()
2021 config->ltoCSProfileGenerate = args.hasArg(OPT_lto_cs_profile_generate); in linkerMain()
2022 config->ltoCSProfileFile = args.getLastArgValue(OPT_lto_cs_profile_file); in linkerMain()
2023 config->ltoSampleProfileName = args.getLastArgValue(OPT_lto_sample_profile); in linkerMain()
2025 config->ltoPGOWarnMismatch = args.hasFlag(OPT_lto_pgo_warn_mismatch, in linkerMain()
2027 config->allowBind = args.hasFlag(OPT_allowbind, OPT_allowbind_no, true); in linkerMain()
2028 config->allowIsolation = in linkerMain()
2030 config->incremental = in linkerMain()
2032 !config->doGC && config->doICF == ICFLevel::None && in linkerMain()
2034 config->integrityCheck = in linkerMain()
2036 config->cetCompat = args.hasFlag(OPT_cetcompat, OPT_cetcompat_no, false); in linkerMain()
2037 config->nxCompat = args.hasFlag(OPT_nxcompat, OPT_nxcompat_no, true); in linkerMain()
2040 config->terminalServerAware = in linkerMain()
2041 !config->dll && args.hasFlag(OPT_tsaware, OPT_tsaware_no, true); in linkerMain()
2042 config->autoImport = in linkerMain()
2043 args.hasFlag(OPT_auto_import, OPT_auto_import_no, config->mingw); in linkerMain()
2044 config->pseudoRelocs = args.hasFlag( in linkerMain()
2045 OPT_runtime_pseudo_reloc, OPT_runtime_pseudo_reloc_no, config->mingw); in linkerMain()
2046 config->callGraphProfileSort = args.hasFlag( in linkerMain()
2048 config->stdcallFixup = in linkerMain()
2049 args.hasFlag(OPT_stdcall_fixup, OPT_stdcall_fixup_no, config->mingw); in linkerMain()
2050 config->warnStdcallFixup = !args.hasArg(OPT_stdcall_fixup); in linkerMain()
2051 config->allowDuplicateWeak = in linkerMain()
2053 OPT_lld_allow_duplicate_weak_no, config->mingw); in linkerMain()
2058 if (config->incremental && args.hasArg(OPT_profile)) { in linkerMain()
2060 config->incremental = false; in linkerMain()
2063 if (config->incremental && args.hasArg(OPT_order)) { in linkerMain()
2065 config->incremental = false; in linkerMain()
2068 if (config->incremental && config->doGC) { in linkerMain()
2071 config->incremental = false; in linkerMain()
2074 if (config->incremental && config->doICF != ICFLevel::None) { in linkerMain()
2077 config->incremental = false; in linkerMain()
2141 if (config->machine == IMAGE_FILE_MACHINE_UNKNOWN) { in linkerMain()
2143 config->machine = AMD64; in linkerMain()
2146 config->wordsize = config->is64() ? 8 : 4; in linkerMain()
2148 if (config->printSearchPaths) { in linkerMain()
2173 config->writeCheckSum = true; in linkerMain()
2176 if (config->machine == I386) { in linkerMain()
2177 config->safeSEH = args.hasFlag(OPT_safeseh, OPT_safeseh_no, !config->mingw); in linkerMain()
2178 config->noSEH = args.hasArg(OPT_noseh); in linkerMain()
2198 config->largeAddressAware = args.hasFlag( in linkerMain()
2199 OPT_largeaddressaware, OPT_largeaddressaware_no, config->is64()); in linkerMain()
2202 config->highEntropyVA = in linkerMain()
2203 config->is64() && in linkerMain()
2206 if (!config->dynamicBase && in linkerMain()
2207 (config->machine == ARMNT || isAnyArm64(config->machine))) in linkerMain()
2209 machineToStr(config->machine)); in linkerMain()
2216 if (config->machine == I386) { in linkerMain()
2222 config->exports.push_back(e); in linkerMain()
2235 if (!config->noimplib) in linkerMain()
2243 if (config->subsystem == IMAGE_SUBSYSTEM_UNKNOWN) { in linkerMain()
2245 config->subsystem = inferSubsystem(); in linkerMain()
2246 if (config->subsystem == IMAGE_SUBSYSTEM_UNKNOWN) in linkerMain()
2256 config->entry = addUndefined(mangle(arg->getValue())); in linkerMain()
2257 } else if (!config->entry && !config->noEntry) { in linkerMain()
2259 StringRef s = (config->machine == I386) ? "__DllMainCRTStartup@12" in linkerMain()
2261 config->entry = addUndefined(s); in linkerMain()
2262 } else if (config->driverWdm) { in linkerMain()
2264 config->entry = addUndefined(mangle("_NtProcessStartup")); in linkerMain()
2271 config->entry = addUndefined(s); in linkerMain()
2281 config->delayLoads.insert(StringRef(arg->getValue()).lower()); in linkerMain()
2282 if (config->machine == I386) { in linkerMain()
2283 config->delayLoadHelper = addUndefined("___delayLoadHelper2@8"); in linkerMain()
2285 config->delayLoadHelper = addUndefined("__delayLoadHelper2"); in linkerMain()
2291 if (config->outputFile.empty()) { in linkerMain()
2292 config->outputFile = getOutputPath( in linkerMain()
2294 config->dll, config->driver); in linkerMain()
2298 if (auto e = tryCreateFile(config->outputFile)) { in linkerMain()
2299 error("cannot open output file " + config->outputFile + ": " + e.message()); in linkerMain()
2303 config->lldmapFile = getMapFile(args, OPT_lldmap, OPT_lldmap_file); in linkerMain()
2304 config->mapFile = getMapFile(args, OPT_map, OPT_map_file); in linkerMain()
2306 if (config->mapFile != "" && args.hasArg(OPT_map_info)) { in linkerMain()
2310 config->mapInfo = true; in linkerMain()
2316 if (config->lldmapFile != "" && config->lldmapFile == config->mapFile) { in linkerMain()
2317 warn("/lldmap and /map have the same output file '" + config->mapFile + in linkerMain()
2319 config->lldmapFile.clear(); in linkerMain()
2325 config->buildIDHash = BuildIDHash::Binary; in linkerMain()
2329 if (config->pdbPath.empty()) { in linkerMain()
2330 config->pdbPath = config->outputFile; in linkerMain()
2331 sys::path::replace_extension(config->pdbPath, ".pdb"); in linkerMain()
2336 if (config->pdbAltPath.empty()) { in linkerMain()
2337 config->pdbAltPath = config->pdbPath; in linkerMain()
2342 sys::fs::make_absolute(config->pdbAltPath); in linkerMain()
2343 sys::path::remove_dots(config->pdbAltPath); in linkerMain()
2348 config->buildIDHash = BuildIDHash::PDB; in linkerMain()
2352 if (config->imageBase == uint64_t(-1)) in linkerMain()
2353 config->imageBase = getDefaultImageBase(); in linkerMain()
2356 if (config->machine == I386) { in linkerMain()
2374 if (isArm64EC(config->machine)) { in linkerMain()
2381 if (config->pseudoRelocs) { in linkerMain()
2385 if (config->mingw) { in linkerMain()
2389 if (config->debug || config->buildIDHash != BuildIDHash::None) in linkerMain()
2401 if (config->entry) in linkerMain()
2402 mangleMaybe(config->entry); in linkerMain()
2405 for (Export &e : config->exports) { in linkerMain()
2415 for (auto pair : config->alternateNames) { in linkerMain()
2458 if (config->autoImport || config->stdcallFixup) { in linkerMain()
2487 if (!ctx.bitcodeFileInstances.empty() && !config->forceUnresolved) in linkerMain()
2492 config->hadExplicitExports = !config->exports.empty(); in linkerMain()
2493 if (config->mingw) { in linkerMain()
2506 config->gcroot.push_back(d); in linkerMain()
2512 if (config->emit != EmitKind::Obj || config->thinLTOIndexOnly) in linkerMain()
2528 if (config->mingw) { in linkerMain()
2549 if (!config->exports.empty() || config->dll) { in linkerMain()
2552 if (!config->noimplib && (!config->mingw || !config->implib.empty())) in linkerMain()
2559 writeDefFile(arg->getValue(), config->exports); in linkerMain()
2562 for (auto pair : config->alignComm) { in linkerMain()
2585 if (config->manifest == Configuration::Embed) in linkerMain()
2587 else if (config->manifest == Configuration::SideBySide || in linkerMain()
2588 (config->manifest == Configuration::Default && in linkerMain()
2589 !config->manifestDependencies.empty())) in linkerMain()
2599 config->callGraphProfileSort = false; in linkerMain()
2603 if (config->callGraphProfileSort) { in linkerMain()
2613 config->printSymbolOrder = arg->getValue(); in linkerMain()
2618 if (config->doGC) { in linkerMain()
2619 if (config->mingw) { in linkerMain()
2631 config->gcroot.push_back(d); in linkerMain()
2643 if (config->doICF != ICFLevel::None) { in linkerMain()
2653 if (config->showTiming) in linkerMain()
2656 if (config->timeTraceEnabled) { in linkerMain()
2661 args.getLastArgValue(OPT_time_trace_eq).str(), config->outputFile)); in linkerMain()