Hello Pietro. Thanks for the patch.
> If GC_DEBUG is defined then all-upper-case macros will expand to calls > to the debug variant of collector functions. > > So add the configury bit to GC_DEBUG if the user wants and swtich all > `GC_` calls to the corresponding macros. > > * configure: Regenerate. > * configure.ac: Add --enable-algol68-gc-debug option and > define LIBGA68_DEBUG_GC accordingly. > * ga68-alloc.c (GC_DEBUG): Define macro if LIBGA68_DEBUG_GC is > true. Why not defining GC_DEBUG directly instead of going through LIBGA_DEBUG_GC? > (_libga68_realloc): Use the C macro version of the GC function. > (_libga68_realloc_unchecked): Likewise. > (_libga68_malloc): Likewise. > > Signed-off-by: Pietro Monteiro <[email protected]> > --- > libga68/configure | 31 +++++++++++++++++++++++++++++-- > libga68/configure.ac | 20 ++++++++++++++++++++ > libga68/ga68-alloc.c | 11 ++++++++--- > 3 files changed, 57 insertions(+), 5 deletions(-) > > diff --git a/libga68/configure b/libga68/configure > index 63c27939e14..2ecee900035 100755 > --- a/libga68/configure > +++ b/libga68/configure > @@ -811,6 +811,7 @@ enable_algol68_gc > with_target_bdw_gc > with_target_bdw_gc_include > with_target_bdw_gc_lib > +enable_algol68_gc_debug > ' > ac_precious_vars='build_alias > host_alias > @@ -1463,6 +1464,9 @@ Optional Features: > --disable-symvers disable symbol versioning for libga68 > --enable-algol68-gc enable use of Boehm's garbage collector with the > GNU > Algol runtime > + --enable-algol68-gc-debug > + enable use of Boehm's garbage collector debug > + functions with the GNU Algol runtime > > Optional Packages: > --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] > @@ -12829,7 +12833,7 @@ else > lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 > lt_status=$lt_dlunknown > cat > conftest.$ac_ext <<_LT_EOF > -#line 12832 "configure" > +#line 12836 "configure" > #include "confdefs.h" > > #if HAVE_DLFCN_H > @@ -12935,7 +12939,7 @@ else > lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 > lt_status=$lt_dlunknown > cat > conftest.$ac_ext <<_LT_EOF > -#line 12938 "configure" > +#line 12942 "configure" > #include "confdefs.h" > > #if HAVE_DLFCN_H > @@ -13532,6 +13536,14 @@ if test "${with_target_bdw_gc_lib+set}" = set; then : > fi > > > +# Check whether --enable-algol68-gc-debug was given. > +if test "${enable_algol68_gc_debug+set}" = set; then : > + enableval=$enable_algol68_gc_debug; > +else > + enable_algol68_gc_debug=no > +fi > + > + > bdw_lib_dir= > case "$enable_algol68_gc" in > no) > @@ -13719,6 +13731,21 @@ case $host in > esac > > > +case "$enable_algol68_gc_debug" in > + no) > + if test "$use_bdw_gc" = yes; then > + LIBGA68_GCFLAGS="$LIBGA68_GCFLAGS -DLIBGA68_DEBUG_GC=0" > + fi > + ;; > + *) > + if test "$use_bdw_gc" = no; then > + as_fn_error $? "GC debugging enabled but GC is not being used" > "$LINENO" 5 > + else > + LIBGA68_GCFLAGS="$LIBGA68_GCFLAGS -DLIBGA68_DEBUG_GC=1" > + fi > + ;; > +esac > + > # Subst some variables used in Makefile.am > > > diff --git a/libga68/configure.ac b/libga68/configure.ac > index 20a903ad8d9..c8aa032fba4 100644 > --- a/libga68/configure.ac > +++ b/libga68/configure.ac > @@ -248,6 +248,11 @@ AC_ARG_WITH([target-bdw-gc-lib], > [AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], > [specify directories for installed bdw-gc library])]) > > +AC_ARG_ENABLE(algol68-gc-debug, > +[AS_HELP_STRING([--enable-algol68-gc-debug], > + [enable use of Boehm's garbage collector debug functions > + with the GNU Algol runtime])],,enable_algol68_gc_debug=no) > + > bdw_lib_dir= > case "$enable_algol68_gc" in > no) > @@ -405,6 +410,21 @@ case $host in > esac > AC_SUBST(extra_darwin_ldflags_libga68) > > +case "$enable_algol68_gc_debug" in > + no) > + if test "$use_bdw_gc" = yes; then > + LIBGA68_GCFLAGS="$LIBGA68_GCFLAGS -DLIBGA68_DEBUG_GC=0" > + fi > + ;; > + *) > + if test "$use_bdw_gc" = no; then > + AC_MSG_ERROR([GC debugging enabled but GC is not being used]) > + else > + LIBGA68_GCFLAGS="$LIBGA68_GCFLAGS -DLIBGA68_DEBUG_GC=1" > + fi > + ;; > +esac > + > # Subst some variables used in Makefile.am > AC_SUBST(LIBGA68_GCFLAGS) > AC_SUBST(LIBGA68_BOEHM_GC_INCLUDES) > diff --git a/libga68/ga68-alloc.c b/libga68/ga68-alloc.c > index 5e9f7c2b920..77abf592b8f 100644 > --- a/libga68/ga68-alloc.c > +++ b/libga68/ga68-alloc.c > @@ -43,6 +43,11 @@ _libga68_malloc_internal (size_t size) > } > > #if LIBGA68_WITH_GC > + > +# if LIBGA68_DEBUG_GC > +# define GC_DEBUG 1 > +#endif > + > #include <gc/gc.h> > > void > @@ -58,7 +63,7 @@ _libga68_init_heap (void) > void * > _libga68_realloc (void *ptr, size_t size) > { > - void *res = (void *) GC_realloc (ptr, size); > + void *res = (void *) GC_REALLOC (ptr, size); > if (!res) > _libga68_abort ("Virtual memory exhausted\n"); > return res; > @@ -67,14 +72,14 @@ _libga68_realloc (void *ptr, size_t size) > void * > _libga68_realloc_unchecked (void *ptr, size_t size) > { > - void *res = (void *) GC_realloc (ptr, size); > + void *res = (void *) GC_REALLOC (ptr, size); > return res; > } > > void * > _libga68_malloc (size_t size) > { > - void *res = (void *) GC_malloc (size); > + void *res = (void *) GC_MALLOC (size); > if (!res) > _libga68_abort ("Virtual memory exhausted\n"); > return res; > > base-commit: 87222af419eb272d4b66628abda573ba8fcadc77
