[binutils-gdb/jremus/sframe-v3-s390x] libsframe: textual dump of fde type SFRAME_FDE_TYPE_FLEX_TOPMOST_FRAME
Jens Remus
jremus@sourceware.org
Mon Dec 15 16:25:41 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f102ed875f0a543d6c4db5d0e0849c803202c3aa
commit f102ed875f0a543d6c4db5d0e0849c803202c3aa
Author: Jens Remus <jremus@linux.ibm.com>
Date: Fri Dec 12 16:26:43 2025 +0100
libsframe: textual dump of fde type SFRAME_FDE_TYPE_FLEX_TOPMOST_FRAME
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Diff:
---
libsframe/sframe-dump.c | 10 ++++++++--
libsframe/sframe.c | 3 +--
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/libsframe/sframe-dump.c b/libsframe/sframe-dump.c
index 9cbb52254dc..20b6fcee3ff 100644
--- a/libsframe/sframe-dump.c
+++ b/libsframe/sframe-dump.c
@@ -442,9 +442,15 @@ dump_sframe_func_fre_flex_topmost (const sframe_decoder_ctx *sfd_ctx,
/* Dump RA info.
Even if an ABI does not track RA offset, e.g., AMD64, for flex topmost
- frame, it may have RA recovery from register. Else, display 'f'. */
+ frame, it may have RA recovery from register. */
if (!ra_reg_data && !ra_offset)
- strcpy (temp, "f");
+ {
+ if (sframe_decoder_get_fixed_ra_offset (sfd_ctx)
+ != SFRAME_CFA_FIXED_RA_INVALID)
+ strcpy (temp, "f");
+ else
+ strcpy (temp, "U");
+ }
else
sframe_format_fre_disp (temp, sizeof (temp), abi_arch, ra_reg,
ra_reg_p, ra_offset, ra_deref_p);
diff --git a/libsframe/sframe.c b/libsframe/sframe.c
index 66bba69b37a..a567aad9a6d 100644
--- a/libsframe/sframe.c
+++ b/libsframe/sframe.c
@@ -1123,8 +1123,7 @@ sframe_fre_get_cfa_offset (const sframe_decoder_ctx *dctx,
int32_t offset = sframe_get_fre_offset (fre, idx, &err);
/* For s390x undo adjustment of CFA offset (to enable 8-bit offsets). */
- if (!err && !flex_p
- && sframe_decoder_get_abi_arch (dctx) == SFRAME_ABI_S390X_ENDIAN_BIG)
+ if (!err && sframe_decoder_get_abi_arch (dctx) == SFRAME_ABI_S390X_ENDIAN_BIG)
offset = SFRAME_V2_S390X_CFA_OFFSET_DECODE (offset);
if (errp)
More information about the Binutils-cvs
mailing list