From: David Blaikie Date: Tue, 16 Apr 2019 00:16:29 +0000 (+0000) Subject: DebugInfo: Default to standalone debug when tuning for LLDB X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=829f41a7fd7beb33eeb512111681b73d21011262;p=clang DebugInfo: Default to standalone debug when tuning for LLDB LLDB can't currently handle Clang's default (limit/no-standalone) DWARF, so platforms that default to LLDB (Darwin) or anyone else manually requesting LLDB tuning, should also get standalone DWARF. That doesn't mean a user can't explicitly enable (because they have other reasons to prefer standalone DWARF (such as that they're only building half their application with debug info enabled, and half without - or because they're tuning for GDB, but want to be able to use it under LLDB too (this is the default on FreeBSD))) or disable (testing LLDB fixes/improvements that handle no-standalone mode, building C code, perhaps, which wouldn't have the LLDB<>no-standalone conflict, etc) the feature regardless of the tuning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358464 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp index 0d76aaaacf..5620a54343 100644 --- a/lib/Driver/ToolChains/Clang.cpp +++ b/lib/Driver/ToolChains/Clang.cpp @@ -3295,9 +3295,10 @@ static void RenderDebugOptions(const ToolChain &TC, const Driver &D, // figure out if we need to "upgrade" it to standalone debug info. // We parse these two '-f' options whether or not they will be used, // to claim them even if you wrote "-fstandalone-debug -gline-tables-only" - bool NeedFullDebug = Args.hasFlag(options::OPT_fstandalone_debug, - options::OPT_fno_standalone_debug, - TC.GetDefaultStandaloneDebug()); + bool NeedFullDebug = Args.hasFlag( + options::OPT_fstandalone_debug, options::OPT_fno_standalone_debug, + DebuggerTuning == llvm::DebuggerKind::LLDB || + TC.GetDefaultStandaloneDebug()); if (const Arg *A = Args.getLastArg(options::OPT_fstandalone_debug)) (void)checkDebugInfoOption(A, Args, D, TC); if (DebugInfoKind == codegenoptions::LimitedDebugInfo && NeedFullDebug) diff --git a/test/Driver/debug-options.c b/test/Driver/debug-options.c index 6acc7e8f17..dce72ff17d 100644 --- a/test/Driver/debug-options.c +++ b/test/Driver/debug-options.c @@ -3,26 +3,26 @@ // Linux. // RUN: %clang -### -c -g %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G -check-prefix=G_GDB %s +// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_GDB %s // RUN: %clang -### -c -g2 %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G %s +// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_GDB %s // RUN: %clang -### -c -g3 %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G %s +// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_GDB %s // RUN: %clang -### -c -ggdb %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G -check-prefix=G_GDB %s +// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_GDB %s // RUN: %clang -### -c -ggdb1 %s -target x86_64-linux-gnu 2>&1 \ // RUN: | FileCheck -check-prefix=GLTO_ONLY -check-prefix=G_GDB %s // RUN: %clang -### -c -ggdb3 %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G %s +// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_GDB %s // RUN: %clang -### -c -glldb %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G -check-prefix=G_LLDB %s +// RUN: | FileCheck -check-prefix=G_STANDALONE -check-prefix=G_LLDB %s // RUN: %clang -### -c -gsce %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G -check-prefix=G_SCE %s +// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_SCE %s // Android. // Android should always generate DWARF4. // RUN: %clang -### -c -g %s -target arm-linux-androideabi 2>&1 \ -// RUN: | FileCheck -check-prefix=G -check-prefix=G_DWARF4 %s +// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_DWARF4 %s // Darwin. // RUN: %clang -### -c -g %s -target x86_64-apple-darwin14 2>&1 \ @@ -231,9 +231,6 @@ // RUN: %clang -### -target %itanium_abi_triple -gmodules -gline-directives-only %s 2>&1 \ // RUN: | FileCheck -check-prefix=GLIO_ONLY %s // -// G: "-cc1" -// G: "-debug-info-kind=limited" -// // NOG_PS4: "-cc1" // NOG_PS4-NOT "-dwarf-version= // NOG_PS4: "-generate-arange-section" @@ -277,6 +274,8 @@ // // G_STANDALONE: "-cc1" // G_STANDALONE: "-debug-info-kind=standalone" +// G_LIMITED: "-cc1" +// G_LIMITED: "-debug-info-kind=limited" // G_DWARF2: "-dwarf-version=2" // G_DWARF4: "-dwarf-version=4" //