diff options
author | Indu Bhagat <indu.bhagat@oracle.com> | 2022-12-22 09:57:27 -0800 |
---|---|---|
committer | Indu Bhagat <indu.bhagat@oracle.com> | 2022-12-22 09:57:27 -0800 |
commit | 95e829affb0a46394fd87048e7599ce950eabf5f (patch) | |
tree | 62d621d0d9cd60614f858d621608fff6928d021c | |
parent | 3369de90b81592b44ba34360642a74a68afbdf7a (diff) | |
download | binutils-95e829affb0a46394fd87048e7599ce950eabf5f.zip binutils-95e829affb0a46394fd87048e7599ce950eabf5f.tar.gz binutils-95e829affb0a46394fd87048e7599ce950eabf5f.tar.bz2 |
objdump/readelf: sframe: emit marker for SFrame FDE with B key
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.
-rw-r--r-- | libsframe/sframe-dump.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libsframe/sframe-dump.c b/libsframe/sframe-dump.c index 5f778be..c00ff40 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); |