From 387692e3ff84ca9d5c91cbd1db4c4b22662c2ace Mon Sep 17 00:00:00 2001 From: Garrett Smith Date: Fri, 1 May 2026 14:09:22 -0700 Subject: [PATCH] also sort absolute symbols --- src/.main.cpp.swp | Bin 0 -> 69632 bytes src/main.cpp | 33 +++++++++++++++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 src/.main.cpp.swp diff --git a/src/.main.cpp.swp b/src/.main.cpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..20090af02a655dc4eed327ee23f232abcc5f8181 GIT binary patch literal 69632 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 literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index 252544d..242bcbf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -195,19 +195,19 @@ void dump_context(const N64Recomp::Context& context, const std::unordered_map> relocs_out; + std::vector> sorted_relocs; for (const N64Recomp::Reloc& reloc : section.relocs) { if (reloc.target_section == section_index || reloc.target_section == section.bss_section_index) { // TODO allow emitting MIPS32 relocs for specific sections via a toml option for TLB mapping support. if (reloc.type == N64Recomp::RelocType::R_MIPS_HI16 || reloc.type == N64Recomp::RelocType::R_MIPS_LO16 || reloc.type == N64Recomp::RelocType::R_MIPS_26) { - relocs_out.push_back(reloc); + sorted_relocs.push_back(reloc); } } } - std::ranges::sort(relocs_out, {}, &N64Recomp::Reloc::address); + std::ranges::sort(sorted_relocs, {}, &N64Recomp::Reloc::address); fmt::print(func_context_file, "relocs = [\n"); - for (const N64Recomp::Reloc& reloc : relocs_out) { + for (const N64Recomp::Reloc& reloc : sorted_relocs) { fmt::print(func_context_file, " {{ type = \"{}\", vram = 0x{:08X}, target_vram = 0x{:08X} }},\n", reloc_names[static_cast(reloc.type)], reloc.address, reloc.target_section_offset + section.ram_addr); } @@ -215,14 +215,14 @@ void dump_context(const N64Recomp::Context& context, const std::unordered_map> functions_out; + std::vector> sorted_funcs; for (const size_t& function_index : section_funcs) { - functions_out.push_back(context.functions[function_index]); + sorted_funcs.push_back(context.functions[function_index]); } - std::ranges::sort(functions_out, {}, [](const N64Recomp::Function& func) { return std::tie(func.vram, func.name); }); + std::ranges::sort(sorted_funcs, {}, [](const N64Recomp::Function& func) { return std::tie(func.vram, func.name); }); fmt::print(func_context_file, "functions = [\n"); - for (const N64Recomp::Function& func : functions_out) { + for (const N64Recomp::Function& func : sorted_funcs) { fmt::print(func_context_file, " {{ name = \"{}\", vram = 0x{:08X}, size = 0x{:X} }},\n", func.name, func.vram, func.words.size() * sizeof(func.words[0])); } @@ -234,14 +234,14 @@ void dump_context(const N64Recomp::Context& context, const std::unordered_map> symbols_out; + std::vector> sorted_symbols; for (const N64Recomp::DataSymbol& cur_sym : find_syms_it->second) { - symbols_out.push_back(cur_sym); + sorted_symbols.push_back(cur_sym); } - std::ranges::sort(symbols_out, {}, [](const N64Recomp::DataSymbol& sym) { return std::tie(sym.vram, sym.name); }); + std::ranges::sort(sorted_symbols, {}, [](const N64Recomp::DataSymbol& sym) { return std::tie(sym.vram, sym.name); }); fmt::print(data_context_file, "symbols = [\n"); - for (const N64Recomp::DataSymbol& cur_sym : symbols_out) { + for (const N64Recomp::DataSymbol& cur_sym : sorted_symbols) { fmt::print(data_context_file, " {{ name = \"{}\", vram = 0x{:08X} }},\n", cur_sym.name, cur_sym.vram); } fmt::print(data_context_file, "]\n\n"); @@ -252,12 +252,17 @@ void dump_context(const N64Recomp::Context& context, const std::unordered_mapsecond.empty()) { // Dump absolute symbols into the data context file. print_section(data_context_file, "ABSOLUTE_SYMS", (uint32_t)-1, 0, 0); - fmt::print(data_context_file, "symbols = [\n"); + std::vector> sorted_symbols; for (const N64Recomp::DataSymbol& cur_sym : find_abs_syms_it->second) { + sorted_symbols.push_back(cur_sym); + } + std::ranges::sort(sorted_symbols, {}, [](const N64Recomp::DataSymbol& sym) { return std::tie(sym.vram, sym.name); }); + + fmt::print(data_context_file, "symbols = [\n"); + for (const N64Recomp::DataSymbol& cur_sym : sorted_symbols) { fmt::print(data_context_file, " {{ name = \"{}\", vram = 0x{:08X} }},\n", cur_sym.name, cur_sym.vram); } - fmt::print(data_context_file, "]\n\n"); } }