diff --git a/debugus.c b/debugus.c index 544d0ee..d40626b 100644 --- a/debugus.c +++ b/debugus.c @@ -249,24 +249,12 @@ void dbg_handle_sigsegv(Dbg *dbg, siginfo_t info) uint64_t dbg_get_rip(Dbg *dbg); LOG_ERR("Caught a segfault %d. SKILL ISSUE BRO\n", info.si_code); uintptr_t rip = (uintptr_t)dbg_get_rip(dbg); - uintptr_t nearest = UINTPTR_MAX; - for (int i = 0; i < dbg->funcs.count; i++) { - if (dbg->funcs.items[i].ai != NULL && rip - dbg->funcs.items[i].ai->addr < nearest) { - nearest = rip - dbg->funcs.items[i].ai->addr; - } - } - uintptr_t addr = rip - nearest; - for (int i = 0; i < dbg->funcs.count; i++) { - if (dbg->funcs.items[i].ai != NULL && dbg->funcs.items[i].ai->addr == addr) { - Func *f = &dbg->funcs.items[i]; - LOG_INF("%s:%zu in function %s()\n", f->ai->file, (size_t)f->ai->line, f->name); - AddrInfo *ai2 = libelfin_wrap_info_from_rip(dbg->plibelfin, (uint64_t)(rip - dbg->program_load_offset)); - if (ai2 != NULL) { - print_source(ai2->file, ai2->line); - libelfin_wrap_free_info(ai2); - } - break; - } + + + AddrInfo *ai = libelfin_wrap_info_from_rip(dbg->plibelfin, (uint64_t)(rip - dbg->program_load_offset)); + if (ai != NULL) { + print_source(ai->file, ai->line); + libelfin_wrap_free_info(ai); } }