[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