aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2015-02-10 20:22:41 -0800
committerRob Pike <r@golang.org>2015-02-11 04:24:14 +0000
commite90a91eac4e493536aeeff867a2406c0ab31c76d (patch)
tree8b3b7b7831948e9d1c3a3384702945f15404c0ed /src/cmd
parent7c604b0b7d5489f883dc5c90fa93100201074014 (diff)
downloadgo-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.go15
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]