Roland McGrath wrote:
> * What is read_length for? I don't think there can be any relocs in the
> DW_FORM_block* length fields. What other use do you envision for it?
Probably nothing. I rolled it in when I've hit some length-related
code, having remembered that you've mentioned length in one of the
how-to emails that you had posted earlier. I was mostly expecting it
would turn out being useless, but left it for cross-checking with
dwarflint. I dropped it now.
Ok. It doesn't hurt to have wrappers that indicate semantics like that
when they compile away to nothing, if it makes the code easier to
understand. I just wanted to make sure we're clear on the (non)expectation
of relocs there.
> * In dwarf_getlocation_addr, s/IDX_debug_info/IDX_debug_loc/.
Do you mean s/IDX_debug_line/IDX_debug_loc/? That's what I've done. I
think the debug_info is correct, but debug_line seem to be erroneous.
Yes, sorry.
> * There are two cases of reading a begin/end pair of
address_size words
I created __libdw_read_begin_end_pair_inc with common bits of begin/end
handling. It doesn't use __libdw_read_address but instead uses
READ_AND_RELOCATE macro directly, so that it knows whether the
relocation was present or not (the macro was changed to provide that
information to the caller).
I haven't reviewed that in detail yet, but it looks good off hand.
Or is it necessary to have reloc processing directly in that method?
The
way it's written now, it uses the same reloc hook as __libdw_read_address.
That's as it should be.
Thanks,
Roland