dbghelp: merge dwarf code from ntdll/signal_x86_64.c
André Hentschel
nerv at dawncrow.de
Mon Jan 11 11:55:24 CST 2010
Eric Pouech schrieb:
> André Hentschel a écrit :
>> thanks Eric Pouech for the reviews
>> ---
>> dlls/dbghelp/dwarf.c | 229
>> +++++++++++++++++++++++++++++++++++++++++---------
>> dlls/dbghelp/dwarf.h | 15 ++++
>> 2 files changed, 204 insertions(+), 40 deletions(-)
>>
>> diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
>> index 48e6351..d7f4f50 100644
>> --- a/dlls/dbghelp/dwarf.c
>> +++ b/dlls/dbghelp/dwarf.c
>> @@ -241,6 +241,13 @@ static DWORD64 dwarf2_get_u8(const unsigned char*
>> ptr)
>> return *(const UINT64*)ptr;
>> }
>>
>> +static DWORD64 dwarf2_parse_u8(dwarf2_traverse_context_t* ctx)
>> +{
>> + unsigned long uvalue = dwarf2_get_u8(ctx->data);
>> + ctx->data += 8;
>> + return uvalue;
>> +}
>> +
>> static unsigned long dwarf2_get_leb128_as_unsigned(const unsigned
>> char* ptr, const unsigned char** end)
>> {
>> unsigned long ret = 0;
>> @@ -344,6 +351,58 @@ static unsigned long
>> dwarf2_parse_addr(dwarf2_traverse_context_t* ctx)
>> return ret;
>> }
>>
>> +static ULONG_PTR dwarf2_get_ptr( const unsigned char **p, unsigned
>> char encoding, unsigned word_size)
>> +{
>> + ULONG_PTR base;
>> +
>> + if (encoding == DW_EH_PE_omit) return 0;
>> +
>> + switch (encoding & 0xf0)
>> + {
>> + case DW_EH_PE_abs:
>> + base = 0;
>> + break;
>> + case DW_EH_PE_pcrel:
>> + base = (ULONG_PTR)*p;
>>
> I'm afraid I've got some further comments
> this is wrong, as it implies that the underlying ELF section (relative
> to p) is mapped at same address between the process dbghelp is working
> on (it has been mapped by the ELF loader) and where dbghelp has mapped
> some ELF sections (likely in another process)
>
> a proper fix will require some extra work
>
> I've started doing it
> So either so you do it properly, or you drop the EH frame support out of
> this patch
>
> A+
>
I am not sure if thats critical as we dont access them in any way, we just read the address out of the context-structure and write it to our stack, as far as i looked at it.
But if thats not true, then i think you have more knowledge to do this than me.
--
Best Regards, André Hentschel
More information about the wine-devel
mailing list