Liu Yu wrote: > The whole patchset includes: > patch 1: fix kvmppc build error > patch 2: fix kvmppc init error > patch 3~5: add kvmppc guest debug support > > The guest debug still have some problems I haven't solved. > > 1. gdb 'next' command uses software breakpoint > software breakpoint is implemented via modify guest's code. > In most case it works well, > but when used by 'next' it's easy to make trouble on powerpc booke. > > For example booke has a code template for > jumping to and returning from interrupt handlers: > > bl transfer > .long handler_addr > .long ret_addr > > when call transfer, it never return but > in transfer assembly code it will read the handler_addr > and ultimately call the handler. > Gdb doesn't know that and treat it as a normal function call. > so gdb put a software breakpoint instruction at handler_addr, > in order to get trap there when return from transfer. > > Then guest will read software breakpoint as handler_addr and jump to there.. > > I'm not sure if x86 suffer this kind of issue. It would if it had such a pattern. > Is there any way to avoid this? Unless there is a mechanism via the debug infos of a binary to tell gdb about this, I think one can only avoid it by not using next here. > > > 2. gdb 'watch' command > Jan told me gdb>6.8 can issue hardware watchpoint request via command 'watch', > my gdb is 6.8.50.20080821-cvs and our toolchain provider confirm that it supports hardware watch > However when I use 'watch', I can only see single step from gdbstub side. > Did I miss anything? Did you install a watchpoint on a symbol? If yes, try if placing one on an absolute address changes the picture. Frankly, I didn't understand gdb's logic for selecting soft or hard watchpoints so far. Soft watchpoints are those you saw: single step to the program, checking after each step if the watched variable has changed. In theory it should be clear when to use which. But practice appears to be non-deterministic, at least with the versions we recently tried on x86. Jan
Attachment:
signature.asc
Description: OpenPGP digital signature