diff options
author | Eric Christopher <echristo@gmail.com> | 2013-04-10 21:30:40 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2013-04-10 21:30:40 +0000 |
commit | a75018aebaaf2e046d57327acc6734cba6ae7e5d (patch) | |
tree | 1f3b637252bb9fd9e5f3f3f91525cb6a67f29d3c /clang | |
parent | f2d396439aeca11931de3d29eaf423ffefd47f70 (diff) | |
download | bcm5719-llvm-a75018aebaaf2e046d57327acc6734cba6ae7e5d.tar.gz bcm5719-llvm-a75018aebaaf2e046d57327acc6734cba6ae7e5d.zip |
For split dwarf we should also run the objcopy action if we're
just assembling a file and have passed the option.
llvm-svn: 179218
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 8 | ||||
-rw-r--r-- | clang/test/Driver/split-debug.s | 21 |
2 files changed, 29 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 253c2dc7a1f..808071cd3ba 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -3671,6 +3671,14 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = getToolChain().getDriver().getClangProgramPath(); C.addCommand(new Command(JA, *this, Exec, CmdArgs)); + + // Handle the debug info splitting at object creation time if we're + // creating an object. + // TODO: Currently only works on linux with newer objcopy. + if (Args.hasArg(options::OPT_gsplit_dwarf) && + (getToolChain().getTriple().getOS() == llvm::Triple::Linux)) + SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, + SplitDebugName(Args, Inputs)); } void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA, diff --git a/clang/test/Driver/split-debug.s b/clang/test/Driver/split-debug.s new file mode 100644 index 00000000000..d5f077af134 --- /dev/null +++ b/clang/test/Driver/split-debug.s @@ -0,0 +1,21 @@ +// Check that we split debug output properly +// +// REQUIRES: asserts +// RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -c -### %s 2> %t +// RUN: FileCheck -check-prefix=CHECK-ACTIONS < %t %s +// +// CHECK-ACTIONS: objcopy{{.*}}--extract-dwo{{.*}}"split-debug.dwo" +// CHECK-ACTIONS: objcopy{{.*}}--strip-dwo{{.*}}"split-debug.o" + + +// RUN: %clang -target x86_64-macosx -gsplit-dwarf -c -### %s 2> %t +// RUN: FileCheck -check-prefix=CHECK-NO-ACTIONS < %t %s +// +// CHECK-NO-ACTIONS-NOT: -split-dwarf + + +// RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -o Bad.x -### %s 2> %t +// RUN: FileCheck -check-prefix=CHECK-BAD < %t %s +// +// CHECK-BAD-NOT: "Bad.dwo" + |