From a1aa55ebe52636f28335fd7ab30321fc52f48775 Mon Sep 17 00:00:00 2001 From: kcbanner Date: Tue, 18 Apr 2023 18:57:35 -0400 Subject: 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. --- src/Compilation.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/Compilation.zig') 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"), } -- cgit v1.2.3