Hi,
I have built a simple hello world program for aarch64 like this
$aarch64-none-elf-gcc -c -march=armv8-a -g hello.c hello.o
$aarch64-none-elf-gcc -specs=aem-ve.specs -Wl,-Map=linkmap.txt hello.o -o hello.axf
Then I tried to load and execute the file QEMU as given below
$ qemu-system-aarch64 -semihosting -m 128M -nographic -monitor none -serial stdio -machine virt,gic-version=2,secure=on,virtualization=on -cpu cortex-a53 -kernel hello.axf -S -gdb tcp::9000
I have also tried another method for loading
$qemu-system-aarch64 -device loader,file=./hello.axf -machine virt -cpu max -m 256M -S -gdb tcp::9000
In both the cases it looks like the binary is not loaded properly
$ readelf -h hello.axf | grep Entry
Entry point address: 0x80001148
(gdb) target remote localhost:9000
Remote debugging using localhost:9000
0x0000000000000000 in ?? ()
(gdb) disas _start
Dump of assembler code for function _start:
0x0000000080001148 <+0>: .inst 0x00000000 ; undefined
0x000000008000114c <+4>: .inst 0x00000000 ; undefined
0x0000000080001150 <+8>: .inst 0x00000000 ; undefined
0x0000000080001154 <+12>: .inst 0x00000000 ; undefined
0x0000000080001158 <+16>: .inst 0x00000000 ; undefined
0x000000008000115c <+20>: .inst 0x00000000 ; undefined
....
Could you please shed some light why this binary is not loading properly?
Thanks a lot,
Little