From 4c161ff4df002e5810eb46d9af030434ca66f53e Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 7 Jul 2024 11:13:32 -0700 Subject: [PATCH] GBA Core: Fix loading symbols from ELF files if the file doesn't end with .elf --- CHANGES | 1 + src/gba/core.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGES b/CHANGES index 5f82de643..ff9c74489 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Other fixes: - GB, GBA Core: Fix memory leak if reloading debug symbols - GBA Audio: Fix crash if audio FIFOs and timers get out of sync - GBA Audio: Fix crash in audio subsampling if timing lockstep breaks + - GBA Core: Fix loading symbols from ELF files if the file doesn't end with .elf - GBA Memory: Let raw access read high MMIO addresses - Qt: Fix savestate preview sizes with different scales (fixes mgba.io/i/2560) - Qt: Fix potential crash when configuring shortcuts diff --git a/src/gba/core.c b/src/gba/core.c index 8e44990b5..6b8d15f1d 100644 --- a/src/gba/core.c +++ b/src/gba/core.c @@ -1242,6 +1242,7 @@ static void _GBACoreDetachDebugger(struct mCore* core) { } static void _GBACoreLoadSymbols(struct mCore* core, struct VFile* vf) { + struct GBA* gba = core->board; bool closeAfter = false; if (!core->symbolTable) { core->symbolTable = mDebuggerSymbolTableCreate(); @@ -1263,6 +1264,16 @@ static void _GBACoreLoadSymbols(struct mCore* core, struct VFile* vf) { vf = mDirectorySetOpenSuffix(&core->dirs, core->dirs.base, ".sym", O_RDONLY); } #endif + if (!vf && gba->mbVf) { + vf = gba->mbVf; + seek = vf->seek(vf, 0, SEEK_CUR); + vf->seek(vf, 0, SEEK_SET); + } + if (!vf && gba->romVf) { + vf = gba->romVf; + seek = vf->seek(vf, 0, SEEK_CUR); + vf->seek(vf, 0, SEEK_SET); + } if (!vf) { return; }