From b7d50115ba4900da6db7afb6460ad42ff19ba6a2 Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Tue, 15 May 2018 06:34:18 +0000 Subject: [PATCH] [MinGW] Add a LLD specific option -pdb This allows producing pdb debug info. This is an LLD specific option since GCC and GNU binutils doesn't support the PDB file format. Differential Revision: https://reviews.llvm.org/D46796 llvm-svn: 332327 --- lld/MinGW/Driver.cpp | 9 +++++++-- lld/MinGW/Options.td | 1 + lld/test/MinGW/driver.test | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index 0b7e083..01cd3b2 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -144,14 +144,19 @@ bool mingw::link(ArrayRef ArgsArr, raw_ostream &Diag) { else Add("-out:a.exe"); + if (auto *A = Args.getLastArg(OPT_pdb)) { + Add("-debug"); + Add("-pdb:" + StringRef(A->getValue())); + } else if (!Args.hasArg(OPT_strip_all)) { + Add("-debug:dwarf"); + } + if (Args.hasArg(OPT_shared)) Add("-dll"); if (Args.hasArg(OPT_verbose)) Add("-verbose"); if (Args.hasArg(OPT_export_all_symbols)) Add("-export-all-symbols"); - if (!Args.hasArg(OPT_strip_all)) - Add("-debug:dwarf"); if (Args.hasArg(OPT_large_address_aware)) Add("-largeaddressaware"); if (Args.hasArg(OPT_kill_at)) diff --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td index 6840471..d963f82 100644 --- a/lld/MinGW/Options.td +++ b/lld/MinGW/Options.td @@ -41,6 +41,7 @@ def verbose: F<"verbose">, HelpText<"Verbose mode">; def _HASH_HASH_HASH : Flag<["-"], "###">, HelpText<"Print (but do not run) the commands to run for this compilation">; def mllvm: S<"mllvm">; +def pdb: S<"pdb">, HelpText<"Specify output PDB debug information file">; def Xlink : J<"Xlink=">, MetaVarName<"">, HelpText<"Pass to the COFF linker">; diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test index 1a95d23..14593d0 100644 --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -90,6 +90,10 @@ RUN: ld.lld -### -m i386pep foo.o -s | FileCheck -check-prefix STRIP %s RUN: ld.lld -### -m i386pep foo.o --strip-all | FileCheck -check-prefix STRIP %s STRIP-NOT: -debug:dwarf +RUN: ld.lld -### -m i386pep foo.o -pdb out.pdb | FileCheck -check-prefix PDB %s +PDB: -debug -pdb:out.pdb +PDB-NOT: -debug:dwarf + RUN: ld.lld -### -m i386pep foo.o --large-address-aware | FileCheck -check-prefix LARGE-ADDRESS-AWARE %s LARGE-ADDRESS-AWARE: -largeaddressaware -- 2.7.4