[PATCH v3 1/3] include: libsframe: Add API to get total number of FREs

Jens Remus jremus@linux.ibm.com
Wed Jul 23 13:17:56 GMT 2025


This API will be later used by the linker to handle the special case
of a SFrame section that solely contain FDEs without any FREs.  Such
FDEs without any FREs will be used to represent RA undefined.

include/
	* sframe-api.h (sframe_encoder_get_num_fres): New declaration.

libsframe/
	* libsframe.ver (sframe_encoder_get_num_fres): List new API.
	* sframe.c (sframe_encoder_get_num_fres): New definition.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
---

Notes (jremus):
    Changes in V3:
    - New patch.
    
    Instead of adding a new API, sframe_encoder_write_sframe could directly
    access ehp->sfh_num_fres.  Thoughts?

 include/sframe-api.h    |  5 +++++
 libsframe/libsframe.ver |  1 +
 libsframe/sframe.c      | 14 ++++++++++++++
 3 files changed, 20 insertions(+)

diff --git a/include/sframe-api.h b/include/sframe-api.h
index 8c26257fb643..fe9cf6d8d3a4 100644
--- a/include/sframe-api.h
+++ b/include/sframe-api.h
@@ -275,6 +275,11 @@ sframe_encoder_get_offsetof_fde_start_addr (sframe_encoder_ctx *encoder,
 extern uint32_t
 sframe_encoder_get_num_fidx (sframe_encoder_ctx *encoder);
 
+/* Return the number of function row entries in the SFrame encoder
+   ENCODER.  */
+extern uint32_t
+sframe_encoder_get_num_fres (sframe_encoder_ctx *encoder);
+
 /* Add an FRE to function at FUNC_IDX'th function descriptor index entry in
    the encoder context.  */
 extern int
diff --git a/libsframe/libsframe.ver b/libsframe/libsframe.ver
index 8cc80da2f26a..deec457bbdee 100644
--- a/libsframe/libsframe.ver
+++ b/libsframe/libsframe.ver
@@ -31,6 +31,7 @@ LIBSFRAME_2.0 {
     sframe_encoder_get_version;
     sframe_encoder_get_offsetof_fde_start_addr;
     sframe_encoder_get_num_fidx;
+    sframe_encoder_get_num_fres;
     sframe_encoder_add_fre;
     sframe_encoder_add_funcdesc;
     sframe_encoder_add_funcdesc_v2;
diff --git a/libsframe/sframe.c b/libsframe/sframe.c
index 824d1fd7ed99..d84f1c2d0d78 100644
--- a/libsframe/sframe.c
+++ b/libsframe/sframe.c
@@ -1499,6 +1499,20 @@ sframe_encoder_get_num_fidx (sframe_encoder_ctx *encoder)
   return num_fdes;
 }
 
+/* Return the number of function row entries in the SFrame encoder
+   ENCODER.  */
+
+uint32_t
+sframe_encoder_get_num_fres (sframe_encoder_ctx *encoder)
+{
+  uint32_t num_fres = 0;
+  sframe_header *ehp = NULL;
+  ehp = sframe_encoder_get_header (encoder);
+  if (ehp)
+    num_fres = ehp->sfh_num_fres;
+  return num_fres;
+}
+
 /* Get the offset of the sfde_func_start_address field (from the start of the
    on-disk layout of the SFrame section) of the FDE at FUNC_IDX in the encoder
    context ENCODER.
-- 
2.48.1



More information about the Binutils mailing list