e1bb4de18f
in struct _machdep_state from libpthread. The offset is hardcoded in boehm-gc because it's a private struct so we cannot use offsetof(). This will probably not change soon again but I am writing this as a note for people who will run into the same problem in the future. All the regression tests are passing now and mono builds fine too. Thanks to kurt@ for pointers.
335 lines
9.2 KiB
Plaintext
335 lines
9.2 KiB
Plaintext
--- include/private/gcconfig.h.orig Fri Jun 29 02:00:09 2007
|
|
+++ include/private/gcconfig.h Fri Jul 9 00:52:27 2010
|
|
@@ -64,7 +64,7 @@
|
|
/* Determine the machine type: */
|
|
# if defined(__arm__) || defined(__thumb__)
|
|
# define ARM32
|
|
-# if !defined(LINUX) && !defined(NETBSD)
|
|
+# if !defined(LINUX) && !defined(NETBSD) && !defined(OPENBSD)
|
|
# define NOSYS
|
|
# define mach_type_known
|
|
# endif
|
|
@@ -75,14 +75,18 @@
|
|
# if defined(hp9000s300)
|
|
# error M68K based HP machines no longer supported.
|
|
# endif
|
|
-# if defined(OPENBSD) && defined(m68k)
|
|
-# define M68K
|
|
-# define mach_type_known
|
|
-# endif
|
|
# if defined(OPENBSD) && defined(__sparc__)
|
|
# define SPARC
|
|
# define mach_type_known
|
|
# endif
|
|
+# if defined(OPENBSD) && defined(__arm__)
|
|
+# define ARM32
|
|
+# define mach_type_known
|
|
+# endif
|
|
+# if defined(OPENBSD) && defined(__sh__)
|
|
+# define SH
|
|
+# define mach_type_known
|
|
+# endif
|
|
# if defined(NETBSD) && (defined(m68k) || defined(__m68k__))
|
|
# define M68K
|
|
# define mach_type_known
|
|
@@ -99,7 +103,7 @@
|
|
# define SH
|
|
# define mach_type_known
|
|
# endif
|
|
-# if defined(vax)
|
|
+# if defined(vax) || defined(__vax__)
|
|
# define VAX
|
|
# ifdef ultrix
|
|
# define ULTRIX
|
|
@@ -117,7 +121,7 @@
|
|
# if defined(nec_ews) || defined(_nec_ews)
|
|
# define EWS4800
|
|
# endif
|
|
-# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD)
|
|
+# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD) && !defined(OPENBSD)
|
|
# if defined(ultrix) || defined(__ultrix)
|
|
# define ULTRIX
|
|
# else
|
|
@@ -198,7 +202,7 @@
|
|
# if defined(_PA_RISC1_0) || defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \
|
|
|| defined(hppa) || defined(__hppa__)
|
|
# define HP_PA
|
|
-# if !defined(LINUX) && !defined(HPUX)
|
|
+# if !defined(LINUX) && !defined(HPUX) && !defined(OPENBSD)
|
|
# define HPUX
|
|
# endif
|
|
# define mach_type_known
|
|
@@ -219,6 +223,10 @@
|
|
# define I386
|
|
# define mach_type_known
|
|
# endif
|
|
+# if defined(OPENBSD) && defined(__amd64__)
|
|
+# define X86_64
|
|
+# define mach_type_known
|
|
+# endif
|
|
# if defined(LINUX) && defined(__x86_64__)
|
|
# define X86_64
|
|
# define mach_type_known
|
|
@@ -290,6 +298,11 @@
|
|
# define MACOS
|
|
# define mach_type_known
|
|
# endif
|
|
+# if defined(__OpenBSD__) && (defined(__powerpc__))
|
|
+# define POWERPC
|
|
+# define OPENBSD
|
|
+# define mach_type_known
|
|
+# endif
|
|
# if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
|
|
# define DARWIN
|
|
# if defined(__ppc__) || defined(__ppc64__)
|
|
@@ -645,17 +658,6 @@
|
|
# ifdef M68K
|
|
# define MACH_TYPE "M68K"
|
|
# define ALIGNMENT 2
|
|
-# ifdef OPENBSD
|
|
-# define OS_TYPE "OPENBSD"
|
|
-# define HEURISTIC2
|
|
-# ifdef __ELF__
|
|
-# define DATASTART GC_data_start
|
|
-# define DYNAMIC_LOADING
|
|
-# else
|
|
- extern char etext[];
|
|
-# define DATASTART ((ptr_t)(etext))
|
|
-# endif
|
|
-# endif
|
|
# ifdef NETBSD
|
|
# define OS_TYPE "NETBSD"
|
|
# define HEURISTIC2
|
|
@@ -788,6 +790,22 @@
|
|
should be looked into some more */
|
|
# define NO_PTHREAD_TRYLOCK
|
|
# endif
|
|
+# ifdef OPENBSD
|
|
+# define OS_TYPE "OPENBSD"
|
|
+# define ALIGNMENT 4
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 268
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
+# endif
|
|
# ifdef FREEBSD
|
|
# define ALIGNMENT 4
|
|
# define OS_TYPE "FREEBSD"
|
|
@@ -955,9 +973,18 @@
|
|
# endif
|
|
# ifdef OPENBSD
|
|
# define OS_TYPE "OPENBSD"
|
|
-# define STACKBOTTOM ((ptr_t) 0xf8000000)
|
|
- extern int etext[];
|
|
-# define DATASTART ((ptr_t)(etext))
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 232
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
# endif
|
|
# ifdef NETBSD
|
|
# define OS_TYPE "NETBSD"
|
|
@@ -1203,6 +1230,18 @@
|
|
# endif
|
|
# ifdef OPENBSD
|
|
# define OS_TYPE "OPENBSD"
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 192
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
# endif
|
|
# ifdef FREEBSD
|
|
# define OS_TYPE "FREEBSD"
|
|
@@ -1238,7 +1277,7 @@
|
|
# ifdef BSDI
|
|
# define OS_TYPE "BSDI"
|
|
# endif
|
|
-# if defined(OPENBSD) || defined(NETBSD) \
|
|
+# if defined(NETBSD) \
|
|
|| defined(THREE86BSD) || defined(BSDI)
|
|
# define HEURISTIC2
|
|
extern char etext[];
|
|
@@ -1403,6 +1442,22 @@
|
|
# define STACKBOTTOM ((ptr_t) 0x7ffff000)
|
|
# endif /* _ELF_ */
|
|
# endif
|
|
+# ifdef OPENBSD
|
|
+# define OS_TYPE "OPENBSD"
|
|
+# define ALIGNMENT 4
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 808
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int _fdata[];
|
|
+# define DATASTART ((ptr_t)(_fdata))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
+# endif
|
|
# if defined(NONSTOP)
|
|
# define CPP_WORDSZ 32
|
|
# define OS_TYPE "NONSTOP"
|
|
@@ -1423,7 +1478,7 @@
|
|
# define CPP_WORDSZ 32
|
|
# define ALIGNMENT 4
|
|
# endif
|
|
-# if !defined(GC_HPUX_THREADS) && !defined(GC_LINUX_THREADS)
|
|
+# if !defined(GC_HPUX_THREADS) && !defined(GC_LINUX_THREADS) && !defined(OPENBSD)
|
|
# ifndef LINUX /* For now. */
|
|
# define MPROTECT_VDB
|
|
# endif
|
|
@@ -1472,6 +1527,21 @@
|
|
extern int _end[];
|
|
# define DATAEND (&_end)
|
|
# endif /* LINUX */
|
|
+# ifdef OPENBSD
|
|
+# define OS_TYPE "OPENBSD"
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 520
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
+# endif
|
|
# endif /* HP_PA */
|
|
|
|
# ifdef ALPHA
|
|
@@ -1489,15 +1559,19 @@
|
|
# endif
|
|
# ifdef OPENBSD
|
|
# define OS_TYPE "OPENBSD"
|
|
-# define HEURISTIC2
|
|
-# ifdef __ELF__ /* since OpenBSD/Alpha 2.9 */
|
|
-# define DATASTART GC_data_start
|
|
-# define ELFCLASS32 32
|
|
-# define ELFCLASS64 64
|
|
-# define ELF_CLASS ELFCLASS64
|
|
-# else /* ECOFF, until OpenBSD/Alpha 2.7 */
|
|
-# define DATASTART ((ptr_t) 0x140000000)
|
|
-# endif
|
|
+# define ELF_CLASS ELFCLASS64
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 816
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
# endif
|
|
# ifdef FREEBSD
|
|
# define OS_TYPE "FREEBSD"
|
|
@@ -1665,6 +1739,7 @@
|
|
# ifdef CX_UX
|
|
# define OS_TYPE "CX_UX"
|
|
# define DATASTART ((((word)etext + 0x3fffff) & ~0x3fffff) + 0x10000)
|
|
+# define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
|
|
# endif
|
|
# ifdef DGUX
|
|
# define OS_TYPE "DGUX"
|
|
@@ -1764,6 +1839,22 @@
|
|
# define OS_TYPE "MSWINCE"
|
|
# define DATAEND /* not needed */
|
|
# endif
|
|
+# ifdef OPENBSD
|
|
+# define ALIGNMENT 4
|
|
+# define OS_TYPE "OPENBSD"
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 176
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
+# endif
|
|
# ifdef NOSYS
|
|
/* __data_start is usually defined in the target linker script. */
|
|
extern int __data_start[];
|
|
@@ -1807,6 +1898,21 @@
|
|
# define DATASTART GC_data_start
|
|
# define DYNAMIC_LOADING
|
|
# endif
|
|
+# ifdef OPENBSD
|
|
+# define OS_TYPE "OPENBSD"
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 332
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
+# endif
|
|
# endif
|
|
|
|
# ifdef SH4
|
|
@@ -1838,6 +1944,22 @@
|
|
# define CPP_WORDSZ 64
|
|
# ifndef HBLKSIZE
|
|
# define HBLKSIZE 4096
|
|
+# endif
|
|
+# ifdef OPENBSD
|
|
+# define OS_TYPE "OPENBSD"
|
|
+# define ELF_CLASS ELFCLASS64
|
|
+# ifdef GC_OPENBSD_THREADS
|
|
+# define UTHREAD_SP_OFFSET 400
|
|
+# else
|
|
+# include <sys/param.h>
|
|
+# include <uvm/uvm_extern.h>
|
|
+# define STACKBOTTOM USRSTACK
|
|
+# endif
|
|
+ extern int __data_start[];
|
|
+# define DATASTART ((ptr_t)(__data_start))
|
|
+ extern char _end[];
|
|
+# define DATAEND ((ptr_t)(&_end))
|
|
+# define DYNAMIC_LOADING
|
|
# endif
|
|
# define CACHE_LINE_SIZE 64
|
|
# ifdef LINUX
|