Hello,
I've got the very latest CVS source, and the build fails due to
GC_CHECK_NOT_FREE being undefined. Here is the relevant snippet from the
make output:
===
[...]
alloc.c: In function `mark_object':
alloc.c:3376: warning: implicit declaration of function `GC_CHECK_NOT_FREE'
[...]
/usr/bin/ld: Undefined symbols:
_GC_CHECK_NOT_FREE
/usr/bin/ld: warning unused multiple definitions of symbol _tgoto
tparam.o definition of _tgoto in section (__TEXT,__text)
/usr/lib/libcurses.dylib(tgoto.o) unused definition of _tgoto
/usr/bin/ld: warning unused multiple definitions of symbol _matherr
floatfns.o definition of _matherr in section (__TEXT,__text)
/usr/lib/libcurses.dylib(s_matherr.o) unused definition of _matherr
make[1]: *** [xemacs] Error 1
make: *** [src] Error 2
===
Here's relevant bits from alloc.c:
===
#ifdef USE_KKCC
/* The following functions implement the new mark algorithm.
They mark objects according to their descriptions. They
are modeled on the corresponding pdumper procedures. */
static void mark_struct_contents (const void *data,
const struct sized_memory_description *sdesc,
int count);
#define GC_CHECK_NOT_FREE(lheader) \
gc_checking_assert (LHEADER_IMPLEMENTATION (lheader)->basic_p || \
! ((struct lcrecord_header *) lheader)->free)
===
and:
===
#ifndef USE_KKCC
/* We handle this separately, above, so we can mark free objects */
GC_CHECK_NOT_FREE (lheader);
#endif /* not USE_KKCC */
===
It seems you're damned if you define USE_KKCC and damned if you don't.
:) I'm not yet familiar enough with the source to know what to fix. Any
clues?
--
Chris music is what numbers feel like San Francisco, CA