From 89cc9ce1b82d941f168147d1b5f6299d76015b93 Mon Sep 17 00:00:00 2001 From: Henrique Gemignani Passos Lima Date: Wed, 28 Oct 2026 23:33:27 +0200 Subject: [PATCH] rel make: Resolve imports against RELs before the DOL --- src/cmd/rel.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cmd/rel.rs b/src/cmd/rel.rs index ee642637..ec60ec55 100644 --- a/src/cmd/rel.rs +++ b/src/cmd/rel.rs @@ -331,7 +331,11 @@ fn make(args: MakeArgs) -> Result<()> { // Create symbol map let start = Instant::now(); let mut symbol_map = FxHashMap::<&[u8], (u32, SymbolIndex)>::default(); - for module_info in modules.iter() { + // Leave the DOL for last, so in case a symbol has multiple definitions + // we resolve to one in a REL + let (dol_modules, rel_modules): (Vec<_>, Vec<_>) = + modules.iter().partition(|m| m.module_id == 0); + for module_info in rel_modules.into_iter().chain(dol_modules) { let _span = info_span!("file", path = %module_info.path).entered(); for symbol in module_info.file.symbols() { if symbol.scope() == object::SymbolScope::Dynamic {