r244400 - [Static Analyzer] Add --analyzer-target option to scan-build.
Ted Kremenek via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 8 10:58:47 PDT 2015
Author: kremenek
Date: Sat Aug 8 12:58:47 2015
New Revision: 244400
URL: http://llvm.org/viewvc/llvm-project?rev=244400&view=rev
Log:
[Static Analyzer] Add --analyzer-target option to scan-build.
When interposing on a compiler doing cross-compilation, scan-build
does not infer the target triple needed to pass to clang for
doing static analysis. The --analyzer-target option allows one
to manually specify the target triple used during static analysis
(and only static analysis) for such cases.
Patch by Honggyu Kim!
Reviewed in http://reviews.llvm.org/D10356.
Modified:
cfe/trunk/tools/scan-build/ccc-analyzer
cfe/trunk/tools/scan-build/scan-build
Modified: cfe/trunk/tools/scan-build/ccc-analyzer
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/scan-build/ccc-analyzer?rev=244400&r1=244399&r2=244400&view=diff
==============================================================================
--- cfe/trunk/tools/scan-build/ccc-analyzer (original)
+++ cfe/trunk/tools/scan-build/ccc-analyzer Sat Aug 8 12:58:47 2015
@@ -68,6 +68,7 @@ my $Clang;
my $DefaultCCompiler;
my $DefaultCXXCompiler;
my $IsCXX;
+my $AnalyzerTarget;
# If on OSX, use xcrun to determine the SDK root.
my $UseXCRUN = 0;
@@ -104,6 +105,8 @@ else {
$IsCXX = 0
}
+$AnalyzerTarget = $ENV{'CLANG_ANALYZER_TARGET'};
+
##===----------------------------------------------------------------------===##
# Cleanup.
##===----------------------------------------------------------------------===##
@@ -245,6 +248,10 @@ sub Analyze {
push @Args, "-Xclang", "-analyzer-viz-egraph-ubigraph";
}
+ if (defined $AnalyzerTarget) {
+ push @Args, "-target", $AnalyzerTarget;
+ }
+
my $AnalysisArgs = GetCCArgs($HtmlDir, "--analyze", \@Args);
@CmdArgs = @$AnalysisArgs;
}
Modified: cfe/trunk/tools/scan-build/scan-build
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/scan-build/scan-build?rev=244400&r1=244399&r2=244400&view=diff
==============================================================================
--- cfe/trunk/tools/scan-build/scan-build (original)
+++ cfe/trunk/tools/scan-build/scan-build Sat Aug 8 12:58:47 2015
@@ -1145,10 +1145,21 @@ OPTIONS:
scan-build to use a specific compiler for *compilation* then you can use
this option to specify a path to that compiler.
+ If the given compiler is a cross compiler, you may also need to provide
+ --analyzer-target option to properly analyze the source code because static
+ analyzer runs as if the code is compiled for the host machine by default.
+
--use-c++ [compiler path]
--use-c++=[compiler path]
- This is the same as "-use-cc" but for C++ code.
+ This is the same as "--use-cc" but for C++ code.
+
+ --analyzer-target [target triple name for analysis]
+ --analyzer-target=[target triple name for analysis]
+
+ This provides target triple information to clang static analyzer.
+ It only changes the target for analysis but doesn't change the target of a
+ real compiler given by --use-cc and --use-c++ options.
-v
@@ -1462,6 +1473,24 @@ while (@ARGV) {
next;
}
+ if ($arg =~ /^--analyzer-target(=(.+))?$/) {
+ shift @ARGV;
+ my $AnalyzerTarget;
+
+ if (!defined $2 || $2 eq "") {
+ if (!@ARGV) {
+ DieDiag("'--analyzer-target' option requires a target triple name.\n");
+ }
+ $AnalyzerTarget = shift @ARGV;
+ }
+ else {
+ $AnalyzerTarget = $2;
+ }
+
+ $ENV{"CLANG_ANALYZER_TARGET"} = $AnalyzerTarget;
+ next;
+ }
+
if ($arg eq "-v") {
shift @ARGV;
$Verbose++;
More information about the cfe-commits
mailing list