Fully functional guest<->host trampolines

This commit is contained in:
2025-10-31 00:45:32 -06:00
parent 55a62a27c9
commit 52cdd7c811
56 changed files with 1683 additions and 1488 deletions

View File

@@ -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,
};