diff options
author | ach61@arcadians.cl.cam.ac.uk <ach61@arcadians.cl.cam.ac.uk> | 2005-07-13 15:37:08 +0000 |
---|---|---|
committer | ach61@arcadians.cl.cam.ac.uk <ach61@arcadians.cl.cam.ac.uk> | 2005-07-13 15:37:08 +0000 |
commit | b65c26e65f20551eada2fe6990d9d601b4b4aa58 (patch) | |
tree | aebdefce854e12328e51411d05f1cbb3cb27478c /tools/debugger | |
parent | 4b043a942cb9dd0a5765b4dadb33b37e9bc9e940 (diff) | |
download | xen-b65c26e65f20551eada2fe6990d9d601b4b4aa58.tar.gz xen-b65c26e65f20551eada2fe6990d9d601b4b4aa58.tar.bz2 xen-b65c26e65f20551eada2fe6990d9d601b4b4aa58.zip |
pdb: reconcile register manipulation between processes and domains
Diffstat (limited to 'tools/debugger')
-rw-r--r-- | tools/debugger/pdb/debugger.ml | 2 | ||||
-rw-r--r-- | tools/debugger/pdb/pdb_caml_domain.c | 48 | ||||
-rw-r--r-- | tools/debugger/pdb/pdb_caml_process.c | 11 | ||||
-rw-r--r-- | tools/debugger/pdb/pdb_caml_xen.h | 8 |
4 files changed, 32 insertions, 37 deletions
diff --git a/tools/debugger/pdb/debugger.ml b/tools/debugger/pdb/debugger.ml index 3dd2159c57..4b2f53ad9b 100644 --- a/tools/debugger/pdb/debugger.ml +++ b/tools/debugger/pdb/debugger.ml @@ -331,7 +331,7 @@ let process_xen_virq fd = let (dom, vcpu) = List.find find_pair dom_list in let vec = 3 in let sock = PDB.find_domain dom vcpu in - print_endline (Printf.sprintf "handle bkpt d:%d ed:%d v:%d %s" + print_endline (Printf.sprintf "handle bkpt dom:%d vcpu:%d vec:%d %s" dom vcpu vec (Util.get_connection_info sock)); Util.send_reply sock "S05"; Evtchn.unmask fd channel (* allow next virq *) diff --git a/tools/debugger/pdb/pdb_caml_domain.c b/tools/debugger/pdb/pdb_caml_domain.c index b54db73ca1..7621eb45f6 100644 --- a/tools/debugger/pdb/pdb_caml_domain.c +++ b/tools/debugger/pdb/pdb_caml_domain.c @@ -20,12 +20,6 @@ #include "pdb_caml_xen.h" -/* this order comes from xen/include/public/arch-x86_32.h */ -enum x86_registers { PDB_EBX, PDB_ECX, PDB_EDX, PDB_ESI, PDB_EDI, - PDB_EBP, PDB_EAX, PDB_Error_code, PDB_Entry_vector, - PDB_EIP, PDB_CS, PDB_EFLAGS, PDB_ESP, PDB_SS, - PDB_ES, PDB_DS, PDB_FS, PDB_GS }; - typedef struct { int domain; @@ -119,26 +113,25 @@ dom_write_register (value context, value reg, value newval) switch (my_reg) { - case PDB_EBX: regs->ebx = val; break; - case PDB_ECX: regs->ecx = val; break; - case PDB_EDX: regs->edx = val; break; - case PDB_ESI: regs->esi = val; break; - case PDB_EDI: regs->edi = val; break; - - case PDB_EBP: regs->ebp = val; break; - case PDB_EAX: regs->eax = val; break; - case PDB_Error_code: regs->error_code = val; break; - case PDB_Entry_vector: regs->entry_vector = val; break; + case GDB_EAX: regs->eax = val; break; + case GDB_ECX: regs->ecx = val; break; + case GDB_EDX: regs->edx = val; break; + case GDB_EBX: regs->ebx = val; break; + + case GDB_ESP: regs->esp = val; break; + case GDB_EBP: regs->ebp = val; break; + case GDB_ESI: regs->esi = val; break; + case GDB_EDI: regs->edi = val; break; - case PDB_EIP: regs->eip = val; break; - case PDB_CS: regs->cs = val; break; - case PDB_EFLAGS: regs->eflags = val; break; - case PDB_ESP: regs->esp = val; break; - case PDB_SS: regs->ss = val; break; - case PDB_ES: regs->es = val; break; - case PDB_DS: regs->ds = val; break; - case PDB_FS: regs->fs = val; break; - case PDB_GS: regs->gs = val; break; + case GDB_EIP: regs->eip = val; break; + case GDB_EFL: regs->eflags = val; break; + + case GDB_CS: regs->cs = val; break; + case GDB_SS: regs->ss = val; break; + case GDB_DS: regs->ds = val; break; + case GDB_ES: regs->es = val; break; + case GDB_FS: regs->fs = val; break; + case GDB_GS: regs->gs = val; break; } if ( xendebug_write_registers(xc_handle, ctx.domain, ctx.vcpu, regs) ) @@ -437,9 +430,10 @@ query_domain_stop (value unit) failwith("query domain stop"); } - printf ("QDS: %d\n", count); + printf ("QDS [%d]: \n", count); for (loop = 0; loop < count; loop ++) - printf (" %d %d\n", loop, dom_list[loop]); + printf (" %d", dom_list[loop]); + printf ("\n"); result = caml_alloc(2,0); if ( count > 0 ) /* car */ diff --git a/tools/debugger/pdb/pdb_caml_process.c b/tools/debugger/pdb/pdb_caml_process.c index e8506c7711..53a014b653 100644 --- a/tools/debugger/pdb/pdb_caml_process.c +++ b/tools/debugger/pdb/pdb_caml_process.c @@ -22,13 +22,6 @@ #include "pdb_module.h" #include "pdb_caml_xen.h" -/* this order comes from linux-2.6.11/include/asm-i386/ptrace.h */ -enum x86_registers { LINUX_EBX, LINUX_ECX, LINUX_EDX, LINUX_ESI, LINUX_EDI, - LINUX_EBP, LINUX_EAX, LINUX_DS, LINUX_ES, LINUX_FS, - LINUX_GS, LINUX_ORIG_EAX, LINUX_EIP, LINUX_CS, LINUX_EFL, - LINUX_ESP, LINUX_SS }; -#define FRAME_SIZE 17 - typedef struct { int domain; @@ -206,7 +199,7 @@ proc_read_registers (value context) CAMLparam1(context); CAMLlocal1(result); - u32 regs[FRAME_SIZE]; + u32 regs[REGISTER_FRAME_SIZE]; pdb_request_t req; context_t ctx; @@ -218,7 +211,7 @@ proc_read_registers (value context) req.domain = ctx.domain; req.process = ctx.process; - for (loop = 0; loop < FRAME_SIZE; loop++) + for (loop = 0; loop < REGISTER_FRAME_SIZE; loop++) { pdb_response_t resp; diff --git a/tools/debugger/pdb/pdb_caml_xen.h b/tools/debugger/pdb/pdb_caml_xen.h index 2d9a160708..c4dcf5c717 100644 --- a/tools/debugger/pdb/pdb_caml_xen.h +++ b/tools/debugger/pdb/pdb_caml_xen.h @@ -16,6 +16,14 @@ enum gdb_registers { GDB_EAX, GDB_ECX, GDB_EDX, GDB_EBX, GDB_CS, GDB_SS, GDB_DS, GDB_ES, GDB_FS, GDB_GS }; +/* this order comes from linux-2.6.11/include/asm-i386/ptrace.h */ +enum x86_registers { LINUX_EBX, LINUX_ECX, LINUX_EDX, LINUX_ESI, LINUX_EDI, + LINUX_EBP, LINUX_EAX, LINUX_DS, LINUX_ES, LINUX_FS, + LINUX_GS, LINUX_ORIG_EAX, LINUX_EIP, LINUX_CS, LINUX_EFL, + LINUX_ESP, LINUX_SS }; +#define REGISTER_FRAME_SIZE 17 + + #define PAGE_SIZE 4096 extern int xc_handle; |