[v6,2/4] libsframe: s390: No further decode if sframe_get_fre_offset returns err

Message ID 20250915110551.759931-3-jremus@linux.ibm.com
State New
Headers
Series sframe: Represent .cfi_undefined RA |

Commit Message

Jens Remus Sept. 15, 2025, 11:05 a.m. UTC
  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>
---

Notes (jremus):
    Changes in V6:
    - Reword commit title. (Indu)
    
    Changes in V5:
    - New patch.  Do not alter sframe_fre_get_cfa_offset error return value.
      (Indu)

 libsframe/sframe.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
  

Patch

diff --git a/libsframe/sframe.c b/libsframe/sframe.c
index b70b0e880c9b..f56742ee1a11 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;
 }