mirror of
https://github.com/wiiu-env/WUMSLoader.git
synced 2024-11-30 11:34:15 +01:00
Add support for the WUMS_HOOK_RELOCATIONS_DONE hook
This commit is contained in:
parent
00a8f16314
commit
c3e7fe0f51
@ -130,6 +130,7 @@ extern "C" void doStart(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CallHook(loadedModules, WUMS_HOOK_RELOCATIONS_DONE);
|
||||||
|
|
||||||
for (int i = 0; i < gModuleData->number_used_modules; i++) {
|
for (int i = 0; i < gModuleData->number_used_modules; i++) {
|
||||||
DEBUG_FUNCTION_LINE("About to call %08X\n", gModuleData->module_data[i].entrypoint);
|
DEBUG_FUNCTION_LINE("About to call %08X\n", gModuleData->module_data[i].entrypoint);
|
||||||
@ -145,6 +146,7 @@ extern "C" void doStart(int argc, char **argv) {
|
|||||||
} else {
|
} else {
|
||||||
DEBUG_FUNCTION_LINE("Resolve relocations and replace alloc functions\n");
|
DEBUG_FUNCTION_LINE("Resolve relocations and replace alloc functions\n");
|
||||||
ResolveRelocations(loadedModules);
|
ResolveRelocations(loadedModules);
|
||||||
|
CallHook(loadedModules, WUMS_HOOK_RELOCATIONS_DONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// CallHook(loadedModules, WUMS_HOOK_FINI_WUT);
|
// CallHook(loadedModules, WUMS_HOOK_FINI_WUT);
|
||||||
|
@ -8,7 +8,8 @@ static const char **hook_names = (const char *[]) {
|
|||||||
"WUMS_HOOK_APPLICATION_STARTS",
|
"WUMS_HOOK_APPLICATION_STARTS",
|
||||||
"WUMS_HOOK_APPLICATION_ENDS",
|
"WUMS_HOOK_APPLICATION_ENDS",
|
||||||
"WUMS_HOOK_INIT_WUT",
|
"WUMS_HOOK_INIT_WUT",
|
||||||
"WUMS_HOOK_FINI_WUT"};
|
"WUMS_HOOK_FINI_WUT",
|
||||||
|
"WUMS_HOOK_RELOCATIONS_DONE"};
|
||||||
|
|
||||||
void CallHook(const std::vector<ModuleData> &modules, wums_hook_type_t type) {
|
void CallHook(const std::vector<ModuleData> &modules, wums_hook_type_t type) {
|
||||||
DEBUG_FUNCTION_LINE("Calling hook of type %s [%d] for all modules\n", hook_names[type], type);
|
DEBUG_FUNCTION_LINE("Calling hook of type %s [%d] for all modules\n", hook_names[type], type);
|
||||||
@ -33,7 +34,9 @@ void CallHook(const ModuleData &module, wums_hook_type_t type) {
|
|||||||
type == WUMS_HOOK_FINI_WUT)) {
|
type == WUMS_HOOK_FINI_WUT)) {
|
||||||
DEBUG_FUNCTION_LINE("Calling hook of type %s [%d] %d for %s \n", hook_names[type], type, curHook.getType(), module.getExportName().c_str());
|
DEBUG_FUNCTION_LINE("Calling hook of type %s [%d] %d for %s \n", hook_names[type], type, curHook.getType(), module.getExportName().c_str());
|
||||||
((void (*)(void)) ((uint32_t *) func_ptr))();
|
((void (*)(void)) ((uint32_t *) func_ptr))();
|
||||||
} else if (type == WUMS_HOOK_INIT) {
|
break;
|
||||||
|
} else if (type == WUMS_HOOK_INIT ||
|
||||||
|
type == WUMS_HOOK_RELOCATIONS_DONE) {
|
||||||
DEBUG_FUNCTION_LINE("Calling hook of type %s [%d] %d for %s\n", hook_names[type], type, curHook.getType(), module.getExportName().c_str(), gModuleData);
|
DEBUG_FUNCTION_LINE("Calling hook of type %s [%d] %d for %s\n", hook_names[type], type, curHook.getType(), module.getExportName().c_str(), gModuleData);
|
||||||
wums_app_init_args_t args;
|
wums_app_init_args_t args;
|
||||||
args.module_information = gModuleData;
|
args.module_information = gModuleData;
|
||||||
|
Loading…
Reference in New Issue
Block a user