pass eh_frame as argument 0
Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
parent
48206ee23c
commit
4b2e4b0548
11
src/xous.rs
11
src/xous.rs
@ -904,8 +904,18 @@ impl Machine {
|
|||||||
memory_writer.turbo();
|
memory_writer.turbo();
|
||||||
for sh in elf.section_headers {
|
for sh in elf.section_headers {
|
||||||
if sh.sh_flags as u32 & goblin::elf::section_header::SHF_ALLOC == 0 {
|
if sh.sh_flags as u32 & goblin::elf::section_header::SHF_ALLOC == 0 {
|
||||||
|
// println!(
|
||||||
|
// "Ignoring section {}...",
|
||||||
|
// elf.shdr_strtab.get_at(sh.sh_name).unwrap_or("???")
|
||||||
|
// );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Place the eh_frame offset into $a0 so the program can unwind correctly
|
||||||
|
if elf.shdr_strtab.get_at(sh.sh_name).unwrap_or("???") == ".eh_frame" {
|
||||||
|
cpu.write_register(10, sh.sh_addr.try_into().unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
if sh.sh_type & goblin::elf::section_header::SHT_NOBITS != 0 {
|
if sh.sh_type & goblin::elf::section_header::SHT_NOBITS != 0 {
|
||||||
for addr in sh.sh_addr..(sh.sh_addr + sh.sh_size) {
|
for addr in sh.sh_addr..(sh.sh_addr + sh.sh_size) {
|
||||||
memory_writer.ensure_page(addr.try_into().unwrap());
|
memory_writer.ensure_page(addr.try_into().unwrap());
|
||||||
@ -918,7 +928,6 @@ impl Machine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// memory_writer.print_mmu();
|
|
||||||
memory_writer.normal();
|
memory_writer.normal();
|
||||||
|
|
||||||
// TODO: Get memory permissions correct
|
// TODO: Get memory permissions correct
|
||||||
|
Loading…
Reference in New Issue
Block a user