On 11/12/2018 20:39, Jim Ingham wrote:
Sections can have parents. In MachO the text and data sections are actually
contained in the TEXT and DATA segments respectively. LLDB represents this by
having an lldb_private::Section for the segment, and then all the sections in
that segment are children of the parent Section (the MachO segment). All the
code that looks up addresses expects to potentially traverse this hierarchy.
It seems to me that what you are describing should fit in the nesting model?
Jim
Hmm.. that's an interesting idea. I'll have to think about that.
Does MachO enforce somehow that every section is fully contained in one
segment? Because while that is true for elf in general, it is not a
requirement, and it is possible to create functional executables (though
I think I would have to use a hex editor for that) where one segment
contains only a half of some section. But that might not be a big issue,
as I think most tools will choke on files like this, so if we do
something suboptimal here, it shouldn't be too bad.
The other hickup I can think of is that sometimes (and this happens in
perfectly valid files too) one section is present in multiple segments.
For example .eh_frame will be present in a "LOAD" segment (so it ends up
in memory), but it will also be present in a special "GNU_EH_FRAME"
segment (not sure why, but I guess it's to make it easier for someone to
find it). But I think I can get around that by only creating these
"container" sections for LOAD segments.
The part I know nothing about is whether something similar could be done
for PE/COFF files (and I'll need something like that there too). Adrian,
Zachary, what is the relation ship between "image base" of an object
file and its sections? Is there any way we could arrange so that the
base address of a module always belongs to one of its sections?
pl
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits