diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-12-18 02:43:17 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-12-18 02:43:17 +0000 |
commit | 24c7f5efc5c13519ac9d2ada4930f07cfa65b4d0 (patch) | |
tree | dd76d50e850d77fa74ac80931e2c2d04ff1aec3e /clang/lib/Driver/Tools.cpp | |
parent | 916fec41fb3e0645a9e2bc5e36458391ba79550d (diff) | |
download | bcm5719-llvm-24c7f5efc5c13519ac9d2ada4930f07cfa65b4d0.tar.gz bcm5719-llvm-24c7f5efc5c13519ac9d2ada4930f07cfa65b4d0.zip |
Add -dwarf-debug-flags, which provides a way to embed the cc1 level options used
to compile a translation unit into the debug info for that file.
- Used by parts of Darwin build process to check compiler flags, etc.
- <rdar://problem/7256886> clang does not emit AT_APPLE_flags
llvm-svn: 91661
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 55008e3bbb3..d3c1b310ede 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1109,6 +1109,20 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "clang")); + + // Optionally embed the -cc1 level arguments into the debug info, for build + // analysis. + if (getToolChain().UseDwarfDebugFlags()) { + llvm::SmallString<256> Flags; + Flags += Exec; + for (unsigned i = 0, e = CmdArgs.size(); i != e; ++i) { + Flags += " "; + Flags += CmdArgs[i]; + } + CmdArgs.push_back("-dwarf-debug-flags"); + CmdArgs.push_back(Args.MakeArgString(Flags.str())); + } + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); // Explicitly warn that these options are unsupported, even though |