aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
authorkcbanner <kcbanner@gmail.com>2023-04-18 18:57:35 -0400
committerAndrew Kelley <andrew@ziglang.org>2023-04-18 21:29:20 -0700
commita1aa55ebe52636f28335fd7ab30321fc52f48775 (patch)
treeffcd11295f9865acc27e0b7f1572318885ed0260 /src/Compilation.zig
parent0e394cf922fc84e45e70c0b4a183c9c8b8f079fb (diff)
downloadzig-a1aa55ebe52636f28335fd7ab30321fc52f48775.tar.gz
zig-a1aa55ebe52636f28335fd7ab30321fc52f48775.zip
compilation: fix generating coff debug info on -gnu
The issue with just passing `-gcodeview` is that it's not part of the `OPT_g_Group` in `clang/Driver/Options.td`, so it doesn't trigger debug info to be generated. Passing only `-g` is sufficient on MSVC, as there is logic in `Clang.cpp` which enables codeview if that is the default for the toolchain. Since the default for -gnu is not codeview, we do pass `-gcodeview` in that case.
Diffstat (limited to 'src/Compilation.zig')
-rw-r--r--src/Compilation.zig6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 1eadf0640e..48a0412b23 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -4483,7 +4483,11 @@ pub fn addCCArgs(
if (!comp.bin_file.options.strip) {
switch (target.ofmt) {
- .coff => try argv.append("-gcodeview"),
+ .coff => {
+ // -g is required here because -gcodeview doesn't trigger debug info
+ // generation, it only changes the type of information generated.
+ try argv.appendSlice(&.{ "-g", "-gcodeview" });
+ },
.elf, .macho => try argv.append("-gdwarf-4"),
else => try argv.append("-g"),
}