diff --git a/compiler-rt/lib/interception/interception_win.cpp b/compiler-rt/lib/interception/interception_win.cpp --- a/compiler-rt/lib/interception/interception_win.cpp +++ b/compiler-rt/lib/interception/interception_win.cpp @@ -253,8 +253,11 @@ } static void WriteJumpInstruction(uptr from, uptr target) { - if (!DistanceIsWithin2Gig(from + kJumpInstructionLength, target)) + if (!DistanceIsWithin2Gig(from + kJumpInstructionLength, target)) { + Report("interception_win: cannot write jmp further than 2GB away, from %p " + "to %p.\n", (void*)from, (void*)target); InterceptionFailed(); + } ptrdiff_t offset = target - from - kJumpInstructionLength; *(u8*)from = 0xE9; *(u32*)(from + 1) = offset; @@ -278,6 +281,9 @@ int offset = indirect_target - from - kIndirectJumpInstructionLength; if (!DistanceIsWithin2Gig(from + kIndirectJumpInstructionLength, indirect_target)) { + Report("interception_win: cannot write indirect jmp with target further " + "than 2GB away, from %p to %p.\n", (void*)from, + (void*)indirect_target); InterceptionFailed(); } *(u16*)from = 0x25FF;