diff options
| author | Rob Pike <r@golang.org> | 2015-02-10 20:22:41 -0800 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2015-02-11 04:24:14 +0000 |
| commit | e90a91eac4e493536aeeff867a2406c0ab31c76d (patch) | |
| tree | 8b3b7b7831948e9d1c3a3384702945f15404c0ed /src/cmd | |
| parent | 7c604b0b7d5489f883dc5c90fa93100201074014 (diff) | |
| download | go-e90a91eac4e493536aeeff867a2406c0ab31c76d.tar.xz | |
[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 <r@golang.org>
Diffstat (limited to 'src/cmd')
| -rw-r--r-- | src/cmd/asm/internal/asm/asm.go | 15 |
1 files changed, 5 insertions, 10 deletions
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] |
