forked from OSchip/llvm-project
[debug-info] support new tuning debugger type DBX for XCOFF DWARF
Based on this debugger type, for now, we plan to: 1: use inline string by default for XCOFF DWARF 2: generate no column info for debug line table. Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D99400
This commit is contained in:
parent
dfc8da19c5
commit
bfcd21876a
clang
docs
include/clang
lib/Driver/ToolChains
test/Driver
llvm/include/llvm/Target
|
@ -2573,13 +2573,12 @@ While Clang generally emits standard DWARF debug info (http://dwarfstd.org),
|
|||
different debuggers may know how to take advantage of different specific DWARF
|
||||
features. You can "tune" the debug info for one of several different debuggers.
|
||||
|
||||
.. option:: -ggdb, -glldb, -gsce
|
||||
|
||||
Tune the debug info for the ``gdb``, ``lldb``, or Sony PlayStation\ |reg|
|
||||
debugger, respectively. Each of these options implies **-g**. (Therefore, if
|
||||
you want both **-gline-tables-only** and debugger tuning, the tuning option
|
||||
must come first.)
|
||||
.. option:: -ggdb, -glldb, -gsce, -gdbx
|
||||
|
||||
Tune the debug info for the ``gdb``, ``lldb``, Sony PlayStation\ |reg|
|
||||
debugger, or ``dbx``, respectively. Each of these options implies **-g**.
|
||||
(Therefore, if you want both **-gline-tables-only** and debugger tuning, the
|
||||
tuning option must come first.)
|
||||
|
||||
Controlling LLVM IR Output
|
||||
--------------------------
|
||||
|
|
|
@ -340,7 +340,7 @@ ENUM_CODEGENOPT(DebugInfo, codegenoptions::DebugInfoKind, 4, codegenoptions::NoD
|
|||
CODEGENOPT(MacroDebugInfo, 1, 0)
|
||||
|
||||
/// Tune the debug info for this debugger.
|
||||
ENUM_CODEGENOPT(DebuggerTuning, llvm::DebuggerKind, 2,
|
||||
ENUM_CODEGENOPT(DebuggerTuning, llvm::DebuggerKind, 3,
|
||||
llvm::DebuggerKind::Default)
|
||||
|
||||
/// Dwarf version. Version zero indicates to LLVM that no DWARF should be
|
||||
|
|
|
@ -2722,6 +2722,7 @@ def ggdb2 : Flag<["-"], "ggdb2">, Group<ggdbN_Group>;
|
|||
def ggdb3 : Flag<["-"], "ggdb3">, Group<ggdbN_Group>;
|
||||
def glldb : Flag<["-"], "glldb">, Group<gTune_Group>;
|
||||
def gsce : Flag<["-"], "gsce">, Group<gTune_Group>;
|
||||
def gdbx : Flag<["-"], "gdbx">, Group<gTune_Group>;
|
||||
// Equivalent to our default dwarf version. Forces usual dwarf emission when
|
||||
// CodeView is enabled.
|
||||
def gdwarf : Flag<["-"], "gdwarf">, Group<g_Group>, Flags<[CoreOption]>,
|
||||
|
@ -4612,8 +4613,8 @@ def default_function_attr : Separate<["-"], "default-function-attr">,
|
|||
def dwarf_version_EQ : Joined<["-"], "dwarf-version=">,
|
||||
MarshallingInfoInt<CodeGenOpts<"DwarfVersion">>;
|
||||
def debugger_tuning_EQ : Joined<["-"], "debugger-tuning=">,
|
||||
Values<"gdb,lldb,sce">,
|
||||
NormalizedValuesScope<"llvm::DebuggerKind">, NormalizedValues<["GDB", "LLDB", "SCE"]>,
|
||||
Values<"gdb,lldb,sce,dbx">,
|
||||
NormalizedValuesScope<"llvm::DebuggerKind">, NormalizedValues<["GDB", "LLDB", "SCE", "DBX"]>,
|
||||
MarshallingInfoEnum<CodeGenOpts<"DebuggerTuning">, "Default">;
|
||||
def dwarf_debug_flags : Separate<["-"], "dwarf-debug-flags">,
|
||||
HelpText<"The string to embed in the Dwarf debug flags record.">,
|
||||
|
|
|
@ -77,6 +77,10 @@ public:
|
|||
// Set default DWARF version to 3 for now as latest AIX OS supports version 3.
|
||||
unsigned GetDefaultDwarfVersion() const override { return 3; }
|
||||
|
||||
llvm::DebuggerKind getDefaultDebuggerTuning() const override {
|
||||
return llvm::DebuggerKind::DBX;
|
||||
}
|
||||
|
||||
protected:
|
||||
Tool *buildAssembler() const override;
|
||||
Tool *buildLinker() const override;
|
||||
|
|
|
@ -1051,6 +1051,9 @@ static void RenderDebugEnablingArgs(const ArgList &Args, ArgStringList &CmdArgs,
|
|||
case llvm::DebuggerKind::SCE:
|
||||
CmdArgs.push_back("-debugger-tuning=sce");
|
||||
break;
|
||||
case llvm::DebuggerKind::DBX:
|
||||
CmdArgs.push_back("-debugger-tuning=dbx");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -3895,6 +3898,8 @@ static void renderDebugOptions(const ToolChain &TC, const Driver &D,
|
|||
DebuggerTuning = llvm::DebuggerKind::LLDB;
|
||||
else if (A->getOption().matches(options::OPT_gsce))
|
||||
DebuggerTuning = llvm::DebuggerKind::SCE;
|
||||
else if (A->getOption().matches(options::OPT_gdbx))
|
||||
DebuggerTuning = llvm::DebuggerKind::DBX;
|
||||
else
|
||||
DebuggerTuning = llvm::DebuggerKind::GDB;
|
||||
}
|
||||
|
|
|
@ -550,6 +550,8 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
|
|||
CmdArgs.push_back("-plugin-opt=-debugger-tune=lldb");
|
||||
else if (A->getOption().matches(options::OPT_gsce))
|
||||
CmdArgs.push_back("-plugin-opt=-debugger-tune=sce");
|
||||
else if (A->getOption().matches(options::OPT_gdbx))
|
||||
CmdArgs.push_back("-plugin-opt=-debugger-tune=dbx");
|
||||
else
|
||||
CmdArgs.push_back("-plugin-opt=-debugger-tune=gdb");
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
// 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_LIMITED -check-prefix=G_SCE %s
|
||||
// RUN: %clang -### -c -gdbx %s -target x86_64-linux-gnu 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_DBX %s
|
||||
|
||||
// Android.
|
||||
// Android should always generate DWARF4.
|
||||
|
@ -102,6 +104,12 @@
|
|||
// RUN: %clang -### -c %s -gsce -target x86_64-unknown-linux 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=NOCI %s
|
||||
|
||||
// On the AIX, -g defaults to -gdbx and limited debug info.
|
||||
// RUN: %clang -### -c -g %s -target powerpc-ibm-aix-xcoff 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_DBX %s
|
||||
// RUN: %clang -### -c -g %s -target powerpc64-ibm-aix-xcoff 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=G_LIMITED -check-prefix=G_DBX %s
|
||||
|
||||
// RUN: %clang -### -c -gdwarf-2 %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=G_ONLY_DWARF2 %s
|
||||
//
|
||||
|
@ -294,6 +302,7 @@
|
|||
// G_GDB: "-debugger-tuning=gdb"
|
||||
// G_LLDB: "-debugger-tuning=lldb"
|
||||
// G_SCE: "-debugger-tuning=sce"
|
||||
// G_DBX: "-debugger-tuning=dbx"
|
||||
//
|
||||
// G_NOTUNING: "-cc1"
|
||||
// G_NOTUNING-NOT: "-debugger-tuning="
|
||||
|
|
|
@ -105,10 +105,11 @@ namespace llvm {
|
|||
/// in DwarfDebug; if a given feature has a more specific command-line option,
|
||||
/// that option should take precedence over the tuning.
|
||||
enum class DebuggerKind {
|
||||
Default, // No specific tuning requested.
|
||||
GDB, // Tune debug info for gdb.
|
||||
LLDB, // Tune debug info for lldb.
|
||||
SCE // Tune debug info for SCE targets (e.g. PS4).
|
||||
Default, ///< No specific tuning requested.
|
||||
GDB, ///< Tune debug info for gdb.
|
||||
LLDB, ///< Tune debug info for lldb.
|
||||
SCE, ///< Tune debug info for SCE targets (e.g. PS4).
|
||||
DBX ///< Tune debug info for dbx.
|
||||
};
|
||||
|
||||
/// Enable abort calls when global instruction selection fails to lower/select
|
||||
|
|
Loading…
Reference in New Issue