]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
include: libsframe: rename SFrame V3 Flexible FDE macros to CTRLWORD
authorIndu Bhagat <indu.bhagat@oracle.com>
Fri, 30 Jan 2026 04:02:57 +0000 (20:02 -0800)
committerIndu Bhagat <indu.bhagat@oracle.com>
Fri, 30 Jan 2026 04:02:57 +0000 (20:02 -0800)
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.

gas/gen-sframe.c
include/sframe.h
libsframe/sframe-dump.c
libsframe/testsuite/libsframe.decode/be-flipping-v3.c

index d62bb3dc64663a35ef37b09bc919e860016c630b..7c1b7be93bb3434a93cc128430c3aabe153c214a 100644 (file)
@@ -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);
index 8a824852bcd51266a8d8f1e24f791513d3bc1b8d..2c9019cb64d1a254966d16f52841ce70e756fb96 100644 (file)
@@ -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
index 3d7bbafcdbc19019b85fd53377eb45ce23a97add..56cf963566ee73e3dc8e6b87ade054063d9f5bd5 100644 (file)
@@ -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.  */
index f573c4bbf82f4ea18526d58c3bce5b31a8f82384..27ec2da62f1997dbb5981268c9cb79ca0093aa4c 100644 (file)
@@ -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);