views:

64

answers:

2

Running splint

matt@stanley:~/cpfs$ splint -paramuse +gnuextensions cpfs.c

Halts on this line:

__thread int cpfs_errno;

With a parse error:

cpfs.c:127:13: Parse Error: Non-function declaration: __thread :
               int. (For help on parse errors, see splint -help parseerrors.)
*** Cannot continue.

Checking the documentation and gargle comes up with no mention of __thread. However __thread is part of the C99 spec, which Splint allegedly supports (insert reference).

What's going on here? How can I get splint to recognize __thread?

+4  A: 

__thread is not in C99. It is a GNU C extension - the section you have linked to is within Extensions to the C Language Family. It describes the extension in terms of changes to the C99 standard, presumably as preparation to have it adopted in a future revision of the standard.

caf
Oh right, thanks!
Matt Joiner
+2  A: 

From the splint FAQ, just add -D__thread= to the splint command line. This will have the effect of removing the __thread keyword from the code while splint is examining it. I'm assuming here that splint is not particularly thread aware, and wouldn't be able to use the information that was conveyed to GCC by the keyword.

RBerteig