[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] fix the bug of gdb which debugs xen.
I rewrote it some more. Take a look at changeset 20054. -- Keir On 12/08/2009 13:52, "Caz Yokoyama" <cazyokoyama@xxxxxxxxx> wrote: > Hello Keir, > You are right and good points. Thank you. I did not aware them because only > environment I test is x86_64. How about this? I am glad if you check in. I > regularly update my local source code by "hg pull; hg up". > -caz > > -----Original Message----- > From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx] > Sent: Wednesday, August 12, 2009 12:58 AM > To: Caz Yokoyama; xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: Re: [Xen-devel] [PATCH] fix the bug of gdb which debugs xen. > > I don't know whether you intend this for immediate checkin, but anyway: > > * Don't delete the sysenter logic in traps.c, leave it. > * I'm not sure about swap64() in gdbstub.c. The value may not be 64 bits > (e.g., running on i386), or the system may not be little endian. Might be > better to define an alternative to str2ulong() which is endian aware, like > gdb_write_to_packet_hex(). > > -- Keir > > On 12/08/2009 03:15, "Caz Yokoyama" <cazyokoyama@xxxxxxxxx> wrote: > >> Hello, >> This patch fixes the bug of gdb which debugs Xen hypervisor, i.e. not > domU. As >> Emre Can Sezer reported in >> http://lists.xensource.com/archives/html/xen-devel/2009-01/msg00885.html, > once >> break point is hit, continue command produces SIGTRAP at > restore_all_xen(). >> This patch makes continue command resume Xen running. I still see other > bugs >> like backtrace command does not show function name. But I hope this helps > your >> debug. >> FYI, related postings. >> http://lists.xensource.com/archives/html/xen-devel/2007-12/msg00678.html >> > http://www.filewatcher.com/p/xen_2.0.6.orig.tar.gz.2456215/xen-2.0/docs/misc > /X >> enDebugger-HOWTO.html >> >> connect gdb on step command >> --- a/xen/arch/x86/traps.c Thu Aug 06 13:27:53 2009 +0100 >> +++ b/xen/arch/x86/traps.c Tue Aug 11 18:15:25 2009 -0700 >> @@ -2977,13 +2977,7 @@ >> if ( regs->eflags & EF_TF ) >> { >> #ifdef __x86_64__ >> - void sysenter_entry(void); >> - void sysenter_eflags_saved(void); >> - /* In SYSENTER entry path we can't zap TF until EFLAGS is > saved. >> */ >> - if ( (regs->rip >= (unsigned long)sysenter_entry) && >> - (regs->rip < (unsigned long)sysenter_eflags_saved) ) >> - goto out; >> - WARN_ON(regs->rip != (unsigned long)sysenter_eflags_saved); >> + debugger_trap_fatal(TRAP_debug, regs); >> #else >> WARN_ON(1); >> #endif >> >> Value of gdb command is little endian. >> diff -r 13fe7f07df15 xen/common/gdbstub.c >> --- a/xen/common/gdbstub.c Thu Aug 06 13:27:53 2009 +0100 >> +++ b/xen/common/gdbstub.c Tue Aug 11 18:15:25 2009 -0700 >> @@ -53,6 +53,10 @@ >> >> #define GDB_RETRY_MAX 10 >> >> +#define swap16(_v) ((((u16)(_v)>>8)&0xff)|(((u16)(_v)&0xff)<<8)) >> +#define swap32(_v) >> (((u32)swap16((u16)(_v))<<16)|(u32)swap16((u32)((_v)>>16))) >> +#define swap64(_v) >> (((u64)swap32((u32)(_v))<<32)|(u64)swap32((u32)((_v)>>32))) >> + >> struct gdb_cpu_info >> { >> atomic_t paused; >> @@ -489,6 +493,7 @@ >> } >> ptr++; >> val = str2ulong(ptr, sizeof(unsigned long)); >> + val = swap64(val); >> gdb_arch_write_reg(addr, val, regs, ctx); >> break; >> case 'D': >> >> Thank you. >> -Caz Yokoyama, caz at caztech dot com. 503-804-1028(m). >> >> > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |