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