Lines Matching refs:config
153 assert(ctx.config.machine != IMAGE_FILE_MACHINE_UNKNOWN); in mangle()
154 if (ctx.config.machine == I386) in mangle()
160 switch (ctx.config.machine) { in getArch()
229 if (ctx.config.mingw) { in addBuffer()
365 (!ctx.config.mingw && sym.contains('@')); in isDecorated()
391 if (ctx.config.machine == I386 && ctx.config.mingw) { in parseDirectives()
398 ctx.config.exports.push_back(exp); in parseDirectives()
427 ctx.config.entry = addUndefined(mangle(arg->getValue())); in parseDirectives()
436 ctx.config.manifestDependencies.insert(arg->getValue()); in parseDirectives()
442 ctx.config.noDefaultLibs.insert(findLib(arg->getValue()).lower()); in parseDirectives()
445 ctx.config.writeCheckSum = true; in parseDirectives()
451 parseNumbers(arg->getValue(), &ctx.config.stackReserve, in parseDirectives()
452 &ctx.config.stackCommit); in parseDirectives()
456 parseSubsystem(arg->getValue(), &ctx.config.subsystem, in parseDirectives()
457 &ctx.config.majorSubsystemVersion, in parseDirectives()
458 &ctx.config.minorSubsystemVersion, &gotVersion); in parseDirectives()
460 ctx.config.majorOSVersion = ctx.config.majorSubsystemVersion; in parseDirectives()
461 ctx.config.minorOSVersion = ctx.config.minorSubsystemVersion; in parseDirectives()
484 if (ctx.config.vfs) in findFile()
485 if (auto statOrErr = ctx.config.vfs->status(filename)) in findFile()
553 if (ctx.config.mingw && ret == filename) in findLib()
562 if (ctx.config.noDefaultLibAll) in findLibIfNew()
568 if (ctx.config.noDefaultLibs.count(path.lower())) in findLibIfNew()
712 ctx.config.gcroot.push_back(b); in addUndefined()
741 assert(ctx.config.subsystem != IMAGE_SUBSYSTEM_UNKNOWN && in findDefaultEntry()
744 if (ctx.config.mingw) in findDefaultEntry()
745 return mangle(ctx.config.subsystem == IMAGE_SUBSYSTEM_WINDOWS_GUI in findDefaultEntry()
749 if (ctx.config.subsystem == IMAGE_SUBSYSTEM_WINDOWS_GUI) { in findDefaultEntry()
766 if (ctx.config.dll) in inferSubsystem()
768 if (ctx.config.mingw) in inferSubsystem()
791 if (ctx.config.is64()) in getDefaultImageBase()
792 return ctx.config.dll ? 0x180000000 : 0x140000000; in getDefaultImageBase()
793 return ctx.config.dll ? 0x10000000 : 0x400000; in getDefaultImageBase()
904 StringRef outFile = ctx.config.outputFile; in getMapFile()
909 if (!ctx.config.implib.empty()) in getImplibPath()
910 return std::string(ctx.config.implib); in getImplibPath()
911 SmallString<128> out = StringRef(ctx.config.outputFile); in getImplibPath()
926 if (ctx.config.importName.empty()) { in getImportName()
927 out.assign(sys::path::filename(ctx.config.outputFile)); in getImportName()
931 out.assign(ctx.config.importName); in getImportName()
934 (ctx.config.dll || asLib) ? ".dll" : ".exe"); in getImportName()
943 for (Export &e1 : ctx.config.exports) { in createImportLibrary()
960 if (!ctx.config.incremental) { in createImportLibrary()
961 checkError(writeImportLibrary(libName, path, exports, ctx.config.machine, in createImportLibrary()
962 ctx.config.mingw)); in createImportLibrary()
971 checkError(writeImportLibrary(libName, path, exports, ctx.config.machine, in createImportLibrary()
972 ctx.config.mingw)); in createImportLibrary()
983 ctx.config.machine, ctx.config.mingw)) { in createImportLibrary()
1006 mb->getMemBufferRef(), ctx.config.machine, ctx.config.mingw)); in parseModuleDefs()
1011 if (ctx.config.outputFile.empty()) in parseModuleDefs()
1012 ctx.config.outputFile = std::string(saver().save(m.OutputFile)); in parseModuleDefs()
1013 ctx.config.importName = std::string(saver().save(m.ImportName)); in parseModuleDefs()
1015 ctx.config.imageBase = m.ImageBase; in parseModuleDefs()
1017 ctx.config.stackReserve = m.StackReserve; in parseModuleDefs()
1019 ctx.config.stackCommit = m.StackCommit; in parseModuleDefs()
1021 ctx.config.heapReserve = m.HeapReserve; in parseModuleDefs()
1023 ctx.config.heapCommit = m.HeapCommit; in parseModuleDefs()
1025 ctx.config.majorImageVersion = m.MajorImageVersion; in parseModuleDefs()
1027 ctx.config.minorImageVersion = m.MinorImageVersion; in parseModuleDefs()
1029 ctx.config.majorOSVersion = m.MajorOSVersion; in parseModuleDefs()
1031 ctx.config.minorOSVersion = m.MinorOSVersion; in parseModuleDefs()
1043 ctx.config.exports.push_back(e2); in parseModuleDefs()
1055 ctx.config.exports.push_back(e2); in parseModuleDefs()
1107 if (ctx.config.machine == I386 && !isDecorated(s)) in parseOrderFile()
1111 if (ctx.config.warnMissingOrderSymbol) in parseOrderFile()
1114 ctx.config.order[s] = INT_MIN + ctx.config.order.size(); in parseOrderFile()
1138 if (ctx.config.warnMissingOrderSymbol) in parseCallGraphFile()
1160 ctx.config.callGraphProfile[{from, to}] += count; in parseCallGraphFile()
1190 ctx.config.callGraphProfile[{from, to}] += count; in readCallGraphsFromObjectFiles()
1207 for (Export &r : ctx.config.exports) in findKeepUniqueSections()
1248 sys::path::filename(ctx.config.pdbPath, sys::path::Style::windows); in parsePDBAltPath()
1250 sys::path::extension(ctx.config.outputFile, sys::path::Style::windows); in parsePDBAltPath()
1261 while (cursor < ctx.config.pdbAltPath.size()) { in parsePDBAltPath()
1263 if ((firstMark = ctx.config.pdbAltPath.find('%', cursor)) == in parsePDBAltPath()
1265 (secondMark = ctx.config.pdbAltPath.find('%', firstMark + 1)) == in parsePDBAltPath()
1268 buf.append(ctx.config.pdbAltPath.substr(cursor)); in parsePDBAltPath()
1274 buf.append(ctx.config.pdbAltPath.substr(cursor, firstMark - cursor)); in parsePDBAltPath()
1276 ctx.config.pdbAltPath.substr(firstMark, secondMark - firstMark + 1); in parsePDBAltPath()
1290 ctx.config.pdbAltPath = buf; in parsePDBAltPath()
1305 if (!ctx.config.mingw && in convertResources()
1336 if (!ctx.config.dll) in maybeExportMinGWSymbols()
1339 if (!ctx.config.exports.empty()) in maybeExportMinGWSymbols()
1365 ctx.config.gcroot.push_back(def); in maybeExportMinGWSymbols()
1375 ctx.config.exports.push_back(e); in maybeExportMinGWSymbols()
1428 Configuration *config = &ctx.config; in linkerMain() local
1452 config->timeTraceEnabled = args.hasArg(OPT_time_trace_eq); in linkerMain()
1453 config->timeTraceGranularity = in linkerMain()
1456 if (config->timeTraceEnabled) in linkerMain()
1457 timeTraceProfilerInitialize(config->timeTraceGranularity, argsArr[0]); in linkerMain()
1466 config->mllvmOpts.emplace_back(arg->getValue()); in linkerMain()
1483 config->vfs = getVFS(args); in linkerMain()
1500 config->thinLTOJobs = v.str(); in linkerMain()
1504 config->showTiming = true; in linkerMain()
1506 config->showSummary = args.hasArg(OPT_summary); in linkerMain()
1507 config->printSearchPaths = args.hasArg(OPT_print_search_paths); in linkerMain()
1519 config->mingw = args.hasArg(OPT_lldmingw); in linkerMain()
1520 if (config->mingw) in linkerMain()
1542 config->noEntry = true; in linkerMain()
1553 if (!config->mingw) { in linkerMain()
1576 config->warnMissingOrderSymbol = false; in linkerMain()
1578 config->warnDebugInfoUnusable = false; in linkerMain()
1580 config->warnLocallyDefinedImported = false; in linkerMain()
1582 config->warnLongSectionNames = false; in linkerMain()
1589 config->outputFile = arg->getValue(); in linkerMain()
1593 config->verbose = true; in linkerMain()
1594 errorHandler().verbose = config->verbose; in linkerMain()
1598 config->forceUnresolved = true; in linkerMain()
1602 config->forceMultiple = true; in linkerMain()
1606 config->forceMultipleRes = true; in linkerMain()
1610 if (config->mingw) in linkerMain()
1611 config->warnLongSectionNames = false; in linkerMain()
1631 config->debug = false; in linkerMain()
1632 config->incremental = false; in linkerMain()
1633 config->includeDwarfChunks = false; in linkerMain()
1634 config->debugGHashes = false; in linkerMain()
1635 config->writeSymtab = false; in linkerMain()
1639 config->debug = true; in linkerMain()
1640 config->incremental = true; in linkerMain()
1641 config->includeDwarfChunks = true; in linkerMain()
1643 config->debugGHashes = true; in linkerMain()
1647 config->debug = true; in linkerMain()
1648 config->incremental = true; in linkerMain()
1649 config->includeDwarfChunks = true; in linkerMain()
1650 config->writeSymtab = true; in linkerMain()
1651 config->warnLongSectionNames = false; in linkerMain()
1654 config->includeDwarfChunks = false; in linkerMain()
1656 config->writeSymtab = true; in linkerMain()
1659 config->writeSymtab = false; in linkerMain()
1667 config->demangle = args.hasFlag(OPT_demangle, OPT_demangle_no, true); in linkerMain()
1670 config->debugTypes = parseDebugTypes(args); in linkerMain()
1673 config->driverUponly = args.hasArg(OPT_driver_uponly) || in linkerMain()
1676 config->driverWdm = args.hasArg(OPT_driver_wdm) || in linkerMain()
1679 config->driver = in linkerMain()
1680 config->driverUponly || config->driverWdm || args.hasArg(OPT_driver); in linkerMain()
1685 config->pdbPath = arg->getValue(); in linkerMain()
1687 config->pdbAltPath = arg->getValue(); in linkerMain()
1691 config->natvisFiles = args.getAllArgValues(OPT_natvis); in linkerMain()
1697 config->namedStreams[name] = file; in linkerMain()
1702 config->pdbSourcePath = arg->getValue(); in linkerMain()
1712 config->noEntry = true; in linkerMain()
1719 config->dll = true; in linkerMain()
1720 config->manifestID = 2; in linkerMain()
1729 config->dynamicBase = false; in linkerMain()
1740 config->relocatable = false; in linkerMain()
1741 config->dynamicBase = false; in linkerMain()
1746 config->appContainer = in linkerMain()
1753 config->machine = getMachineType(arg->getValue()); in linkerMain()
1754 if (config->machine == IMAGE_FILE_MACHINE_UNKNOWN) in linkerMain()
1764 config->noDefaultLibs.insert(findLib(arg->getValue()).lower()); in linkerMain()
1769 config->noDefaultLibAll = true; in linkerMain()
1773 parseNumbers(arg->getValue(), &config->imageBase); in linkerMain()
1777 parseNumbers(arg->getValue(), &config->fileAlign); in linkerMain()
1778 if (!isPowerOf2_64(config->fileAlign)) in linkerMain()
1779 error("/filealign: not a power of two: " + Twine(config->fileAlign)); in linkerMain()
1784 parseNumbers(arg->getValue(), &config->stackReserve, &config->stackCommit); in linkerMain()
1792 parseNumbers(arg->getValue(), &config->heapReserve, &config->heapCommit); in linkerMain()
1796 parseVersion(arg->getValue(), &config->majorImageVersion, in linkerMain()
1797 &config->minorImageVersion); in linkerMain()
1801 parseSubsystem(arg->getValue(), &config->subsystem, in linkerMain()
1802 &config->majorSubsystemVersion, in linkerMain()
1803 &config->minorSubsystemVersion); in linkerMain()
1807 parseVersion(arg->getValue(), &config->majorOSVersion, in linkerMain()
1808 &config->minorOSVersion); in linkerMain()
1810 config->majorOSVersion = config->majorSubsystemVersion; in linkerMain()
1811 config->minorOSVersion = config->minorSubsystemVersion; in linkerMain()
1817 config->timestamp = 0; in linkerMain()
1818 config->repro = true; in linkerMain()
1820 config->repro = false; in linkerMain()
1822 if (value.getAsInteger(0, config->timestamp)) in linkerMain()
1827 config->repro = false; in linkerMain()
1831 if (value.getAsInteger(0, config->timestamp)) in linkerMain()
1835 config->timestamp = time(nullptr); in linkerMain()
1849 config->implib = arg->getValue(); in linkerMain()
1851 config->noimplib = args.hasArg(OPT_noimplib); in linkerMain()
1885 if (s.getAsInteger(10, config->ltoo) || config->ltoo > 3) in linkerMain()
1888 config->ltoCgo.emplace(); in linkerMain()
1889 if (s.getAsInteger(10, *config->ltoCgo) || *config->ltoCgo > 3) in linkerMain()
1894 config->thinLTOJobs = s.str(); in linkerMain()
1896 if (s.getAsInteger(10, config->ltoPartitions) || in linkerMain()
1897 config->ltoPartitions == 0) in linkerMain()
1906 config->doGC = doGC; in linkerMain()
1907 config->doICF = *icfLevel; in linkerMain()
1908 config->tailMerge = in linkerMain()
1909 (tailMerge == 1 && config->doICF != ICFLevel::None) || tailMerge == 2; in linkerMain()
1910 config->ltoDebugPassManager = ltoDebugPM; in linkerMain()
1914 config->saveTemps = true; in linkerMain()
1920 config->emit = EmitKind::Obj; in linkerMain()
1922 config->emit = EmitKind::LLVM; in linkerMain()
1924 config->emit = EmitKind::ASM; in linkerMain()
1931 config->killAt = true; in linkerMain()
1935 config->ltoCache = arg->getValue(); in linkerMain()
1939 config->ltoCachePolicy = CHECK( in linkerMain()
1960 if (isArm64EC(config->machine)) in linkerMain()
1963 if (config->mingw) { in linkerMain()
1975 parseNumbers(arg->getValue(), &config->align); in linkerMain()
1976 if (!isPowerOf2_64(config->align)) in linkerMain()
1988 config->manifestDependencies.insert(arg->getValue()); in linkerMain()
1993 config->manifest = Configuration::SideBySide; in linkerMain()
2004 config->manifestFile = arg->getValue(); in linkerMain()
2008 config->manifestInput.push_back(arg->getValue()); in linkerMain()
2010 if (!config->manifestInput.empty() && in linkerMain()
2011 config->manifest != Configuration::Embed) { in linkerMain()
2016 config->dwoDir = args.getLastArgValue(OPT_dwodir); in linkerMain()
2018 config->thinLTOEmitImportsFiles = args.hasArg(OPT_thinlto_emit_imports_files); in linkerMain()
2019 config->thinLTOIndexOnly = args.hasArg(OPT_thinlto_index_only) || in linkerMain()
2021 config->thinLTOIndexOnlyArg = in linkerMain()
2023 std::tie(config->thinLTOPrefixReplaceOld, config->thinLTOPrefixReplaceNew, in linkerMain()
2024 config->thinLTOPrefixReplaceNativeObject) = in linkerMain()
2026 config->thinLTOObjectSuffixReplace = in linkerMain()
2028 config->ltoObjPath = args.getLastArgValue(OPT_lto_obj_path); in linkerMain()
2029 config->ltoCSProfileGenerate = args.hasArg(OPT_lto_cs_profile_generate); in linkerMain()
2030 config->ltoCSProfileFile = args.getLastArgValue(OPT_lto_cs_profile_file); in linkerMain()
2032 config->ltoPGOWarnMismatch = args.hasFlag(OPT_lto_pgo_warn_mismatch, in linkerMain()
2034 config->allowBind = args.hasFlag(OPT_allowbind, OPT_allowbind_no, true); in linkerMain()
2035 config->allowIsolation = in linkerMain()
2037 config->incremental = in linkerMain()
2039 !config->doGC && config->doICF == ICFLevel::None && in linkerMain()
2041 config->integrityCheck = in linkerMain()
2043 config->cetCompat = args.hasFlag(OPT_cetcompat, OPT_cetcompat_no, false); in linkerMain()
2044 config->nxCompat = args.hasFlag(OPT_nxcompat, OPT_nxcompat_no, true); in linkerMain()
2047 config->terminalServerAware = in linkerMain()
2048 !config->dll && args.hasFlag(OPT_tsaware, OPT_tsaware_no, true); in linkerMain()
2049 config->autoImport = in linkerMain()
2050 args.hasFlag(OPT_auto_import, OPT_auto_import_no, config->mingw); in linkerMain()
2051 config->pseudoRelocs = args.hasFlag( in linkerMain()
2052 OPT_runtime_pseudo_reloc, OPT_runtime_pseudo_reloc_no, config->mingw); in linkerMain()
2053 config->callGraphProfileSort = args.hasFlag( in linkerMain()
2055 config->stdcallFixup = in linkerMain()
2056 args.hasFlag(OPT_stdcall_fixup, OPT_stdcall_fixup_no, config->mingw); in linkerMain()
2057 config->warnStdcallFixup = !args.hasArg(OPT_stdcall_fixup); in linkerMain()
2058 config->allowDuplicateWeak = in linkerMain()
2060 OPT_lld_allow_duplicate_weak_no, config->mingw); in linkerMain()
2065 if (config->incremental && args.hasArg(OPT_profile)) { in linkerMain()
2067 config->incremental = false; in linkerMain()
2070 if (config->incremental && args.hasArg(OPT_order)) { in linkerMain()
2072 config->incremental = false; in linkerMain()
2075 if (config->incremental && config->doGC) { in linkerMain()
2078 config->incremental = false; in linkerMain()
2081 if (config->incremental && config->doICF != ICFLevel::None) { in linkerMain()
2084 config->incremental = false; in linkerMain()
2148 if (config->machine == IMAGE_FILE_MACHINE_UNKNOWN) { in linkerMain()
2150 config->machine = AMD64; in linkerMain()
2153 config->wordsize = config->is64() ? 8 : 4; in linkerMain()
2155 if (config->printSearchPaths) { in linkerMain()
2180 config->writeCheckSum = true; in linkerMain()
2183 if (config->machine == I386) { in linkerMain()
2184 config->safeSEH = args.hasFlag(OPT_safeseh, OPT_safeseh_no, !config->mingw); in linkerMain()
2185 config->noSEH = args.hasArg(OPT_noseh); in linkerMain()
2205 config->largeAddressAware = args.hasFlag( in linkerMain()
2206 OPT_largeaddressaware, OPT_largeaddressaware_no, config->is64()); in linkerMain()
2209 config->highEntropyVA = in linkerMain()
2210 config->is64() && in linkerMain()
2213 if (!config->dynamicBase && in linkerMain()
2214 (config->machine == ARMNT || isAnyArm64(config->machine))) in linkerMain()
2216 machineToStr(config->machine)); in linkerMain()
2223 if (config->machine == I386) { in linkerMain()
2229 config->exports.push_back(e); in linkerMain()
2242 if (!config->noimplib) in linkerMain()
2250 if (config->subsystem == IMAGE_SUBSYSTEM_UNKNOWN) { in linkerMain()
2252 config->subsystem = inferSubsystem(); in linkerMain()
2253 if (config->subsystem == IMAGE_SUBSYSTEM_UNKNOWN) in linkerMain()
2261 config->entry = addUndefined(mangle(arg->getValue())); in linkerMain()
2262 } else if (!config->entry && !config->noEntry) { in linkerMain()
2264 StringRef s = (config->machine == I386) ? "__DllMainCRTStartup@12" in linkerMain()
2266 config->entry = addUndefined(s); in linkerMain()
2267 } else if (config->driverWdm) { in linkerMain()
2269 config->entry = addUndefined(mangle("_NtProcessStartup")); in linkerMain()
2276 config->entry = addUndefined(s); in linkerMain()
2286 config->delayLoads.insert(StringRef(arg->getValue()).lower()); in linkerMain()
2287 if (config->machine == I386) { in linkerMain()
2288 config->delayLoadHelper = addUndefined("___delayLoadHelper2@8"); in linkerMain()
2290 config->delayLoadHelper = addUndefined("__delayLoadHelper2"); in linkerMain()
2296 if (config->outputFile.empty()) { in linkerMain()
2297 config->outputFile = getOutputPath( in linkerMain()
2299 config->dll, config->driver); in linkerMain()
2303 if (auto e = tryCreateFile(config->outputFile)) { in linkerMain()
2304 error("cannot open output file " + config->outputFile + ": " + e.message()); in linkerMain()
2308 config->lldmapFile = getMapFile(args, OPT_lldmap, OPT_lldmap_file); in linkerMain()
2309 config->mapFile = getMapFile(args, OPT_map, OPT_map_file); in linkerMain()
2311 if (config->mapFile != "" && args.hasArg(OPT_map_info)) { in linkerMain()
2315 config->mapInfo = true; in linkerMain()
2321 if (config->lldmapFile != "" && config->lldmapFile == config->mapFile) { in linkerMain()
2322 warn("/lldmap and /map have the same output file '" + config->mapFile + in linkerMain()
2324 config->lldmapFile.clear(); in linkerMain()
2330 config->buildIDHash = BuildIDHash::Binary; in linkerMain()
2334 if (config->pdbPath.empty()) { in linkerMain()
2335 config->pdbPath = config->outputFile; in linkerMain()
2336 sys::path::replace_extension(config->pdbPath, ".pdb"); in linkerMain()
2341 if (config->pdbAltPath.empty()) { in linkerMain()
2342 config->pdbAltPath = config->pdbPath; in linkerMain()
2347 sys::fs::make_absolute(config->pdbAltPath); in linkerMain()
2348 sys::path::remove_dots(config->pdbAltPath); in linkerMain()
2353 config->buildIDHash = BuildIDHash::PDB; in linkerMain()
2357 if (config->imageBase == uint64_t(-1)) in linkerMain()
2358 config->imageBase = getDefaultImageBase(); in linkerMain()
2361 if (config->machine == I386) { in linkerMain()
2379 if (isArm64EC(config->machine)) { in linkerMain()
2386 if (config->pseudoRelocs) { in linkerMain()
2390 if (config->mingw) { in linkerMain()
2394 if (config->debug || config->buildIDHash != BuildIDHash::None) in linkerMain()
2406 if (config->entry) in linkerMain()
2407 mangleMaybe(config->entry); in linkerMain()
2410 for (Export &e : config->exports) { in linkerMain()
2420 for (auto pair : config->alternateNames) { in linkerMain()
2460 if (config->autoImport || config->stdcallFixup) { in linkerMain()
2489 if (!ctx.bitcodeFileInstances.empty() && !config->forceUnresolved) in linkerMain()
2494 config->hadExplicitExports = !config->exports.empty(); in linkerMain()
2495 if (config->mingw) { in linkerMain()
2508 config->gcroot.push_back(d); in linkerMain()
2514 if (config->emit != EmitKind::Obj || config->thinLTOIndexOnly) in linkerMain()
2530 if (config->mingw) { in linkerMain()
2551 if (!config->exports.empty() || config->dll) { in linkerMain()
2554 if (!config->noimplib && (!config->mingw || !config->implib.empty())) in linkerMain()
2561 writeDefFile(arg->getValue(), config->exports); in linkerMain()
2564 for (auto pair : config->alignComm) { in linkerMain()
2587 if (config->manifest == Configuration::Embed) in linkerMain()
2589 else if (config->manifest == Configuration::SideBySide || in linkerMain()
2590 (config->manifest == Configuration::Default && in linkerMain()
2591 !config->manifestDependencies.empty())) in linkerMain()
2601 config->callGraphProfileSort = false; in linkerMain()
2605 if (config->callGraphProfileSort) { in linkerMain()
2615 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()