[lldb/crashlog] Create interactive crashlog with no binary
authorMed Ismail Bennani <ismail@bennani.ma>
Fri, 2 Jun 2023 00:10:39 +0000 (17:10 -0700)
committerMed Ismail Bennani <ismail@bennani.ma>
Fri, 2 Jun 2023 00:10:57 +0000 (17:10 -0700)
commit032d91cb2fb539a541f24558a8c61a40b1577dfd
tree91934e55c102549ea4332a1b6bceed4e8f26c9e4
parenta5a6c03c448ba1ab404b58673eef1f7b68498dff
[lldb/crashlog] Create interactive crashlog with no binary

This patch changes the way we load a crash report into a scripted
process by creating a empty target.

To do so, it parses the architecture information from the report (for
both the legacy and json format) and uses that to create a target that
doesn't have any executable, like what we do when attaching to a process.

For the legacy format, we mostly rely on the `Code Type` line, since the
architure is an optional field on the `Binary Images` sections.

However for the json format, we first try to get the architecture while
parsing the image dictionary if we couldn't find it, we try to infer it
using the "flavor" key when parsing the frame's registers.

If the architecture is still not set after parsing the report, we raise
an exception.

rdar://107850263

Differential Revision: https://reviews.llvm.org/D151849

Differential

Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
lldb/examples/python/crashlog.py
lldb/source/Target/Process.cpp