[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re: Re: [Qemu-devel] [PATCH] Fix to gdb - wrong translation block in
From: |
Mulyadi Santosa |
Subject: |
Re: Re: Re: [Qemu-devel] [PATCH] Fix to gdb - wrong translation block invalidated when setting gdb breakpoints |
Date: |
Wed, 4 Jan 2006 17:29:40 +0700 |
User-agent: |
KMail/1.5 |
Hi Andre...
> The problem that you are running into here is that sys_uname has been
> replaced by sys_newuname in kernel/sys.c. When I put a breakpoint in
> this function, everything works correctly when I run uname in the
> virtual machine.
yes, you're right. sys_newuname is the system call handler that handles
"uname" in kernel space, as it is confirmed with eax=122 when we reach
system_call entry in arch/i386/kernel/entry.S. Thanks for pointing me
into the correct handler.
> I'm not sure I exactly understand your concern that breakpoints could
> be missed. When you set the breakpoint, tb_invalidate_phys_page_range
> is called, invalidating the translation block block for the address
> where you are placing the breakpoint. At this point, the next time
> that the address is hit, translate.c:gen_intermediate_code will have
> to be called, and the breakpoint will be hit. Let me know if I've
> missed something here.
I'm not 100% sure too, but maybe I need to confirm what I understand
about "translation block" in Qemu. Suppose we have following asm
snippet:
<....>
mov eax,8
mov ebx,10
move ecx,16
ret
<....>
When qemu check the above codes, I learn that it is converted into a
single translation block ("ret" is the end mark of the translation
block). Do I get something wrong here? Please CMIIW.
regards
Mulyadi