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

2016-10-17 Thread Adrian Prantl via cfe-commits
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.robin...@sony.com> wrote:
> 
> 
> 
>> -Original Message-
>> From: cfe-commits [mailto:cfe-commits-boun...@lists.llvm.org] On Behalf Of
>> Adrian Prantl via cfe-commits
>> Sent: Monday, October 17, 2016 12:36 PM
>> To: cfe-commits@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=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.
>> 
>> 
>> 
>> 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=284415=284416
>> =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 , ArgStringList
>> ,
>>   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=284415=284416
>> 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 ,
>>   llvm::opt::ArgStringList ) 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=284415=284416=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: &quo

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

2016-10-17 Thread Robinson, Paul via cfe-commits


> -Original Message-
> From: cfe-commits [mailto:cfe-commits-boun...@lists.llvm.org] On Behalf Of
> Adrian Prantl via cfe-commits
> Sent: Monday, October 17, 2016 12:36 PM
> To: cfe-commits@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=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.
> 
> 
> 
> 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=284415=284416
> =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 , ArgStringList
> ,
>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=284415=284416
> 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 ,
>llvm::opt::ArgStringList ) 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=284415=284416=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=284415=284416=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 \
>

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

2016-10-17 Thread Adrian Prantl via cfe-commits
Author: adrian
Date: Mon Oct 17 14:36:18 2016
New Revision: 284416

URL: http://llvm.org/viewvc/llvm-project?rev=284416=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.



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=284415=284416=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 , ArgStringList ,
   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=284415=284416=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 ,
   llvm::opt::ArgStringList ) 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=284415=284416=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
 // 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=284415=284416=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