Hi Ian, > This patch to libgo rewrites the interface code from C to Go. > > I started to copy the Go 1.7 interface code, but the gc and gccgo > representations of interfaces are too different. So instead I rewrote > the gccgo interface code from C to Go. The code is largely the same > as it was, but the names are more like those used in the gc runtime. > > I also copied over the string comparison functions, and tweaked the > compiler to use eqstring when comparing strings for equality. > > Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed > to mainline.
this patch broke Solaris 11 and 12 bootstrap: In file included from /vol/gcc/src/hg/trunk/local/libgo/runtime/runtime.h:113:0, from /vol/gcc/src/hg/trunk/local/libgo/runtime/go-main.c:17: ./runtime.inc:2:12: error: expected identifier or '(' before numeric constant #define c1 3267000013 ^ ./runtime.inc:713:11: note: in expansion of macro 'c1' uint32_t c1; ^~ Makefile:1630: recipe for target 'libgobegin_a-go-main.o' failed make[4]: *** [libgobegin_a-go-main.o] Error 1 runtime.inc starts with #define c0 2860486313 #define c1 3267000013 and lines 712-713 have struct _Compartments_t { uint32_t c1; which stems from <sys/tsol/label_macro.h> (Compartments_t). It seems c[01] were introduced via the new go/runtime/alg.go. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University