mscoree: Preserve %ecx when calling ReallyFixupVTable.
This commit is contained in:
parent
6f1d43b16e
commit
b5c663ee1e
|
@ -827,6 +827,8 @@ static void get_utf8_args(int *argc, char ***argv)
|
||||||
|
|
||||||
struct vtable_fixup_thunk
|
struct vtable_fixup_thunk
|
||||||
{
|
{
|
||||||
|
/* push %ecx */
|
||||||
|
BYTE i7;
|
||||||
/* sub $0x4,%esp */
|
/* sub $0x4,%esp */
|
||||||
BYTE i1[3];
|
BYTE i1[3];
|
||||||
/* mov fixup,(%esp) */
|
/* mov fixup,(%esp) */
|
||||||
|
@ -839,12 +841,15 @@ struct vtable_fixup_thunk
|
||||||
BYTE i4[2];
|
BYTE i4[2];
|
||||||
/* pop %eax */
|
/* pop %eax */
|
||||||
BYTE i5;
|
BYTE i5;
|
||||||
|
/* pop %ecx */
|
||||||
|
BYTE i8;
|
||||||
/* jmp *vtable_entry */
|
/* jmp *vtable_entry */
|
||||||
BYTE i6[2];
|
BYTE i6[2];
|
||||||
void *vtable_entry;
|
void *vtable_entry;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct vtable_fixup_thunk thunk_template = {
|
static const struct vtable_fixup_thunk thunk_template = {
|
||||||
|
0x51,
|
||||||
{0x83,0xec,0x04},
|
{0x83,0xec,0x04},
|
||||||
{0xc7,0x04,0x24},
|
{0xc7,0x04,0x24},
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -852,6 +857,7 @@ static const struct vtable_fixup_thunk thunk_template = {
|
||||||
NULL,
|
NULL,
|
||||||
{0xff,0xd0},
|
{0xff,0xd0},
|
||||||
0x58,
|
0x58,
|
||||||
|
0x59,
|
||||||
{0xff,0x25},
|
{0xff,0x25},
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue