diff --git a/src/debug_symbol.c b/src/debug_symbol.c index 00f1520..3bd6714 100644 --- a/src/debug_symbol.c +++ b/src/debug_symbol.c @@ -240,6 +240,9 @@ struct debug_symbols *dsym_load(const char *path) { return NULL; } } + if (fgetc(fp) != EOF) + WARNING("%s: broken debug information structure\n", path); + fclose(fp); return dsym; } diff --git a/src/debugger.c b/src/debugger.c index 199b8d8..4ce335f 100644 --- a/src/debugger.c +++ b/src/debugger.c @@ -113,7 +113,7 @@ boolean dbg_delete_breakpoint(int no) { return false; } -int dbg_handle_breakpoint(int page, int addr) { +BYTE dbg_handle_breakpoint(int page, int addr) { Breakpoint *bp = dbg_find_breakpoint(page, addr); if (!bp) SYSERROR("Illegal BREAKPOINT instruction"); @@ -121,7 +121,7 @@ int dbg_handle_breakpoint(int page, int addr) { dbg_state = bp->no == INTERNAL_BREAKPOINT_NO ? DBG_STOPPED_NEXT : DBG_STOPPED_BREAKPOINT; - char restore_op = bp->restore_op; + BYTE restore_op = bp->restore_op; dbg_main(); // this may destroy bp return restore_op; } diff --git a/src/debugger.h b/src/debugger.h index fd52677..c4e04ce 100644 --- a/src/debugger.h +++ b/src/debugger.h @@ -39,6 +39,6 @@ extern DebuggerState dbg_state; #define dbg_interrupted() (dbg_state == DBG_STOPPED_INTERRUPT) void dbg_init(const char *symbols_path); void dbg_main(void); -int dbg_handle_breakpoint(int page, int addr); +BYTE dbg_handle_breakpoint(int page, int addr); #endif // __DEBUGGER_H__ diff --git a/src/debugger_private.h b/src/debugger_private.h index f7d8744..95e4065 100644 --- a/src/debugger_private.h +++ b/src/debugger_private.h @@ -30,7 +30,7 @@ typedef struct breakpoint { int no; int page; int addr; - char restore_op; + BYTE restore_op; dridata *dfile; // keeps modified scenario page alive in the cache } Breakpoint;