aboutsummaryrefslogtreecommitdiff
path: root/src/liblink/obj8.c
diff options
context:
space:
mode:
authorShenghou Ma <minux@golang.org>2014-12-29 01:08:40 -0500
committerKeith Randall <khr@golang.org>2014-12-29 07:36:07 +0000
commitab0535ae3fb45ba734d47542cc4845f27f708d1b (patch)
tree0357ccba7c596a90470785ebd189416d15b6d74e /src/liblink/obj8.c
parent3b76b017cabb0ea29a184670e081edfe11afb8de (diff)
downloadgo-ab0535ae3fb45ba734d47542cc4845f27f708d1b.tar.xz
liblink, cmd/ld, runtime: remove stackguard1
Now that we've removed all the C code in runtime and the C compilers, there is no need to have a separate stackguard field to check for C code on Go stack. Remove field g.stackguard1 and rename g.stackguard0 to g.stackguard. Adjust liblink and cmd/ld as necessary. Change-Id: I54e75db5a93d783e86af5ff1a6cd497d669d8d33 Reviewed-on: https://go-review.googlesource.com/2144 Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/liblink/obj8.c')
-rw-r--r--src/liblink/obj8.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/liblink/obj8.c b/src/liblink/obj8.c
index f54153ae9b..023bea623b 100644
--- a/src/liblink/obj8.c
+++ b/src/liblink/obj8.c
@@ -335,7 +335,7 @@ addstacksplit(Link *ctxt, LSym *cursym)
p = appendp(ctxt, p);
p->as = AMOVL;
p->from.type = D_INDIR+D_CX;
- p->from.offset = 4*ctxt->arch->ptrsize; // G.panic
+ p->from.offset = 3*ctxt->arch->ptrsize; // G.panic
p->to.type = D_BX;
p = appendp(ctxt, p);
@@ -538,9 +538,7 @@ stacksplit(Link *ctxt, Prog *p, int32 framesize, int noctxt, Prog **jmpok)
p->as = ACMPL;
p->from.type = D_SP;
p->to.type = D_INDIR+D_CX;
- p->to.offset = 2*ctxt->arch->ptrsize; // G.stackguard0
- if(ctxt->cursym->cfunc)
- p->to.offset = 3*ctxt->arch->ptrsize; // G.stackguard1
+ p->to.offset = 2*ctxt->arch->ptrsize; // G.stackguard
} else if(framesize <= StackBig) {
// large stack: SP-framesize <= stackguard-StackSmall
// LEAL -(framesize-StackSmall)(SP), AX
@@ -555,9 +553,7 @@ stacksplit(Link *ctxt, Prog *p, int32 framesize, int noctxt, Prog **jmpok)
p->as = ACMPL;
p->from.type = D_AX;
p->to.type = D_INDIR+D_CX;
- p->to.offset = 2*ctxt->arch->ptrsize; // G.stackguard0
- if(ctxt->cursym->cfunc)
- p->to.offset = 3*ctxt->arch->ptrsize; // G.stackguard1
+ p->to.offset = 2*ctxt->arch->ptrsize; // G.stackguard
} else {
// Such a large stack we need to protect against wraparound
// if SP is close to zero.
@@ -577,9 +573,7 @@ stacksplit(Link *ctxt, Prog *p, int32 framesize, int noctxt, Prog **jmpok)
p->as = AMOVL;
p->from.type = D_INDIR+D_CX;
p->from.offset = 0;
- p->from.offset = 2*ctxt->arch->ptrsize; // G.stackguard0
- if(ctxt->cursym->cfunc)
- p->from.offset = 3*ctxt->arch->ptrsize; // G.stackguard1
+ p->from.offset = 2*ctxt->arch->ptrsize; // G.stackguard
p->to.type = D_SI;
p = appendp(ctxt, p);
@@ -622,10 +616,7 @@ stacksplit(Link *ctxt, Prog *p, int32 framesize, int noctxt, Prog **jmpok)
p = appendp(ctxt, p);
p->as = ACALL;
p->to.type = D_BRANCH;
- if(ctxt->cursym->cfunc)
- p->to.sym = linklookup(ctxt, "runtime.morestackc", 0);
- else
- p->to.sym = ctxt->symmorestack[noctxt];
+ p->to.sym = ctxt->symmorestack[noctxt];
p = appendp(ctxt, p);
p->as = AJMP;