[PATCH] D22410: [compiler-rt] Fix incorrect handling of indirect load.
Etienne Bergeron via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 15 10:33:22 PDT 2016
etienneb updated this revision to Diff 64161.
etienneb added a comment.
rebase project paths
https://reviews.llvm.org/D22410
Files:
lib/interception/interception_win.cc
Index: lib/interception/interception_win.cc
===================================================================
--- lib/interception/interception_win.cc
+++ lib/interception/interception_win.cc
@@ -410,6 +410,7 @@
case 0xb8: // b8 XX XX XX XX : mov eax, XX XX XX XX
case 0xB9: // b9 XX XX XX XX : mov ecx, XX XX XX XX
+ case 0xA1: // A1 XX XX XX XX : mov eax, dword ptr ds:[XXXXXXXX]
return 5;
// Cannot overwrite control-instruction. Return 0 to indicate failure.
@@ -452,11 +453,6 @@
}
#if SANITIZER_WINDOWS64
- switch (*(u8*)address) {
- case 0xA1: // A1 XX XX XX XX XX XX XX XX :
- // movabs eax, dword ptr ds:[XXXXXXXX]
- return 8;
- }
switch (*(u16*)address) {
case 0x5040: // push rax
case 0x5140: // push rcx
@@ -504,12 +500,7 @@
// mov rax, QWORD PTR [rip + XXXXXXXX]
case 0x25ff48: // 48 ff 25 XX XX XX XX :
// rex.W jmp QWORD PTR [rip + XXXXXXXX]
- // Instructions having offset relative to 'rip' cannot be copied.
- return 0;
-
- case 0x2444c7: // C7 44 24 XX YY YY YY YY
- // mov dword ptr [rsp + XX], YYYYYYYY
- return 8;
+ return 7;
}
switch (*(u32*)(address)) {
@@ -521,10 +512,7 @@
}
#else
- switch (*(u8*)address) {
- case 0xA1: // A1 XX XX XX XX : mov eax, dword ptr ds:[XXXXXXXX]
- return 5;
- }
+
switch (*(u16*)address) {
case 0x458B: // 8B 45 XX : mov eax, dword ptr [ebp + XX]
case 0x5D8B: // 8B 5D XX : mov ebx, dword ptr [ebp + XX]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D22410.64161.patch
Type: text/x-patch
Size: 1587 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160715/ff4a4a2a/attachment.bin>
More information about the llvm-commits
mailing list