[cfe-dev] scan-build on RTEMS (try #1)
Joel Sherrill
joel.sherrill at oarcorp.com
Tue Sep 21 04:27:47 PDT 2010
On 09/20/2010 12:28 PM, Ted Kremenek wrote:
> Hi Joel,
>
> In the output from scan-build, did you see any output that looked like:
>
> ANALYZE: ....
>
> This is an indicator that the analyzer is analyzing a specific function in your code.
Not in that run. I tinkered a bit and managed to get output
with some issues on the plane today. Using the --use-cc
and --use-c++ options improved things. After a normal
configure of RTEMS to target sparc/sis (simulator in gdb),
I ran this.
scan-build -o ${OUTPUTDIR} --experimental-checks \
--use-cc ${RTEMS_TARGET}-gcc \
--use-c++ ${RTEMS_TARGET}-g++ \
make
where RTEMS_TARGET was sparc-rtems4.11
This handled part of RTEMS but it appears there are a few clang issues
preventing it from being able to analyse all of the RTEMS source.
The first is this which looks like a quoted string on the command
line is getting mangled:
/usr/lib/clang-analyzer/scan-build/ccc-analyzer
-DPACKAGE_NAME=\"rtems-c-src\" -DPACKAGE_TARNAME=\"rtems-c-src\"
-DPACKAGE_VERSION=\"4.10.99.0\" -DPACKAGE_STRING=\"rtems-c-src\
4.10.99.0\" -DPACKAGE_BUGREPORT=\"http://www.rtems.org/bugzilla\"
-DPACKAGE_URL=\"\" -DCPU_U32_FIX=1 -I.
-I/home/joel/rtems-4.11-work/build/rtems/c/src/optman
-I../../../sis/lib/include -mcpu=cypress -O2 -g -Wall
-Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -MT
rtems/no_timer_rel-no-timer.o -MD -MP -MF
rtems/.deps/no_timer_rel-no-timer.Tpo -c -o
rtems/no_timer_rel-no-timer.o `test -f 'rtems/no-timer.c' || echo
'/home/joel/rtems-4.11-work/build/rtems/c/src/optman/'`rtems/no-timer.c
error: error reading '4.10.99.0"'
In file included from <built-in>:109:
<command line>:5:24: error: missing terminating '"' character
#define PACKAGE_STRING "rtems-c-src
^
This is from this -D option...
-DPACKAGE_STRING=\"rtems-c-src\ 4.10.99.0\"
Notice that there is an embedded space in the right hand side of the
-DPACKAGE_STRING
which is causing the parsing of the command line to break.
The second problem is that native .h files are being picked up in a
strictly cross
(x86-linux -> sparc-rtems) build.
In file included from ../../../sis/lib/include/sys/ioccom.h:91:
../../../sis/lib/include/rtems/bsd/sys/cdefs.h:63:9: warning: '__CONCAT'
macro redefined [-pedantic]
#define __CONCAT(x,y) __CONCAT1(x,y)
^
In file included from
/home/joel/rtems-4.11-work/build/rtems/c/src/libchip/serial/ns16550.c:27:
In file included from /usr/include/stdlib.h:25:
In file included from /usr/include/features.h:361:
/usr/include/sys/cdefs.h:80:9: note: previous definition is here
#define __CONCAT(x,y) x ## y
Finally RTEMS has some standard multilib libraries and headers and
some that are board (e.g. BSP) dependent. We use a -B... option
to gcc. So -BDIR adds DIR/include to the include path. The analyser
seems to be not recognizing that option. So it can't find the BSP
dependent .h files.
Of the ~100K SLOC of RTEMS, it analysed, we got 47 issues
(~75 with experimental turned on). There is another ~600K of
code that it can't analyse because the test suite requires -B
to work.
I can provide any output, scripts, help, etc to reproduce and
track down the issues I encountered. I would like to get to
the point where we ran the analyzer as part of our automated
build process on RTEMS.
Thanks.
--joel
> On Sep 19, 2010, at 1:19 PM, Joel Sherrill wrote:
>
>> Hi,
>>
>> I configured RTEMS and then ran scan-build using a
>> modified version of the script we use to run Coverity
>> Scan. It was:
>>
>> scan-build -o ${BASE}/output make>${BASE}/b.log 2>&1
>>
>> It looks like everything built OK but this was these
>> were the only messages from scan-build in the b.log file:
>>
>> scan-build: 'clang' executable not found in
>> '/usr/lib/clang-analyzer/scan-build/bin'.
>> scan-build: Using 'clang' from path: /usr/bin/clang
>> ......
>> scan-build: Removing directory
>> '/home/joel/rtems-4.11-work/build/gcc-testing/rtems/clang-analyzer/b-clang-sparc-rtems4.11/output/2010-09-19-1'
>> because it contains no reports.
>>
>> Does this mean this part of the RTEMS source was clean
>> on the first run?
>>
>> FWIW this is the subset we run Coverity Scan on and it has
>> ~95 issues with Coverity Scan.
>>
>> --joel
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
--
Joel Sherrill, Ph.D. Director of Research& Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the cfe-dev
mailing list