From: Jens Remus Date: Wed, 15 Oct 2025 15:45:48 +0000 (+0200) Subject: libsframe: s390: No further decode if sframe_get_fre_offset returns err X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52308aeca881adb5c0cd7d29e19e41b4042d4d3a;p=thirdparty%2Fbinutils-gdb.git 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 --- 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; }