From 328931e0b52ac47cac0cb29c3b41bed9ea147be8 Mon Sep 17 00:00:00 2001 From: Kerry McLaughlin Date: Fri, 18 Sep 2026 13:39:38 +0000 Subject: [PATCH 1/3] [aadwarf64] Add a character to the augmentation string for RA signing method FEAT_PAuth_LR adds non hint-space instructions for signing and authenticating return addresses using PC as an additional diversifier, along with the hint-space PACM instruction. The return address state records whether the value of PC has been used, however this is not sufficient to distinguish whether hint-space instructions were used, e.g. "PACM; PACIASP" or "PACIASPPC". If PACM has a trivial implementation, these sequences may have different results. Adding the 'N' character to the augmentation string indicates that the non hint-space instruction form was used when the signing state includes the PC value as a diversifier. If the mark is absent but PC was used, then the hint-space instruction sequence must be used for authentication. https://github.com/ARM-software/abi-aa/issues/396 --- aadwarf64/aadwarf64.rst | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/aadwarf64/aadwarf64.rst b/aadwarf64/aadwarf64.rst index 2335f0bf..8c3f7fb4 100644 --- a/aadwarf64/aadwarf64.rst +++ b/aadwarf64/aadwarf64.rst @@ -592,7 +592,7 @@ This generates the following obligations on producers and consumers of CIEs: cannot be used by any associated functions and their descendants. Although these are not callee-saved, they are not callee-used either.) -This ABI defines two CIE augmentation characters that may appear as part of +This ABI defines three CIE augmentation characters that may appear as part of a CIE augmentation string. 1. The character 'B' indicates that associated frames are using the B key for @@ -601,12 +601,20 @@ a CIE augmentation string. 2. The character 'G' indicates that associated frames may modify MTE tags on the stack space they use. +3. The character 'N' indicates that associated frames are using non hint-space + FEAT_PAuth_LR instructions for return address signing. It is required that a + single method is used to sign and authenticate a pointer. .. note:: 1. The mark on a frame recording that it may have set MTE tags other than the stack background is information which can be used when unwinding. + 2. The mark on a frame recording that it uses non hint-space instructions + for return address signing is information which can be used when unwinding. + If the mark is absent and the PC value was used as a diversifier for + signing, this indicates that the hint-space PACM instruction was used. + .. raw:: pdf PageBreak oneColumn From 65bb49feb892cc8f4a503e5578b83872ee992905 Mon Sep 17 00:00:00 2001 From: Kerry McLaughlin Date: Wed, 23 Sep 2026 12:59:50 +0000 Subject: [PATCH 2/3] - Move statement about requiring a single method to the note section. --- aadwarf64/aadwarf64.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aadwarf64/aadwarf64.rst b/aadwarf64/aadwarf64.rst index 8c3f7fb4..f50f9a20 100644 --- a/aadwarf64/aadwarf64.rst +++ b/aadwarf64/aadwarf64.rst @@ -602,8 +602,7 @@ a CIE augmentation string. the stack space they use. 3. The character 'N' indicates that associated frames are using non hint-space - FEAT_PAuth_LR instructions for return address signing. It is required that a - single method is used to sign and authenticate a pointer. + FEAT_PAuth_LR instructions for return address signing. .. note:: @@ -613,7 +612,8 @@ a CIE augmentation string. 2. The mark on a frame recording that it uses non hint-space instructions for return address signing is information which can be used when unwinding. If the mark is absent and the PC value was used as a diversifier for - signing, this indicates that the hint-space PACM instruction was used. + signing, this indicates that the hint-space PACM instruction was used. It is + required that a single method is used to sign and authenticate a pointer. .. raw:: pdf From 34e660defae81966685579c5353c0f40ec30ef8b Mon Sep 17 00:00:00 2001 From: Kerry McLaughlin Date: Mon, 28 Sep 2026 13:58:57 +0000 Subject: [PATCH 3/3] - Clarify that the new mark only has meaning for DW_AARCH64_RA_SIGNED_SP_PC --- aadwarf64/aadwarf64.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/aadwarf64/aadwarf64.rst b/aadwarf64/aadwarf64.rst index f50f9a20..8c6f5585 100644 --- a/aadwarf64/aadwarf64.rst +++ b/aadwarf64/aadwarf64.rst @@ -611,9 +611,11 @@ a CIE augmentation string. 2. The mark on a frame recording that it uses non hint-space instructions for return address signing is information which can be used when unwinding. - If the mark is absent and the PC value was used as a diversifier for - signing, this indicates that the hint-space PACM instruction was used. It is - required that a single method is used to sign and authenticate a pointer. + This mark only has meaning when the PC value was used as a diversifier for + signing and will be ignored otherwise. If the mark is absent and the PC + value was used as a diversifier, this indicates that the hint-space PACM + instruction was used. It is required that a single method is used to sign + and authenticate a pointer. .. raw:: pdf