mirror of
https://github.com/ptitSeb/box64.git
synced 2025-02-25 00:42:35 +00:00
Fixed __libc_start_main emulation
This commit is contained in:
parent
68d4683010
commit
2e3c25f8e1
@ -32,9 +32,6 @@ int32_t EXPORT my___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, c
|
||||
//TODO: register rtld_fini
|
||||
//TODO: register fini
|
||||
// let's cheat and set all args...
|
||||
Push(emu, (uint64_t)my_context->envv);
|
||||
Push(emu, (uint64_t)my_context->argv);
|
||||
Push(emu, (uint64_t)my_context->argc);
|
||||
if(init) {
|
||||
PushExit(emu);
|
||||
R_RIP=(uint64_t)*init;
|
||||
@ -47,6 +44,9 @@ int32_t EXPORT my___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, c
|
||||
printf_log(LOG_DEBUG, "Transfert to main(%d, %p, %p)=>%p from __libc_start_main\n", my_context->argc, my_context->argv, my_context->envv, main);
|
||||
// call main and finish
|
||||
PushExit(emu);
|
||||
SetRDX(emu, (uint64_t)my_context->envv);
|
||||
SetRSI(emu, (uint64_t)my_context->argv);
|
||||
SetRDI(emu, (uint64_t)my_context->argc);
|
||||
R_RIP=(uint64_t)main;
|
||||
#ifdef DYNAREC
|
||||
DynaRun(emu);
|
||||
|
@ -368,17 +368,17 @@ static void* findcompare64Fct(void* fct)
|
||||
|
||||
#undef SUPER
|
||||
|
||||
#endif
|
||||
// some my_XXX declare and defines
|
||||
int32_t my___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, char * *),
|
||||
int argc, char * * ubp_av, void (*init) (void), void (*fini) (void),
|
||||
void (*rtld_fini) (void), void (* stack_end)); // implemented in x86run_private.c
|
||||
void (*rtld_fini) (void), void (* stack_end)); // implemented in x64run_private.c
|
||||
EXPORT void my___libc_init_first(x64emu_t* emu, int argc, char* arg0, char** b)
|
||||
{
|
||||
// do nothing specific for now
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
uint64_t my_syscall(x64emu_t *emu); // implemented in x86syscall.c
|
||||
uint64_t my_syscall(x64emu_t *emu); // implemented in x64syscall.c
|
||||
void EXPORT my___stack_chk_fail(x64emu_t* emu)
|
||||
{
|
||||
char buff[200];
|
||||
|
Loading…
x
Reference in New Issue
Block a user