Arm has released Morello Instruction Emulator version 2.2 on 28th of February 2023. What are the main changes and improvements that are included in this release?
This release brings some big changes in terms of supported Morello applications. Previously, one would need to use a version of C library that had libshim embedded into it. In 2.2 this has changed and Morello IE will run the same Morello binaries that would work on a Morello board or Morello FVP. These binaries would need to be linked to a C library that targets the pure capability kernel user Linux ABI (PCuABI), this can be Morello Musl or Morello Glibc from the GCC toolchain. This should help get consistent results across all platforms supporting Morello workloads.
We have also fixed a number of bugs and improved the built-in debugger. One notable thing here is timely synchronisation of emulated capability registers with their aliased counterparts (e.g. C0 and X0 registers) that will now happen immediately after any of them have been updated, so, no confusing intermediate state any more.
C0
X0
We've updated system requirements: the host system will now need to have newer Glibc of version 2.28 or above. This should be covered by a wide range of Linux distros and hopefully will not create any issues. We also now provide two very simple free-standing purecap applications in the examples folder: a hello world and an app that demonstrates capability fault when out-of-bounds access it attempted (yes, it segfaults because it should).
examples
More information can be found in the changelog on the download page.
PCuABI emulation support is implemented for the 0.9-beta version of the spec and covers areas like the initial process environment, system calls (most notably, memory mappings), and signal handlers. Some of the corner cases aren't covered yet:
At a high level, this amounts to the following support coverage that is available currently:
Within these limits you may experiment with a wide variety of applications from a hello world to networking, signal handling, and compartments. Don't forget that you still have handy debugger and scrupulous tracer with cache model and statistics counter. They both can be used for Morello applications as well as for their AArch64 baselines. If you have a problem with PCuABI-enabled system calls, try using new -strace command line option to get an insight into what's happening.
-strace
Give it a go and start exploring Morello architecture features on your Armv8.2 device! Let us know if you have any feedback or questions.