[binutils-gdb/binutils-2_46-branch] include: libsframe: rename SFrame V3 Flexible FDE macros to CTRLWORD

Indu Bhagat ibhagat@sourceware.org
Tue Feb 3 19:40:37 GMT 2026


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=539e7b2480e4a5eade301d91a140b38086d0a741

commit 539e7b2480e4a5eade301d91a140b38086d0a741
Author: Indu Bhagat <indu.bhagat@oracle.com>
Date:   Thu Jan 29 20:02:57 2026 -0800

    include: libsframe: rename SFrame V3 Flexible FDE macros to CTRLWORD
    
    The existing SFrame V3 macros for Flexible FDEs used the term 'OFFSET'
    to refer to the data word encoding control/register data word. This can
    be confusing, as the control data word (register ID, dereference flags)
    is distinct from a stack offset.
    
    This patch renames these macros to use 'CTRLWORD' to better reflect
    their purpose. It also updates the assembler and libsframe dumper to
    use the new nomenclature.
    
    No functional change.
    
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    
    gas/
            * gen-sframe.c (sframe_get_fre_dataword_size): Use
            SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE.
            (output_sframe_row_entry_datawords): Likewise.
    include/
            * sframe.h (SFRAME_V3_FLEX_FDE_REG_ENCODE): Rename from ..
            (SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE): .. to.
            (SFRAME_V3_FLEX_FDE_CTRLWORD_REGNUM): Rename from
            SFRAME_V3_FLEX_FDE_OFFSET_REG_NUM to this.
            (SFRAME_V3_FLEX_FDE_CTRLWORD_DEREF_P): Rename from
            SFRAME_V3_FLEX_FDE_OFFSET_REG_DEREF_P to this.
            (SFRAME_V3_FLEX_FDE_CTRLWORD_REG_P): Rename from
            SFRAME_V3_FLEX_FDE_OFFSET_REG_P to this.
            (SFRAME_V3_FRE_RA_UNDEFINED_P): Add new V3 macro.
    libsframe/
            * sframe-dump.c (dump_sframe_func_fres_flex): Update all
            callers to use the new CTRLWORD macros.
    libsframe/testsuite/
            * libsframe.decode/be-flipping-v3.c: Use renamed macros.
    
    (cherry picked from commit 4edeb9be08afae397e6c0dd1a57399b18ca29e35)

Diff:
---
 gas/gen-sframe.c                                   | 34 +++++++++++-----------
 include/sframe.h                                   | 11 ++++---
 libsframe/sframe-dump.c                            | 18 ++++++------
 .../testsuite/libsframe.decode/be-flipping-v3.c    |  8 ++---
 4 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c
