[Dwarf-Discuss] .debug_frame and the base address
Robert Harris
robert.m.harris@oracle.com
Mon Sep 24 16:19:04 GMT 2018
> On 24 Sep 2018, at 16:59, Greg Clayton <clayborg at gmail.com> wrote:
>
>
>
>> On Sep 24, 2018, at 8:44 AM, Robert Harris <robert.m.harris at oracle.com> wrote:
>>
>>
>>
>>> On 24 Sep 2018, at 15:33, Greg Clayton <clayborg at gmail.com> wrote:
>>>
>>>
>>>
>>>> On Sep 24, 2018, at 7:15 AM, Robert Harris via Dwarf-Discuss <dwarf-discuss at lists.dwarfstd.org> wrote:
>>>>
>>>> I'd like some clarification regarding what precisely needs to be relocated relative to
>>>> the object load address when interpreting .debug_frame. I'm interested in versions
>>>> 2, 3 and 4.
>>>>
>>>> I think the only explicit mention of relocation in DWARF 4 is ? 6.4.1:
>>>>
>>>> Abstractly, this mechanism describes a very large table...
>>>> ...
>>>> The first column indicates an address for every location that contains
>>>> code in a program. (In shared objects, this is an object-relative offset.)
>>>>
>>>> Thus adjustments need to be made to only
>>>>
>>>> An FDE's initial_location field
>>>> DW_CFA_set_loc's operand
>>>>
>>>> Have I missed anything? I see some ambiguity in the definition of
>>>> DW_CFA_def_cfa_expression and it's making me wonder if there are any
>>>> other occasions when a result would require relocation.
>>>
>>> Any DWARF expression can contain a DW_OP_addr, which has an address argument, and would need to be relocated.
>>
>> Do you mean that DW_OP_addr's argument should be relocated in all instances
>> of a DWARF expression, i.e. in other .debug_ sections, or just in the context of
>> .debug_frame?
>
> I was specifically talking about DWARF expressions in any .debug_frame info.
Well, that would preclude relocating the *result* of any DWARF expression in
.debug_frame. For some expressions, e.g. DW_CFA_expression, the use
of the CFA to initialise the stack implies as much but this would be a useful
blanket constraint.
> But in general, yes, any DWARF expression that contains a DW_OP_addr might need a relocation for its address argument.
Are you aware of where in the standard this is documented? It sounds reasonable
but I'm returning to this after a long time and I don't remember my way around as
well as I used to.
More information about the Dwarf-discuss
mailing list