qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Fix to gdb - wrong translation block invalidated when setting gdb breakpoints
@ 2005-12-23 19:57 Andre Pech
  2005-12-28  8:22 ` Mulyadi Santosa
  0 siblings, 1 reply; 5+ messages in thread
From: Andre Pech @ 2005-12-23 19:57 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 2146 bytes --]

Hi all,
I had been running into problems using gdb to debug the virtual machine
kernel. The problem I was experiencing is that I would set a breakpoint, but
that gdb would only sometimes get notified that the breakpoint was hit.
I finally tracked down the problem to exec.c:breakpoint_invalidate. The
problem is that breakpoint_invalidate, which is supposed to invalidate the
translation block for the address you want to break at, was actualling
invalidating the translation block for the base address of the page that
contained your breakpoint address. The fix is actually very simple and is
attached below.
Thanks
Andre Pech


diff -dc exec.c{.old,}
*** exec.c.old    2005-12-23 11:40:47.000000000 -0800
--- exec.c    2005-12-23 11:41:13.000000000 -0800
***************
*** 996,1001 ****
--- 996,1002 ----
      target_ulong phys_addr;

      phys_addr = cpu_get_phys_page_debug(env, pc);
+     phys_addr += pc & (~TARGET_PAGE_MASK);
      tb_invalidate_phys_page_range(phys_addr, phys_addr + 1, 0);
  }
  #endif


On 12/21/05, Mulyadi Santosa <a_mulyadi@softhome.net> wrote:
>
> Hello Andre...
>
> > I'm running into problems using qemu to debug a kernel module. My
> > host and virtual machine are both x86 running Fedora Core 4. After
> > insmoding the module in the virtual machine, starting gdbserver,
> > running gdb on the host with the module sections loaded at the right
> > place, and setting a breakpoint in the module code, gdb does not
> > always get notified when the code is exectuted. After adding
>
> I'm not doing module debugging, only core kernel code debugging, but
> more or less I run into same situation (last time confirmed with Qemu
> 0.7.1)
>
> For additional info, sometimes I also suffered the other condition.
> Breakpoint is hit, but even if I delete it, the emulation still stops
> whenever the code at related physical address is hit. I tried to
> printf() every gdb command received by Qemu's gdbstub and it confirmed
> that breakpoint deletion command is actually received, but I can't
> confirm what is the real bug there.
>
> regards
>
> Mulyadi
>
>

[-- Attachment #2: Type: text/html, Size: 2755 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-01-04 10:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-23 19:57 [Qemu-devel] [PATCH] Fix to gdb - wrong translation block invalidated when setting gdb breakpoints Andre Pech
2005-12-28  8:22 ` Mulyadi Santosa
     [not found]   ` <16af12af0512301218k48fecbdcr6ec41640b303689@mail.gmail.com>
2006-01-01  8:10     ` Mulyadi Santosa
2006-01-03 20:12       ` Andre Pech
2006-01-04 10:29         ` Mulyadi Santosa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).