Verified Commit b882ce52 authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Fix allocation of TLS masters if main image does not require TLS

parent 4818ad61
......@@ -220,7 +220,12 @@ impl Linker {
// Copy data
let mut tls_offset = tls_primary;
let mut tcb_masters = Vec::new();
let mut tls_index = 0;
// Insert main image master
tcb_masters.push(Master {
ptr: ptr::null_mut(),
len: 0,
offset: 0,
});
let mut tls_ranges = BTreeMap::new();
for (elf_name, elf) in elfs.iter() {
let object = match self.objects.get(*elf_name) {
......@@ -299,12 +304,11 @@ impl Linker {
if *elf_name == primary {
tls_ranges.insert(elf_name, (0, tcb_master.range()));
tcb_masters.insert(0, tcb_master);
tcb_masters[0] = tcb_master;
} else {
tcb_master.offset -= tls_offset;
tls_offset += vsize;
tls_index += 1;
tls_ranges.insert(elf_name, (tls_index, tcb_master.range()));
tls_ranges.insert(elf_name, (tcb_masters.len(), tcb_master.range()));
tcb_masters.push(tcb_master);
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment