[scan-build] [Patch] Compiler call interceptor for Linux
Aleksei Sidorin
a.sidorin at samsung.com
Sun May 18 23:20:33 PDT 2014
Hello Laszlo,
Thank you for your reply.
Can you check its work with armel-based chroots, for example? I set up
armel-VM root dir via debootstrap, installed bear into VM and tried to
compile a hello-world source with bear running both inside and outside
of sandbox. When I ran it inside the sandbox, I got an empty log ("[]").
When I ran it outside the sandbox, I got an error:
bear: connect: No such file or directory
I used Bear 1.4 from Debian Sid/Ubuntu 14.04 repos.
Do you have any ideas how to use it with non-x86/x86_64 based VMs?
15.05.2014 20:00, Laszlo Nagy пишет:
> hi Aleksei,
>
> i did an extra check for you, and found that Bear has no issues to run
> inside chroot. if you would call Bear outside of the chroot it will
> have the extra path element to your chroot... (it is still produce a
> usable output, although some post processing would be required. :))
>
> i don't know how would you use osc. and how would you run the
> analyzer/scan-build with osc... if i were you, i might create
> compilation databases with rpmbuild macros (produced by cmake or
> Bear). and use that to run scan-build or any other clang based tool.
> (maybe those could be also rpmbuild macros as well.)
>
> regards,
> Laszlo
>
>
> On Thu, May 15, 2014 at 12:26 PM, Aleksei Sidorin
> <a.sidorin at samsung.com <mailto:a.sidorin at samsung.com>> wrote:
>
> Hello Laszlo,
>
> Thanks, that is interesting.
> I read this in Bear description:
> "The concept behind Bear is to exec the original build command and
> intercept the |exec| calls of the build tool. To achive that Bear
> uses the |LD_PRELOAD| or |DYLD_INSERT_LIBRARIES| mechanisms
> provided by the dynamic linker."
>
> I tried to escape this approach because it can face some problems
> with emulator-based build systems. For example, it can cause
> conflicts of build and interceptor architectures and there may be
> incorrect paths after chroot. If you are familiar with this tool,
> can you check it for correct work with chroot build environments
> (like osc:
> http://en.opensuse.org/openSUSE:Build_Service_Tutorial)? As I
> understand from description, it may have some problems with
> emulator-based build systems.
>
>
>
> 15.05.2014 12:11, Laszlo Nagy пишет:
>> Interesting approach you have showed Aleksei. I had a similar
>> problem, but approached it differently... I wrote a program which
>> intercept the compiler calls and generate a compilation database.
>> (you can generate it from cmake files) That tool is called bear
>> <https://github.com/rizsotto/Bear>, and it works on
>> linux/FreeBSD/OS X as well... And with the rewrite of scan-build
>> wanted to extend the current functionality to use the compilation
>> database (beside to work with the current environment based
>> approach)... At this moment I still work on the ccc-analyzer
>> implementation in python... Алексей Климов and Sylvestre Ledru in
>> the frame of a GSoC also wanted to rewrite the scan-build part.
>>
>>
>> On Tue, May 13, 2014 at 6:01 PM, Jordan Rose
>> <jordan_rose at apple.com <mailto:jordan_rose at apple.com>> wrote:
>>
>> [+cfe-commits again, -cfe-dev]
>>
>> Interested yes, but unfortunately not all of the people
>> involved in the analyzer are using Linux systems. (I'm on OS
>> X.) I've CC'd a few other recent contributors to the
>> analyzer, but I can't remember if they are familiar with and
>> have access to Linux systems either. (Laszlo in particular is
>> attempting to rewrite scan-build in Python, for more
>> uniformity with the rest of LLVM, so this is the sort of
>> thing he'd want to stay up-to-date about.)
>>
>> Sorry for not being so responsive here,
>> Jordan
>>
>>
>> On May 13, 2014, at 8:47 , Aleksei Sidorin
>> <a.sidorin at samsung.com <mailto:a.sidorin at samsung.com>> wrote:
>>
>> > Hello again,
>> >
>> > I sent a message to cfe-commits mailing list, but nobody
>> answered. This task is listed in open projects. Is anybody
>> interested in this interceptor?
>> >
>> > Link to review: http://reviews.llvm.org/D3608
>> >
>> > 29.04.2014 09:38, Aleksei Sidorin:
>> >> 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
>> >
>>
>>
>
>
> --
> Best regards,
> Aleksei Sidorin
> Software Engineer,
> IMSWL-IMCG, SRR, Samsung Electronics
>
>
--
Best regards,
Aleksei Sidorin
Software Engineer,
IMSWL-IMCG, SRR, Samsung Electronics
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140519/e5bbc4fc/attachment.html>
More information about the cfe-commits
mailing list