[binutils-gdb] libsframe: s390: No further decode if sframe_get_fre_offset returns err
Jens Remus
jremus@sourceware.org
Wed Oct 15 16:20:49 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=52308aeca881adb5c0cd7d29e19e41b4042d4d3a
commit 52308aeca881adb5c0cd7d29e19e41b4042d4d3a
Author: Jens Remus <jremus@linux.ibm.com>
Date: Wed Oct 15 17:45:48 2025 +0200
libsframe: s390: No further decode if sframe_get_fre_offset returns err
SFrame FREs without any offsets will later be used to represent
.cfi_undefined RA in SFrame.
As a result the API to get the CFA offset can return an error value, if
there are no offsets. Do not apply the s390x-specific decoding of CFA
offset on the error return value.
libsframe/
* sframe.c (sframe_fre_get_cfa_offset): Do not apply s390x-
specific decoding to error return value.
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Diff:
---
libsframe/sframe.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/libsframe/sframe.c b/libsframe/sframe.c
index b70b0e880c9..f56742ee1a1 100644
--- a/libsframe/sframe.c
+++ b/libsframe/sframe.c
@@ -698,12 +698,15 @@ int32_t
sframe_fre_get_cfa_offset (sframe_decoder_ctx *dctx,
sframe_frame_row_entry *fre, int *errp)
{
- int32_t offset = sframe_get_fre_offset (fre, SFRAME_FRE_CFA_OFFSET_IDX, errp);
+ int err;
+ int32_t offset = sframe_get_fre_offset (fre, SFRAME_FRE_CFA_OFFSET_IDX, &err);
/* For s390x undo adjustment of CFA offset (to enable 8-bit offsets). */
- if (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)
+ *errp = err;
return offset;
}
More information about the Binutils-cvs
mailing list