[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