http://bugs.winehq.org/show_bug.cgi?id=18628
Sylvain Pasche sylvain.pasche@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Assertion failure when |Dwarf section in Ubuntu |setting a breakpoint |9.04 libc debug package |(x86_64 host) |fails to parse.
--- Comment #4 from Sylvain Pasche sylvain.pasche@gmail.com 2009-05-27 16:36:35 --- After some digging, this has nothing to do with 64bit or not. The issue is that I have the libc6-dbg package installed, and the Dwarf parser asserts when reading the debug information the .so in that package.
trace:dbghelp:elf_load_file Processing elf file 'L"/lib32/libc.so.6"' at f7cb2000 trace:dbghelp:module_new => ELF f7cb2000-f7e15000 L"/lib32/libc.so.6" warn:dbghelp:elf_check_debug_link Bad CRC for file L"/lib32/libc-2.9.so" (got ee3d02ac while expecting 60b35a44) trace:dbghelp:elf_locate_debug_link Located debug information file libc-2.9.so at L"/usr/lib/debug//lib32/libc-2.9.so"
[...] race:dbghelp_dwarf:dwarf2_parse_variable ctx(0x33ec88,L"libc.so.6"), for debug_info(abbrev:0x5202ac,symt:(nil)) trace:dbghelp_dwarf:dwarf2_fill_attr ref4<0x7d9f> trace:dbghelp_dwarf:dwarf2_fill_attr strp<__libc_errno> fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0 trace:dbghelp_dwarf:dwarf2_parse_variable found parameter __libc_errno (kind=0, offset=2127723594, reg=-1) at ctx(0x33ec88,L"libc.so.6") ../../../wine-git/dlls/dbghelp/dwarf.c:1362: dwarf2_parse_variable: Assertion `subpgm->func' failed.
My guess is that the issue is a consequence of the unknown Dwarf op 0xe0. This one seems to be a GNU extension (from gcc-4.3.3/gcc/dwarf2.h):
/* GNU extensions. */ DW_OP_GNU_push_tls_address = 0xe0,
readelf --debug-dump /usr/lib/debug/lib/libc-2.9.so
<1><8227>: Abbrev Number: 14 (DW_TAG_variable) <8228> DW_AT_name : (indirect string, offset: 0x2700): __libc_errno <822c> DW_AT_decl_file : 4 <822d> DW_AT_decl_line : 33 <822e> DW_AT_type : <0x810f> <8232> DW_AT_external : 1 <8233> DW_AT_location : 10 byte block: 3 10 0 0 0 0 0 0 0 e0 (DW_OP_addr: 10; DW_OP_GNU_push_tls_address or DW_OP_HP_unknown)