[lldb-dev] Load fat executable when uncertain about the target process' architecture

Carlo Kok ck at remobjects.com
Thu Oct 10 08:13:09 PDT 2013


I use:
m_target = m_debugger.CreateTarget(fn, archd, NULL, true, m_error);
m_process = m_target.ConnectRemote(SBListener(), target, NULL, m_error);

(fn points to an executable with x86 and x86_64 in it. archd this 
x86_64-apple-ios)

However the target ends up being a 32bits process. At this point the ABI 
code loads 64bits and ends up crashing in some 64bits register loading 
code in ABISysV_x86_64.h:

argument_register_ids[0] = reg_ctx->GetRegisterInfoByName("rdi", 
0)->kinds[eRegisterKindLLDB];


the problem I'm having is that I don't know what architecture the target 
will be before connecting. Passing no arch to CreateTarget gives this error:

"'App10' doesn't contain any 'ios-simulator' platform architectures"

I do know GDB has (and gets called for) a command that asks the process 
architecture, but this doesn't seem to be used to get the abi (and 
probably more things), what can I do in this case?

-- 
Carlo Kok
RemObjects Software



More information about the lldb-dev mailing list