labath added a comment.

In D55434#1323912 <https://reviews.llvm.org/D55434#1323912>, @clayborg wrote:

> If you plan on not making the breakpad file ever stand alone, then you will 
> need to take any addresses and look them up in the module section list and 
> use the other sections. I don't see why the breakpad file can't be stand 
> alone though. It won't be as accurate, but it sure would be nice to be able 
> to load a bunch of them into LLDB without needing to find the original 
> executable and just symbolicate no?


I could try to make it stand-alone, but that seems to me like a duplication of 
effort. And since the sections I could conjure up from the breakpad info would 
never match the original elf file, I would have to support both cases anyway, 
one with using the sections from the object file, and one with the own, made-up 
sections.

I do intend to support both cases, but in a slightly different way. The way, I 
see it we have actually four cases to consider:

1. we have an stripped elf file, and a breakpad symbol file (the case of an 
unstripped elf file is uninteresting, as it will have much better debug info 
than breakpad can possibly provide)
2. we don't have an elf file, but we have a breakpad file
3. we don't have an elf file nor a breakpad file

Because of case 3, we have to do some section conjuring independently of any 
breakpad file. We already do that to some extent, and @lemo is getting ready to 
extend that in D55142 <https://reviews.llvm.org/D55142>. Once we have that, and 
we find a breakpad file for this module (case 2), the breakpad file should be 
able to just latch onto the sections created for the placeholder object file. 
And I believe ProcessMinidump is in a better position to create the 
"placeholder" sections, as it has both access to the load addresses and sizes 
of the modules. From breakpad info, it would be hard to determine the size of 
the module if the highest address is occupied by a "PUBLIC" symbol, as they 
don't have any sizes associated with them.

Going back to case 1, if we have a stripped elf file, the breakpad file should 
latch onto the sections of that one without ever knowing the difference. So in 
the end, I hope this will produce a clearer code because the concerns will be 
separated. Breakpad code will always deal with externally-provided sections, 
regardless of whether they come from a "real" object file, or a made-up one. 
And the "making-up" code can work independently of there being a breakpad file.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55434/new/

https://reviews.llvm.org/D55434



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to