OSDN Git Service

2007-01-19 Andreas Tobler <a.tobler@schweiz.org>
[pf3gnuchains/gcc-fork.git] / boehm-gc / include / private / gc_priv.h
index f72faf9..41c75d3 100644 (file)
@@ -472,15 +472,17 @@ extern GC_warn_proc GC_current_warn_proc;
 #      if defined(POWERPC)
 #              if CPP_WORDSZ == 32
 #                define GC_THREAD_STATE_T ppc_thread_state_t
+#                define GC_MACH_THREAD_STATE PPC_THREAD_STATE
+#                define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
 #                define GC_MACH_HEADER mach_header
 #                define GC_MACH_SECTION section
 #              else
 #                define GC_THREAD_STATE_T ppc_thread_state64_t
+#                define GC_MACH_THREAD_STATE PPC_THREAD_STATE64
+#                define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE64_COUNT
 #                define GC_MACH_HEADER mach_header_64
 #                define GC_MACH_SECTION section_64
 #              endif
-#              define GC_MACH_THREAD_STATE PPC_THREAD_STATE
-#              define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
 #      elif defined(I386) || defined(X86_64)
 #              if CPP_WORDSZ == 32
 #                define GC_THREAD_STATE_T x86_thread_state32_t
@@ -500,6 +502,18 @@ extern GC_warn_proc GC_current_warn_proc;
 #              define GC_MACH_THREAD_STATE MACHINE_THREAD_STATE
 #              define GC_MACH_THREAD_STATE_COUNT MACHINE_THREAD_STATE_COUNT
 #      endif
+/* Try to work out the right way to access thread state structure members.
+   The structure has changed its definition in different Darwin versions.
+   This now defaults to the (older) names without __, thus hopefully,
+   not breaking any existing Makefile.direct builds.  */
+#      if defined (HAS_PPC_THREAD_STATE___R0) \
+        || defined (HAS_PPC_THREAD_STATE64___R0) \
+        || defined (HAS_X86_THREAD_STATE32___EAX) \
+        || defined (HAS_X86_THREAD_STATE64___RAX)
+#        define THREAD_FLD(x) __ ## x
+#      else
+#        define THREAD_FLD(x) x
+#      endif
 #endif
 /*********************************/
 /*                               */