libsframe: add new APIs to get SFrame version
authorIndu Bhagat <indu.bhagat@oracle.com>
Thu, 29 Jun 2023 23:28:56 +0000 (16:28 -0700)
committerIndu Bhagat <indu.bhagat@oracle.com>
Thu, 29 Jun 2023 23:28:56 +0000 (16:28 -0700)
While the SFrame preamble is guaranteed to not change between versions,
providing these access APIs from the SFrame decoder and encoder APIs is
for convenience only.  The linker may want to use these APIs as the
format evolves.

include/
* sframe-api.h (sframe_decoder_get_version): New declaration.
(sframe_encoder_get_version): Likewise.

libsframe/
* libsframe/libsframe.ver: Add new APIs.
* libsframe/sframe.c (sframe_decoder_get_version): New
definition.
(sframe_encoder_get_version): Likewise.

include/sframe-api.h
libsframe/libsframe.ver
libsframe/sframe.c

index 7594011a48fe5f3ce4cf20f31c2113934596fa4d..7883b668e3183d69524683e9d165cb5a4fb27613 100644 (file)
@@ -120,6 +120,10 @@ sframe_decoder_get_hdr_size (sframe_decoder_ctx *dctx);
 extern uint8_t
 sframe_decoder_get_abi_arch (sframe_decoder_ctx *dctx);
 
+/* Get the format version from the SFrame decoder context DCTX.  */
+extern uint8_t
+sframe_decoder_get_version (sframe_decoder_ctx *dctx);
+
 /* Return the number of function descriptor entries in the SFrame decoder
    DCTX.  */
 extern uint32_t
@@ -217,6 +221,10 @@ sframe_encoder_get_hdr_size (sframe_encoder_ctx *encoder);
 extern uint8_t
 sframe_encoder_get_abi_arch (sframe_encoder_ctx *encoder);
 
+/* Get the format version from the SFrame encoder context ENCODER.  */
+extern uint8_t
+sframe_encoder_get_version (sframe_encoder_ctx *encoder);
+
 /* Return the number of function descriptor entries in the SFrame encoder
    ENCODER.  */
 extern uint32_t
index 2c2081f311af72865ceab5d6a2296d4f18defd44..3e2a5695e93226d7638ca28b6dc0a795600c1418 100644 (file)
@@ -13,6 +13,7 @@ LIBSFRAME_1.0 {
     sframe_decode;
     sframe_decoder_get_hdr_size;
     sframe_decoder_get_abi_arch;
+    sframe_decoder_get_version;
     sframe_decoder_get_fixed_fp_offset;
     sframe_decoder_get_fixed_ra_offset;
     sframe_get_funcdesc_with_addr;
@@ -24,6 +25,7 @@ LIBSFRAME_1.0 {
     sframe_encoder_free;
     sframe_encoder_get_hdr_size;
     sframe_encoder_get_abi_arch;
+    sframe_encoder_get_version;
     sframe_encoder_get_num_fidx;
     sframe_encoder_add_fre;
     sframe_encoder_add_funcdesc;
index fd966cfffd48f4fd74b634b3d459d3aee0559706..cb73a0ca87f1cddf4eb3845c66bb311e8a58df56 100644 (file)
@@ -988,6 +988,16 @@ sframe_decoder_get_abi_arch (sframe_decoder_ctx *dctx)
   return sframe_header->sfh_abi_arch;
 }
 
+/* Get the format version from the SFrame decoder context DCTX.  */
+
+uint8_t
+sframe_decoder_get_version (sframe_decoder_ctx *dctx)
+{
+  sframe_header *dhp;
+  dhp = sframe_decoder_get_header (dctx);
+  return dhp->sfh_preamble.sfp_version;
+}
+
 /* Get the SFrame's fixed FP offset given the decoder context CTX.  */
 int8_t
 sframe_decoder_get_fixed_fp_offset (sframe_decoder_ctx *ctx)
@@ -1368,6 +1378,16 @@ sframe_encoder_get_abi_arch (sframe_encoder_ctx *encoder)
   return abi_arch;
 }
 
+/* Get the format version from the SFrame encoder context ENCODER.  */
+
+uint8_t
+sframe_encoder_get_version (sframe_encoder_ctx *encoder)
+{
+  sframe_header *ehp;
+  ehp = sframe_encoder_get_header (encoder);
+  return ehp->sfh_preamble.sfp_version;
+}
+
 /* Return the number of function descriptor entries in the SFrame encoder
    ENCODER.  */