[scan-build] [Patch] Compiler call interceptor for Linux
Aleksei Sidorin
a.sidorin at samsung.com
Mon Apr 28 22:38:41 PDT 2014
Hello,
This patch enables interception of compiler calls without replacement of
environment variables. It uses strace (v.4.8) to compute root directory
of processes (in case of chroot), working directory, process name and
its environment variables and tries to guess some header directories.
This approach works well with Android and some build systems like OBS
(local build with osc client) and GBS (checked on Tizen). This behaviour
can be enabled with --use-interceptor option. If this option is not
specified, old behaviour is used (this patch was made to not break it).
Interceptor uses process pool to analyze multiple files at a time. Pool
size can be specified with NUM_PROCESSES environment variable. Default
pool size is a number of processors.
If we have a trace of build (that may be created with `strace -f -v -s
1000000 -o $trace_file_name -e
trace=vfork,fork,clone,execve,chdir,chroot -e signal= $build_cmd`), it
can be passed via TRACE_FILE environment variable. This will not launch
parallel build (analysis only). If option is not specified, temporary
pipe is used, analyzer and compiler are executed in parallel.
-additional-arg option was also added to pass additional parameters to
analyzer. Sometimes scan-build cannot determine all required parameters
if some custom toolchain is used.
Interceptor was tested on Ubuntu 12.04 and 14.04 with strace 4.8. Strace
v.4.6 is known to have some issues with interception of gcc.
--
Best regards,
Aleksei Sidorin
Software Engineer,
IMSWL-IMCG, SRR, Samsung Electronics
-------------- next part --------------
A non-text attachment was scrubbed...
Name: interceptor.patch
Type: text/x-patch
Size: 17282 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140429/cd006406/attachment.bin>
More information about the cfe-commits
mailing list