New test.
[mono.git] / libgc / include / private / gcconfig.h
index cf2a825cc3cce3169bf851c1450147e05578fe5b..0069b8ed6119034ea54614e2bb413ca070aa9957 100644 (file)
 #    define FREEBSD
 # endif
 
+/* And one for Darwin: */
+# if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
+#   define DARWIN
+# endif
+
 /* Determine the machine type: */
 # if defined(__arm__) || defined(__thumb__)
 #    define ARM32
-#    if !defined(LINUX) && !defined(NETBSD)
+#    if !defined(LINUX) && !defined(NETBSD) && !defined(DARWIN)
 #      define NOSYS
 #      define mach_type_known
 #    endif
 #   define MACOS
 #   define mach_type_known
 # endif
-# if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
-#   define DARWIN
+# ifdef DARWIN
 #   if defined(__ppc__)  || defined(__ppc64__)
 #    define POWERPC
 #    define mach_type_known
       /* There seems to be some issues with trylock hanging on darwin. This
          should be looked into some more */
 #     define NO_PTHREAD_TRYLOCK
+#   elif defined(__arm__)
+#    define ARM
+#    define mach_type_known
+#    define DARWIN_DONT_PARSE_STACK
 #   endif
 # endif
 # if defined(NeXT) && defined(mc68000)
 # else
 #   if (defined(_MSDOS) || defined(_MSC_VER)) && (_M_IX86 >= 300) \
         || defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__)
-#     define I386
-#     define MSWIN32   /* or Win32s */
-#     define mach_type_known
-#   endif
-#   if defined(_MSC_VER) && defined(_M_IA64)
-#     define IA64
-#     define MSWIN32   /* Really win64, but we don't treat 64-bit      */
-                       /* variants as a differnt platform.             */
+#     if defined(__LP64__) || defined(_WIN64)\r
+#      define X86_64\r
+#     else\r
+#       define I386\r
+#     endif\r
+#     define MSWIN32   /* or Win64 */\r
+#     define mach_type_known\r
+#   endif\r
+#   if defined(_MSC_VER) && defined(_M_IA64)\r
+#     define IA64\r
+#     define MSWIN32   /* Really win64, but we don't treat 64-bit      */\r
+                       /* variants as a differnt platform.             */\r
 #   endif
 # endif
 # if defined(__DJGPP__)
 #           include <features.h>
 #           if defined(__GLIBC__) && __GLIBC__ >= 2
 #               define SEARCH_FOR_DATA_START
+#           elif defined(PLATFORM_ANDROID)
+#               define SEARCH_FOR_DATA_START
 #           else
                 extern char **__environ;
 #                define DATASTART ((ptr_t)(&__environ))
 #     define OS_TYPE "MSWINCE"
 #     define DATAEND /* not needed */
 #   endif
+#   ifdef DARWIN
+#     define OS_TYPE "DARWIN"
+#     define DATASTART ((ptr_t) get_etext())
+#     define DATAEND   ((ptr_t) get_end())
+#     define STACKBOTTOM ((ptr_t) 0x30000000)
+#     define USE_MMAP
+#     define USE_MMAP_ANON
+#     define USE_MUNMAP
+#   endif
 #   ifdef NOSYS
       /* __data_start is usually defined in the target linker script.  */
       extern int __data_start[];