realloc.cocci \
siginit.cocci \
size_t.cocci \
- struct-flags.cocci \
sz3.cocci \
uint.cocci \
run_check.sh struct-flags.py
struct-flags.cocci:
$(srcdir)/struct-flags.py > $(top_builddir)/qa/coccinelle/struct-flags.cocci
-check:
- TOP_SRCDIR=$(abs_top_srcdir) $(top_srcdir)/qa/coccinelle/run_check.sh
+check: struct-flags.cocci
+ TOP_BUILDDIR=${abs_top_builddir} TOP_SRCDIR=$(abs_top_srcdir) $(top_srcdir)/qa/coccinelle/run_check.sh
distclean-local:
-rm $(top_builddir)/qa/coccinelle/struct-flags.cocci
PREFIX=${TOP_SRCDIR}/
fi
+if [ "${TOP_BUILDDIR}" != "" ]; then
+ BUILT_COCCI_FILES=$(ls ${TOP_BUILDDIR}/qa/coccinelle/*.cocci)
+else
+ BUILT_COCCI_FILES=""
+fi
+
if [ -z "$CONCURRENCY_LEVEL" ]; then
CONCURRENCY_LEVEL=1
echo "No concurrency"
echo "Using concurrency level $CONCURRENCY_LEVEL"
fi
-for SMPL in ${PREFIX}qa/coccinelle/*.cocci; do
+for SMPL in ${PREFIX}qa/coccinelle/*.cocci ${BUILT_COCCI_FILES}; do
echo "Testing cocci file: $SMPL"
if command -v parallel >/dev/null; then
echo -n $LIST | parallel -d ' ' -j $CONCURRENCY_LEVEL spatch --very-quiet -sp_file $SMPL --undefined UNITTESTS $PREFIX{} || if [ -z "$NOT_TERMINAL" ]; then exit 1; fi
+++ /dev/null
-@flags@
-SignatureInitData *struct0;
-identifier struct_flags0 =~ "^(?!SIG_FLAG_INIT_).+";
-Signature *struct1;
-identifier struct_flags1 =~ "^(?!SIG_FLAG).+";
-Flow *struct2;
-identifier struct_flags2 =~ "^(?!FLOWFILE_).+";
-Flow *struct3;
-identifier struct_flags3 =~ "^(?!FLOW_END_FLAG_).+";
-TcpStream *struct4;
-identifier struct_flags4 =~ "^(?!STREAMTCP_STREAM_FLAG_).+";
-TcpSession *struct5;
-identifier struct_flags5 =~ "^(?!STREAMTCP_FLAG).+";
-TcpStreamCnf *struct6;
-identifier struct_flags6 =~ "^(?!STREAMTCP_INIT_).+";
-Packet *struct7;
-identifier struct_flags7 =~ "^(?!FLOW_PKT_).+";
-position p1;
-@@
-
-(
-struct0->init_flags@p1 |= struct_flags0
-|
-struct0->init_flags@p1 & struct_flags0
-|
-struct0->init_flags@p1 &= ~struct_flags0
-|
-struct1->flags@p1 |= struct_flags1
-|
-struct1->flags@p1 & struct_flags1
-|
-struct1->flags@p1 &= ~struct_flags1
-|
-struct2->file_flags@p1 |= struct_flags2
-|
-struct2->file_flags@p1 & struct_flags2
-|
-struct2->file_flags@p1 &= ~struct_flags2
-|
-struct3->flow_end_flags@p1 |= struct_flags3
-|
-struct3->flow_end_flags@p1 & struct_flags3
-|
-struct3->flow_end_flags@p1 &= ~struct_flags3
-|
-struct4->flags@p1 |= struct_flags4
-|
-struct4->flags@p1 & struct_flags4
-|
-struct4->flags@p1 &= ~struct_flags4
-|
-struct5->flags@p1 |= struct_flags5
-|
-struct5->flags@p1 & struct_flags5
-|
-struct5->flags@p1 &= ~struct_flags5
-|
-struct6->flags@p1 |= struct_flags6
-|
-struct6->flags@p1 & struct_flags6
-|
-struct6->flags@p1 &= ~struct_flags6
-|
-struct7->flowflags@p1 |= struct_flags7
-|
-struct7->flowflags@p1 & struct_flags7
-|
-struct7->flowflags@p1 &= ~struct_flags7
-)
-
-@script:python@
-p1 << flags.p1;
-@@
-
-print "Invalid usage of flags field at %s:%s, flags value is incorrect (wrong family)." % (p1[0].file, p1[0].line)
-import sys
-sys.exit(1)