[PATCH][analyzer] Pass original command line arguments to compilers.

Anton Yartsev anton.yartsev at gmail.com
Sat Oct 18 01:55:55 PDT 2014


As I was explained in the MSYS community the MSYS utils are dependent on 
the MSYS runtime and their usage from cmd.exe is unsupported. "You are 
welcome to try it, but if you observe odd behaviour, such as here, then 
you are out of luck".

I performed several tests and found out that proper processing is 
performed with either running scan-build with MSYS make in the following 
way:
scan-build ... sh -c "make"
or with using mingw32-make and removal of MSYS from PATH (otherwise 
mingw32-make tries to use MSYS utils).

from the MinGW FAQ:
"What's the difference between make and mingw32-make?
The "native" (i.e.: MSVCRT dependent) port of make is lacking in some 
functionality and has modified functionality due to the lack of POSIX on 
Win32. There also exists a version of make in the MSYS distribution that 
is dependent on the MSYS runtime. This port operates more as make was 
intended to operate and gives less headaches during execution. Based on 
this, the MinGW developers/maintainers/packagers decided it would be 
best to rename the native version so that both the "native" version and 
the MSYS version could be present at the same time without file name 
collision."

Is it OK to add the recommendations to the scan-build: running the 
analyzer from the command line 
<http://clang-analyzer.llvm.org/scan-build.html#scanbuild_forwindowsusers>, 
"For Windows Users" section?

> Sorry, that's not a solution.
>
>> The goal of the patch is to pass unmodified arguments to compilers as 
>> they were written in the makefile. Arguments taken from @ARGV may be 
>> modified by the system and Perl, at least quotes and backslash 
>> sequences are processed. Using this arguments may cause compiler 
>> errors. Sometimes system+Perl corrupt arguments completely, for 
>> example, using perl from MSYS 1.0 on Windows I got:
>> Line from makefile:
>>    $(CXX) -DMACRO=\"string\" file.cpp "asd dff ghh" -o file.exe
>>
>> arguments red from @ARGV by c++-analyzer:
>>   "-DMACRO=\string\" file.cpp -o file.exe"
>>
>> Please review!
>>

-- 
Anton

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141018/0ddb9036/attachment.html>


More information about the cfe-commits mailing list