Hi Nicholas,

Nicholas Mc Guire (2015/05/17 08:18 +0200):
> 
> Hi !
> 
>  Writing some simple checks for user-space sample code to check that a 
>  read loop has some error checking in it - the read loop should look 
>  something like this:
> 
>         do {
>                 len = read(fd, buff + off, BUFFSIZE);
>                 if (len < 0 && len != -EAGAIN) {
>                         perror("read failed");
>                         exit(-1);
>                 }
>                 off += len;
>         } while (len > 0);

I know it is not relevant for your problem, but the last argumentof the
read system call looks suspiscious to me. I'd rather write BUFFSIZE-of
but perhaps you wrote it that way just to simplify.

> to check this the following cocci spatch was intended 
> 
> <snip>
> virtual report
> virtual org
> 
> @check_open@
> identifier f,retval;
> idexpression int fd;
> idexpression int l;
> idexpression int o;
> idexpression char * b;
> position p;
> @@
> 
> f(...) {
> <+...
>  do {
>  ...
>  l = read@p(fd,b+o,...);
>  if (l < 0 && l != -EAGAIN) {
> ? perror(...);
> (
>   exit(...);
> |
>   return ...;
> )
> }
>  l = l + o;                                                                   
>                             
> } while ( l > 0);
> return retval;
> ...+>
> }
> 
> 
> @script: python@
> p<<check_open.p;
> fn<<check_open.f;
> @@
> print "OK: read loop in %s:%s line %s checking errors" % (p[0].file,fn, 
> p[0].line)
> <snip>
> 
>  spatch --parse-cocci gives no errors and the output looks fine (just the iso
>  expansions basically) - but when run with:
>   spatch --sp-file check_read_loop.cocci open_read_ok.c
>  its giving me:
>   init_defs_builtins: /usr/local/share/coccinelle/standard.h
>   Fatal error: exception Failure("not supported")
> 
> how can I figure out what is "not supported" here ?

just try this:

export OCAMLRUNPARAM=b
And then re-run the spatch that caused the exception. You should get a
backtrace that you can post here.

In case you do not get it, it will probably mean that you have compiled
a native-code version of coccinelle. We will have to get a byte-code one
to be able to have a backtrace.

And by the way, do you really need <+... and ...+> ? Wouldn't two mere
... be enough?

hth,
Sébastien.
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to