diff options
author | Alexey Samsonov <samsonov@google.com> | 2012-06-21 08:22:39 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2012-06-21 08:22:39 +0000 |
commit | 7f3260764a3614e22dcf24d71c1155f14a9b4e6e (patch) | |
tree | 52a9a2c573e74ae7aaee25bcde138863ef107d50 /lib/Driver/Tools.cpp | |
parent | 81a5641e5f446d0e879595d3659e76845c7a9410 (diff) |
Improve support for -g options accepted by Clang:
1. Accept flags -g[0-3], -ggdb[0-3], -gdwarf-[2-4] and collapse them to simple -g (except -g0/-ggdb0).
2. Produce driver error on unsupported formats (-gcoff, -gstabs, -gvms) and options (-gtoggle).
3. Recognize and ignore flags -g[no-]strict-dwarf, -g[no-]record-gcc-switches.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158906 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index e152b93121..27a222a840 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1910,21 +1910,19 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // Use the last option from "-g" group. "-gline-tables-only" is // preserved, all other debug options are substituted with "-g". - // FIXME: We should eventually do the following: - // 1) collapse gdb and dwarf variations to -g (as we do now); - // 2) support things like -gtoggle; - // 3) ignore flag options like -gstrict-dwarf or -grecord-gcc-switches; - // 4) produce a driver error on unsupported formats - // (-gstabs, -gcoff, -gvms etc.) Args.ClaimAllArgs(options::OPT_g_Group); if (Arg *A = Args.getLastArg(options::OPT_g_Group)) { if (A->getOption().matches(options::OPT_gline_tables_only)) { CmdArgs.push_back("-gline-tables-only"); - } else if (!A->getOption().matches(options::OPT_g0)) { + } else if (!A->getOption().matches(options::OPT_g0) && + !A->getOption().matches(options::OPT_ggdb0)) { CmdArgs.push_back("-g"); } } + // We ignore flags -gstrict-dwarf and -grecord-gcc-switches for now. + Args.ClaimAllArgs(options::OPT_g_flags_Group); + Args.AddAllArgs(CmdArgs, options::OPT_ffunction_sections); Args.AddAllArgs(CmdArgs, options::OPT_fdata_sections); |