]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: don't mark the new call trampolines as NOSPLIT.
authorKeith Randall <khr@golang.org>
Tue, 6 Aug 2013 21:33:55 +0000 (14:33 -0700)
committerKeith Randall <khr@golang.org>
Tue, 6 Aug 2013 21:33:55 +0000 (14:33 -0700)
They may call other NOSPLIT routines, and that might
overflow the stack.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/12563043

src/pkg/runtime/asm_386.s
src/pkg/runtime/asm_amd64.s
src/pkg/runtime/asm_arm.s

index 863bcc32f9c7ec08951e5d57a81b958768628237..a441afc2084b4034db5e9bcd7ea966548b2f4e91 100644 (file)
@@ -336,8 +336,8 @@ TEXT reflect·call(SB), 7, $0-12
        MOVL    $runtime·badreflectcall(SB), AX
        JMP     AX
 
-#define CALLFN(NAME,MAXSIZE,FLAGS)             \
-TEXT runtime·NAME(SB), FLAGS, $MAXSIZE-12;    \
+#define CALLFN(NAME,MAXSIZE)                   \
+TEXT runtime·NAME(SB), 0, $MAXSIZE-12;                \
        /* copy arguments to stack */           \
        MOVL    argptr+4(FP), SI;               \
        MOVL    argsize+8(FP), CX;              \
@@ -353,33 +353,33 @@ TEXT runtime·NAME(SB), FLAGS, $MAXSIZE-12;       \
        REP;MOVSB;                              \
        RET
 
-CALLFN(call16, 16, 7)
-CALLFN(call32, 32, 7)
-CALLFN(call64, 64, 7)
-CALLFN(call128, 128, 0)
-CALLFN(call256, 256, 0)
-CALLFN(call512, 512, 0)
-CALLFN(call1024, 1024, 0)
-CALLFN(call2048, 2048, 0)
-CALLFN(call4096, 4096, 0)
-CALLFN(call8192, 8192, 0)
-CALLFN(call16384, 16384, 0)
-CALLFN(call32768, 32768, 0)
-CALLFN(call65536, 65536, 0)
-CALLFN(call131072, 131072, 0)
-CALLFN(call262144, 262144, 0)
-CALLFN(call524288, 524288, 0)
-CALLFN(call1048576, 1048576, 0)
-CALLFN(call2097152, 2097152, 0)
-CALLFN(call4194304, 4194304, 0)
-CALLFN(call8388608, 8388608, 0)
-CALLFN(call16777216, 16777216, 0)
-CALLFN(call33554432, 33554432, 0)
-CALLFN(call67108864, 67108864, 0)
-CALLFN(call134217728, 134217728, 0)
-CALLFN(call268435456, 268435456, 0)
-CALLFN(call536870912, 536870912, 0)
-CALLFN(call1073741824, 1073741824, 0)
+CALLFN(call16, 16)
+CALLFN(call32, 32)
+CALLFN(call64, 64)
+CALLFN(call128, 128)
+CALLFN(call256, 256)
+CALLFN(call512, 512)
+CALLFN(call1024, 1024)
+CALLFN(call2048, 2048)
+CALLFN(call4096, 4096)
+CALLFN(call8192, 8192)
+CALLFN(call16384, 16384)
+CALLFN(call32768, 32768)
+CALLFN(call65536, 65536)
+CALLFN(call131072, 131072)
+CALLFN(call262144, 262144)
+CALLFN(call524288, 524288)
+CALLFN(call1048576, 1048576)
+CALLFN(call2097152, 2097152)
+CALLFN(call4194304, 4194304)
+CALLFN(call8388608, 8388608)
+CALLFN(call16777216, 16777216)
+CALLFN(call33554432, 33554432)
+CALLFN(call67108864, 67108864)
+CALLFN(call134217728, 134217728)
+CALLFN(call268435456, 268435456)
+CALLFN(call536870912, 536870912)
+CALLFN(call1073741824, 1073741824)
 
 // Return point when leaving stack.
 //
index 8cb06d91bf97d93595825aeb000858a45cddec94..8280ac02a98b6e5af886607f5596fe949f7c6b13 100644 (file)
@@ -317,8 +317,8 @@ TEXT reflect·call(SB), 7, $0-20
        MOVQ    $runtime·badreflectcall(SB), AX
        JMP     AX
 
-#define CALLFN(NAME,MAXSIZE,FLAGS)             \
-TEXT runtime·NAME(SB), FLAGS, $MAXSIZE-20;    \
+#define CALLFN(NAME,MAXSIZE)                   \
+TEXT runtime·NAME(SB), 0, $MAXSIZE-20;                \
        /* copy arguments to stack */           \
        MOVQ    argptr+8(FP), SI;               \
        MOVLQZX argsize+16(FP), CX;             \
@@ -334,33 +334,33 @@ TEXT runtime·NAME(SB), FLAGS, $MAXSIZE-20;       \
        REP;MOVSB;                              \
        RET
 
