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?