linux-user: Add guest memory layout to exception dump
When the emulation stops with a hard exception it's very useful for debugging purposes to dump the current guest memory layout (for an example see /proc/self/maps) beside the CPU registers. The open_self_maps() function provides such a memory dump, but since it's located in the syscall.c file, various changes (add #includes, make this function externally visible, ...) are needed to be able to call it from the existing EXCP_DUMP() macro. This patch takes another approach by re-defining EXCP_DUMP() to call target_exception_dump(), which is in syscall.c, consolidates the log print functions and allows to add the call to dump the memory layout. Beside a reduced code footprint, this approach keeps the changes across the various callers minimal, and keeps EXCP_DUMP() highlighted as important macro/function. Signed-off-by: Helge Deller <deller@gmx.de> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <Y1bzAWbw07WBKPxw@p100> [lv: remove pc declaration and setting] Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
35a2c85f7d
commit
bd5ccd6108
3 changed files with 33 additions and 16 deletions
|
|
@ -201,7 +201,6 @@ void cpu_loop(CPUX86State *env)
|
|||
{
|
||||
CPUState *cs = env_cpu(env);
|
||||
int trapnr;
|
||||
abi_ulong pc;
|
||||
abi_ulong ret;
|
||||
|
||||
for(;;) {
|
||||
|
|
@ -307,9 +306,8 @@ void cpu_loop(CPUX86State *env)
|
|||
cpu_exec_step_atomic(cs);
|
||||
break;
|
||||
default:
|
||||
pc = env->segs[R_CS].base + env->eip;
|
||||
EXCP_DUMP(env, "qemu: 0x%08lx: unhandled CPU exception 0x%x - aborting\n",
|
||||
(long)pc, trapnr);
|
||||
EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n",
|
||||
trapnr);
|
||||
abort();
|
||||
}
|
||||
process_pending_signals(env);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue