[3/5,3/5] objdump/readelf: sframe: emit marker for SFrame FDE with B key

Message ID 20221214200756.1234528-4-indu.bhagat@oracle.com
State Accepted
Headers
Series SFrame: add support for .cfi_b_key_frame |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Indu Bhagat Dec. 14, 2022, 8:07 p.m. UTC
  ChangeLog:

	* libsframe/sframe-dump.c (is_sframe_abi_arch_aarch64): New
	definition.
	(dump_sframe_func_with_fres): emit a string if B key is used.
---
 libsframe/sframe-dump.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
  

Patch

diff --git a/libsframe/sframe-dump.c b/libsframe/sframe-dump.c
index 8e5cd6116ef..6c655655ab3 100644
--- a/libsframe/sframe-dump.c
+++ b/libsframe/sframe-dump.c
@@ -25,6 +25,21 @@ 
 
 #define SFRAME_HEADER_FLAGS_STR_MAX_LEN 50
 
+/* Return TRUE if the SFrame section is associated with the aarch64 ABIs.  */
+
+static bool
+is_sframe_abi_arch_aarch64 (sframe_decoder_ctx *sfd_ctx)
+{
+  bool aarch64_p = false;
+
+  unsigned char abi_arch = sframe_decoder_get_abi_arch (sfd_ctx);
+  if ((abi_arch == SFRAME_ABI_AARCH64_ENDIAN_BIG)
+      || (abi_arch == SFRAME_ABI_AARCH64_ENDIAN_LITTLE))
+    aarch64_p = true;
+
+  return aarch64_p;
+}
+
 static void
 dump_sframe_header (sframe_decoder_ctx *sfd_ctx)
 {
@@ -113,6 +128,10 @@  dump_sframe_func_with_fres (sframe_decoder_ctx *sfd_ctx,
 	  func_start_pc_vma,
 	  func_size);
 
+  if (is_sframe_abi_arch_aarch64 (sfd_ctx)
+      && (SFRAME_V1_FUNC_PAUTH_KEY (func_info) == SFRAME_AARCH64_PAUTH_KEY_B))
+    printf (", pauth = B key");
+
   char temp[100];
   memset (temp, 0, 100);