path: root/doc/README.MacOSX
diff options
Diffstat (limited to 'doc/README.MacOSX')
1 files changed, 27 insertions, 0 deletions
diff --git a/doc/README.MacOSX b/doc/README.MacOSX
new file mode 100644
index 0000000..2abf0b4
--- /dev/null
+++ b/doc/README.MacOSX
@@ -0,0 +1,27 @@
+While the GC should work on MacOS X Server, MacOS X and Darwin, I only tested
+it on MacOS X Server.
+I've added a PPC assembly version of GC_push_regs(), thus the setjmp() hack is
+no longer necessary. Incremental collection is supported via mprotect/signal.
+The current solution isn't really optimal because the signal handler must decode
+the faulting PPC machine instruction in order to find the correct heap address.
+Further, it must poke around in the register state which the kernel saved away
+in some obscure register state structure before it calls the signal handler -
+needless to say the layout of this structure is no where documented.
+Threads and dynamic libraries are not yet supported (adding dynamic library
+support via the low-level dyld API shouldn't be that hard).
+The original MacOS X port was brought to you by Andrew Stone.
+June, 1 2000
+Dietmar Planitzer
+Note from Andrew Begel:
+One more fix to enable gc.a to link successfully into a shared library for
+MacOS X. You have to add -fno-common to the CFLAGS in the Makefile. MacOSX
+disallows common symbols in anything that eventually finds its way into a
+shared library. (I don't completely understand why, but -fno-common seems to
+work and doesn't mess up the garbage collector's functionality).