]> granicus.if.org Git - gc/commitdiff
Fix Haiku/amd64 support
authorIvan Maidanski <ivmai@mail.ru>
Mon, 26 Feb 2018 06:33:23 +0000 (09:33 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 26 Feb 2018 06:33:23 +0000 (09:33 +0300)
(fix of commit 847927f)

Issue #97 (bdwgc).

* include/gc_config_macros.h [__HAIKU__ && !GC_CAN_SAVE_CALL_STACKS]
(GC_ADD_CALLER): Define macro.
* include/private/gcconfig.h [__HAIKU__ && __x86_64__] (X86_64, HAIKU,
mach_type_known): Likewise.
* include/private/gcconfig.h [HAIKU && X86_64] (HEURISTIC2,
SEARCH_FOR_DATA_START): Likewise.
* include/private/gcconfig.h [UNIX_LIKE && HAIKU] (NO_GETCONTEXT):
Likewise.
* include/private/thread_local_alloc.h [GC_HAIKU_THREADS]
(USE_PTHREAD_SPECIFIC): Likewise.
* include/private/gcconfig.h [HAIKU && X86_64] (etext, DATASTART): Do
not define.

include/gc_config_macros.h
include/private/gcconfig.h
include/private/thread_local_alloc.h

index 7e4f9a58c22aaf73a4f382e015dd3fe458cc2dcd..7a58710fb50f2f5455357798e8833fbd3d31853d 100644 (file)
 /* This may also be desirable if it is possible but expensive to        */
 /* retrieve the call chain.                                             */
 #if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) \
-     || defined(__FreeBSD__) || defined(__DragonFly__) \
+     || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__HAIKU__) \
      || defined(HOST_ANDROID) || defined(__ANDROID__)) \
     && !defined(GC_CAN_SAVE_CALL_STACKS)
 # define GC_ADD_CALLER
index 237c309165d10369bc51c0e759f2b76c7f083566..bd4867f7c0415722f9672b26fae9de73a995aa35 100644 (file)
 #    define HAIKU
 #    define mach_type_known
 # endif
-# if defined(__HAIKU__) && defined(__amd64__)
+# if defined(__HAIKU__) && (defined(__amd64__) || defined(__x86_64__))
 #    define X86_64
 #    define HAIKU
 #    define mach_type_known
         extern "C" {
 #     endif
 #     define GETPAGESIZE() (unsigned)B_PAGE_SIZE
-      extern int etext[];
-#     define DATASTART ((ptr_t)((((word)etext) + 0xfff) & ~0xfff))
+#     define HEURISTIC2
+#     define SEARCH_FOR_DATA_START
 #     define DYNAMIC_LOADING
 #     define MPROTECT_VDB
 #   endif
 # define DEFAULT_VDB
 #endif
 
-#if ((defined(UNIX_LIKE) && (defined(DARWIN) || defined(HURD) \
-                             || defined(OPENBSD) || defined(ARM32) \
-                             || defined(MIPS) || defined(AVR32) \
-                             || defined(OR1K) || defined(NIOS2))) \
+#if ((defined(UNIX_LIKE) && (defined(DARWIN) || defined(HAIKU) \
+                             || defined(HURD) || defined(OPENBSD) \
+                             || defined(ARM32) \
+                             || defined(AVR32) || defined(MIPS) \
+                             || defined(NIOS2) || defined(OR1K))) \
      || (defined(LINUX) && !defined(__gnu_linux__)) \
      || (defined(RTEMS) && defined(I386)) || defined(HOST_ANDROID)) \
     && !defined(NO_GETCONTEXT)
 #   define GET_MEM(bytes) (struct hblk*)switch_get_mem(bytes)
 # elif defined(HAIKU)
     ptr_t GC_haiku_get_mem(size_t bytes);
-#   define GET_MEM(bytes) (struct  hblk*)GC_haiku_get_mem(bytes)
+#   define GET_MEM(bytes) (struct hblk*)GC_haiku_get_mem(bytes)
 # else
     ptr_t GC_unix_get_mem(size_t bytes);
 #   define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes)
index 32bafd827fbf4e3d533c2e116a466d4f75d42460..16fc555e59e150b32226f550e4bc33c6567ddcfb 100644 (file)
@@ -64,7 +64,8 @@
 # elif defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) \
        || defined(GC_AIX_THREADS) || defined(GC_DARWIN_THREADS) \
        || defined(GC_FREEBSD_THREADS) || defined(GC_NETBSD_THREADS) \
-       || defined(GC_LINUX_THREADS) || defined(GC_RTEMS_PTHREADS)
+       || defined(GC_LINUX_THREADS) || defined(GC_HAIKU_THREADS) \
+       || defined(GC_RTEMS_PTHREADS)
 #   define USE_PTHREAD_SPECIFIC
 # elif defined(GC_HPUX_THREADS)
 #   ifdef __GNUC__