Hi Vadim,
On 29/06/2022 18:04, Vadim Zaliva wrote:
Alex,
Thanks! I will give FVP a try, although I wish I could make qemu work, as it seems to be a much simpler option. The qemu I am using:
https://github.com/CTSRD-CHERI/qemu
I suspect the problem is with the start address of the text segment used during linking.
So I eventually figured out how to get this working (with some QEMU help on the CHERI-CPU Slack). So if you build an executable with:
build-aarch64-none-elf/install/bin/aarch64-none-elf-gcc -march=morello+c64 -mabi=purecap hello.c -specs=rdimon.specs
you should be able to run it with:
./qemu-system-morello -machine morello -cpu morello -nographic -serial none -monitor none -kernel a.out -semihosting
You should also be able to debug it with GDB (using the QEMU gdbserver stub), if needed.
Hope that helps.
Alex
Vadim
-- Senior Research Associate Department of Computer Science and Technology University of Cambridge http://zaliva.org/
From: Alex Coplan via Gnu-morello gnu-morello@op-lists.linaro.org Sent: Wednesday, June 29, 2022 3:44 To: Vadim Zaliva vz231@cam.ac.uk Cc: Vadim Zaliva via Gnu-morello gnu-morello@op-lists.linaro.org Subject: [Gnu-morello] Re: running baremetal binaries under qemu
Hi Vadim,
On 28/06/2022 21:58, Vadim Zaliva via Gnu-morello wrote:
I am trying to rung GCC-produced binaries under qemu, with no success. Here is what I did:
dummy.c:
#include <stdio.h>
int main() { fprintf(stderr,"hello world!\n"); }
$ ~/morello-gnu/bin/aarch64-none-elf-gcc -march=morello+c64 -mabi=purecap -specs=aem-ve.specs -O0 tests/cheri/dummy.c -o dummy
$ file dummy dummy: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, with debug_info, not stripped
$ ~/cheri/output/morello-sdk/bin/qemu-system-morello -M virt,gic-version=3 -cpu morello -m 2048 -nographic -device virtio-rng-pci -bios dummy
Where are you getting your QEMU from, out of interest? I wasn't aware of a QEMU port for Morello.
Note that the binaries that GCC produces don't include the sort of firmware that would need to boot on real hardware. There may of course also be incompatibilities in the memory map that QEMU is using and that which the binary expects.
Thanks, Alex
At this point, qemu hangs up eating a lot of CPU and has to be killed.
Any suggestions on how I can run the binaries?
Vadim
-- Senior Research Associate Department of Computer Science and Technology University of Cambridge https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fzaliva.org%...
-- Gnu-morello mailing list -- gnu-morello@op-lists.linaro.org To unsubscribe send an email to gnu-morello-leave@op-lists.linaro.org