Search code examples
clinuxgccsplintthread-local-storage

Splint barfs on __thread, which is part of C99


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?


Solution

  • 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.