Add 3 new PAC-related ARM note types

Message ID 20210805170702.1152754-1-luis.machado@linaro.org
State New
Headers show
Series
  • Add 3 new PAC-related ARM note types
Related show

Commit Message

Alan Modra via Binutils Aug. 5, 2021, 5:07 p.m.
The following patch synchronizes includes/objdump/readelf with the Linux
Kernel in terms of ARM regset notes.

We're currently missing 3 of them:

NT_ARM_PACA_KEYS
NT_ARM_PACG_KEYS
NT_ARM_PAC_ENABLED_KEYS

We don't need GDB to bother with this at the moment, so this doesn't update
bfd/elf.c. If needed, we can do it in the future.

binutils/

	* readelf.c (get_note_type): Handle new ARM PAC notes.

include/elf/

	* common.h (NT_ARM_PACA_KEYS, NT_ARM_PACG_KEYS)
	(NT_ARM_PAC_ENABLED_KEYS): New constants.
---
 binutils/readelf.c   | 6 ++++++
 include/elf/common.h | 9 +++++++++
 2 files changed, 15 insertions(+)

-- 
2.25.1

Comments

Alan Modra via Binutils Aug. 11, 2021, 12:24 p.m. | #1
Hi Luis,

> binutils/

> 

> 	* readelf.c (get_note_type): Handle new ARM PAC notes.

> 

> include/elf/

> 

> 	* common.h (NT_ARM_PACA_KEYS, NT_ARM_PACG_KEYS)

> 	(NT_ARM_PAC_ENABLED_KEYS): New constants.


Approved - please apply.

Cheers
   Nick
Alan Modra via Binutils Aug. 11, 2021, 12:43 p.m. | #2
On 8/11/21 9:24 AM, Nick Clifton wrote:
> Hi Luis,

> 

>> binutils/

>>

>>     * readelf.c (get_note_type): Handle new ARM PAC notes.

>>

>> include/elf/

>>

>>     * common.h (NT_ARM_PACA_KEYS, NT_ARM_PACG_KEYS)

>>     (NT_ARM_PAC_ENABLED_KEYS): New constants.

> 

> Approved - please apply.

> 

> Cheers

>    Nick

> 


Thanks Nick. Pushed now.

Patch

diff --git a/binutils/readelf.c b/binutils/readelf.c
index bd16fcc77ad..bedd3893b59 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -18828,8 +18828,14 @@  get_note_type (Filedata * filedata, unsigned e_type)
 	return _("NT_ARM_SVE (AArch SVE registers)");
       case NT_ARM_PAC_MASK:
 	return _("NT_ARM_PAC_MASK (AArch pointer authentication code masks)");
+      case NT_ARM_PACA_KEYS:
+	return _("NT_ARM_PACA_KEYS (ARM pointer authentication address keys)");
+      case NT_ARM_PACG_KEYS:
+	return _("NT_ARM_PACG_KEYS (ARM pointer authentication generic keys)");
       case NT_ARM_TAGGED_ADDR_CTRL:
 	return _("NT_ARM_TAGGED_ADDR_CTRL (AArch tagged address control)");
+      case NT_ARM_PAC_ENABLED_KEYS:
+	return _("NT_ARM_PAC_ENABLED_KEYS (AArch64 pointer authentication enabled keys)");
       case NT_ARC_V2:
 	return _("NT_ARC_V2 (ARC HS accumulator/extra registers)");
       case NT_RISCV_CSR:
diff --git a/include/elf/common.h b/include/elf/common.h
index 0d381f0d27b..95ade894e98 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -672,9 +672,18 @@ 
 					/*   note name must be "LINUX".  */
 #define NT_ARM_PAC_MASK	0x406		/* AArch pointer authentication code masks */
 					/*   note name must be "LINUX".  */
+#define NT_ARM_PACA_KEYS  0x407		/* ARM pointer authentication address
+					   keys */
+					/*   note name must be "LINUX".  */
+#define NT_ARM_PACG_KEYS  0x408		/* ARM pointer authentication generic
+					   keys */
+					/*  note name must be "LINUX".  */
 #define NT_ARM_TAGGED_ADDR_CTRL	0x409	/* AArch64 tagged address control
 					   (prctl()) */
 					/*   note name must be "LINUX".  */
+#define NT_ARM_PAC_ENABLED_KEYS	0x40a	/* AArch64 pointer authentication
+					   enabled keys (prctl()) */
+					/*   note name must be "LINUX".  */
 #define NT_ARC_V2	0x600		/* ARC HS accumulator/extra registers.  */
 					/*   note name must be "LINUX".  */
 #define NT_RISCV_CSR    0x900		/* RISC-V Control and Status Registers */