From: Martin Storsjo Date: Fri, 3 Nov 2017 22:10:37 +0000 (+0000) Subject: [MinGW] Output debug info by default, unless the -s parameter is passed X-Git-Tag: llvmorg-6.0.0-rc1~4169 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=068512dfb933b99f15a69880fb75d6832072eb2a;p=platform%2Fupstream%2Fllvm.git [MinGW] Output debug info by default, unless the -s parameter is passed Differential Revision: https://reviews.llvm.org/D39541 llvm-svn: 317376 --- diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index f0400fb..603dc66 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -801,7 +801,7 @@ void LinkerDriver::link(ArrayRef ArgsArr) { Config->Force = true; // Handle /debug - if (Args.hasArg(OPT_debug)) { + if (Args.hasArg(OPT_debug) || Args.hasArg(OPT_debug_dwarf)) { Config->Debug = true; if (auto *Arg = Args.getLastArg(OPT_debugtype)) Config->DebugTypes = parseDebugType(Arg->getValue()); @@ -1135,7 +1135,7 @@ void LinkerDriver::link(ArrayRef ArgsArr) { } // Disable PDB generation if the user requested it. - if (Args.hasArg(OPT_nopdb)) + if (Args.hasArg(OPT_nopdb) || Args.hasArg(OPT_debug_dwarf)) Config->PDBPath = ""; // Set default image base if /base is not given. diff --git a/lld/COFF/Options.td b/lld/COFF/Options.td index 638516b..1dcb3c8 100644 --- a/lld/COFF/Options.td +++ b/lld/COFF/Options.td @@ -117,6 +117,7 @@ def help : F<"help">; def help_q : Flag<["/?", "-?"], "">, Alias; // LLD extensions +def debug_dwarf : F<"debug:dwarf">; def export_all_symbols : F<"export-all-symbols">; def nopdb : F<"nopdb">, HelpText<"Disable PDB generation for DWARF users">; def nosymtab : F<"nosymtab">; diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index d71a17c..ecdf7d0 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -152,6 +152,8 @@ bool mingw::link(ArrayRef ArgsArr, raw_ostream &Diag) { Add("-verbose"); if (Args.hasArg(OPT_export_all_symbols)) Add("-export-all-symbols"); + if (!Args.hasArg(OPT_strip_all)) + Add("-debug:dwarf"); if (auto *A = Args.getLastArg(OPT_m)) { StringRef S = A->getValue(); diff --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td index 8c189b6..595a083 100644 --- a/lld/MinGW/Options.td +++ b/lld/MinGW/Options.td @@ -23,6 +23,8 @@ def output_def: S<"output-def">, HelpText<"Output def file">; def shared: F<"shared">, HelpText<"Build a shared object">; def subs: S<"subsystem">, HelpText<"Specify subsystem">; def stack: S<"stack">; +def strip_all: F<"strip-all">, + HelpText<"Omit all symbol information from the output binary">; def whole_archive: F<"whole-archive">, HelpText<"Include all object files for following archives">; def verbose: F<"verbose">, HelpText<"Verbose mode">; @@ -49,3 +51,4 @@ def version: F<"version">, HelpText<"Display the version number and exit">; // Alias def alias_entry_e: JoinedOrSeparate<["-"], "e">, Alias; +def alias_strip_s: Flag<["-"], "s">, Alias; diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test index c85668f..c3c7005 100644 --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -82,3 +82,10 @@ OUTPUT-DEF: -output-def:out.def RUN: ld.lld -### -m i386pep foo.o -Xlink=-lldmap | FileCheck -check-prefix XLINK %s XLINK: -lldmap + +RUN: ld.lld -### -m i386pep foo.o | FileCheck -check-prefix DEBUG %s +DEBUG: -debug:dwarf + +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