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