diff options
author | Ben Bridle <ben@derelict.engineering> | 2024-10-31 12:05:07 +1300 |
---|---|---|
committer | Ben Bridle <ben@derelict.engineering> | 2024-10-31 12:06:16 +1300 |
commit | 1f2578344a4801f17fcb4bb437c2302ba781be55 (patch) | |
tree | e4fc5435f3e1fb3ee6277de31274226f626bf9e6 | |
parent | 398904776672a8e2143cca8b8953b15e37ff2c53 (diff) | |
download | bedrock-asm-1f2578344a4801f17fcb4bb437c2302ba781be55.zip |
Ensure the root source unit is always merged last
This is to prevent the main source of another zero-dependency source
unit from being merged before the main source of the root source unit,
which would cause a program to immediately enter into library code when
run.
The root source unit is always the main source code, and other source
units are library code.
-rw-r--r-- | src/symbol_resolver.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/symbol_resolver.rs b/src/symbol_resolver.rs index e19a7bf..38163e3 100644 --- a/src/symbol_resolver.rs +++ b/src/symbol_resolver.rs @@ -199,7 +199,8 @@ impl SymbolResolver { let source_order = { let mut included_source_ids: Vec<usize> = Vec::new(); let mut remaining_source_ids: Vec<usize> = Vec::new(); - for i in 0..self.source_units.len() { + // Reverse the order so that the root unit is the last to be added. + for i in (0..self.source_units.len()).rev() { remaining_source_ids.push(i); } |