aboutsummaryrefslogtreecommitdiff
path: root/libsframe/sframe-impl.h
diff options
context:
space:
mode:
authorWeimin Pan <weimin.pan@oracle.com>2022-11-15 15:06:59 -0800
committerIndu Bhagat <indu.bhagat@oracle.com>2022-11-15 15:24:29 -0800
commit19e559f1c91bfaedbd2f91d85ee161f3f03fda3c (patch)
tree527ffba7056f53a26aa5114336ab0a218d868232 /libsframe/sframe-impl.h
parentdc56ee029e7e02666b81101e169333f7edfa76f9 (diff)
downloadgdb-19e559f1c91bfaedbd2f91d85ee161f3f03fda3c.zip
gdb-19e559f1c91bfaedbd2f91d85ee161f3f03fda3c.tar.gz
gdb-19e559f1c91bfaedbd2f91d85ee161f3f03fda3c.tar.bz2
libsframe: add the SFrame library
libsframe is a library that allows you to: - decode a .sframe section - probe and inspect a .sframe section - encode (and eventually write) a .sframe section. This library is currently being used by the linker, readelf, objdump. This library will also be used by the SFrame unwinder which is still to be upstream'd. The file include/sframe-api.h defines the user-facing APIs for decoding, encoding and probing .sframe sections. A set of error codes together with their error message strings are also defined. Endian flipping is performed automatically at read and write time, if cross-endianness is detected. ChangeLog: * Makefile.def: Add libsframe as new module with its dependencies. * Makefile.in: Regenerated. * binutils/Makefile.am: Add libsframe. * binutils/Makefile.in: Regenerated. * configure: Regenerated * configure.ac: Add libsframe to host_libs. * libsframe/Makefile.am: New file. * libsframe/Makefile.in: New file. * libsframe/aclocal.m4: New file. * libsframe/config.h.in: New file. * libsframe/configure: New file. * libsframe/configure.ac: New file. * libsframe/sframe-error.c: New file. * libsframe/sframe-impl.h: New file. * libsframe/sframe.c: New file. include/ChangeLog: * sframe-api.h: New file. testsuite/ChangeLog: * libsframe/testsuite/Makefile.am: New file. * libsframe/testsuite/Makefile.in: Regenerated. * libsframe/testsuite/libsframe.decode/Makefile.am: New file. * libsframe/testsuite/libsframe.decode/Makefile.in: Regenerated. * libsframe/testsuite/libsframe.decode/decode.exp: New file. * libsframe/testsuite/libsframe.encode/Makefile.am: Likewise. * libsframe/testsuite/libsframe.encode/Makefile.in: Regenerated. * libsframe/testsuite/libsframe.encode/encode.exp: New file. * libsframe/testsuite/libsframe.encode/encode-1.c: Likewise. * libsframe/testsuite/libsframe.decode/be-flipping.c: Likewise. * libsframe/testsuite/libsframe.decode/frecnt-1.c: Likewise. * libsframe/testsuite/libsframe.decode/frecnt-2.c: Likewise. * libsframe/testsuite/libsframe.decode/DATA-BE: New file. * libsframe/testsuite/libsframe.decode/DATA1: Likewise. * libsframe/testsuite/libsframe.decode/DATA2: Likewise.
Diffstat (limited to 'libsframe/sframe-impl.h')
-rw-r--r--libsframe/sframe-impl.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/libsframe/sframe-impl.h b/libsframe/sframe-impl.h
new file mode 100644
index 0000000..0e61c97
--- /dev/null
+++ b/libsframe/sframe-impl.h
@@ -0,0 +1,55 @@
+/* Implementation header.
+
+ Copyright (C) 2022 Free Software Foundation, Inc.
+
+ This file is part of libsframe.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _SFRAME_IMPL_H
+#define _SFRAME_IMPL_H
+
+#include "sframe-api.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <assert.h>
+#define sframe_assert(expr) (assert (expr))
+
+struct sframe_decoder_ctx
+{
+ sframe_header sfd_header; /* SFrame header. */
+ uint32_t *sfd_funcdesc; /* SFrame function desc entries table. */
+ void *sfd_fres; /* SFrame FRE table. */
+ int sfd_fre_nbytes; /* Number of bytes needed for SFrame FREs. */
+};
+
+struct sframe_encoder_ctx
+{
+ sframe_header sfe_header; /* SFrame header. */
+ uint32_t *sfe_funcdesc; /* SFrame function desc entries table. */
+ sframe_frame_row_entry *sfe_fres; /* SFrame FRE table. */
+ uint32_t sfe_fre_nbytes; /* Number of bytes needed for SFrame FREs. */
+ char *sfe_data; /* SFrame data buffer. */
+ size_t sfe_data_size; /* Size of the SFrame data buffer. */
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SFRAME_IMPL_H */