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
andCCTLR_EL0
registers. - Capability permission encoding now uses
I
forBRANCH_SEALED_PAIR
andE
forEXECUTIVE
. - 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 customCSP
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 inmremap
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.
Should you have any questions, you may e-mail to morello-emulator-support (at) arm.com or ask at the Morello Forum.