diff --git a/OfflineModRecomp/main.cpp b/OfflineModRecomp/main.cpp index d795d39..ac0e758 100644 --- a/OfflineModRecomp/main.cpp +++ b/OfflineModRecomp/main.cpp @@ -73,12 +73,14 @@ int main(int argc, const char** argv) { N64Recomp::Context mod_context; - N64Recomp::ModSymbolsError error = N64Recomp::parse_mod_symbols(symbol_data_span, rom_data, sections_by_vrom, reference_context, mod_context); + N64Recomp::ModSymbolsError error = N64Recomp::parse_mod_symbols(symbol_data_span, rom_data, sections_by_vrom, mod_context); if (error != N64Recomp::ModSymbolsError::Good) { fprintf(stderr, "Error parsing mod symbols: %d\n", (int)error); return EXIT_FAILURE; } + mod_context.import_reference_context(reference_context); + // Populate R_MIPS_26 reloc symbol indices. Start by building a map of vram address to matching reference symbols. std::unordered_map> reference_symbols_by_vram{}; for (size_t reference_symbol_index = 0; reference_symbol_index < mod_context.num_regular_reference_symbols(); reference_symbol_index++) { diff --git a/include/n64recomp.h b/include/n64recomp.h index aaaa6a5..80c6628 100644 --- a/include/n64recomp.h +++ b/include/n64recomp.h @@ -535,7 +535,7 @@ namespace N64Recomp { FunctionOutOfBounds, }; - ModSymbolsError parse_mod_symbols(std::span data, std::span binary, const std::unordered_map& sections_by_vrom, const Context& reference_context, Context& context_out); + ModSymbolsError parse_mod_symbols(std::span data, std::span binary, const std::unordered_map& sections_by_vrom, Context& context_out); std::vector symbols_to_bin_v1(const Context& mod_context); inline bool validate_mod_name(std::string_view str) { diff --git a/src/mod_symbols.cpp b/src/mod_symbols.cpp index 2de7aa1..e0beba3 100644 --- a/src/mod_symbols.cpp +++ b/src/mod_symbols.cpp @@ -416,13 +416,11 @@ bool parse_v1(std::span data, const std::unordered_map data, std::span binary, const std::unordered_map& sections_by_vrom, const Context& reference_context, Context& mod_context_out) { +N64Recomp::ModSymbolsError N64Recomp::parse_mod_symbols(std::span data, std::span binary, const std::unordered_map& sections_by_vrom, Context& mod_context_out) { size_t offset = 0; mod_context_out = {}; const FileHeader* header = reinterpret_data(data, offset); - mod_context_out.import_reference_context(reference_context); - if (header == nullptr) { return ModSymbolsError::NotASymbolFile; }