Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[aaelf64-morello] ELF markers to identify Morello purecap binaries #101

Merged
merged 3 commits into from
Jun 23, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions aaelf64-morello/aaelf64-morello.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
.. _MORELLO_ARM: https://developer.arm.com/documentation/ddi0606/latest
.. |tlsdesc-url| replace:: http://www.fsfla.org/~lxoliva/writeups/TLS/paper-lk2006.pdf
.. _TLSDESC: http://www.fsfla.org/~lxoliva/writeups/TLS/paper-lk2006.pdf
.. |cherielf-url| replace:: https://github.com/CTSRD-CHERI/cheri-elf-gabi/blob/main/gabi.md
.. _CHERI_ELF: https://github.com/CTSRD-CHERI/cheri-elf-gabi/blob/main/gabi.md

Morello extensions to ELF for the Arm\ :sup:`®` 64-bit Architecture (AArch64)
*****************************************************************************
Expand Down Expand Up @@ -220,6 +222,8 @@ This document refers to, or is referred to by, the following documents.
+------------------+----------------------------+-----------------------------------------------------------------------------------+
| TLSDESC_ | |tlsdesc-url| | TLS Descriptors for Arm. Original proposal document. |
+------------------+----------------------------+-----------------------------------------------------------------------------------+
| CHERI_ELF_ | |cherielf-url| | CHERI ELF gABI Extensions |
+------------------+----------------------------+-----------------------------------------------------------------------------------+

Terms and abbreviations
-----------------------
Expand Down Expand Up @@ -252,6 +256,37 @@ the same name in `AAELF64`_:
Object Files
============

ELF Header
----------

The ELF header provides a number of fields that assist in interpretation of the
file. Most of these are specified in the base standard. The following fields
have Morello-specific meanings.

``e_flags``
The processor-specific flags are shown in the following table.

.. _Morello-specific e_flags:

.. class:: aaelf64-morello-elf-flags

.. table:: Morello-specific e_flags

+---------------------------------+--------------------------------------------------------------+
| Value | Meaning |
+---------------------------------+--------------------------------------------------------------+
| :code:`EF_AARCH64_MORELLO_EXT` | The ELF file contains uses an ABI where all pointers are |
| (:code:`0x00010000`) | implemented using capabilities (Pure-capability ABI) |
+---------------------------------+--------------------------------------------------------------+

Sections
--------

Special Sections
^^^^^^^^^^^^^^^^

A Morello toolchain can emit ELF Note sections in accordance to [CHERI_ELF_].
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should Morello prove successful, do you want to reserve the ability to reuse this flag to be its real non-prototype successor? As it stands this bit will forever be wasted once the Morello program comes to an end.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i.e. should this really be EF_AARCH64_CHERI_PURECAP?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is my only concern as well and the reason I had originally suggested an ELF note with a name of "Morello" as it could be easily jettisoned in the future. Checking e_flags bits is of course vastly simpler to deal with than looking for an ELF note, so if the bit is potentially forward looking I'm happy with having a flag in e_flags.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is difficult to make predictions at this stage. We can either reuse or rename the flag for a future architecture.
However we don't have any strong opinions on the name so will go with the more generic EF_AARCH64_CHERI_PURECAP.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jrtc27, @bsdjhb
Are you happy with these changes?


Symbol Table
------------

Expand Down
4 changes: 4 additions & 0 deletions tools/rst2pdf/rst2pdf-abi.style
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,10 @@ styles:
parent : table
colWidths: [ 25%, 30%, 45% ]

aaelf64-morello-elf-flags:
parent : table
colWidths: [ 33%, 67% ]

aaelf64-morello-mapping-symbols:
parent : table
colWidths: [ 25%, 75% ]
Expand Down