-
Notifications
You must be signed in to change notification settings - Fork 194
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][SYSVABI64] Move dynamic linking contents to sysvabi64 #228
Conversation
Add a design rationale for use of GNU properties as well as guidelines for how these should be used for properties in the AArch64 processor space. Pull request ARM-software#228 moves the GNU properties and other dynamic section properties specific to SystemV ABI to the SystemV ABI document. Arm has typically left metadata in exectuables and shared-libraries to the platform. Only defining metadata for relocatable objects. With platforms such as Linux the most frequently run software on AArch64, Arm needs to document the metadata that it is using for SystemV platforms. We have chosen to use GNU properties and to document these in the sysvabi64.rst document.
Add a design rationale for use of GNU properties as well as guidelines for how these should be used for properties in the AArch64 processor space. Pull request ARM-software#228 moves the GNU properties and other dynamic section properties specific to SystemV ABI to the SystemV ABI document. Arm has typically left metadata in exectuables and shared-libraries to the platform. Only defining metadata for relocatable objects. With platforms such as Linux the most frequently run software on AArch64, Arm needs to document the metadata that it is using for SystemV platforms. We have chosen to use GNU properties and to document these in the sysvabi64.rst document.
aaelf64/aaelf64.rst
Outdated
Its use is optional, meaning that an ELF file where this feature bit | ||
is unset can still have Return Address signing enabled in some or all of | ||
its executable sections. | ||
The information on Program Property has been moved to `SYSVABI64_`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SYSVABI64_
(here and in the other instances below) should be [SYSVABI64_] so that it's rendered as a link in the PDF.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for spotting, I'll post an update (will use amend so it stays in one commit).
The Elf for the Arm 64-bit Architecture (aaelf64) describes the processor specific parts of the ELF specification common to all ELF environments from a statically linked freestanding environment with no OS to a hosted environment that supports dynamic linking. The dynamic linking parts that are specific to SystemV style operating environments such as Linux, and in particular the GNU properties which are based on a Linux ABI extension are better documented in the SystemV ABI for Arm 64-bit Architecture.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes look OK to me.
Its use is optional, meaning that an ELF file where this feature bit | ||
is unset can still have Return Address signing enabled in some or all of | ||
its executable sections. | ||
The information on Program Property has been moved to [SYSVABI64_]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The information on Program Property has been moved to....
Repeat for the next 3 sections.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor changes in phrasing
executable segments of executables and shared objects that do not have | ||
``GNU_PROPERTY_AARCH64_FEATURE_1_BTI`` set, before execution is transferred | ||
to them. | ||
The information on program loading has been moved to [SYSVABI64_]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See previous comment
instructions, it must add both ``DT_AARCH64_BTI_PLT`` and | ||
``DT_AARCH64_PAC_PLT`` tags to the dynamic section. | ||
|
||
The information on Dynamic Linking has been moved to [SYSVABI64_]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See previous comment
|
||
``DT_AARCH64_PAC_PLT`` indicates PLTs enabled with Pointer Authentication. | ||
The information on the Dynamic Section has been moved to [SYSVABI64_]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See previous comment
``DT_AARCH64_VARIANT_PCS`` must be present if there are ``R_<CLS>_JUMP_SLOT`` | ||
relocations that reference symbols marked with the ``STO_AARCH64_VARIANT_PCS`` | ||
flag set in their ``st_other`` field. | ||
The information on custom PLTs has been moved to [SYSVABI64_]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See previous comment
phrasing suggestions addressed by #278 |
The Elf for the Arm 64-bit Architecture (aaelf64) describes the processor specific parts of the ELF specification common to all ELF environments from a statically linked freestanding environment with no OS to a hosted environment that supports dynamic linking.
The dynamic linking parts that are specific to SystemV style operating environments such as Linux, and in particular the GNU properties which are based on a Linux ABI extension are better documented in the SystemV ABI for Arm 64-bit Architecture.