diff --git a/lld/COFF/Config.h b/lld/COFF/Config.h index 24126f635a06f..48c48cefe91d8 100644 --- a/lld/COFF/Config.h +++ b/lld/COFF/Config.h @@ -130,9 +130,9 @@ struct Configuration { bool forceMultipleRes = false; bool forceUnresolved = false; bool debug = false; - bool debugDwarf = false; + bool includeDwarfChunks = false; bool debugGHashes = false; - bool debugSymtab = false; + bool writeSymtab = false; bool driver = false; bool driverUponly = false; bool driverWdm = false; diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index 99c1a60735adc..2eab745ad3b23 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -1653,6 +1653,7 @@ void LinkerDriver::linkerMain(ArrayRef argsArr) { debug == DebugKind::GHash || debug == DebugKind::NoGHash) { config->debug = true; config->incremental = true; + config->includeDwarfChunks = true; } // Handle /demangle @@ -2028,9 +2029,8 @@ void LinkerDriver::linkerMain(ArrayRef argsArr) { parseSwaprun(arg->getValue()); config->terminalServerAware = !config->dll && args.hasFlag(OPT_tsaware, OPT_tsaware_no, true); - config->debugDwarf = debug == DebugKind::Dwarf; config->debugGHashes = debug == DebugKind::GHash || debug == DebugKind::Full; - config->debugSymtab = debug == DebugKind::Symtab; + config->writeSymtab = debug == DebugKind::Dwarf || debug == DebugKind::Symtab; config->autoImport = args.hasFlag(OPT_auto_import, OPT_auto_import_no, config->mingw); config->pseudoRelocs = args.hasFlag( @@ -2049,7 +2049,7 @@ void LinkerDriver::linkerMain(ArrayRef argsArr) { // Don't warn about long section names, such as .debug_info, for mingw or // when -debug:dwarf is requested. - if (config->mingw || config->debugDwarf) + if (config->mingw || debug == DebugKind::Dwarf) config->warnLongSectionNames = false; if (config->incremental && args.hasArg(OPT_profile)) { diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp index dd2e1419bb10a..cd744800cb0de 100644 --- a/lld/COFF/InputFiles.cpp +++ b/lld/COFF/InputFiles.cpp @@ -236,8 +236,8 @@ SectionChunk *ObjFile::readSection(uint32_t sectionNumber, // CodeView needs linker support. We need to interpret debug info, // and then write it to a separate .pdb file. - // Ignore DWARF debug info unless /debug is given. - if (!ctx.config.debug && name.starts_with(".debug_")) + // Ignore DWARF debug info unless requested to be included. + if (!ctx.config.includeDwarfChunks && name.starts_with(".debug_")) return nullptr; if (sec->Characteristics & llvm::COFF::IMAGE_SCN_LNK_REMOVE) diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index 7b1ff8071e2e3..ec5d10ed99032 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -1376,7 +1376,7 @@ void Writer::createSymbolAndStringTable() { sec->setStringTableOff(addEntryToStringTable(sec->name)); } - if (ctx.config.debugDwarf || ctx.config.debugSymtab) { + if (ctx.config.writeSymtab) { for (ObjFile *file : ctx.objFileInstances) { for (Symbol *b : file->getSymbols()) { auto *d = dyn_cast_or_null(b);