[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 
mov eax,8
mov ebx,10
move ecx,16
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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]