Hi! I'm trying to play with embedded Rust. However, I'm running into a problem when trying to run the example QEMU - The Embedded Rust Book on qemu. Qemu crashes with the following output:
qemu: fatal: Lockup: can't escalate 3 to HardFault (current priority -1)
R00=00000000 R01=00000000 R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=ffffffe0 R14=fffffff9 R15=00000000
XPSR=40000003 -Z-- A handler
FPSCR: 00000000
Aborted (core dumped)
Output from cargo objdump:
hello_mcu_world: file format elf32-littlearm
Output from cargo size:
hello_mcu_world :
section size addr
.debug_loc 556 0x0
.debug_abbrev 583 0x0
.debug_info 2334 0x0
.debug_aranges 336 0x0
.debug_ranges 312 0x0
.debug_str 2806 0x0
.debug_pubnames 1576 0x0
.debug_pubtypes 637 0x0
.ARM.attributes 50 0x0
.debug_frame 488 0x0
.debug_line 2254 0x0
.comment 19 0x0
Total 11951
Output from cargo readobj:
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0x0
Start of program headers: 52 (bytes into file)
Start of section headers: 2904 (bytes into file)
Flags: 0x5000200
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 3
Size of section headers: 40 (bytes)
Number of section headers: 15
Section header string table index: 13
It seems as if there's no .text, .data, .rodata, .bss or .vector_table sections, which are in the book's example output. Also, my entry point address is 0x0. That would kind of explain why qemu crashes. However, I'm not sure how to debug this. What is a good strategy to find out why my toolchain produces such a lopsided binary?