]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm: fix and test CALL, JMP aliases on arm, arm64, ppc64
authorRuss Cox <rsc@golang.org>
Tue, 28 Jul 2015 03:26:26 +0000 (23:26 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 28 Jul 2015 14:19:53 +0000 (14:19 +0000)
Fixes #11900.

Change-Id: Idfc54e1fac833c8d646266128efe46214a82dfed
Reviewed-on: https://go-review.googlesource.com/12741
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
src/cmd/asm/internal/arch/arm.go
src/cmd/asm/internal/arch/arm64.go
src/cmd/asm/internal/arch/ppc64.go
src/cmd/asm/internal/asm/testdata/arm.out
src/cmd/asm/internal/asm/testdata/arm.s
src/cmd/asm/internal/asm/testdata/arm64.out
src/cmd/asm/internal/asm/testdata/arm64.s
src/cmd/asm/internal/asm/testdata/ppc64.out
src/cmd/asm/internal/asm/testdata/ppc64.s
src/cmd/old5a/lex.go
src/cmd/old9a/lex.go

index 2354d616d95ca3996192f6d1c72ab181029ece7c..c03021446061a7bd0aaf5bd234ca36c8516d7cbe 100644 (file)
@@ -79,6 +79,7 @@ var armJump = map[string]bool{
        "BGT":  true,
        "BLE":  true,
        "CALL": true,
+       "JMP":  true,
 }
 
 func jumpArm(word string) bool {
index a0a0082347bdabea1965dd07e3f4ddc352e20209..0f29e81e2e1d36874c421ff61ddd023949e72adc 100644 (file)
@@ -42,6 +42,7 @@ var arm64Jump = map[string]bool{
        "CBZW":  true,
        "CBNZ":  true,
        "CBNZW": true,
+       "JMP":   true,
 }
 
 func jumpArm64(word string) bool {
index 5916e2413cb12a67ddd4a7efdc1d1e43832764c9..6523fbf134f9f650b9d17353d8b3834d44bb3467 100644 (file)
@@ -12,7 +12,7 @@ import "cmd/internal/obj/ppc64"
 
 func jumpPPC64(word string) bool {
        switch word {
-       case "BC", "BCL", "BEQ", "BGE", "BGT", "BL", "BLE", "BLT", "BNE", "BR", "BVC", "BVS", "CALL":
+       case "BC", "BCL", "BEQ", "BGE", "BGT", "BL", "BLE", "BLT", "BNE", "BR", "BVC", "BVS", "CALL", "JMP":
                return true
        }
        return false
index c297844b3765c4ac3ec9a121c7aa4745815ba74c..7501db3e5aac462e848c2eeb6412bcebd9c7db4e 100644 (file)
@@ -52,4 +52,8 @@
 266 00052 (testdata/arm.s:266) PLD     (R1)
 267 00053 (testdata/arm.s:267) PLD     4(R1)
 276 00054 (testdata/arm.s:276) RET
-285 00055 (testdata/arm.s:285) END
+280 00055 (testdata/arm.s:280) JMP     foo(SB)
+281 00056 (testdata/arm.s:281) CALL    foo(SB)
+282 00057 (testdata/arm.s:282) JMP     foo(SB)
+283 00058 (testdata/arm.s:283) CALL    foo(SB)
+292 00059 (testdata/arm.s:292) END
index 128f830b7e95b7f9da2f65e0c2e1ecfe4ad52d81..b8bdfb201a168a566a9537c9ea004f98b3493312 100644 (file)
@@ -275,6 +275,13 @@ TEXT       foo(SB), 0, $0
 //     }
        RET
 
+// More B/BL cases, and canonical names JMP, CALL.
+
+       B       foo(SB)
+       BL      foo(SB)
+       JMP     foo(SB)
+       CALL    foo(SB)
+
 //
 // END
 //
index f8cc74ea1d857ce7f98bd128981772e0e4e55a84..0b7b430f4c8352f96f15a4ad6ff6907027fd1867 100644 (file)
@@ -48,4 +48,8 @@
 242 00048 (testdata/arm64.s:242)       LDAXRW  (R0), R2
 243 00049 (testdata/arm64.s:243)       STLXRW  R1, (R0), R3
 251 00050 (testdata/arm64.s:251)       RET
-259 00051 (testdata/arm64.s:259)       END
+255 00051 (testdata/arm64.s:255)       JMP     foo(SB)
+256 00052 (testdata/arm64.s:256)       CALL    foo(SB)
+257 00053 (testdata/arm64.s:257)       JMP     foo(SB)
+258 00054 (testdata/arm64.s:258)       CALL    foo(SB)
+266 00055 (testdata/arm64.s:266)       END
index 699191be7a60095170de482220d9670043cbb50b..2c8720bd3b9511389597a91d155497441e7fbca5 100644 (file)
@@ -250,6 +250,13 @@ again:
 //     }
        RET
 
+// More B/BL cases, and canonical names JMP, CALL.
+
+       B       foo(SB)
+       BL      foo(SB)
+       JMP     foo(SB)
+       CALL    foo(SB)
+
 // END
 //
 //     LTYPEE comma
index b9596339d87316b849c4236c47c1ed01bd97d29c..2a5d1753338e1b1f09daeae95d4a19ff826fdd55 100644 (file)
 691 00107 (testdata/ppc64.s:691)       NOP     F2
 697 00108 (testdata/ppc64.s:697)       NOP     $4
 705 00109 (testdata/ppc64.s:705)       RET
-713 00110 (testdata/ppc64.s:713)       END
+709 00110 (testdata/ppc64.s:709)       JMP     foo(SB)
+710 00111 (testdata/ppc64.s:710)       CALL    foo(SB)
+711 00112 (testdata/ppc64.s:711)       JMP     foo(SB)
+712 00113 (testdata/ppc64.s:712)       CALL    foo(SB)
+720 00114 (testdata/ppc64.s:720)       END
index 136ced40e1a9187d08ad30a6c9b10812193e8aa4..46c1ee6d95d9d7b6b08c8125b91a4ec49e8c8519 100644 (file)
@@ -704,6 +704,13 @@ label1:
 //     }
        RET
 
+// More BR/BL cases, and canonical names JMP, CALL.
+
+       BR      foo(SB)
+       BL      foo(SB)
+       JMP     foo(SB)
+       CALL    foo(SB)
+
 // END
 //
 //     LEND    comma // asm doesn't support the trailing comma.
index 1afd8277932daae20fd1bfd20210acc0c2eff5ba..1f538ea65fe1450f170dc6e5a1e9c9cc5466634d 100644 (file)
@@ -249,7 +249,9 @@ var lexinit = []asm.Lextab{
        {"DIVF", LTYPEK, arm.ADIVF},
        {"DIVD", LTYPEK, arm.ADIVD},
        {"B", LTYPE4, arm.AB},
+       {"JMP", LTYPE4, arm.AB},
        {"BL", LTYPE4, arm.ABL},
+       {"CALL", LTYPE4, arm.ABL},
        {"BX", LTYPEBX, arm.ABX},
        {"BEQ", LTYPE5, arm.ABEQ},
        {"BNE", LTYPE5, arm.ABNE},
index 4f9b7eeda8ac7400a96d8d28919131d87d3a1345..f04c8dfdd637b547c9a69e9d2c9336ea7cef5ec6 100644 (file)
@@ -256,9 +256,11 @@ var lexinit = []asm.Lextab{
        {"SRAW", LSHW, ppc64.ASRAW},
        {"SRAWCC", LSHW, ppc64.ASRAWCC},
        {"BR", LBRA, ppc64.ABR},
+       {"JMP", LBRA, ppc64.ABR},
        {"BC", LBRA, ppc64.ABC},
        {"BCL", LBRA, ppc64.ABC},
        {"BL", LBRA, ppc64.ABL},
+       {"CALL", LBRA, ppc64.ABL},
        {"BEQ", LBRA, ppc64.ABEQ},
        {"BNE", LBRA, ppc64.ABNE},
        {"BGT", LBRA, ppc64.ABGT},