[PATCH] scan-build: Add --triple option to scan-build

Honggyu Kim hong.gyu.kim at lge.com
Sun Jun 7 03:17:14 PDT 2015


Currently scan-build cannot pass any triple information to clang. This
makes analysis failure when the build script has target specific
compiler flags.
This patch adds --triple option to support analysis for other targets.

 --triple [target triple name]
 --triple=[target triple name]

   This provides target triple information to clang.

Signed-off-by: Honggyu Kim <hong.gyu.kim at lge.com>
---
 tools/scan-build/ccc-analyzer |   10 ++++++++++
 tools/scan-build/scan-build   |   23 +++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/tools/scan-build/ccc-analyzer b/tools/scan-build/ccc-analyzer
index 4549b29..5d9eac0 100755
--- a/tools/scan-build/ccc-analyzer
+++ b/tools/scan-build/ccc-analyzer
@@ -41,6 +41,7 @@ my $Clang;
 my $DefaultCCompiler;
 my $DefaultCXXCompiler;
 my $IsCXX;
+my $Triple;
 
 # If on OSX, use xcrun to determine the SDK root.
 my $UseXCRUN = 0;
@@ -77,6 +78,9 @@ else {
   $IsCXX = 0
 }
 
+$Triple = $ENV{'CLANG_TRIPLE'};
+#if (!defined $Triple || ! -x $Triple) { $Triple = ''; }
+
 ##===----------------------------------------------------------------------===##
 # Cleanup.
 ##===----------------------------------------------------------------------===##
@@ -237,6 +241,12 @@ sub Analyze {
   my @PrintArgs;
   my $dir;
 
+  if (!defined $Triple || ! -x $Triple) {
+  else
+    push @CmdArgs, "-triple";
+    push @CmdArgs, $Triple;
+  }
+
   if ($Verbose) {
     $dir = getcwd();
     print STDERR "\n[LOCATION]: $dir\n";
diff --git a/tools/scan-build/scan-build b/tools/scan-build/scan-build
index d52d8f5..ea18536 100755
--- a/tools/scan-build/scan-build
+++ b/tools/scan-build/scan-build
@@ -1150,6 +1150,11 @@ OPTIONS:
 
    This is the same as "-use-cc" but for C++ code.
 
+ --triple [target triple name]
+ --triple=[target triple name]
+
+   This provides target triple information to clang.
+
  -v
 
    Enable verbose output from scan-build. A second and third '-v' increases
@@ -1479,6 +1484,24 @@ while (@ARGV) {
     next;
   }
 
+  if ($arg =~ /^--triple(=(.+))?$/) {
+    shift @ARGV;
+    my $triple;
+
+    if (!defined $2 || $2 eq "") {
+      if (!@ARGV) {
+        DieDiag("'--triple' option requires a triple name.\n");
+      }
+      $triple = shift @ARGV;
+    }
+    else {
+      $triple = $2;
+    }
+
+    $ENV{"CLANG_TRIPLE"} = $triple;
+    next;
+  }
+
   if ($arg eq "-v") {
     shift @ARGV;
     $Verbose++;
-- 
1.7.9.5




More information about the cfe-commits mailing list