[lldb-dev] Load fat executable when uncertain about the target process' architecture
Sebastien Metrot
meeloo at gmail.com
Thu Oct 10 09:22:16 PDT 2013
Hi Carlo,
Here is how I enumerate the available archs in my code:
SBModuleSpecList specs = SBModuleSpecList::GetModuleSpecifications(Path);
const size_t count = specs.GetSize();
for (size_t i = 0; i < count; ++i)
{
SBModuleSpec module_spec = specs.GetSpecAtIndex(i);
const char *triple = module_spec.GetTriple();
std::vector<nglString> tokens;
nglString triplestr = triple;
triplestr.Tokenize(tokens, '-');
NGL_OUT("%s -> '%s' '%s' '%s'\n", triple, tokens[0].GetChars(), tokens[1].GetChars(), tokens[2].GetChars());
mArchitectures.push_back(tokens[0]);
mVendors.push_back(tokens[1]);
mTargetOSes.push_back(tokens[2]);
}
nglString is a custom string type that I use but I'll get the idea of how it works I guess.
Cheers,
S.
On 10 Oct 2013, at 17:13 , Carlo Kok <ck at remobjects.com> wrote:
> 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
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
More information about the lldb-dev
mailing list