]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.cc] cmd/asm: fix dev.cc 386 build: implement CALL *x(SB)
authorRob Pike <r@golang.org>
Wed, 11 Feb 2015 04:22:41 +0000 (20:22 -0800)
committerRob Pike <r@golang.org>
Wed, 11 Feb 2015 04:24:14 +0000 (04:24 +0000)
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>
src/cmd/asm/internal/asm/asm.go

index 90aa8bc2aebafd9212a87251034521f2f95e8328..05ba70d59403b32709085e75fe93e60d5a16e8b3 100644 (file)
@@ -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]