aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2015-07-27 23:26:26 -0400
committerRuss Cox <rsc@golang.org>2015-07-28 14:19:53 +0000
commitce23729af24eedbf18d6ab87298205edef357a19 (patch)
treedb96d26e2bf68d284298247bb4a432b2d2992c61
parent0229317d7665fc7195028f7dc7cd4e88d320e46a (diff)
downloadgo-ce23729af24eedbf18d6ab87298205edef357a19.tar.gz
go-ce23729af24eedbf18d6ab87298205edef357a19.zip
cmd/asm: fix and test CALL, JMP aliases on arm, arm64, ppc64
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>
-rw-r--r--src/cmd/asm/internal/arch/arm.go1
-rw-r--r--src/cmd/asm/internal/arch/arm64.go1
-rw-r--r--src/cmd/asm/internal/arch/ppc64.go2
-rw-r--r--src/cmd/asm/internal/asm/testdata/arm.out6
-rw-r--r--src/cmd/asm/internal/asm/testdata/arm.s7
-rw-r--r--src/cmd/asm/internal/asm/testdata/arm64.out6
-rw-r--r--src/cmd/asm/internal/asm/testdata/arm64.s7
-rw-r--r--src/cmd/asm/internal/asm/testdata/ppc64.out6
-rw-r--r--src/cmd/asm/internal/asm/testdata/ppc64.s7
-rw-r--r--src/cmd/old5a/lex.go2
-rw-r--r--src/cmd/old9a/lex.go2
11 files changed, 43 insertions, 4 deletions
diff --git a/src/cmd/asm/internal/arch/arm.go b/src/cmd/asm/internal/arch/arm.go
index 2354d616d9..c030214460 100644
--- a/src/cmd/asm/internal/arch/arm.go
+++ b/src/cmd/asm/internal/arch/arm.go
@@ -79,6 +79,7 @@ var armJump = map[string]bool{
"BGT": true,
"BLE": true,
"CALL": true,
+ "JMP": true,
}
func jumpArm(word string) bool {
diff --git a/src/cmd/asm/internal/arch/arm64.go b/src/cmd/asm/internal/arch/arm64.go
index a0a0082347..0f29e81e2e 100644
--- a/src/cmd/asm/internal/arch/arm64.go
+++ b/src/cmd/asm/internal/arch/arm64.go
@@ -42,6 +42,7 @@ var arm64Jump = map[string]bool{
"CBZW": true,
"CBNZ": true,
"CBNZW": true,
+ "JMP": true,
}
func jumpArm64(word string) bool {
diff --git a/src/cmd/asm/internal/arch/ppc64.go b/src/cmd/asm/internal/arch/ppc64.go
index 5916e2413c..6523fbf134 100644
--- a/src/cmd/asm/internal/arch/ppc64.go
+++ b/src/cmd/asm/internal/arch/ppc64.go
@@ -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
diff --git a/src/cmd/asm/internal/asm/testdata/arm.out b/src/cmd/asm/internal/asm/testdata/arm.out
index c297844b37..7501db3e5a 100644
--- a/src/cmd/asm/internal/asm/testdata/arm.out
+++ b/src/cmd/asm/internal/asm/testdata/arm.out
@@ -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
diff --git a/src/cmd/asm/internal/asm/testdata/arm.s b/src/cmd/asm/internal/asm/testdata/arm.s
index 128f830b7e..b8bdfb201a 100644
--- a/src/cmd/asm/internal/asm/testdata/arm.s
+++ b/src/cmd/asm/internal/asm/testdata/arm.s
@@ -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
//
diff --git a/src/cmd/asm/internal/asm/testdata/arm64.out b/src/cmd/asm/internal/asm/testdata/arm64.out
index f8cc74ea1d..0b7b430f4c 100644
--- a/src/cmd/asm/internal/asm/testdata/arm64.out
+++ b/src/cmd/asm/internal/asm/testdata/arm64.out
@@ -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
diff --git a/src/cmd/asm/internal/asm/testdata/arm64.s b/src/cmd/asm/internal/asm/testdata/arm64.s
index 699191be7a..2c8720bd3b 100644
--- a/src/cmd/asm/internal/asm/testdata/arm64.s
+++ b/src/cmd/asm/internal/asm/testdata/arm64.s
@@ -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
diff --git a/src/cmd/asm/internal/asm/testdata/ppc64.out b/src/cmd/asm/internal/asm/testdata/ppc64.out
index b9596339d8..2a5d175333 100644
--- a/src/cmd/asm/internal/asm/testdata/ppc64.out
+++ b/src/cmd/asm/internal/asm/testdata/ppc64.out
@@ -107,4 +107,8 @@
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
diff --git a/src/cmd/asm/internal/asm/testdata/ppc64.s b/src/cmd/asm/internal/asm/testdata/ppc64.s
index 136ced40e1..46c1ee6d95 100644
--- a/src/cmd/asm/internal/asm/testdata/ppc64.s
+++ b/src/cmd/asm/internal/asm/testdata/ppc64.s
@@ -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.
diff --git a/src/cmd/old5a/lex.go b/src/cmd/old5a/lex.go
index 1afd827793..1f538ea65f 100644
--- a/src/cmd/old5a/lex.go
+++ b/src/cmd/old5a/lex.go
@@ -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},
diff --git a/src/cmd/old9a/lex.go b/src/cmd/old9a/lex.go
index 4f9b7eeda8..f04c8dfdd6 100644
--- a/src/cmd/old9a/lex.go
+++ b/src/cmd/old9a/lex.go
@@ -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},