[compiler-rt] [win/asan] GetInstructionSize: Fix `8D A4 24 ...` to return rel_offset=3. (PR #119794)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 13 20:10:42 PST 2024
https://github.com/bernhardu updated https://github.com/llvm/llvm-project/pull/119794
>From 60b672ab06483375937c2ef827fd69737b506e3f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= <bernhardu at mailbox.org>
Date: Wed, 4 Dec 2024 15:45:58 +0100
Subject: [PATCH] [win/asan] GetInstructionSize: Add test for `8D A4 24 ...`.
---
compiler-rt/lib/interception/tests/interception_win_test.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/compiler-rt/lib/interception/tests/interception_win_test.cpp b/compiler-rt/lib/interception/tests/interception_win_test.cpp
index 04d9a6766f65ad..3a2d8b271113d6 100644
--- a/compiler-rt/lib/interception/tests/interception_win_test.cpp
+++ b/compiler-rt/lib/interception/tests/interception_win_test.cpp
@@ -801,8 +801,8 @@ const struct InstructionSizeData {
size_t size; // hold instruction size or 0 for failure,
// e.g. on control instructions
u8 instr[16];
- size_t rel_offset; // filled just for instructions with two operands
- // and displacement length of four bytes.
+ size_t rel_offset; // adjustment for RIP-relative addresses when copying
+ // instructions during hooking via hotpatch or trampoline.
const char *comment;
} data[] = {
// clang-format off
@@ -858,6 +858,7 @@ const struct InstructionSizeData {
{ 5, {0x68, 0x71, 0x72, 0x73, 0x74}, 0, "68 XX XX XX XX : push imm32"},
{ 5, {0xb8, 0x71, 0x72, 0x73, 0x74}, 0, "b8 XX XX XX XX : mov eax, XX XX XX XX"},
{ 5, {0xB9, 0x71, 0x72, 0x73, 0x74}, 0, "b9 XX XX XX XX : mov ecx, XX XX XX XX"},
+ { 7, {0x8D, 0xA4, 0x24, 0x73, 0x74, 0x75, 0x76}, 0, "8D A4 24 XX XX XX XX : lea esp, [esp + XX XX XX XX]"},
#if SANITIZER_WINDOWS_x64
// sorted list
{ 2, {0x40, 0x50}, 0, "40 50 : push rax"},
More information about the llvm-commits
mailing list