[lld] e36535d - [LLD] [COFF] Add /debug: options nodwarf and nosymtab (#75180)

via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 15 10:10:45 PST 2023


Author: Martin Storsjö
Date: 2023-12-15T20:10:41+02:00
New Revision: e36535d4bebadfbcfea34aa369743aafc43dcf6c

URL: https://github.com/llvm/llvm-project/commit/e36535d4bebadfbcfea34aa369743aafc43dcf6c
DIFF: https://github.com/llvm/llvm-project/commit/e36535d4bebadfbcfea34aa369743aafc43dcf6c.diff

LOG: [LLD] [COFF] Add /debug: options nodwarf and nosymtab (#75180)

These allow tweaking what gets implied by /debug and /debug:dwarf.

Added: 
    

Modified: 
    lld/COFF/Driver.cpp
    lld/test/COFF/debug-dwarf.test
    lld/test/COFF/sort-debug.test
    lld/test/COFF/symtab.test

Removed: 
    


################################################################################
diff  --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index f9abc8cda1b8d2..4f11affb35ed3e 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -1652,9 +1652,13 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
         config->writeSymtab = true;
         config->warnLongSectionNames = false;
         doGC = false;
+      } else if (s == "nodwarf") {
+        config->includeDwarfChunks = false;
       } else if (s == "symtab") {
         config->writeSymtab = true;
         doGC = false;
+      } else if (s == "nosymtab") {
+        config->writeSymtab = false;
       } else {
         error("/debug: unknown option: " + s);
       }

diff  --git a/lld/test/COFF/debug-dwarf.test b/lld/test/COFF/debug-dwarf.test
index eacf363b41af4a..c52e7c6067fa78 100644
--- a/lld/test/COFF/debug-dwarf.test
+++ b/lld/test/COFF/debug-dwarf.test
@@ -25,3 +25,8 @@
 # RUN: rm -f %t.pdb
 # RUN: lld-link /debug:full,dwarf /entry:main /out:%t.exe %p/Inputs/ret42.obj
 # RUN: ls %t.pdb
+
+# Check that /debug /debug:full,nodwarf creates %t.pdb.
+# RUN: rm -f %t.pdb
+# RUN: lld-link /debug:full,nodwarf /entry:main /out:%t.exe %p/Inputs/ret42.obj
+# RUN: ls %t.pdb

diff  --git a/lld/test/COFF/sort-debug.test b/lld/test/COFF/sort-debug.test
index bbe2ecd0efd8df..30cad394665489 100644
--- a/lld/test/COFF/sort-debug.test
+++ b/lld/test/COFF/sort-debug.test
@@ -7,6 +7,10 @@
 # RUN: llvm-readobj --sections %t.exe | FileCheck -check-prefix=NODEBUG %s
 # RUN: lld-link /debug:symtab /out:%t.exe /entry:main %t.obj
 # RUN: llvm-readobj --sections %t.exe | FileCheck -check-prefix=NODEBUG %s
+# RUN: lld-link /debug:full,nodwarf /out:%t.exe /entry:main %t.obj
+# RUN: llvm-readobj --sections %t.exe | FileCheck -check-prefix=NODEBUG %s
+# RUN: lld-link /debug:full /debug:nodwarf /out:%t.exe /entry:main %t.obj
+# RUN: llvm-readobj --sections %t.exe | FileCheck -check-prefix=NODEBUG %s
 
 # CHECK: Name: .text
 # CHECK: Name: .reloc

diff  --git a/lld/test/COFF/symtab.test b/lld/test/COFF/symtab.test
index f65754335a97ef..45e8ed39737a46 100644
--- a/lld/test/COFF/symtab.test
+++ b/lld/test/COFF/symtab.test
@@ -10,6 +10,8 @@
 
 # RUN: lld-link /debug /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib
 # RUN: llvm-readobj --symbols %t.exe | FileCheck -check-prefix=NO %s
+# RUN: lld-link /debug:dwarf,nosymtab /out:%t.exe /entry:main %t.obj %p/Inputs/std64.lib
+# RUN: llvm-readobj --symbols %t.exe | FileCheck -check-prefix=NO %s
 
 # CHECK:      Symbols [
 # CHECK-NEXT:   Symbol {


        


More information about the llvm-commits mailing list