mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-29 14:30:34 +02:00
fix libguile compilation on newer solaris
* libguile/gc_os_dep.c: Update SUNOS5 stack and heap bounding heuristics from upstream libgc. Based on a patch by Marion Hakanson.
This commit is contained in:
parent
dcf7c03487
commit
4e30666a1a
1 changed files with 24 additions and 10 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers
|
* Copyright 1988, 1989, 2010 Hans-J. Boehm, Alan J. Demers
|
||||||
* Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved.
|
* Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved.
|
||||||
* Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved.
|
* Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved.
|
||||||
* Copyright (c) 1999 by Hewlett-Packard Company. All rights reserved.
|
* Copyright (c) 1999 by Hewlett-Packard Company. All rights reserved.
|
||||||
|
@ -706,11 +706,18 @@ scm_get_stack_base ()
|
||||||
extern int etext;
|
extern int etext;
|
||||||
# ifdef SUNOS5
|
# ifdef SUNOS5
|
||||||
# define OS_TYPE "SUNOS5"
|
# define OS_TYPE "SUNOS5"
|
||||||
extern int _etext;
|
# define OS_TYPE "SUNOS5"
|
||||||
extern int _end;
|
extern int _etext[], _end[];
|
||||||
extern char * GC_SysVGetDataStart();
|
ptr_t GC_SysVGetDataStart(size_t, ptr_t);
|
||||||
# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, &_etext)
|
# define DATASTART GC_SysVGetDataStart(0x1000, (ptr_t)_etext)
|
||||||
# define DATAEND (&_end)
|
# define DATAEND (ptr_t)(_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 */
|
||||||
|
/* old executables. */
|
||||||
|
/* HEURISTIC2 probably works, but this appears to be preferable. */
|
||||||
|
# include <sys/vm.h>
|
||||||
|
# define STACKBOTTOM ((ptr_t) USRSTACK)
|
||||||
# ifndef USE_MMAP
|
# ifndef USE_MMAP
|
||||||
# define USE_MMAP
|
# define USE_MMAP
|
||||||
# endif
|
# endif
|
||||||
|
@ -797,10 +804,17 @@ scm_get_stack_base ()
|
||||||
# endif
|
# endif
|
||||||
# ifdef SUNOS5
|
# ifdef SUNOS5
|
||||||
# define OS_TYPE "SUNOS5"
|
# define OS_TYPE "SUNOS5"
|
||||||
extern int etext, _start;
|
extern int _etext[], _end[];
|
||||||
extern char * GC_SysVGetDataStart();
|
ptr_t GC_SysVGetDataStart(size_t, ptr_t);
|
||||||
# define DATASTART GC_SysVGetDataStart(0x1000, &etext)
|
# define DATASTART GC_SysVGetDataStart(0x1000, (ptr_t)_etext)
|
||||||
# define STACKBOTTOM ((ptr_t)(&_start))
|
# define DATAEND (ptr_t)(_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 */
|
||||||
|
/* old executables. */
|
||||||
|
/* HEURISTIC2 probably works, but this appears to be preferable. */
|
||||||
|
# include <sys/vm.h>
|
||||||
|
# define STACKBOTTOM ((ptr_t) USRSTACK)
|
||||||
/** At least in Solaris 2.5, PROC_VDB gives wrong values for dirty bits. */
|
/** At least in Solaris 2.5, PROC_VDB gives wrong values for dirty bits. */
|
||||||
/*# define PROC_VDB*/
|
/*# define PROC_VDB*/
|
||||||
# define DYNAMIC_LOADING
|
# define DYNAMIC_LOADING
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue