Looks good - a few comments inline.
Feb 12 2019
Feb 7 2019
Feb 5 2019
The latest version looks good to me. Please update the description (it still says it uses the one CU per symbols file)
Jan 23 2019
Looks good - the all-zero UUID case is a bit unfortunate but it seems we have to handle it (like Greg suggested)
Jan 18 2019
Looks good. A few questions/suggestions inline.
Jan 15 2019
Jan 9 2019
Jan 7 2019
Incorporating Pavel's suggestions (range-based loop, explicit type instead of auto)
Jan 4 2019
Removed sigsegv.exe from the test inputs
Jan 3 2019
Dec 14 2018
I love the idea of custom dump commands, thanks Greg.
Dec 12 2018
Dec 10 2018
How large is the PDB file here?
Dec 7 2018
Incorporating feedback + adding a test case
Dec 6 2018
Dec 5 2018
I don't see any tests :(.
Also, the three bullet points in the description sound like rather independent pieces of functionality. Would it be possible to split them up into separate patches? That would make things easier to review, particularly for those who don't look at this code very often :).
Dec 4 2018
Nov 30 2018
Nov 29 2018
Nov 28 2018
I noticed a small problem, this change breaks "lldb -c <corefile>". The inline comment explains the root cause.
Nov 12 2018
Nov 7 2018
Shouldn't we also handle the general case where raw size < virtual size? (which would naturally subsume this fix)
Nov 5 2018
Cool. Looking forward to the LLDB integration!
Greg, what do you have in mind as the next step? LLDB integration?
Nov 2 2018
Using a new, smaller test pdb (Stripped.pdb)
Nov 1 2018
Thanks Zach for your assistance with this!
Incorporating CR feedback
Oct 26 2018
Oct 25 2018
looks good. a few comments inline.
Oct 24 2018
drive by CR notes:
- does this handle forwarding imports? (it doesn't seem to from a quick glance at the code)
- can you please add, or extend the existing test to cover the transitive case? A simple dag would suffice (ex. make both dllA and dllB implicitly import dllC)
Oct 22 2018
Looks good to me, minor notes inline.
+Eric Christopher for a DWARF expert's perspective
Oct 9 2018
Yay! Nice to see this is coming along, thanks Zach!
Sep 20 2018
Hi Greg, looking at request_evaluate() I noticed that it will evaluate the
string as a lldb command if prefixed by ` .
Sep 4 2018
Aug 29 2018
Looks good (with one inline request for a comment)
I'm curious too: where did the PDB70 age create matching problems?
Aug 23 2018
The other option would be to move the code that populates the section load list into the mini dump dynamic loader. That has the benefit of keeping this consistent with the other process plugins, but OTOH is just moving code around...
Added the comment requested by zturner
It's an interesting idea, thanks! I don't object moving code around if
there's a strong case for it, but I'd like to keep the fix small and simple
for now, but it's worth considering if the current minidump loading path
will need more flexibility.
So this might actually work. Take a look around and see what else the dynamic loader is used for and make sure that they won't be needed for anything else. If not, this fix should work, but we should document it.
Dynamic loaders will fill out the section load list in the target that saids "__TEXT" from "/tmp/a.out" was loaded at address 0x1000020200. So yes they are needed. If the process minidump is manually setting the section load list itself, then there really is no need for a dynamic loader and this fix might work.
That's not changing the module list, that's changing the loaded section information. It is the dynamic loader's job to figure out what got loaded where, plus your stack trace show this happening after we've selected a plugin, not in the process of negotiating for the plugin. Clearing the section load list before setting to work seems like an appropriate thing for a selected plugin to do.
Dynamic loaders are needed for loading breakpad minidumps that are for MacOSX and iOS processes. They should also be needed for loading any minidumps that have stack traces.
Aug 22 2018
Aug 8 2018
The LLDB MI plugin didn't work very well as was quite flaky when I tested
it a while back.
Aug 7 2018
Really cool! Are you planning to add some documentation for it? (set up
Aug 6 2018
Updated the LIT file too
Incorporating feedback, thanks.
Aug 3 2018
Thanks Zach. I can't find llvm::contains() though, any pointers to it?
The new test cases did catch a real bug:
Jul 31 2018
Thanks Greg, looks good to me (a couple of inline comments left at your discretion)
Jul 30 2018
FYI, Breakpad & Crashpad will start generating the Microsoft flavor of ARM
Jul 27 2018
I never *ran LLDB tests*, not sure where they are and what they are.
Jul 25 2018
Jul 24 2018
Looks really good, a few comments inline.
The problem is that shared libraries differ on these machines and
LLDB either fails to load some libraries *or loads wrong ones*.
Jul 17 2018
Great timing! ARM support would be most welcome. Are you planning to
support the Breakpad flavor or ARM minidumps or the Microsoft one? (Mark
Mentovai just reminded me that the ARM support was added independently and
some of the structures are different)
Jul 16 2018
The problem is not returning an error from Minidump::Create() - if that was
the case this could easily be improved indeed. The two-phase initialization
is a consequence of the LLDB plugin lookup:
Jul 12 2018
Thanks Adrian for the thorough review.
Jul 11 2018
Adding a few ill-formed minidumps for testing the new checks