2011-04-24 Ivan Maidanski <ivmai@mail.ru>
authorivmai <ivmai>
Sun, 24 Apr 2011 06:37:23 +0000 (06:37 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 26 Jul 2011 17:06:58 +0000 (21:06 +0400)
* mach_dep.c (NO_GETCONTEXT): Move to gcconfig.h.
* os_dep.c (GC_write_fault_handler): Don't include ucontext.h if
NO_GETCONTEXT.
* include/private/gcconfig.h (GETPAGESIZE): Define as a sysconf
call for Android.

ChangeLog
include/private/gcconfig.h
mach_dep.c
os_dep.c

index 2d240fb..d2acb1c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-04-24  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mach_dep.c (NO_GETCONTEXT): Move to gcconfig.h.
+       * os_dep.c (GC_write_fault_handler): Don't include ucontext.h if
+       NO_GETCONTEXT.
+       * include/private/gcconfig.h (GETPAGESIZE): Define as a sysconf
+       call for Android.
+
 2011-04-23  Ivan Maidanski  <ivmai@mail.ru>
 
        * include/private/gc_locks.h (WIN32_LEAN_AND_MEAN, NOSERVICE):
index 894f31d..1428d5b 100644 (file)
 # define DATAEND (ptr_t)(end)
 #endif
 
-#if defined(SVR4) && !defined(GETPAGESIZE)
+#if (defined(SVR4) || defined(PLATFORM_ANDROID)) && !defined(GETPAGESIZE)
 # include <unistd.h>
 # define GETPAGESIZE()  sysconf(_SC_PAGESIZE)
 #endif
 # define DEFAULT_VDB
 #endif
 
+#if ((defined(UNIX_LIKE) && (defined(DARWIN) || defined(HURD) \
+                             || defined(OPENBSD) || defined(ARM32) \
+                             || defined(MIPS) || defined(AVR32))) \
+     || (defined(LINUX) && defined(SPARC)) \
+     || (defined(RTEMS) && defined(I386))) && !defined(NO_GETCONTEXT)
+# define NO_GETCONTEXT
+#endif
+
 #ifndef PREFETCH
 # define PREFETCH(x)
 # define NO_PREFETCH
index 416dec8..19e688d 100644 (file)
@@ -171,14 +171,6 @@ asm static void PushMacRegisters()
 # undef HAVE_PUSH_REGS
 #endif
 
-#if ((defined(UNIX_LIKE) && (defined(DARWIN) || defined(HURD) \
-                             || defined(OPENBSD) || defined(ARM32) \
-                             || defined(MIPS) || defined(AVR32))) \
-     || (defined(LINUX) && defined(SPARC)) \
-     || (defined(RTEMS) && defined(I386))) && !defined(NO_GETCONTEXT)
-# define NO_GETCONTEXT
-#endif
-
 #if !defined(HAVE_PUSH_REGS) && defined(UNIX_LIKE)
 # include <signal.h>
 # ifndef NO_GETCONTEXT
index db3fd2b..17ba79d 100644 (file)
--- a/os_dep.c
+++ b/os_dep.c
@@ -801,6 +801,7 @@ GC_INNER word GC_page_size = 0;
   {
 #   if defined(MPROTECT_VDB) || defined(PROC_VDB) || defined(USE_MMAP)
       GC_page_size = GETPAGESIZE();
+      if (!GC_page_size) ABORT("getpagesize() failed");
 #   else
       /* It's acceptable to fake it.    */
       GC_page_size = HBLKSIZE;
@@ -3114,7 +3115,9 @@ STATIC void GC_default_push_other_roots(void)
 #   elif defined(SUNOS5SIGS)
 #     define CODE_OK (si -> si_code == SEGV_ACCERR)
 #   endif
-#   include <ucontext.h>
+#   ifndef NO_GETCONTEXT
+#     include <ucontext.h>
+#   endif
     /*ARGSUSED*/
     STATIC void GC_write_fault_handler(int sig, siginfo_t *si, void *raw_sc)
 # else