[Binutils,readelf] arm: Support for new pacbti unwind opcode 0xb5.

Message ID 33eb9aff-d813-44c5-8315-aeb3e339b3f2@AZ-NEU-EX04.Arm.com
State Not Applicable
Headers
Series [Binutils,readelf] arm: Support for new pacbti unwind opcode 0xb5. |

Checks

Context Check Description
snail/binutils-gdb-check fail Git am fail log

Commit Message

Srinath Parvathaneni Nov. 11, 2022, 10:53 a.m. UTC
  Hi,

This patch adds readelf support for decoding the exception table opcode "0xb5",
which indicates to use effective vsp as modifier for PAC validation as defined
by EHABI (https://github.com/ARM-software/abi-aa/releases/download/2022Q3/ehabi32.pdf
Section 10.3).

The testcase for this support is in the continuation patch
https://sourceware.org/pipermail/binutils/2022-November/124328.html

Regression testing for arm-none-eabi target and found no regressions.

Ok for binutils-master?

Regards,
Srinath.

binutils/ChangeLog:

2022-11-07  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

        * readelf.c (decode_arm_unwind_bytecode): Add entry to decode opcode
	0xb5.


###############     Attachment also inlined for ease of reply    ###############
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 4d8e540b39b1a7089bbb31026ddbc597e3621731..c8323539a21f3d3ba757e364c06c3dc0e6e7fade 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -9916,6 +9916,8 @@ decode_arm_unwind_bytecode (Filedata *                 filedata,
 	}
       else if (op == 0xb4)
 	printf (_("     pop {ra_auth_code}"));
+      else if (op == 0xb5)
+	printf (_("     vsp as modifier for PAC validation"));
       else if ((op & 0xf8) == 0xb8 || (op & 0xf8) == 0xd0)
 	{
 	  unsigned int count = op & 0x07;
  

Comments

Nick Clifton Nov. 14, 2022, 2:21 p.m. UTC | #1
Hi Srinath,

> 2022-11-07  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
> 
>          * readelf.c (decode_arm_unwind_bytecode): Add entry to decode opcode
> 	0xb5.

Approved - please apply.

Cheers
   Nick
  

Patch

diff --git a/binutils/readelf.c b/binutils/readelf.c
index 4d8e540b39b1a7089bbb31026ddbc597e3621731..c8323539a21f3d3ba757e364c06c3dc0e6e7fade 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -9916,6 +9916,8 @@  decode_arm_unwind_bytecode (Filedata *                 filedata,
 	}
       else if (op == 0xb4)
 	printf (_("     pop {ra_auth_code}"));
+      else if (op == 0xb5)
+	printf (_("     vsp as modifier for PAC validation"));
       else if ((op & 0xf8) == 0xb8 || (op & 0xf8) == 0xd0)
 	{
 	  unsigned int count = op & 0x07;