summaryrefslogtreecommitdiff
path: root/src/symbol_resolver.rs
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2024-10-31 12:05:07 +1300
committerBen Bridle <ben@derelict.engineering>2024-10-31 12:06:16 +1300
commit1f2578344a4801f17fcb4bb437c2302ba781be55 (patch)
treee4fc5435f3e1fb3ee6277de31274226f626bf9e6 /src/symbol_resolver.rs
parent398904776672a8e2143cca8b8953b15e37ff2c53 (diff)
downloadbedrock-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.
Diffstat (limited to 'src/symbol_resolver.rs')
-rw-r--r--src/symbol_resolver.rs3
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);
}