This commit is contained in:
Ethan Lafrenais 2025-02-28 16:05:36 -08:00 committed by GitHub
commit 1861b225bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 1 deletions

View file

@ -663,7 +663,15 @@ bool N64Recomp::Context::import_reference_context(const N64Recomp::Context& refe
// Copy the functions from the reference context into the reference context's function map.
for (const N64Recomp::Function& func_in: reference_context.functions) {
if (!add_reference_symbol(func_in.name, func_in.section_index, func_in.vram, true)) {
// Rename if necessary
std::string name = func_in.name;
if (N64Recomp::reimplemented_funcs.contains(name) ||
N64Recomp::ignored_funcs.contains(name) ||
N64Recomp::renamed_funcs.contains(name)) {
name = name + "_recomp";
}
if (!add_reference_symbol(name, func_in.section_index, func_in.vram, true)) {
return false;
}
}

View file

@ -416,6 +416,13 @@ ELFIO::section* read_sections(N64Recomp::Context& context, const N64Recomp::ElfP
// Check if the symbol is undefined and to know whether to look for it in the reference symbols.
if (rel_symbol_section_index == ELFIO::SHN_UNDEF) {
// Get renamed version of symbol name if necessary
if (N64Recomp::reimplemented_funcs.contains(rel_symbol_name) ||
N64Recomp::ignored_funcs.contains(rel_symbol_name) ||
N64Recomp::renamed_funcs.contains(rel_symbol_name)) {
rel_symbol_name = rel_symbol_name + "_recomp";
}
// Undefined sym, check the reference symbols.
N64Recomp::SymbolReference sym_ref;
if (!context.find_reference_symbol(rel_symbol_name, sym_ref)) {