mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2026-04-27 20:41:55 +00:00
Fix issue with regenerating patched functions with no base functions regenerated, add 1kB of padding between mods to mitigate OOB accesses in mods, update N64Recomp (#84)
This commit is contained in:
parent
3474514013
commit
7319630e2e
2 changed files with 12 additions and 8 deletions
|
|
@ -1 +1 @@
|
||||||
Subproject commit b18e0ca2dd359d62dcc019771f0ccc4a1302bd03
|
Subproject commit 198de1b5cf6e58415948588584750c51562d58dd
|
||||||
|
|
@ -1320,13 +1320,15 @@ std::vector<recomp::mods::ModLoadErrorDetails> recomp::mods::ModContext::regener
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply the regenlist.
|
// Apply the regenlist.
|
||||||
regenerated_code_handle = apply_regenlist(regenlist, decompressed_rom);
|
if (!regenlist.functions.empty()) {
|
||||||
if (!regenerated_code_handle || !regenerated_code_handle->good()) {
|
regenerated_code_handle = apply_regenlist(regenlist, decompressed_rom);
|
||||||
regenerated_code_handle.reset();
|
if (!regenerated_code_handle || !regenerated_code_handle->good()) {
|
||||||
ret.emplace_back(ModLoadErrorDetails{
|
regenerated_code_handle.reset();
|
||||||
"", ModLoadError::FailedToLoadCode, error_to_string(CodeModLoadError::InternalError)
|
ret.emplace_back(ModLoadErrorDetails{
|
||||||
});
|
"", ModLoadError::FailedToLoadCode, error_to_string(CodeModLoadError::InternalError)
|
||||||
return ret;
|
});
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!regenlist.patched_hooks.empty()) {
|
if (!regenlist.patched_hooks.empty()) {
|
||||||
|
|
@ -1484,6 +1486,8 @@ recomp::mods::CodeModLoadError recomp::mods::ModContext::init_mod_code(uint8_t*
|
||||||
cur_section_addr += section.size + section.bss_size;
|
cur_section_addr += section.size + section.bss_size;
|
||||||
// Align the next section's address to 16 bytes.
|
// Align the next section's address to 16 bytes.
|
||||||
cur_section_addr = (cur_section_addr + 15) & ~15;
|
cur_section_addr = (cur_section_addr + 15) & ~15;
|
||||||
|
// Add some empty space between mods to act as a buffer for misbehaving mods that have out of bounds accesses.
|
||||||
|
cur_section_addr += 0x400;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterate over each section again after loading them to perform R_MIPS_32 relocations.
|
// Iterate over each section again after loading them to perform R_MIPS_32 relocations.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue