[lld] [LLD] [COFF] Rewrite the config flags for dwarf debug info or symtab. NFC. (PR #75172)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 12 04:37:07 PST 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lld-coff
@llvm/pr-subscribers-lld
Author: Martin Storsjö (mstorsjo)
<details>
<summary>Changes</summary>
This shouldn't have any user visible effect, but makes the logic within the linker implementation more explicit.
Note how DWARF debug info sections were retained even if enabling a link with PDB info only; that behaviour is preserved.
---
Full diff: https://github.com/llvm/llvm-project/pull/75172.diff
4 Files Affected:
- (modified) lld/COFF/Config.h (+2-2)
- (modified) lld/COFF/Driver.cpp (+3-3)
- (modified) lld/COFF/InputFiles.cpp (+2-2)
- (modified) lld/COFF/Writer.cpp (+1-1)
``````````diff
diff --git a/lld/COFF/Config.h b/lld/COFF/Config.h
index 24126f635a06f2..48c48cefe91d8e 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 99c1a60735adc5..2eab745ad3b23c 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -1653,6 +1653,7 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> 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<const char *> 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<const char *> 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 dd2e1419bb10a6..cd744800cb0dec 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 7b1ff8071e2e3d..ec5d10ed990325 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<Defined>(b);
``````````
</details>
https://github.com/llvm/llvm-project/pull/75172
More information about the llvm-commits
mailing list