Dwarf2 - support e0 ie DW_OP_lo_user
Eric Pouech
eric.pouech at orange.fr
Sat Mar 28 03:51:26 CDT 2009
Alban Browaeys a écrit :
> I still have to find why (probably gcc related) but under debian sid (no
> problems under lenny, have not tested squeeze yet)
> "winedbg --gdb regedit"
>
> trigger an infinite loop error:
> $ winedbg --gdb regedit
> 0017:0018: create process 'C:\windows\system32\regedit.exe'/0x110640
> @0x7eb62c04 (0<0>)
> fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0
> it: dwarf.c :1355 : dwarf2_parse_variable: L'assertion « subpgm->func »
> a échoué.
> wine: Assertion failed at address 0xffffe424 (thread 0009), starting
> debugger...
>
this looks like gcc emits TLS-based variables, and we don't handle this
yet in the dwarf parser
your fix is wrong as it just hides this fact, and still "creates" the
variables/functions in the internal dbghelp structure, will give at the
end wrong results in the debugger (and hard to understand)
the correct short term fix is to handle the loc_error case in
dwarf2_parse_variable (for the DW_AT_location case) by simply doing nothing
the correct long term fix is to implement TLS based variable addressing
in the parser
A+
--
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the ingenuity of a complete idiot." (Douglas Adams)
More information about the wine-devel
mailing list