mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 17:51:53 +00:00
Expensive check declaration
Intended to be run at every operation with complex data structures to check their consistency and validity.
This commit is contained in:
parent
a1b61a271a
commit
a0d0a71a18
13
configure.ac
13
configure.ac
@ -24,6 +24,12 @@ AC_ARG_ENABLE([debug-generated],
|
|||||||
[enable_debug_generated=no]
|
[enable_debug_generated=no]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([debug-expensive],
|
||||||
|
[AS_HELP_STRING([--enable-debug-expensive], [enable expensive consistency checks (implies --enable-debug) @<:@no@:>@])],
|
||||||
|
[],
|
||||||
|
[enable_debug_expensive=no]
|
||||||
|
)
|
||||||
|
|
||||||
AC_ARG_ENABLE([memcheck],
|
AC_ARG_ENABLE([memcheck],
|
||||||
[AS_HELP_STRING([--enable-memcheck], [check memory allocations when debugging @<:@yes@:>@])],
|
[AS_HELP_STRING([--enable-memcheck], [check memory allocations when debugging @<:@yes@:>@])],
|
||||||
[],
|
[],
|
||||||
@ -72,6 +78,9 @@ AC_ARG_VAR([FLEX], [location of the Flex program])
|
|||||||
AC_ARG_VAR([BISON], [location of the Bison program])
|
AC_ARG_VAR([BISON], [location of the Bison program])
|
||||||
AC_ARG_VAR([M4], [location of the M4 program])
|
AC_ARG_VAR([M4], [location of the M4 program])
|
||||||
|
|
||||||
|
if test "$enable_debug_expensive" = yes; then
|
||||||
|
enable_debug = yes
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$srcdir" = . ; then
|
if test "$srcdir" = . ; then
|
||||||
# Building in current directory => create obj directory holding all objects
|
# Building in current directory => create obj directory holding all objects
|
||||||
@ -388,6 +397,10 @@ if test "$enable_debug" = yes ; then
|
|||||||
AC_CHECK_LIB([efence], [malloc])
|
AC_CHECK_LIB([efence], [malloc])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "enable_debug_expensive" = yes ; then
|
||||||
|
AC_DEFINE([ENABLE_EXPENSIVE_CHECKS], [1], [Define to 1 if you want to run expensive consistency checks.])
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CLIENT=birdcl
|
CLIENT=birdcl
|
||||||
|
@ -165,14 +165,21 @@ void debug(const char *msg, ...); /* Printf to debug output */
|
|||||||
|
|
||||||
#define ASSERT_DIE(x) do { if (!(x)) bug("Assertion '%s' failed at %s:%d", #x, __FILE__, __LINE__); } while(0)
|
#define ASSERT_DIE(x) do { if (!(x)) bug("Assertion '%s' failed at %s:%d", #x, __FILE__, __LINE__); } while(0)
|
||||||
|
|
||||||
|
#define EXPENSIVE_CHECK(x) /* intentionally left blank */
|
||||||
|
|
||||||
#ifdef DEBUGGING
|
#ifdef DEBUGGING
|
||||||
#define ASSERT(x) ASSERT_DIE(x)
|
#define ASSERT(x) ASSERT_DIE(x)
|
||||||
#define ASSUME(x) ASSERT_DIE(x)
|
#define ASSUME(x) ASSERT_DIE(x)
|
||||||
|
#ifdef ENABLE_EXPENSIVE_CHECKS
|
||||||
|
#undef EXPENSIVE_CHECK
|
||||||
|
#define EXPENSIVE_CHECK(x) ASSERT_DIE(x)
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#define ASSERT(x) do { if (!(x)) log(L_BUG "Assertion '%s' failed at %s:%d", #x, __FILE__, __LINE__); } while(0)
|
#define ASSERT(x) do { if (!(x)) log(L_BUG "Assertion '%s' failed at %s:%d", #x, __FILE__, __LINE__); } while(0)
|
||||||
#define ASSUME(x) /* intentionally left blank */
|
#define ASSUME(x) /* intentionally left blank */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUGGING
|
#ifdef DEBUGGING
|
||||||
asm(
|
asm(
|
||||||
".pushsection \".debug_gdb_scripts\", \"MS\",@progbits,1\n"
|
".pushsection \".debug_gdb_scripts\", \"MS\",@progbits,1\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user