The Morello Instruction Emulator (Morello IE) is an experimental tool for software developers and researchers who are interested in the Morello architecture. It allows running userspace Morello applications on AArch64 Linux systems in a non-Morello environment and provides a number of analysis and debugging tools. It can be used to help with porting software to Morello, to experiment with capabilities and Morello compartments as well as measure and analyse performance of Morello applications.

  • Morello IE 2.3-533 (AArch64)

    Download morelloie-2.3-533.tgz.sh

    Target platform Linux AArch64
    Date published 23 June 2023
    MD5 12c3132b9b3b418c68f59e16c4f272e7
    SHA-256 231b17e574c4f09770c47cfa68791742366eac14c6987d2cd0ec139477f5cae7
     

    Highlights

    • Support for Armv8.0 devices
    • Better support for running apps based on Morello Glibc
    • Debugger and tracer improvements
     

    New functionality

    • Added LSE atomics emulation to allow running on devices that only provide Armv8.0 architecture features.
    • Tracer can now save instruction and memory traces to a file.
    • Tracer can be instructed to trace only specific thread.
    • Tracer will trace the entire application by default (control of the scope of tracing works as before).
    • New debugger commands: list stack frames and list memory reservations.
    • Debugger can now print selected registers instead of showing all of them to help focus on what's important.
    • Debugger can display the PSTATE and CCTLR_EL0 registers.
    • Capability permission encoding now uses I for BRANCH_SEALED_PAIR and E for EXECUTIVE.
    • Rebased on the recent DynamoRIO version 9.93 for improvements in the instruction decoder.
    • Default cache model parameters are now aligned with the Morello board configuration.
     

    Fixed in this release

    • Fixed segmentation fault when running multi-threaded application based on Morello Glibc
    • Fixed use of DDC for checking memory accesses in A64 mode.
    • Fixed not raising SIGBUS when LSB is set in the 64-bit branch target address in A64 mode.
    • Fixed counting load / store register and load / store pair instructions in tracer.

     

  • Morello IE 2.2-74 (AArch64)

    Download morelloie-2.2-74.tgz.sh

    Target platform Linux AArch64
    Date published 28 February 2023
    MD5 eb7b53663ab3612b4526a7631cfdb683
    SHA-256 47fc592af36f6ed9c71a132010126e60c3c7c512eff43c19b1e3f33c838c3ed6
     

    Highlights

    • Emulation of pure capability kernel user Linux ABI (PCuABI).
    • Support for Musl-based (static and dynamic) and Glibc-based (only static) purecap binaries.
    • Improved debugger.
    • Updated system requirements.
    • Added example purecap applications.
     

    New functionality

    • PCuABI emulation added: the emulator will now run purecap Morello binaries targeting Linux systems with PCuABI Morello kernel.
    • Morello IE will run purecap applications based on both Glibc and Musl C library (with the exception that dynamically linked and multi-threaded Glibc-based programs may not work correctly).
    • Whenever kernel would write to userspace buffers using non-capability writes, the emulated capability tags will be cleared.
    • When a memory mapping is created, corresponding capability tags in memory are cleared.
    • Emulated capability registers are now synchronised with hardware aliased registers immediately after updating.
    • Added -strace command line option to provide verbose output related to system calls and its arguments.
    • Added -stack-limit option to allow setting custom CSP limit for purecap programs.
    • Added disassembly debugger command.
    • Morello IE now requires host system to have Glibc of version 2.28 or above.
     

    Fixed in this release

    • Fixed ignoring breakpoints in shared libraries in debugger.
    • Fixed ignoring the MREMAP_DONTUNMAP flag in mremap wrapper.
    • Fixed error in debugger where incorrect values of capability registers could be printed by the print register command.
    • Fixed showing memory in the debugger: the layout of data has been improved to represent data and memory tags as well as offsets and addresses.
    • Fixed crash in debugger when remote debugger host was not an IP address.
    • Fixed endless loop in debugger when using Ctrl+D to exit debugger.
    • Fixed problem in debugger with resolving function names with upper case symbols.

     

  • Morello IE 2.1-70 (AArch64)

    Download morelloie-2.1-70.tgz.sh

    Target platform Linux AArch64
    Date published 27 October 2022
    MD5 b1150390cc84a3bc4dabf136f4a12796
    SHA-256 37d9bc72aeba45091a04a0db62f09ceda621e4d7c05c9d895a73c49037b2498b
     

    New functionality

    • Remote debugger mode with Python-based terminal client and experimental web-based GUI client.
    • Performance improvements using latest compiler optimisations for Armv8.
    • The -break option of the debugger accepts a comma-separated list of PC expressions to set initial breakpoints in the debugger.
     

    Fixed in this release

    • Fixed handling tags for memory mappings.
    • Fixed crash due to incorrect PCC LSB handling of last address in memory page.
    • Fixed saving and restoring capability registers during signal handlers.
    • Fixed wrong required permissions in the error message for the insufficient permissions capability fault.
    • Fixed cache model crash on some PRFM instructions.
    • Fixed unclear message about tag not set capability fault.
    • Fixed incorrect handling of PSTATE.C64 for branch to 64 bit register instructions.

     

  • Morello IE 2.0-68 (AArch64)

    Download morelloie-2.0-68.tgz.sh

    Target platform Linux AArch64
    Date published 28 July 2022
    MD5 f22214f98f98de12db684cfd936fbe97
    SHA-256 906036f070790b4e96a86426880b4feac3b1277ed83f2ab2eb2b3ce46b634336
     

    New functionality

    • This release comes with the installer that allows a user to accept EULA and select installation directory.
    • New metrics have been added to the statistics counter module (see the list in the updated user guide).
    • Debugger has better support for dynamically linked applications.
    • Debugger commands have been re-worked to be more conventional.
    • Tracer command line options that accept PC values will now understand symbol names with offsets (similar to how debugger accepts breakpoint addresses).
    • There is only one launcher binary morelloie that combines both front-end and launcher binaries' functionality (additional command line options allow for loading third party instrumentation clients).
    • Morello ISA specification is updated to PROTO_REL_04.
    • DynamoRIO has been upgraded to 9.0 which brings better support for AArch64 instructions as well as many other improvements.
    • Help information has been improved.
     

    Removed functionality

    • Support for running purecap Morello applications linked to a non-Morello C library has been removed.
     

    Fixed in this release

    • Several issues have been fixed in the debugger.
    • Morello IE now correctly processes signal handlers and thread cancellations.
    • Updated instrumentation of LDXR/STXR sections.