diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 1 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibctypes.h | 1 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 7 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 2 |
4 files changed, 11 insertions, 0 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 323b9fc7..08cc2b5f 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -2663,6 +2663,7 @@ wrappedlibasound: wrappedlibc: - vFv: - _Jv_RegisterClasses + - __cxa_pure_virtual - __stack_chk_fail - vFp: - _ITM_deregisterTMCloneTable diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h index 58d9dad6..2e911b45 100644 --- a/src/wrapped/generated/wrappedlibctypes.h +++ b/src/wrapped/generated/wrappedlibctypes.h @@ -85,6 +85,7 @@ typedef int64_t (*iFppipppp_t)(void*, void*, int64_t, void*, void*, void*, void* #define SUPER() ADDED_FUNCTIONS() \ GO(_Jv_RegisterClasses, vFv_t) \ + GO(__cxa_pure_virtual, vFv_t) \ GO(__stack_chk_fail, vFv_t) \ GO(_ITM_deregisterTMCloneTable, vFp_t) \ GO(__cxa_finalize, vFp_t) \ diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index ae0c954f..675963d6 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -2716,6 +2716,13 @@ EXPORT int my_clone(x64emu_t* emu, void* fn, void* stack, int flags, void* args, return (uintptr_t)ret; } +EXPORT void my___cxa_pure_virtual(x64emu_t* emu) +{ + fprintf(LOG_NONE, "Pure virtual function called\n"); + emu->quit = 1; + abort(); +} + EXPORT char** my_environ = NULL; EXPORT char** my__environ = NULL; EXPORT char** my___environ = NULL; // all aliases diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index 9d8ac439..0490fab2 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -2303,6 +2303,8 @@ GOM(_ITM_deregisterTMCloneTable, vFEp) GOM(__register_frame_info, vFpp) // faked function GOM(__deregister_frame_info, pFp) +GOWM(__cxa_pure_virtual, vFEv) // create a function to trap pure virtual call + DATAM(program_invocation_name, sizeof(void*)) DATAM(program_invocation_short_name, sizeof(void*)) |