libgo patch committed: memequal and memclrNoHeapPointers nosplit

Ian Lance Taylor
Tue Jun 25 06:16:00 GMT 2019

This patch by Cherry Zhang changes libgo to mark the memequal and
memclrNoHeapPointers functions as nosplit.  They are wrappers of libc
functions that use no stack.  Mark them nosplit so the linker won't
patch it to call __morestack_non_split.  Bootstrapped and ran Go
testsuite on x86_64-pc-linux-gnu.  Committed to mainline.

-------------- next part --------------
Index: gcc/go/gofrontend/MERGE
--- gcc/go/gofrontend/MERGE	(revision 272624)
+++ gcc/go/gofrontend/MERGE	(working copy)
@@ -1,4 +1,4 @@
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: libgo/runtime/go-memclr.c
--- libgo/runtime/go-memclr.c	(revision 272608)
+++ libgo/runtime/go-memclr.c	(working copy)
@@ -7,7 +7,8 @@
 #include "runtime.h"
 void memclrNoHeapPointers(void *, uintptr)
-  __asm__ (GOSYM_PREFIX "runtime.memclrNoHeapPointers");
+  __asm__ (GOSYM_PREFIX "runtime.memclrNoHeapPointers")
+  __attribute__ ((no_split_stack));
 memclrNoHeapPointers (void *p1, uintptr len)
Index: libgo/runtime/go-memequal.c
--- libgo/runtime/go-memequal.c	(revision 272608)
+++ libgo/runtime/go-memequal.c	(working copy)
@@ -7,7 +7,8 @@
 #include "runtime.h"
 _Bool memequal (void *, void *, uintptr)
-  __asm__ (GOSYM_PREFIX "runtime.memequal");
+  __asm__ (GOSYM_PREFIX "runtime.memequal")
+  __attribute__ ((no_split_stack));
 memequal (void *p1, void *p2, uintptr len)

More information about the Gcc-patches mailing list