diff options
| author | Shenghou Ma <minux@golang.org> | 2014-12-29 01:08:40 -0500 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2014-12-29 07:36:07 +0000 |
| commit | ab0535ae3fb45ba734d47542cc4845f27f708d1b (patch) | |
| tree | 0357ccba7c596a90470785ebd189416d15b6d74e /src/liblink/obj8.c | |
| parent | 3b76b017cabb0ea29a184670e081edfe11afb8de (diff) | |
| download | go-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.c | 19 |
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; |
