[AArch64][ELF] Support R_AARCH64_AUTH_ABS64 static relocation
The patch adds parser, MCExpr, and emitter support for the authenticated pointer auth relocation. In assembly, this is expressed using: .quad <symbol>@AUTH(<key>, <discriminator> [, addr]) For example: .quad _g3@AUTH(ib, 1234, addr) The optional 'addr' specifier represents whether the generated pointer authentication code will also include address diversity (by blending the address of the storage location of the relocated pointer with the user-specified constant discriminator). The @AUTH expression lowers to R_AARCH64_AUTH_ABS64 ELF relocation. The signing schema is encoded in the place of relocation to be applied as follows: ``` | 63 | 62 | 61:60 | 59:48 | 47:32 | 31:0 | | ----------------- | -- | ----- | ----- | ------------- | ------ | | address diversity | 0 | key | 0 | discriminator | addend | ``` See the following for details: https://github.com/ARM-software/abi-aa/blob/main/pauthabielf64/pauthabielf64.rst#static-relocations Differential Revision: https://reviews.llvm.org/D156505 Co-authored-by:Ahmed Bougacha <ahmed@bougacha.org> Co-authored-by:
Peter Collingbourne <peter@pcc.me.uk>
Loading
Please sign in to comment