]> Cypherpunks repositories - gostls13.git/commit
cmd/internal/obj/x86: disallow PC/FP/SB scaled index
authorquasilyte <quasilyte@gmail.com>
Wed, 18 Apr 2018 16:49:27 +0000 (19:49 +0300)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 20 Apr 2018 23:45:47 +0000 (23:45 +0000)
commitd487488135735e9dfd30c6c37940e6abc3189ba3
treefbebceea007e80753b3987025c574c00e7d46d91
parentdd71e3fef4a2845ae33c493e7fcdd7702812669d
cmd/internal/obj/x86: disallow PC/FP/SB scaled index

Reject to compile I386/AMD64 asm code that contains
(Register)(PseudoReg*scale) forms of memory operands.
Example of such program: "CALL (AX)(PC*2)".
PseudoReg is one of the PC, FP, SB (but not SP).

When pseudo-register is used in register indirect as
scaled index base, x86 backend will panic because
its register file misses SB/FP/PC registers.

Fixes #12657.

Change-Id: I30fca797b537cbc86ab47583ae96c6a0c59acaa1
Reviewed-on: https://go-review.googlesource.com/107835
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/cmd/asm/internal/asm/testdata/amd64error.s
src/cmd/internal/obj/x86/asm6.go