]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
libsframe: s390: No further decode if sframe_get_fre_offset returns err
authorJens Remus <jremus@linux.ibm.com>
Wed, 15 Oct 2025 15:45:48 +0000 (17:45 +0200)
committerJens Remus <jremus@linux.ibm.com>
Wed, 15 Oct 2025 15:45:48 +0000 (17:45 +0200)
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>
libsframe/sframe.c

index b70b0e880c9b07bbb7d85f875bbf0f494c30a634..f56742ee1a11504fabf1eba6c4229ad5f34d6957 100644 (file)
@@ -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;
 }