From 708d72a33de05579ba5ca1c22eeea92d1e47a9ee Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Wed, 10 Apr 2013 21:30:40 +0000 Subject: [PATCH] For split dwarf we should also run the objcopy action if we're just assembling a file and have passed the option. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179218 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 8 ++++++++ test/Driver/split-debug.s | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 test/Driver/split-debug.s diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 253c2dc7a1..808071cd3b 100644 --- a/lib/Driver/Tools.cpp +++ b/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/test/Driver/split-debug.s b/test/Driver/split-debug.s new file mode 100644 index 0000000000..d5f077af13 --- /dev/null +++ b/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" + -- 2.40.0