Optimize gadget fixups for MOV instructions.
authormortimer <mortimer@openbsd.org>
Sun, 11 Jul 2021 20:32:00 +0000 (20:32 +0000)
committermortimer <mortimer@openbsd.org>
Sun, 11 Jul 2021 20:32:00 +0000 (20:32 +0000)
commit3ef334a888d8f6af03ca812b84b77826d6a22879
treedb8e3065df5f985b41f2b2fddbb582498f3e6b93
parent37f7320a5f1bee6920b295b5893d2a269f4eb3e7
Optimize gadget fixups for MOV instructions.

Instead of swapping registers around, we can just use the REV version of
the same instruction, which has the same effect but encodes differently and
does not result in return bytes in the binary. This reduces the number
of xchg instructions resulting from gadget fixing.

Prompted by ratchov@, with input from millert@ and sthen@.

ok sthen@
gnu/llvm/llvm/lib/Target/X86/X86FixupGadgets.cpp