Hello,

I'm new to Coccinelle and I've tried to use it on QEMU's version of the
SoftFloat library, but it runs into parse errors:

semantic error two or more data types
 =File "fpu/softfloat.c", line 62, column 37,  charpos = 2995
    around = 'STATUS_PARAM', whole content = void
set_float_rounding_mode(int val STATUS_PARAM)
badcount: 5
bad: #include "softfloat-specialize.h"
bad:
BAD:!!!!! void set_float_rounding_mode(int val STATUS_PARAM)
bad: {
bad:     STATUS(float_rounding_mode) = val;
bad: }

A simplified pseudo-C file to demonstrate this follows.

test.c:
---8<---
#define STATUS_PARAM , C d

uint16
myfunc(A b STATUS_PARAM);

uint16
myfunc(A b STATUS_PARAM)
{
uint16 x;
}
---8<---

Is there any way I can make a patch operate on such functions?

Thanks in advance,

Andreas


$ spatch -version
spatch version 1.0.0-rc7 with Python support and with Str regexp support

$ spatch -parse_c test.c
init_defs_builtins: /usr/share/coccinelle/standard.h

PARSING: test.c
ERROR-RECOV: found sync end of #define, line 1
parsing pass2: try again
ERROR-RECOV: found sync end of #define, line 1
parse error
 = File "test.c", line 1, column 21,  charpos = 21
    around = ',', whole content = #define STATUS_PARAM , C d
badcount: 0
BAD:!!!!! #define STATUS_PARAM , C d
(ONCE) CPP-TYPEDEF: promoting: uint16
(ONCE) CPP-TYPEDEF: promoting: A
(ONCE) CPP-TYPEDEF: promoting: b
ERROR-RECOV: found sync '}' at line 10
parsing pass2: try again
TYPEDEF:_handle_typedef=false. Not normal if dont come from exn
ERROR-RECOV: found sync '}' at line 10
parsing pass3: try again
(ONCE) CPP-MACRO: found known macro = STATUS_PARAM
TYPEDEF:_handle_typedef=false. Not normal if dont come from exn
ERROR-RECOV: found sync '}' at line 10
parsing pass4: try again
TYPEDEF:_handle_typedef=false. Not normal if dont come from exn
ERROR-RECOV: found sync '}' at line 10
semantic error two or more data types
 =File "test.c", line 1, column 21,  charpos = 21
    around = ',', whole content = #define STATUS_PARAM , C d
badcount: 9
BAD:!!!!! #define STATUS_PARAM , C d
bad:
bad: uint16
bad: myfunc(A b STATUS_PARAM);
bad:
bad: uint16
bad: myfunc(A b STATUS_PARAM)
bad: {
bad: uint16 x;
bad: }
TYPEDEF:_handle_typedef=false. Not normal if dont come from exn
passed:STATUS_PARAM
passed:STATUS_PARAM
-----------------------------------------------------------------------
maybe 10 most problematic tokens
-----------------------------------------------------------------------
C: present in 3 parsing errors
example:

       #define STATUS_PARAM , C d

d: present in 3 parsing errors
example:

       #define STATUS_PARAM , C d

STATUS_PARAM: present in 1 parsing errors
example:

       #define STATUS_PARAM , C d

-----------------------------------------------------------------------
NB total files = 1; perfect = 0; pbs = 1; timeout = 0; =========> 0%
nb good = 1,  nb passed = 2 =========> 200.000000% passed
nb good = 1,  nb bad = 9 =========> 10.000000% good


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to