This patch to libgo aligns the variable work in mgc0.c on an 8-byte boundary. The code expects that to be the case, and complains if it is not aligned. It would already be the case on a 64-bit system, but not necessarily on a 32-bit system. I haven't been able to recreate PR 59866, but I think this will fix it. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to 4.8 branch and mainline.
Ian
diff -r f1ef2f3189a2 libgo/runtime/mgc0.c --- a/libgo/runtime/mgc0.c Thu Jan 16 20:32:18 2014 -0800 +++ b/libgo/runtime/mgc0.c Fri Jan 17 14:36:08 2014 -0800 @@ -180,7 +180,7 @@ Obj *roots; uint32 nroot; uint32 rootcap; -} work; +} work __attribute__((aligned(8))); enum { GC_DEFAULT_PTR = GC_NUM_INSTR,