-CALLFN(call16, 16, 7)
-CALLFN(call32, 32, 7)
-CALLFN(call64, 64, 7)
-CALLFN(call128, 128, 0)
-CALLFN(call256, 256, 0)
-CALLFN(call512, 512, 0)
-CALLFN(call1024, 1024, 0)
-CALLFN(call2048, 2048, 0)
-CALLFN(call4096, 4096, 0)
-CALLFN(call8192, 8192, 0)
-CALLFN(call16384, 16384, 0)
-CALLFN(call32768, 32768, 0)
-CALLFN(call65536, 65536, 0)
-CALLFN(call131072, 131072, 0)
-CALLFN(call262144, 262144, 0)
-CALLFN(call524288, 524288, 0)
-CALLFN(call1048576, 1048576, 0)
-CALLFN(call2097152, 2097152, 0)
-CALLFN(call4194304, 4194304, 0)
-CALLFN(call8388608, 8388608, 0)
-CALLFN(call16777216, 16777216, 0)
-CALLFN(call33554432, 33554432, 0)
-CALLFN(call67108864, 67108864, 0)
-CALLFN(call134217728, 134217728, 0)
-CALLFN(call268435456, 268435456, 0)
-CALLFN(call536870912, 536870912, 0)
-CALLFN(call1073741824, 1073741824, 0)
+CALLFN(call16, 16)
+CALLFN(call32, 32)
+CALLFN(call64, 64)
+CALLFN(call128, 128)
+CALLFN(call256, 256)
+CALLFN(call512, 512)
+CALLFN(call1024, 1024)
+CALLFN(call2048, 2048)
+CALLFN(call4096, 4096)
+CALLFN(call8192, 8192)
+CALLFN(call16384, 16384)
+CALLFN(call32768, 32768)
+CALLFN(call65536, 65536)
+CALLFN(call131072, 131072)
+CALLFN(call262144, 262144)
+CALLFN(call524288, 524288)
+CALLFN(call1048576, 1048576)
+CALLFN(call2097152, 2097152)
+CALLFN(call4194304, 4194304)
+CALLFN(call8388608, 8388608)
+CALLFN(call16777216, 16777216)
+CALLFN(call33554432, 33554432)
+CALLFN(call67108864, 67108864)
+CALLFN(call134217728, 134217728)
+CALLFN(call268435456, 268435456)
+CALLFN(call536870912, 536870912)
+CALLFN(call1073741824, 1073741824)
 
 // Return point when leaving stack.
 //
index 313e7b84f2ed0d2b32785918923d907e12313ef6..b029674a47b7cfabaf430d7cc061bfae61bf5f11 100644 (file)
@@ -292,8 +292,8 @@ TEXT reflect·call(SB), 7, $-4-12
        MOVW    $runtime·badreflectcall(SB), R1
        B       (R1)
 
-#define CALLFN(NAME,MAXSIZE,FLAGS)             \
-TEXT runtime·NAME(SB), FLAGS, $MAXSIZE-12;    \
+#define CALLFN(NAME,MAXSIZE)                   \
+TEXT runtime·NAME(SB), 0, $MAXSIZE-12;                \
        /* copy arguments to stack */           \
        MOVW    argptr+4(FP), R0;               \
        MOVW    argsize+8(FP), R2;              \
@@ -319,33 +319,33 @@ TEXT runtime·NAME(SB), FLAGS, $MAXSIZE-12;       \
        SUB     $1, R2, R2;                     \
        B       -5(PC)                          \
 
-CALLFN(call16, 16, 7)
-CALLFN(call32, 32, 7)
-CALLFN(call64, 64, 7)
-CALLFN(call128, 128, 0)
-CALLFN(call256, 256, 0)
-CALLFN(call512, 512, 0)
-CALLFN(call1024, 1024, 0)
-CALLFN(call2048, 2048, 0)
-CALLFN(call4096, 4096, 0)
-CALLFN(call8192, 8192, 0)
-CALLFN(call16384, 16384, 0)
-CALLFN(call32768, 32768, 0)
-CALLFN(call65536, 65536, 0)
-CALLFN(call131072, 131072, 0)
-CALLFN(call262144, 262144, 0)
-CALLFN(call524288, 524288, 0)
-CALLFN(call1048576, 1048576, 0)
-CALLFN(call2097152, 2097152, 0)
-CALLFN(call4194304, 4194304, 0)
-CALLFN(call8388608, 8388608, 0)
-CALLFN(call16777216, 16777216, 0)
-CALLFN(call33554432, 33554432, 0)
-CALLFN(call67108864, 67108864, 0)
-CALLFN(call134217728, 134217728, 0)
-CALLFN(call268435456, 268435456, 0)
-CALLFN(call536870912, 536870912, 0)
-CALLFN(call1073741824, 1073741824, 0)
+CALLFN(call16, 16)
+CALLFN(call32, 32)
+CALLFN(call64, 64)
+CALLFN(call128, 128)
+CALLFN(call256, 256)
+CALLFN(call512, 512)
+CALLFN(call1024, 1024)
+CALLFN(call2048, 2048)
+CALLFN(call4096, 4096)
+CALLFN(call8192, 8192)
+CALLFN(call16384, 16384)
+CALLFN(call32768, 32768)
+CALLFN(call65536, 65536)
+CALLFN(call131072, 131072)
+CALLFN(call262144, 262144)
+CALLFN(call524288, 524288)
+CALLFN(call1048576, 1048576)
+CALLFN(call2097152, 2097152)
+CALLFN(call4194304, 4194304)
+CALLFN(call8388608, 8388608)
+CALLFN(call16777216, 16777216)
+CALLFN(call33554432, 33554432)
+CALLFN(call67108864, 67108864)
+CALLFN(call134217728, 134217728)
+CALLFN(call268435456, 268435456)
+CALLFN(call536870912, 536870912)
+CALLFN(call1073741824, 1073741824)
 
 // Return point when leaving stack.
 // using frame size $-4 means do not save LR on stack.