diff options
author | Morgan Deters <mdeters@gmail.com> | 2012-06-13 19:50:35 +0000 |
---|---|---|
committer | Morgan Deters <mdeters@gmail.com> | 2012-06-13 19:50:35 +0000 |
commit | 4b3ce37b3d5245d8827d04e4f459c32631083613 (patch) | |
tree | 61a4ab0e9c0d39656b02f668bfed4217b088ecb0 /config | |
parent | 0f0f135f98372e32dafb0e70aa918f92b57ae8c7 (diff) |
Don't use the "inlined" feature of ANTLR 3.2, which causes a buffer overflow condition when reading from stdin. This should completely resolve bug #319.
However, on large inputs especially (like the stp/testcase benchmarks), this inlining feature can speed parsing by 5-10%, at the cost of not supporting interactive sessions on stdin (like in the SMT-COMP application track).
So I updated the submission script and competition build so that
* a competition build with antlr-inlining is built for the main and parallel tracks
* a competition build without antlr-inlining is built for the application track
Again, the effect is only when reading the stdin stream (but that's how SMT-COMP works). For normal (non-competition) builds, we need to support interactive sessions (from e.g. KIND) on stdin, so this inlining is off for all builds except main- and parallel-track competition builds.
Also added a "get-antlr-3.4" script that automatically downloads and locally installs a copy of libantlr3c and the antlr parser generator inside the CVC4 source tree.
Closing bug #319.
Diffstat (limited to 'config')
-rw-r--r-- | config/antlr.m4 | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/config/antlr.m4 b/config/antlr.m4 index 18b2eff73..674feaed6 100644 --- a/config/antlr.m4 +++ b/config/antlr.m4 @@ -25,6 +25,14 @@ AC_DEFUN([AC_PROG_ANTLR], [ [No usable antlr3 script found. Make sure that the parser code has been generated already. To obtain ANTLR see <http://www.antlr.org/>.] ) + ANTLR_VERSION= + else + ANTLR_VERSION="`$ANTLR -version 2>&1 | sed 's,.*\<Version *\([[0-9.]]*\).*,\1,'`" + case "$ANTLR_VERSION" in + 3.2|3.2.*) ANTLR_VERSION=3.2 ;; + 3.4|3.4.*) ANTLR_VERSION=3.4 ;; + *) AC_MSG_WARN([unknown version of antlr: $ANTLR_VERSION]);; + esac fi ]) @@ -94,6 +102,9 @@ AC_DEFUN([AC_LIB_ANTLR],[ ])], [ AC_MSG_RESULT([found it (must be antlr3 3.2 or similar)]) + if test -n "$ANTLR_VERSION" -a "$ANTLR_VERSION" != 3.2; then + AC_MSG_WARN([your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!]) + fi CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_ANTLR3_OLD_INPUT_STREAM" ], [ @@ -111,6 +122,9 @@ AC_DEFUN([AC_LIB_ANTLR],[ ])], [ AC_MSG_RESULT([found it (must be antlr3 3.4 or similar)]) + if test -n "$ANTLR_VERSION" -a "$ANTLR_VERSION" != 3.4; then + AC_MSG_WARN([your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!]) + fi ], [ AC_MSG_ERROR([cannot figure out how to create an antlr3 input stream, bailing..]) |