diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2024-12-18 05:01:33 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-17 22:01:33 +0100 |
| commit | 6e0f32f4ca4b35bda036caa6ad3abcae4ae64cdc (patch) | |
| tree | 39a144624b528deba4421d7b71098db69d99eb80 /gdbjit/reader.c | |
| parent | 62eca11beef3f211a93235b18d556332fafc74de (diff) | |
| download | box64-6e0f32f4ca4b35bda036caa6ad3abcae4ae64cdc.tar.gz box64-6e0f32f4ca4b35bda036caa6ad3abcae4ae64cdc.zip | |
Added initial GDBJIT support (#2162)
* Added GDBJIT support * fix * fix
Diffstat (limited to 'gdbjit/reader.c')
| -rw-r--r-- | gdbjit/reader.c | 41 |
1 files changed, 41 insertions, 0 deletions
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 |