* include/private/gc_priv.h [__INTERIX] (_ALL_SOURCE): Define macro.
* include/private/gcconfig.h [__INTERIX] (I386, INTERIX,
mach_type_known): Likewise.
* include/private/gcconfig.h [I386 && INTERIX] (OS_TYPE, DATASTART,
DATAEND, STACKBOTTOM, USE_MMAP, USE_MMAP_ANON): Likewise.
* include/private/gcconfig.h [I386 && INTERIX] (_data_start__,
_bss_end__): Declare extern variable.
# define _GNU_SOURCE 1
#endif
+#if defined(__INTERIX) && !defined(_ALL_SOURCE)
+# define _ALL_SOURCE 1
+#endif
+
#if (defined(DGUX) && defined(GC_THREADS) || defined(DGUX386_THREADS) \
|| defined(GC_DGUX386_THREADS)) && !defined(_USING_POSIX4A_DRAFT10)
# define _USING_POSIX4A_DRAFT10 1
# else
# if ((defined(_MSDOS) || defined(_MSC_VER)) && (_M_IX86 >= 300)) \
|| (defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__) \
- && !defined(SYMBIAN))
+ && !defined(__INTERIX) && !defined(SYMBIAN))
# if defined(__LP64__) || defined(_WIN64)
# define X86_64
# elif defined(_M_ARM)
# define CYGWIN32
# define mach_type_known
# endif
+# if defined(__INTERIX)
+# define I386
+# define INTERIX
+# define mach_type_known
+# endif
# if defined(__MINGW32__) && !defined(mach_type_known)
# define I386
# define MSWIN32
# define USE_MMAP_ANON
# endif
# endif
+# ifdef INTERIX
+# define OS_TYPE "INTERIX"
+ extern int _data_start__[];
+ extern int _bss_end__[];
+# define DATASTART ((ptr_t)_data_start__)
+# define DATAEND ((ptr_t)_bss_end__)
+# define STACKBOTTOM ({ ptr_t rv; \
+ __asm__ __volatile__ ("movl %%fs:4, %%eax" \
+ : "=a" (rv)); \
+ rv; })
+# ifndef USE_MMAP
+# define USE_MMAP
+# endif
+# define USE_MMAP_ANON
+# endif
# ifdef OS2
# define OS_TYPE "OS2"
/* STACKBOTTOM and DATASTART are handled specially in */