r284416 - Driver/Darwin: Set the DWARF version based on the deployment target.

Adrian Prantl via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 17 13:24:19 PDT 2016


Thanks for noticing! I improved the test in r284420 by separating the check for debug info kind and dwarf version.

-- adrian
> On Oct 17, 2016, at 1:11 PM, Robinson, Paul <paul.robinson at sony.com> wrote:
> 
> 
> 
>> -----Original Message-----
>> From: cfe-commits [mailto:cfe-commits-bounces at lists.llvm.org] On Behalf Of
>> Adrian Prantl via cfe-commits
>> Sent: Monday, October 17, 2016 12:36 PM
>> To: cfe-commits at lists.llvm.org
>> Subject: r284416 - Driver/Darwin: Set the DWARF version based on the
>> deployment target.
>> 
>> Author: adrian
>> Date: Mon Oct 17 14:36:18 2016
>> New Revision: 284416
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=284416&view=rev
>> Log:
>> Driver/Darwin: Set the DWARF version based on the deployment target.
>> 
>> System utilities such as atos only support DWARF 4 on OS X 10.11+ and
>> iOS 9+. We thus want to enable DWARF 4 only if the deployment target
>> has a recent enough operating system version and use DWARF 2 for older
>> systems.
>> 
>> <rdar://problem/28766743>
>> 
>> Modified:
>>    cfe/trunk/lib/Driver/ToolChains.cpp
>>    cfe/trunk/lib/Driver/ToolChains.h
>>    cfe/trunk/test/Driver/clang-g-opts.c
>>    cfe/trunk/test/Driver/debug-options.c
>> 
>> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
>> URL: http://llvm.org/viewvc/llvm-
>> project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=284416&r1=284415&r2=284416
>> &view=diff
>> ==========================================================================
>> ====
>> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
>> +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Oct 17 14:36:18 2016
>> @@ -289,6 +289,14 @@ void DarwinClang::AddLinkARCArgs(const A
>>   CmdArgs.push_back(Args.MakeArgString(P));
>> }
>> 
>> +unsigned DarwinClang::GetDefaultDwarfVersion() const {
>> +  // Default to use DWARF 2 on OS X 10.10 / iOS 8 and lower.
>> +  if ((isTargetMacOS() && isMacosxVersionLT(10, 11)) ||
>> +      (isTargetIOSBased() && isIPhoneOSVersionLT(9)))
>> +    return 2;
>> +  return 4;
>> +}
>> +
>> void MachO::AddLinkRuntimeLib(const ArgList &Args, ArgStringList
>> &CmdArgs,
>>                               StringRef DarwinLibName, bool AlwaysLink,
>>                               bool IsEmbedded, bool AddRPath) const {
>> 
>> Modified: cfe/trunk/lib/Driver/ToolChains.h
>> URL: http://llvm.org/viewvc/llvm-
>> project/cfe/trunk/lib/Driver/ToolChains.h?rev=284416&r1=284415&r2=284416&v
>> iew=diff
>> ==========================================================================
>> ====
>> --- cfe/trunk/lib/Driver/ToolChains.h (original)
>> +++ cfe/trunk/lib/Driver/ToolChains.h Mon Oct 17 14:36:18 2016
>> @@ -585,7 +585,7 @@ public:
>>   void AddLinkARCArgs(const llvm::opt::ArgList &Args,
>>                       llvm::opt::ArgStringList &CmdArgs) const override;
>> 
>> -  unsigned GetDefaultDwarfVersion() const override { return 4; }
>> +  unsigned GetDefaultDwarfVersion() const override;
>>   // Until dtrace (via CTF) and LLDB can deal with distributed debug
>> info,
>>   // Darwin defaults to standalone/full debug info.
>>   bool GetDefaultStandaloneDebug() const override { return true; }
>> 
>> Modified: cfe/trunk/test/Driver/clang-g-opts.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang-g-
>> opts.c?rev=284416&r1=284415&r2=284416&view=diff
>> ==========================================================================
>> ====
>> --- cfe/trunk/test/Driver/clang-g-opts.c (original)
>> +++ cfe/trunk/test/Driver/clang-g-opts.c Mon Oct 17 14:36:18 2016
>> @@ -4,7 +4,7 @@
>> 
>> // Assert that the toolchains which should default to a lower Dwarf
>> version do so.
>> // RUN: %clang -### -S %s -g -target x86_64-apple-darwin 2>&1 \
>> -// RUN:             | FileCheck --check-prefix=CHECK-WITH-G-STANDALONE %s
>> +// RUN:             | FileCheck --check-prefix=CHECK-WITH-G-DWARF2 %s
> 
> This seems to weaken the test unnecessarily.
> That is, "G-STANDALONE" should still work and checks more things.
> --paulr
> 
>> // RUN: %clang -### -S %s -g -target i686-pc-openbsd 2>&1 \
>> // RUN:             | FileCheck --check-prefix=CHECK-WITH-G-DWARF2 %s
>> // RUN: %clang -### -S %s -g -target x86_64-pc-freebsd10.0 2>&1 \
>> @@ -36,4 +36,4 @@
>> // CHECK-WITH-G-DWARF2: "-dwarf-version=2"
>> 
>> // CHECK-WITH-G-STANDALONE: "-debug-info-kind=standalone"
>> -// CHECK-WITH-G-STANDALONE: "-dwarf-version=4"
>> +// CHECK-WITH-G-STANDALONE: "-dwarf-version=2"
>> 
>> Modified: cfe/trunk/test/Driver/debug-options.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-
>> options.c?rev=284416&r1=284415&r2=284416&view=diff
>> ==========================================================================
>> ====
>> --- cfe/trunk/test/Driver/debug-options.c (original)
>> +++ cfe/trunk/test/Driver/debug-options.c Mon Oct 17 14:36:18 2016
>> @@ -19,17 +19,31 @@
>> // RUN:             | FileCheck -check-prefix=G -check-prefix=G_SCE %s
>> 
>> // RUN: %clang -### -c -g %s -target x86_64-apple-darwin 2>&1 \
>> -// RUN:             | FileCheck -check-prefix=G_DARWIN -check-
>> prefix=G_LLDB %s
>> -// RUN: %clang -### -c -g2 %s -target x86_64-apple-darwin 2>&1 \
>> -// RUN:             | FileCheck -check-prefix=G_DARWIN %s
>> -// RUN: %clang -### -c -g3 %s -target x86_64-apple-darwin 2>&1 \
>> -// RUN:             | FileCheck -check-prefix=G_DARWIN %s
>> -// RUN: %clang -### -c -ggdb %s -target x86_64-apple-darwin 2>&1 \
>> -// RUN:             | FileCheck -check-prefix=G_DARWIN -check-
>> prefix=G_GDB %s
>> -// RUN: %clang -### -c -ggdb1 %s -target x86_64-apple-darwin 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 -check-
>> prefix=G_LLDB %s
>> +// RUN: %clang -### -c -g %s -target x86_64-apple-darwin16 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 -check-
>> prefix=G_LLDB %s
>> +// RUN: %clang -### -c -g2 %s -target x86_64-apple-darwin16 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> +// RUN: %clang -### -c -g3 %s -target x86_64-apple-darwin16 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> +// RUN: %clang -### -c -ggdb %s -target x86_64-apple-darwin16 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 -check-
>> prefix=G_GDB %s
>> +// RUN: %clang -### -c -ggdb1 %s -target x86_64-apple-darwin16 2>&1 \
>> // RUN:             | FileCheck -check-prefix=GLTO_ONLY %s
>> -// RUN: %clang -### -c -ggdb3 %s -target x86_64-apple-darwin 2>&1 \
>> -// RUN:             | FileCheck -check-prefix=G_DARWIN %s
>> +// RUN: %clang -### -c -ggdb3 %s -target x86_64-apple-darwin16 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> +// RUN: %clang -### -c -g %s -target x86_64-apple-macosx10.11 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> +// RUN: %clang -### -c -g %s -target x86_64-apple-macosx10.10 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 %s
>> +// RUN: %clang -### -c -g %s -target armv7-apple-ios9.0 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> +// RUN: %clang -### -c -g %s -target armv7-apple-ios8.0 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 %s
>> +// RUN: %clang -### -c -g %s -target armv7k-apple-watchos 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> +// RUN: %clang -### -c -g %s -target arm64-apple-tvos9.0 2>&1 \
>> +// RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> 
>> // RUN: %clang -### -c -g %s -target x86_64-pc-freebsd10.0 2>&1 \
>> // RUN:             | FileCheck -check-prefix=G_GDB %s
>> @@ -75,7 +89,7 @@
>> // RUN:             | FileCheck -check-prefix=GLTO_ONLY_DWARF2 %s
>> // RUN: %clang -### -c -gline-tables-only -g %s -target x86_64-linux-gnu
>> 2>&1 \
>> // RUN:             | FileCheck -check-prefix=G_ONLY %s
>> -// RUN: %clang -### -c -gline-tables-only -g %s -target x86_64-apple-
>> darwin 2>&1 \
>> +// RUN: %clang -### -c -gline-tables-only -g %s -target x86_64-apple-
>> darwin16 2>&1 \
>> // RUN:             | FileCheck -check-prefix=G_STANDALONE_DWARF4 %s
>> // RUN: %clang -### -c -gline-tables-only -g %s -target i686-pc-openbsd
>> 2>&1 \
>> // RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 %s
>> @@ -121,9 +135,6 @@
>> // G: "-cc1"
>> // G: "-debug-info-kind=limited"
>> //
>> -// G_DARWIN: "-cc1"
>> -// G_DARWIN: "-dwarf-version=4"
>> -//
>> // NOG_PS4: "-cc1"
>> // NOG_PS4-NOT "-dwarf-version=
>> // NOG_PS4: "-generate-arange-section"
>> @@ -151,10 +162,6 @@
>> // G_ONLY: "-cc1"
>> // G_ONLY: "-debug-info-kind=limited"
>> //
>> -// G_GDB:  "-debugger-tuning=gdb"
>> -// G_LLDB: "-debugger-tuning=lldb"
>> -// G_SCE:  "-debugger-tuning=sce"
>> -//
>> // These tests assert that "-gline-tables-only" "-g" uses the latter,
>> // but otherwise not caring about the DebugInfoKind.
>> // G_ONLY_DWARF2: "-cc1"
>> @@ -165,6 +172,10 @@
>> // G_STANDALONE_DWARF4: "-debug-info-kind=standalone"
>> // G_STANDALONE_DWARF4: "-dwarf-version=4"
>> //
>> +// G_GDB:  "-debugger-tuning=gdb"
>> +// G_LLDB: "-debugger-tuning=lldb"
>> +// G_SCE:  "-debugger-tuning=sce"
>> +//
>> // This tests asserts that "-gline-tables-only" "-g0" disables debug
>> info.
>> // GLTO_NO: "-cc1"
>> // GLTO_NO-NOT: -debug-info-kind=
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list