diff options
author | Konstantin Baladurin <k.baladurin@partner.samsung.com> | 2018-01-10 18:26:01 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2018-01-12 12:40:37 -0800 |
commit | 28839fc0b2dcaf89b7217741291c8c3f578f38a0 (patch) | |
tree | bbe2e02062a711975fec9c5a0e12dd8d35d4f344 /src/vm/amd64 | |
parent | f2ef496c87c7ba66f54390d9b5cc08f863183b2f (diff) | |
download | coreclr-28839fc0b2dcaf89b7217741291c8c3f578f38a0.tar.gz coreclr-28839fc0b2dcaf89b7217741291c8c3f578f38a0.tar.bz2 coreclr-28839fc0b2dcaf89b7217741291c8c3f578f38a0.zip |
Improve UMEntryThunkCode::Poison method.
Improve UMEntryThunkCode::Poison to produce diagnostic message
when collected delegate was called.
Diffstat (limited to 'src/vm/amd64')
-rw-r--r-- | src/vm/amd64/cgenamd64.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/vm/amd64/cgenamd64.cpp b/src/vm/amd64/cgenamd64.cpp index 4e1f38ad12..6075134943 100644 --- a/src/vm/amd64/cgenamd64.cpp +++ b/src/vm/amd64/cgenamd64.cpp @@ -680,7 +680,18 @@ void UMEntryThunkCode::Poison() } CONTRACTL_END; - m_movR10[0] = X86_INSTR_INT3; + m_execstub = (BYTE *)UMEntryThunk::ReportViolation; + + m_movR10[0] = REX_PREFIX_BASE | REX_OPERAND_SIZE_64BIT; +#ifdef _WIN32 + // mov rcx, pUMEntryThunk // 48 b9 xx xx xx xx xx xx xx xx + m_movR10[1] = 0xB9; +#else + // mov rdi, pUMEntryThunk // 48 bf xx xx xx xx xx xx xx xx + m_movR10[1] = 0xBF; +#endif + + ClrFlushInstructionCache(&m_movR10[0], &m_jmpRAX[3]-&m_movR10[0]); } UMEntryThunk* UMEntryThunk::Decode(LPVOID pCallback) |