mirror of
https://github.com/decompals/wibo.git
synced 2025-12-12 22:56:13 +00:00
Fully functional guest<->host trampolines
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
#include "vcruntime.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "context.h"
|
||||
#include "modules.h"
|
||||
@@ -6,45 +8,35 @@
|
||||
|
||||
namespace vcruntime {
|
||||
|
||||
void *WIN_ENTRY memcpy(void *dest, const void *src, size_t count) {
|
||||
PVOID CDECL memcpy(PVOID dest, LPCVOID src, SIZE_T count) {
|
||||
HOST_CONTEXT_GUARD();
|
||||
return ::memcpy(dest, src, count);
|
||||
}
|
||||
|
||||
void *WIN_ENTRY memset(void *dest, int ch, size_t count) {
|
||||
PVOID CDECL memset(PVOID dest, int ch, SIZE_T count) {
|
||||
HOST_CONTEXT_GUARD();
|
||||
return ::memset(dest, ch, count);
|
||||
}
|
||||
|
||||
int WIN_ENTRY memcmp(const void *buf1, const void *buf2, size_t count) {
|
||||
int CDECL memcmp(LPCVOID buf1, LPCVOID buf2, SIZE_T count) {
|
||||
HOST_CONTEXT_GUARD();
|
||||
return ::memcmp(buf1, buf2, count);
|
||||
}
|
||||
|
||||
void *WIN_ENTRY memmove(void *dest, const void *src, size_t count) {
|
||||
PVOID CDECL memmove(PVOID dest, LPCVOID src, SIZE_T count) {
|
||||
HOST_CONTEXT_GUARD();
|
||||
return ::memmove(dest, src, count);
|
||||
}
|
||||
|
||||
} // namespace vcruntime
|
||||
|
||||
static void *resolveByName(const char *name) {
|
||||
if (strcmp(name, "memcpy") == 0)
|
||||
return (void *)vcruntime::memcpy;
|
||||
if (strcmp(name, "memset") == 0)
|
||||
return (void *)vcruntime::memset;
|
||||
if (strcmp(name, "memcmp") == 0)
|
||||
return (void *)vcruntime::memcmp;
|
||||
if (strcmp(name, "memmove") == 0)
|
||||
return (void *)vcruntime::memmove;
|
||||
return nullptr;
|
||||
}
|
||||
#include "vcruntime_trampolines.h"
|
||||
|
||||
extern const wibo::ModuleStub lib_vcruntime = {
|
||||
(const char *[]){
|
||||
"vcruntime140",
|
||||
nullptr,
|
||||
},
|
||||
resolveByName,
|
||||
vcruntimeThunkByName,
|
||||
nullptr,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user