diff options
author | Russ Cox <rsc@golang.org> | 2013-12-09 09:58:35 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2013-12-09 09:58:35 -0800 |
commit | d0de9a7d56069ed1798756a8a350b412a90e17e2 (patch) | |
tree | 4fedac1f51f5ecc3b19ebe47c79a0d1d303fcbe9 /src/liblink/obj6.c | |
parent | 104d7c7d637e356e852c11be5d6aa5499a92b566 (diff) | |
download | go-d0de9a7d56069ed1798756a8a350b412a90e17e2.tar.gz |
cmd/6l: fix linux/amd64
TBR=iant
CC=golang-dev
https://codereview.appspot.com/39530043
Diffstat (limited to 'src/liblink/obj6.c')
-rw-r--r-- | src/liblink/obj6.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/liblink/obj6.c b/src/liblink/obj6.c index bd24d1d9e..8c165335e 100644 --- a/src/liblink/obj6.c +++ b/src/liblink/obj6.c @@ -225,9 +225,9 @@ static void progedit(Link *ctxt, Prog *p) { Prog *q; - LSym *gmsym; - - gmsym = nil; // TODO + + if(ctxt->gmsym == nil) + ctxt->gmsym = linklookup(ctxt, "runtime.tlsgm", 0); if(ctxt->headtype == Hwindows) { // Windows @@ -286,16 +286,14 @@ progedit(Link *ctxt, Prog *p) // op runtime.tlsgm(SB), reg // to // NOP - if(gmsym != nil && p->from.sym == gmsym) { + if(ctxt->gmsym != nil && p->from.sym == ctxt->gmsym) { p->as = ANOP; p->from.type = D_NONE; p->to.type = D_NONE; p->from.sym = nil; p->to.sym = nil; - return; } } else { - /* // Convert TLS reads of the form // op n(GS), reg // to @@ -311,10 +309,9 @@ progedit(Link *ctxt, Prog *p) q->from.offset = p->from.offset; p->as = AMOVQ; p->from.type = D_EXTERN; - p->from.sym = gmsym; + p->from.sym = ctxt->gmsym; p->from.offset = 0; } - */ } } @@ -359,8 +356,9 @@ addstacksplit(Link *ctxt, LSym *cursym) uint32 i; vlong textstksiz, textarg; - if(ctxt->gmsym == nil) { + if(ctxt->gmsym == nil) ctxt->gmsym = linklookup(ctxt, "runtime.tlsgm", 0); + if(ctxt->symmorestack[0] == nil) { if(nelem(morename) > nelem(ctxt->symmorestack)) sysfatal("Link.symmorestack needs at least %d elements", nelem(morename)); for(i=0; i<nelem(morename); i++) |