android_kernel_sony_sdm845/tools/objtool
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Masami Hiramatsu 1756a4f78b x86/decoder: Add TEST opcode to Group3-2
[ Upstream commit 8b7e20a7ba54836076ff35a28349dabea4cec48f ]

Add TEST opcode to Group3-2 reg=001b as same as Group3-1 does.

Commit

  12a78d43de76 ("x86/decoder: Add new TEST instruction pattern")

added a TEST opcode assignment to f6 XX/001/XXX (Group 3-1), but did
not add f7 XX/001/XXX (Group 3-2).

Actually, this TEST opcode variant (ModRM.reg /1) is not described in
the Intel SDM Vol2 but in AMD64 Architecture Programmer's Manual Vol.3,
Appendix A.2 Table A-6. ModRM.reg Extensions for the Primary Opcode Map.

Without this fix, Randy found a warning by insn_decoder_test related
to this issue as below.

    HOSTCC  arch/x86/tools/insn_decoder_test
    HOSTCC  arch/x86/tools/insn_sanity
    TEST    posttest
  arch/x86/tools/insn_decoder_test: warning: Found an x86 instruction decoder bug, please report this.
  arch/x86/tools/insn_decoder_test: warning: ffffffff81000bf1:	f7 0b 00 01 08 00    	testl  $0x80100,(%rbx)
  arch/x86/tools/insn_decoder_test: warning: objdump says 6 bytes, but insn_get_length() says 2
  arch/x86/tools/insn_decoder_test: warning: Decoded and checked 11913894 instructions with 1 failures
    TEST    posttest
  arch/x86/tools/insn_sanity: Success: decoded and checked 1000000 random instructions with 0 errors (seed:0x871ce29c)

To fix this error, add the TEST opcode according to AMD64 APM Vol.3.

 [ bp: Massage commit message. ]

Reported-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>
Link: https://lkml.kernel.org/r/157966631413.9580.10311036595431878351.stgit@devnote2
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-28 15:42:36 +01:00
..
arch/x86 x86/decoder: Add TEST opcode to Group3-2 2020-02-28 15:42:36 +01:00
Documentation objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
.gitignore objtool: update .gitignore file 2018-06-26 08:08:05 +08:00
arch.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
Build objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
builtin-check.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
builtin-orc.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
builtin.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
cfi.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
check.c objtool: Add rewind_stack_do_exit() to the noreturn list 2019-08-11 12:22:15 +02:00
check.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
elf.c objtool: Support GCC 9 cold subfunction naming scheme 2019-08-06 18:29:42 +02:00
elf.h objtool: Support GCC 8's cold subfunctions 2018-06-05 10:28:57 +02:00
Makefile objtool: Clobber user CFLAGS variable 2019-10-05 12:30:08 +02:00
objtool.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
orc.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
orc_dump.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
orc_gen.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
special.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
special.h
sync-check.sh objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
warn.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00