From 6e0f32f4ca4b35bda036caa6ad3abcae4ae64cdc Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Wed, 18 Dec 2024 05:01:33 +0800 Subject: Added initial GDBJIT support (#2162) * Added GDBJIT support * fix * fix --- gdbjit/reader.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 gdbjit/reader.c (limited to 'gdbjit/reader.c') diff --git a/gdbjit/reader.c b/gdbjit/reader.c new file mode 100644 index 00000000..024e88ea --- /dev/null +++ b/gdbjit/reader.c @@ -0,0 +1,41 @@ +#include "gdbjit.h" + +static enum gdb_status read_debug_info(struct gdb_reader_funcs* self, struct gdb_symbol_callbacks* cbs, void* memory, long memory_sz) +{ + gdbjit_block_t* block = (gdbjit_block_t*)memory; + + struct gdb_object* object = cbs->object_open(cbs); + struct gdb_symtab* symtab = cbs->symtab_open(cbs, object, block->filename); + cbs->block_open(cbs, symtab, NULL, block->start, block->end, "(block)"); + + cbs->line_mapping_add(cbs, symtab, block->nlines, block->lines); + + cbs->symtab_close(cbs, symtab); + cbs->object_close(cbs, object); + + return GDB_SUCCESS; +} + +enum gdb_status unwind_frame(struct gdb_reader_funcs* self, struct gdb_unwind_callbacks* cbs) +{ + return GDB_SUCCESS; +} + +struct gdb_frame_id get_frame_id(struct gdb_reader_funcs* self, struct gdb_unwind_callbacks* cbs) +{ + struct gdb_frame_id frame = {0xdeadbeef, 0}; + return frame; +} + +void destroy_reader(struct gdb_reader_funcs* self) {} + +__attribute__((visibility("default"))) struct gdb_reader_funcs* gdb_init_reader(void) +{ + static struct gdb_reader_funcs funcs = {GDB_READER_INTERFACE_VERSION, NULL, read_debug_info, unwind_frame, get_frame_id, destroy_reader}; + return &funcs; +} + +__attribute__((visibility("default"))) int plugin_is_GPL_compatible (void) +{ + return 0; +} \ No newline at end of file -- cgit 1.4.1