Hi there.
Building GCL version 2.3.6 as Cygwin hosted mingw:
./configure --enable-machine=mingw
I get to the place where it starts raw_gcl.exe:
-----------------------------------------------------------------
../unixport/raw_gcl.exe ../unixport/ -libdir
c:/lang/source/mingw32/gcl-2.3.8/ <
foo
GCL (GNU Common Lisp) April 1994 32768 pages
Unrecoverable error: NULL_OR_ON_C_STACK macro invalid.
abnormal program termination
-----------------------------------------------------------------
This macro is defined as:
-----------------------------------------------------------------
/* on most machines this will test in one instruction
if the pointe/r is on the C stack or the 0 pointer
in winnt our heap starts at DBEGIN
*/
#define NULL_OR_ON_C_STACK(y)\
(((unsigned int)(y)) == 0 || \
(((unsigned int)(y)) < DBEGIN && ((unsigned int)(y)) &0xf000000))
-----------------------------------------------------------------
and is used in main.c like:
-----------------------------------------------------------------
initlisp()
{
int j;
if (NULL_OR_ON_C_STACK(&j) == 0
|| NULL_OR_ON_C_STACK(Cnil) != 0
|| (((unsigned long )core_end) !=0
&& NULL_OR_ON_C_STACK(core_end) != 0))
{ /* check person has correct definition of above */
error("NULL_OR_ON_C_STACK macro invalid");
}
............
-----------------------------------------------------------------
I found the description of this macro cryptic. Can anyone explain what is
going on here?
Also, does anyone know why "unexnt.h" does not appear in the CVS repository
for GCL 2.4?
Cheers
Mike Thomas.
From: Mike Thomas
Subject: Re: GNU Common Lisp - Mingw32 build - NULL_OR_ON_C_STACK - MORE INFO HERE
Date:
Message-ID: <PhP28.1$xY5.272@nsw.nnrp.telstra.net>
Incidentally, I forgot to include some debugging out put from main.c just
before the test:
addr j = 22ff3c, DBEGIN = 10000000, Cnil = 500cc0, core_end = 100c8000
(all numbers are hexadecimal).
What is the significance of the apparently arbitrary use of 0xf000000 in the
macro and the definition of DBEGIN as 0x10000000?
My computer has 392M of RAM, if that is relevant.