[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 

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", 

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