We use the host arch to determine which register context to create because 
that's the way ptrace behaves -- if ptrace is called from a 64-bit application 
(LLDB) it fills a 64-bit register structure regardless of the architecture of 
the inferior. LLDB internally then converts this to 32-bit regs as needed based 
on the target arch. At least that's my understanding...

That's not to say there might not be a better way to do this; I believe there 
was a thread about this topic not too long ago.


Cheers,
Dan



On 2013-07-26, at 9:12 PM, "Richard Mitton" <[email protected]> wrote:

> I'm puzzled by a few uses of amd64 vs. 386 register contexts.
> 
> In POSIXThread::GetRegisterName (and a few other places in that file) it 
> reads the host architecture in order to decide what kind of context to 
> create. Is this right? Surely it should be using the target's architecture 
> instead?
> 
> And in RegisterContext_x86_64::ConvertRegisterKindToRegisterNumber, it 
> switches based on the target's architecture. But surely the target's 
> architecture _has_ to be eCore_x86_64_x86_64, otherwise we wouldn't have 
> created a 64-bit register context?
> 
> Please let me know if I'm just misunderstanding how it should work :-)
> 
> -- 
> Richard Mitton
> [email protected]
> 
> _______________________________________________
> lldb-dev mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to