libgo patch committed: Change some stack fields to uintptr

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Thu Jun 22 18:09:00 GMT 2017


Hi Ian,

> Because of how gccgo implements cgo calls, the code in dropm may not
> have any write barriers.  As a step toward implementing that, change
> the gcstack, gcnextsegment, and gcnextsp fields of the g struct to
> uintptr, so that assignments to them do not require write barriers.
> The gcinitialsp field remains unsafe.Pointer, as on 32-bit systems
> that do not support split stack it points to a heap allocated space
> used for the goroutine stack.
>
> The test for this is runtime tests like TestCgoCallbackGC, which are
> not run today but will be run with a future gotools patch.
>
> Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
> to mainline.

this patch broke bootstrap on non-split-stack targets like Solaris:

/vol/gcc/src/hg/trunk/local/libgo/runtime/proc.c: In function âdoentersyscallblockâ:
/vol/gcc/src/hg/trunk/local/libgo/runtime/proc.c:681:15: error: assignment makes integer from pointer without a cast [-Werror=int-conversion]
   g->gcnextsp = (byte *) &v;
               ^

The patch below allowed sparc-sun-solaris2.12 and i386-pc-solaris2.12
builds to finish.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


-------------- next part --------------
A non-text attachment was scrubbed...
Name: libgo-gcnextsp.patch
Type: text/x-patch
Size: 266 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20170622/54f04add/attachment.bin>


More information about the Gcc-patches mailing list