index d62bb3dc646..7c1b7be93bb 100644
--- a/gas/gen-sframe.c
+++ b/gas/gen-sframe.c
@@ -461,17 +461,17 @@ sframe_get_fre_dataword_size (const struct sframe_row_entry *sframe_fre,
     {
       bool reg_p = (sframe_fre->cfa_base_reg != SFRAME_FRE_REG_INVALID);
       unsigned int data
-	= SFRAME_V3_FLEX_FDE_REG_ENCODE (sframe_fre->cfa_base_reg,
-					 sframe_fre->cfa_deref_p, reg_p);
+	= SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE (sframe_fre->cfa_base_reg,
+					      sframe_fre->cfa_deref_p, reg_p);
       unsigned int cfa_control_word_size = get_udata_size_in_bytes (data);
       if (cfa_control_word_size > max_dataword_size)
 	max_dataword_size = cfa_control_word_size;
 
       if (sframe_fre->ra_loc == SFRAME_FRE_ELEM_LOC_REG)
 	{
-	  data = SFRAME_V3_FLEX_FDE_REG_ENCODE (sframe_fre->ra_reg,
-						sframe_fre->ra_deref_p,
-						1 /* reg_p.  */);
+	  data = SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE (sframe_fre->ra_reg,
+						     sframe_fre->ra_deref_p,
+						     1 /* reg_p.  */);
 	  unsigned ra_control_word_size = get_udata_size_in_bytes (data);
 	  if (ra_control_word_size > max_dataword_size)
 	    max_dataword_size = ra_control_word_size;
@@ -479,9 +479,9 @@ sframe_get_fre_dataword_size (const struct sframe_row_entry *sframe_fre,
 
       if (sframe_fre->fp_loc == SFRAME_FRE_ELEM_LOC_REG)
 	{
-	  data = SFRAME_V3_FLEX_FDE_REG_ENCODE (sframe_fre->fp_reg,
-						sframe_fre->fp_deref_p,
-						1 /* reg_p.  */);
+	  data = SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE (sframe_fre->fp_reg,
+						     sframe_fre->fp_deref_p,
+						     1 /* reg_p.  */);
 	  unsigned fp_control_word_size = get_udata_size_in_bytes (data);
 	  if (fp_control_word_size > max_dataword_size)
 	    max_dataword_size = fp_control_word_size;
@@ -660,9 +660,9 @@ output_sframe_row_entry_datawords (const struct sframe_func_entry *sframe_fde,
       /* SFrame FDE of type SFRAME_FDE_TYPE_FLEX.  */
       /* Output CFA related FRE data words.  */
       uint32_t reg = sframe_fre->cfa_base_reg;
+      bool deref_p = sframe_fre->cfa_deref_p;
       uint32_t reg_data
-	= SFRAME_V3_FLEX_FDE_REG_ENCODE (reg, sframe_fre->cfa_deref_p,
-					 1 /* reg_p.  */);
+	= SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE (reg, deref_p, 1 /* reg_p.  */);
       offsetT offset_data = sframe_fre->cfa_offset;
       dataword_func_map[idx].out_func (reg_data);
       dataword_func_map[idx].out_func (offset_data);
@@ -674,9 +674,9 @@ output_sframe_row_entry_datawords (const struct sframe_func_entry *sframe_fde,
 	  /* Output RA related FRE data words.  */
 	  reg_p = sframe_fre->ra_loc == SFRAME_FRE_ELEM_LOC_REG;
 	  reg = reg_p ? sframe_fre->ra_reg : 0;
-	  reg_data = SFRAME_V3_FLEX_FDE_REG_ENCODE (reg,
-						    sframe_fre->ra_deref_p,
-						    reg_p);
+	  deref_p = sframe_fre->ra_deref_p;
+	  reg_data = SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE (reg, deref_p, reg_p);
+
 	  offset_data = sframe_fre->ra_offset;
 	  dataword_func_map[idx].out_func (reg_data);
 	  dataword_func_map[idx].out_func (offset_data);
@@ -687,7 +687,7 @@ output_sframe_row_entry_datawords (const struct sframe_func_entry *sframe_fde,
 	  /* If RA is not in REG/STACK, emit RA padding if there are more
 	     data words to follow.  Note that, emitting
 	     SFRAME_FRE_RA_OFFSET_INVALID is equivalent to emitting
-	     SFRAME_V3_FLEX_FDE_REG_ENCODE (0, 0, 0).  */
+	     SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE (0, 0, 0).  */
 	  dataword_func_map[idx].out_func (SFRAME_FRE_RA_OFFSET_INVALID);
 	  fre_write_datawords += 1;
 	}
@@ -697,9 +697,9 @@ output_sframe_row_entry_datawords (const struct sframe_func_entry *sframe_fde,
 	  /* Output FP related FRE data words.  */
 	  reg_p = sframe_fre->fp_loc == SFRAME_FRE_ELEM_LOC_REG;
 	  reg = reg_p ? sframe_fre->fp_reg : 0;
-	  reg_data = SFRAME_V3_FLEX_FDE_REG_ENCODE (reg,
-						    sframe_fre->fp_deref_p,
-						    reg_p);
+	  deref_p = sframe_fre->fp_deref_p;
+	  reg_data = SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE (reg, deref_p, reg_p);
+
 	  offset_data = sframe_fre->fp_offset;
 	  dataword_func_map[idx].out_func (reg_data);
 	  dataword_func_map[idx].out_func (offset_data);
diff --git a/include/sframe.h b/include/sframe.h
index 8a824852bcd..2c9019cb64d 100644
--- a/include/sframe.h
+++ b/include/sframe.h
@@ -342,12 +342,15 @@ typedef struct sframe_func_desc_attr_v3
 #define SFRAME_V3_FDE_UPDATE_SIGNAL_P(signal_p, info)  \
   ((((signal_p) & 0x1) << 7) | ((info) & 0x7f))
 
-#define SFRAME_V3_FLEX_FDE_REG_ENCODE(reg, deref_p, reg_p)  \
+#define SFRAME_V3_FLEX_FDE_CTRLWORD_ENCODE(reg, deref_p, reg_p) \
   ((((reg) << 0x3) | (0 << 0x2) | (((deref_p) & 0x1) << 0x1) | ((reg_p) & 0x1)))
 
-#define SFRAME_V3_FLEX_FDE_OFFSET_REG_NUM(data)       ((data) >> 3)
-#define SFRAME_V3_FLEX_FDE_OFFSET_REG_DEREF_P(data)   (((data) >> 1) & 0x1)
-#define SFRAME_V3_FLEX_FDE_OFFSET_REG_P(data)         ((data) & 0x1)
+#define SFRAME_V3_FLEX_FDE_CTRLWORD_REGNUM(data)    ((data) >> 3)
+#define SFRAME_V3_FLEX_FDE_CTRLWORD_DEREF_P(data)   (((data) >> 1) & 0x1)
+#define SFRAME_V3_FLEX_FDE_CTRLWORD_REG_P(data)     ((data) & 0x1)
+
+#define SFRAME_V3_FRE_RA_UNDEFINED_P(fre_info) \
+  (SFRAME_V2_FRE_RA_UNDEFINED_P (fre_info))
 
 /* Size of stack frame offsets in an SFrame Frame Row Entry.  A single
    SFrame FRE has all offsets of the same size.  Offset size may vary
diff --git a/libsframe/sframe-dump.c b/libsframe/sframe-dump.c
index 3d7bbafcdbc..56cf963566e 100644
--- a/libsframe/sframe-dump.c
+++ b/libsframe/sframe-dump.c
@@ -385,11 +385,11 @@ dump_sframe_func_fres_flex (const sframe_decoder_ctx *sfd_ctx,
       int32_t cfa_offset = sframe_fre_get_cfa_offset (sfd_ctx, &fre, fde_type,
 						      &err_cfa_offset);
       sframe_assert (!err_cfa_reg && !err_cfa_offset);
-      bool cfa_reg_p = SFRAME_V3_FLEX_FDE_OFFSET_REG_P (cfa_reg_data);
+      bool cfa_reg_p = SFRAME_V3_FLEX_FDE_CTRLWORD_REG_P (cfa_reg_data);
       if (cfa_reg_p)
 	{
-	  cfa_reg = SFRAME_V3_FLEX_FDE_OFFSET_REG_NUM (cfa_reg_data);
-	  cfa_deref_p = SFRAME_V3_FLEX_FDE_OFFSET_REG_DEREF_P (cfa_reg_data);
+	  cfa_reg = SFRAME_V3_FLEX_FDE_CTRLWORD_REGNUM (cfa_reg_data);
+	  cfa_deref_p = SFRAME_V3_FLEX_FDE_CTRLWORD_DEREF_P (cfa_reg_data);
 	}
 
       int err_ra_reg = 0;
@@ -399,11 +399,11 @@ dump_sframe_func_fres_flex (const sframe_decoder_ctx *sfd_ctx,
 				&err_ra_reg);
       int32_t ra_offset = sframe_fre_get_ra_offset (sfd_ctx, &fre, fde_type,
 						    &err_ra_offset);
-      bool ra_reg_p = SFRAME_V3_FLEX_FDE_OFFSET_REG_P (ra_reg_data);
+      bool ra_reg_p = SFRAME_V3_FLEX_FDE_CTRLWORD_REG_P (ra_reg_data);
       if (ra_reg_p)
 	{
-	  ra_reg = SFRAME_V3_FLEX_FDE_OFFSET_REG_NUM (ra_reg_data);
-	  ra_deref_p = SFRAME_V3_FLEX_FDE_OFFSET_REG_DEREF_P (ra_reg_data);
+	  ra_reg = SFRAME_V3_FLEX_FDE_CTRLWORD_REGNUM (ra_reg_data);
+	  ra_deref_p = SFRAME_V3_FLEX_FDE_CTRLWORD_DEREF_P (ra_reg_data);
 	}
 
       int err_fp_reg = 0;
@@ -416,11 +416,11 @@ dump_sframe_func_fres_flex (const sframe_decoder_ctx *sfd_ctx,
       uint32_t fp_reg_data = sframe_get_fre_udata (&fre, fp_idx, &err_fp_reg);
       int32_t fp_offset = sframe_fre_get_fp_offset (sfd_ctx, &fre, fde_type,
 						    &err_fp_offset);
-      bool fp_reg_p = SFRAME_V3_FLEX_FDE_OFFSET_REG_P (fp_reg_data);
+      bool fp_reg_p = SFRAME_V3_FLEX_FDE_CTRLWORD_REG_P (fp_reg_data);
       if (fp_reg_p)
 	{
-	  fp_reg = SFRAME_V3_FLEX_FDE_OFFSET_REG_NUM (fp_reg_data);
-	  fp_deref_p = SFRAME_V3_FLEX_FDE_OFFSET_REG_DEREF_P (fp_reg_data);
+	  fp_reg = SFRAME_V3_FLEX_FDE_CTRLWORD_REGNUM (fp_reg_data);
+	  fp_deref_p = SFRAME_V3_FLEX_FDE_CTRLWORD_DEREF_P (fp_reg_data);
 	}
 
       /* Dump CFA info.  */
diff --git a/libsframe/testsuite/libsframe.decode/be-flipping-v3.c b/libsframe/testsuite/libsframe.decode/be-flipping-v3.c
index f573c4bbf82..27ec2da62f1 100644
--- a/libsframe/testsuite/libsframe.decode/be-flipping-v3.c
+++ b/libsframe/testsuite/libsframe.decode/be-flipping-v3.c
@@ -91,18 +91,18 @@ main (void)
   /* Expected RA reg r16.  */
   reg_data = sframe_get_fre_udata (&fre, SFRAME_FRE_RA_OFFSET_IDX * 2,
 				   &err_reg_data);
-  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_OFFSET_REG_P (reg_data) == 0x1),
+  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_CTRLWORD_REG_P (reg_data) == 0x1),
 	"be-flipping-v3: Whether RA reg_p is true");
-  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_OFFSET_REG_NUM (reg_data) == 16),
+  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_CTRLWORD_REGNUM (reg_data) == 16),
 	"be-flipping-v3: Get RA reg of third FRE");
 
   /* Expected FP reg r17.  */
   err_reg_data = 0;
   reg_data = sframe_get_fre_udata (&fre, SFRAME_FRE_FP_OFFSET_IDX * 2,
 				   &err_reg_data);
-  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_OFFSET_REG_P (reg_data) == 0x1),
+  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_CTRLWORD_REG_P (reg_data) == 0x1),
 	"be-flipping-v3: Whether FP reg_p is true");
-  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_OFFSET_REG_NUM (reg_data) == 17),
+  TEST ((err_reg_data == 0 && SFRAME_V3_FLEX_FDE_CTRLWORD_REGNUM (reg_data) == 17),
 	"be-flipping-v3: Get FP reg of third FRE");
 
   free (sf_buf);


More information about the Binutils-cvs mailing list