On Fri, Nov 19, 2010 at 01:23:14PM -0800, Ian Lance Taylor wrote:
> Jack Howarth <[email protected]> writes:
>
> > Actually, darwin doesn't use the boehm-gc/pthread_stop_world.c containing
> > the SIGRTMIN code. There is an entirely separate
> > boehm-gc/darwin_stop_world.c
> > for the thread handling on darwin. While boehm-gc/pthread_stop_world.c is
> > compiled on darwin, the code in it is skipped because of the...
>
> You probably know this, but to be pedantically clear, the garbage
> collector in libgo doesn't use boehm-gc. It's entirely separate code.
>
> Clearly the boehm-gc Darwin support would be a good starting point for
> libgo Darwin support, though.
>
> Ian
Ian,
We might be able to use...
Index: libgo/runtime/go-go.c
===================================================================
--- libgo/runtime/go-go.c (revision 166953)
+++ libgo/runtime/go-go.c (working copy)
@@ -43,8 +43,13 @@
/* We stop the threads by sending them the signal GO_SIG_STOP and we
start them by sending them the signal GO_SIG_START. */
+#if defined(__MACH__)
+#define GO_SIG_START SIGUSR1
+#define GO_SIG_STOP SIGUSR2
+#else
#define GO_SIG_START (SIGRTMIN + 1)
#define GO_SIG_STOP (SIGRTMIN + 2)
+#endif
#ifndef SA_RESTART
#define SA_RESTART 0
on darwin since our sys/signal.h has...
#define SIGUSR1 30 /* user defined signal 1 */
#define SIGUSR2 31 /* user defined signal 2 */
This allows the compilation to proceed to another error...
/bin/sh ./libtool --tag=CC --mode=compile
/Users/howarth/darwin_objdir/./gcc/xgcc -B/Users/howarth/darwin_objdir/./gcc/
-B/Users/howarth/dist/x86_64-apple-darwin10.5.0/bin/
-B/Users/howarth/dist/x86_64-apple-darwin10.5.0/lib/ -isystem
/Users/howarth/dist/x86_64-apple-darwin10.5.0/include -isystem
/Users/howarth/dist/x86_64-apple-darwin10.5.0/sys-include -DHAVE_CONFIG_H
-I. -I../../../gccgo/libgo -I ../../../gccgo/libgo/runtime
-I../../../gccgo/libgo/../libffi/include -I../libffi/include -pthread
-fexceptions -fplan9-extensions -Wall -Wextra -Wwrite-strings -Wcast-qual
-Werror -minline-all-stringops -I ../../../gccgo/libgo/../gcc -I
../../gcc/include -g -O2 -MT go-go.lo -MD -MP -MF .deps/go-go.Tpo -c -o
go-go.lo `test -f 'runtime/go-go.c' || echo
'../../../gccgo/libgo/'`runtime/go-go.c
libtool: compile: /Users/howarth/darwin_objdir/./gcc/xgcc
-B/Users/howarth/darwin_objdir/./gcc/
-B/Users/howarth/dist/x86_64-apple-darwin10.5.0/bin/
-B/Users/howarth/dist/x86_64-apple-darwin10.5.0/lib/ -isystem
/Users/howarth/dist/x86_64-apple-darwin10.5.0/include -isystem
/Users/howarth/dist/x86_64-apple-darwin10.5.0/sys-include -DHAVE_CONFIG_H -I.
-I../../../gccgo/libgo -I ../../../gccgo/libgo/runtime
-I../../../gccgo/libgo/../libffi/include -I../libffi/include -pthread
-fexceptions -fplan9-extensions -Wall -Wextra -Wwrite-strings -Wcast-qual
-Werror -minline-all-stringops -I ../../../gccgo/libgo/../gcc -I
../../gcc/include -g -O2 -MT go-go.lo -MD -MP -MF .deps/go-go.Tpo -c
../../../gccgo/libgo/runtime/go-go.c -fno-common -DPIC -o .libs/go-go.o
../../../gccgo/libgo/runtime/go-go.c:436:1: error: conflicting types for
'__go_scanstacks'
../../../gccgo/libgo/runtime/runtime.h:132:6: note: previous declaration of
'__go_scanstacks' was here
where you have...
void
__go_scanstacks (void (*scan) (unsigned char *, int64_t))
in gccgo/libgo/runtime/go-go.c but...
void __go_scanstacks(void (*scan)(byte *, int64));
in gccgo/libgo/runtime/runtime.h.
Jack