Merge #16

16: Add Aarch64 test r=stlankes a=jschwe

This PR adds an aarch64 artifact of the hermit application (for use with the github workflow) that will exit once it reaches the point up to which the kernel currently works. Expected Output is something like:

$ qemu-system-aarch64 -display none -smp 4 -m 1G -serial stdio -kernel target/aarch64-unknown-hermit-loader/debug/rusty-loader  -machine raspi3 -semihosting
[LOADER] Enter startup code
[LOADER] Loader: [0x80000 - 0x131a010]
[LOADER] Allocating 0x268 bytes at 0x11190C0, index 0
[LOADER] Allocating 0x870 bytes at 0x1119340, index 640
[LOADER] Allocating 0xC0 bytes at 0x1119BC0, index 2816
[LOADER] Allocating 0xE0 bytes at 0x1119CC0, index 3072
[LOADER] This is a supported HermitCore Application
[LOADER] Found entry point: 0x500f4
[LOADER] File Size: 488897 Bytes
[LOADER] Mem Size:  522008 Bytes
[LOADER] start 0x9a2cc, size 0x7f718
[LOADER] Load HermitCore Application at 0x1200000
[LOADER] Found TLS starts at 0x1250200 (size 88 Bytes)
[LOADER] Jumping to HermitCore Application Entry Point at 0x12500f4
Welcome to hermit kernel.
[0][INFO] Welcome to HermitCore-rs 0.3.45
[0][INFO] Kernel starts at 0x0
[0][INFO] BSS starts at 0x12775c8
[0][INFO] TLS starts at 0x0 (size 0 Bytes)
[0][INFO] The current hermit-kernel is only implemented up to this point on aarch64.
[0][INFO] Attempting to exit via QEMU.
[0][INFO] This requires that you passed the `-semihosting` option to QEMU.

This test compiles the rusty-loader with an application artifact compiled from
    The artifact is technically the rusty_demo artifact, since the hello_world artifact
    didn't work for me.
    ~~This is most likely due to the loader still being brittle.
    I suspect that the copying process is buggy, since (un)commenting simple things
    such as log messages in rusty-loader will break or fix entry into the kernel.
    Until this is fixed this workflow will probably fail sometimes.~~

Update: Commit ae3308cb changes the way the Stack pointer is set and this seems to fix the issues I'd been having.

Co-authored-by: Jonathan Schwender <>
3 jobs for master in 1 minute and 4 seconds (queued for 1 second)
Status Job ID Name Coverage
passed prepare:docker #1689825


failed build:loader #1689826


skipped deploy:loader #1689827
Name Stage Failure
build:loader Build
  Downloaded raw-cpuid v8.1.1
Downloaded goblin v0.2.3
Downloaded phf_generator v0.7.24
Downloaded bit_field v0.10.0
error: "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/Cargo.lock" does not exist, unable to build with the standard library, try:
rustup component add rust-src
make: *** [Makefile:46: loader] Error 101
Cleaning up file based variables
ERROR: Job failed: command terminated with exit code 1