From: Rob Pike Date: Wed, 11 Feb 2015 04:22:41 +0000 (-0800) Subject: [dev.cc] cmd/asm: fix dev.cc 386 build: implement CALL *x(SB) X-Git-Tag: go1.5beta1~1915^2~72 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e90a91eac4e493536aeeff867a2406c0ab31c76d;p=gostls13.git [dev.cc] cmd/asm: fix dev.cc 386 build: implement CALL *x(SB) Also clean up the branch code a bit TBR=rsc Change-Id: I209dea750db3a6769e7ccd79bb65c4d809aba152 Reviewed-on: https://go-review.googlesource.com/4530 Reviewed-by: Rob Pike --- diff --git a/src/cmd/asm/internal/asm/asm.go b/src/cmd/asm/internal/asm/asm.go index 90aa8bc2ae..05ba70d594 100644 --- a/src/cmd/asm/internal/asm/asm.go +++ b/src/cmd/asm/internal/asm/asm.go @@ -309,16 +309,11 @@ func (p *Parser) asmJump(op int, a []obj.Addr) { prog.To = *target case target.Type == obj.TYPE_MEM && (target.Name == obj.NAME_EXTERN || target.Name == obj.NAME_STATIC): // JMP main·morestack(SB) - isStatic := 0 - if target.Name == obj.NAME_STATIC { - isStatic = 1 - } - prog.To = obj.Addr{ - Type: obj.TYPE_BRANCH, - Sym: obj.Linklookup(p.linkCtxt, target.Sym.Name, isStatic), - Index: 0, - Offset: target.Offset, - } + prog.To = *target + case target.Type == obj.TYPE_INDIR && (target.Name == obj.NAME_EXTERN || target.Name == obj.NAME_STATIC): + // JMP *main·morestack(SB) + prog.To = *target + prog.To.Type = obj.TYPE_INDIR case target.Type == obj.TYPE_MEM && target.Reg == 0 && target.Offset == 0: // JMP exit targetProg := p.labels[target.Sym.Name]