diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index d1c9c04656f0b04222df64f26c9f9285c1294c89..a97a5e9403768833e1b45686891d57f3babca490 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,16 @@ +2001-09-26 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * solaris_threads.c (MAX_ORIG_STACK_SIZE) [I386]: Provide special + Solaris 2/Intel definition. + + * configure.in (i?86-*-solaris2.[89]*): Define + SOLARIS25_PROC_VDB_BUG_FIXED. + * include/private/gcconfig.h [I386 && SUNOS5]: Use it. + * configure: Regenerate. + + * include/private/gcconfig.h [I386 && SUNOS5] (DATASTART): Use _etext. + (DATAEND): Define using _end. + 2001-09-11 Per Bothner <per@bothner.com> * include/Makefile.am: New file. It defines include_HEADERS. diff --git a/boehm-gc/configure b/boehm-gc/configure index b975d0c8202252069990ada62e747db43cf27d30..79d9655842f7baee92496cc6573977089207443e 100755 --- a/boehm-gc/configure +++ b/boehm-gc/configure @@ -2806,6 +2806,12 @@ machdep= case "$host" in alpha*-*-*) machdep="alpha_mach_dep.lo" + ;; + i?86-*-solaris2.[89]*) + cat >> confdefs.h <<\EOF +#define SOLARIS25_PROC_VDB_BUG_FIXED 1 +EOF + ;; mipstx39-*-elf*) machdep="mips_ultrix_mach_dep.lo" diff --git a/boehm-gc/configure.in b/boehm-gc/configure.in index 8fc2cdffbecac78d654c1c62e6307a197d03c18e..48f69908fab824bc6ff02f65a323e0feffcd12bd 100644 --- a/boehm-gc/configure.in +++ b/boehm-gc/configure.in @@ -153,6 +153,9 @@ case "$host" in alpha*-*-*) machdep="alpha_mach_dep.lo" ;; + i?86-*-solaris2.[[89]]*) + AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED) + ;; mipstx39-*-elf*) machdep="mips_ultrix_mach_dep.lo" AC_DEFINE(STACKBASE, __stackbase) diff --git a/boehm-gc/include/private/gcconfig.h b/boehm-gc/include/private/gcconfig.h index e8bac1bcdc29e648e191d79ae4ece6f97abab1c6..4e20f48ade3ac084aeb997a94912e183c444e6bf 100644 --- a/boehm-gc/include/private/gcconfig.h +++ b/boehm-gc/include/private/gcconfig.h @@ -838,9 +838,10 @@ # endif # ifdef SUNOS5 # define OS_TYPE "SUNOS5" - extern int etext, _start; + extern int _etext, _end; extern char * GC_SysVGetDataStart(); -# define DATASTART GC_SysVGetDataStart(0x1000, &etext) +# define DATASTART GC_SysVGetDataStart(0x1000, &_etext) +# define DATAEND (&_end) /* # define STACKBOTTOM ((ptr_t)(&_start)) worked through 2.7, */ /* but reportedly breaks under 2.8. It appears that the stack */ /* base is a property of the executable, so this should not break */ @@ -849,7 +850,9 @@ # include <sys/vmparam.h> # define STACKBOTTOM USRSTACK /** At least in Solaris 2.5, PROC_VDB gives wrong values for dirty bits. */ -/*# define PROC_VDB*/ +# ifdef SOLARIS25_PROC_VDB_BUG_FIXED +# define PROC_VDB +# endif # define DYNAMIC_LOADING # ifndef USE_MMAP # define USE_MMAP diff --git a/boehm-gc/solaris_threads.c b/boehm-gc/solaris_threads.c index 8cc6319cd22e82ef528ef6fecad157c3b72753b0..a0d03406981714fb4dd71311df3ca4610e4beddb 100644 --- a/boehm-gc/solaris_threads.c +++ b/boehm-gc/solaris_threads.c @@ -621,7 +621,18 @@ GC_thread GC_lookup_thread(thread_t id) return(p); } +/* Solaris 2/Intel uses an initial stack size limit slightly bigger than the + SPARC default of 8 MB. Account for this to warn only if the user has + raised the limit beyond the default. + + This is identical to DFLSSIZ defined in <sys/vm_machparam.h>. This file + is installed in /usr/platform/`uname -m`/include, which is not in the + default include directory list, so copy the definition here. */ +#ifdef I386 +# define MAX_ORIG_STACK_SIZE (8 * 1024 * 1024 + ((USRSTACK) & 0x3FFFFF)) +#else # define MAX_ORIG_STACK_SIZE (8 * 1024 * 1024) +#endif word GC_get_orig_stack_size() { struct rlimit rl;