diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-03-03 17:08:50 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-03 10:08:50 +0100 |
| commit | 2636e7e8b54dd1aa96139b6e609f8920813d8a6e (patch) | |
| tree | 39741a0ce85b8d3a12dbdfdff2a780081723d493 /src/tools/gdbjit.c | |
| parent | b0e726d953948c40fa478bc7ee53ed6565beadd1 (diff) | |
| download | box64-2636e7e8b54dd1aa96139b6e609f8920813d8a6e.tar.gz box64-2636e7e8b54dd1aa96139b6e609f8920813d8a6e.zip | |
[RCFILE] Added range gdbjit support (#2414)
Diffstat (limited to 'src/tools/gdbjit.c')
| -rw-r--r-- | src/tools/gdbjit.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/tools/gdbjit.c b/src/tools/gdbjit.c index 07731e9f..5813f562 100644 --- a/src/tools/gdbjit.c +++ b/src/tools/gdbjit.c @@ -48,9 +48,9 @@ EXPORT gdbjit_descriptor_t __jit_debug_descriptor = { 1, GDBJIT_NOACTION, NULL, void GdbJITNewBlock(gdbjit_block_t* block, GDB_CORE_ADDR start, GDB_CORE_ADDR end, uintptr_t x64start) { - if (!block) - return; + if (!block) return; + size_t alloced = block->alloced; memset(block, 0, sizeof(gdbjit_block_t)); strcpy(block->filename, "/tmp/box64gdbjit-XXXXXX.S"); @@ -60,13 +60,13 @@ void GdbJITNewBlock(gdbjit_block_t* block, GDB_CORE_ADDR start, GDB_CORE_ADDR en block->start = start; block->end = end; block->x64start = x64start; - block->alloced = block->nlines = 0; + block->alloced = alloced; + block->nlines = 0; } static size_t GdbJITLinesAvailable(gdbjit_block_t* block) { - if (!block) - return 0; + if (!block) return 0; return block->alloced > block->nlines; } @@ -88,10 +88,10 @@ static gdbjit_block_t* GdbJITMakeRoom(gdbjit_block_t* block) gdbjit_block_t* GdbJITBlockAddLine(gdbjit_block_t* block, GDB_CORE_ADDR addr, const char* line) { + if (!block || !block->file) return NULL; + block->nlines++; block = GdbJITMakeRoom(block); - if (!block) return NULL; - block->lines[block->nlines-1].pc = addr; block->lines[block->nlines-1].line = block->nlines; fprintf(block->file, "%s\n", line); @@ -104,14 +104,12 @@ void GdbJITBlockReady(gdbjit_block_t* block) if (block->nlines == 0) { fclose(block->file); - box_free(block); return; } gdbjit_code_entry_t* entry = (gdbjit_code_entry_t*)box_malloc(sizeof(gdbjit_code_entry_t)); if (!entry) { fclose(block->file); - box_free(block); return; } |