Department of Computer Science and Technology


DSbD All Hands October 2022 - Software porting to CHERI memory safety


Konrad Witaszczyk (University of Cambridge, Research Associate), Dr. Nathaniel Filardo (Microsoft Research, Senior Researcher), and others (TBD)


Registration link: Eventbrite

Location: Grand Station, Sun Street, Wolverhampton WV10 0BF

Time: 1:45 PM UTC+1 - 4:00 PM UTC+1 (2h workshop; 15 min break), October 12, 2022

Capacity limit: 30 people

University of Cambridge, SRI International and Arm are actively working to provide toolchains for CHERI and Morello to compile, debug and run third-party software and increase a number of available software for the Arm Morello platform. The latest CheriBSD release 22.05p1 includes over 9,000 precompiled CheriABI third-party software ports and over 23,000 precompiled hybrid ABI third-party sofware ports for Morello.

During this workshop, we would like to present what is required to adapt upstream software code bases for CheriABI and hybrid ABI on CheriBSD/Morello to help and encourage others to port software to CHERI/Morello. Additionally, we would like to discuss with people interested in the CHERI software ecosystem what third-party software they would like to see ported for CHERI/Morello and what are their plans in achieving that.


During the workshop, participants will have access to Azure VMs with preinstalled QEMU and CheriBSD/Morello. They might also wish to make remote use of their own Morello boxes, but Morello board access will not be provided by the organisers.

However, in order to understand workshop materials better and create a work environment that you can experiment with after the workshop as well, it is recommended, but not required, to:

  • If you do not have access to a Morello board, get familiar with the cheribuild utility and run CheriBSD for Morello using QEMU;
  • If have installed CheriBSD for Morello using QEMU or have access to a Morello board, read the CheriABI "Hello World" section from the Getting Started with CheriBSD guide to make sure you can compile and debug programs.

Additionally to the work environment, we recommend to:

  • If you are new to the CHERI architecture, read the technical report An Introduction to CHERI. You can also consider reading the CHERI C/C++ Programming Guide.
  • Join the CHERI-CPU Slack and its public #workshop-dsbd-22-10 channel. You will be able to find workshop organisers and other participants there, ask questions and share your answers. Note that you must send a request to join the Slack first and it might take some time to approve your request.


The workshop will be held fully in person at Grand Station, Wolverhampton and will last 2 hours. It will begin at 1:45 PM UTC+1 and will finish at 4:00 PM UTC+1. There will be a 15 min break between 2:45 PM and 3:00 PM.

The workshop will consist of three parts:

  • Part I: a presentation session.
    CHERI memory safety features, semantics of CHERI C/C++ and SDK for CHERI C/C++.
  • Part II: a practical session.
    CHERI C/C++ porting difficulties/issues, sanitisers and debugging CHERI-enabled applications with example third-party software on CheriBSD provided with CheriBSD ports.
  • Part III: a discussion session.
    CHERI C/C++ porting plans, roadmap, collaboration and portability across CHERI-enabled platforms and operating systems.

If you are interested in the discussion session but not in the practical session (e.g., you are already familiar with CheriBSD/Morello and how to port software to it), we are planning to split the workshop room into two sections: one dedicated for people who would like to do practical exercises, and the other dedicated for people who would like to discuss with others their current practical challenges related to software porting to Morello.

The topics covered during the workshop will include:

  • Presentation of the CHERI memory safety features;
  • Presentation of the CHERI SDK;
  • Presentation of CheriBSD ports;
  • Example software porting case studies for CHERI memory safety;
  • Example software building, debugging and patching with CheriBSD ports;
  • Discussion on future porting plans, roadmap, collaboration and portability.


Slides will be published here after the workshop.