http://bugs.winehq.org/show_bug.cgi?id=23137
Summary: dbghelp doesn't support DW_LNE_set_discriminator (gcc 4.6) Product: Wine Version: 1.2-rc3 Platform: x86-64 OS/Version: Linux Status: NEW Keywords: download, source Severity: enhancement Priority: P2 Component: dbghelp AssignedTo: wine-bugs@winehq.org ReportedBy: austinenglish@gmail.com
I've noticed lately that my backtraces get filled with: fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4 fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4 fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4 fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4 fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4 fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4 fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4 fixme:dbghelp_dwarf:dwarf2_parse_line_numbers Unsupported extended opcode 4
looking around a bit more, seems that is DW_LNE_set_discriminator. I looked into it a bit more, and tried: diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 6daf7d7..89a9dfb 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -2075,6 +2075,9 @@ static BOOL dwarf2_parse_line_numbers(const dwarf2_section_t* sections, dwarf2_leb128_as_unsigned(&traverse); dwarf2_leb128_as_unsigned(&traverse); break; + case DW_LNE_set_discriminator: + FIXME("not yet supported...\n"); + break; default: FIXME("Unsupported extended opcode %x\n", extopcode); break; diff --git a/dlls/dbghelp/dwarf.h b/dlls/dbghelp/dwarf.h index 4ecb816..1ea17c0 100644 --- a/dlls/dbghelp/dwarf.h +++ b/dlls/dbghelp/dwarf.h @@ -421,6 +421,7 @@ enum dwarf_calling_convention #define DW_LNE_end_sequence 0x01 #define DW_LNE_set_address 0x02 #define DW_LNE_define_file 0x03 +#define DW_LNE_set_discriminator 0x04
#define DW_CIE_ID ~(0x0)
but that obviously doesn't do much, and makes the backtraces worse than before...
http://bugs.winehq.org/show_bug.cgi?id=23137
Eric Pouech eric.pouech@orange.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |eric.pouech@orange.fr
--- Comment #1 from Eric Pouech eric.pouech@orange.fr 2010-06-12 04:25:50 --- you must add a call to dwarf2_leb128_as_unsigned(&traverse); otherwise you'll be out of sync with the opcode information not sure though we'll to support this opcode, mainly to parse it correctly
A+
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #2 from Eric Pouech eric.pouech@orange.fr 2010-06-25 15:12:12 --- Created an attachment (id=29137) --> (http://bugs.winehq.org/attachment.cgi?id=29137) Full patch
Does the attached (with the extension I suggested) work better ?
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #3 from Austin English austinenglish@gmail.com 2010-06-27 02:08:48 --- (In reply to comment #2)
Created an attachment (id=29137)
--> (http://bugs.winehq.org/attachment.cgi?id=29137) [details]
Full patch
Does the attached (with the extension I suggested) work better ?
I tried it before myself...all it does is change the fixme, there's still hundreds of them spewed on every backtrace.
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #4 from Eric Pouech eric.pouech@orange.fr 2010-06-27 02:40:25 --- if you change the FIXME into a WARN, does the debugger behave correctly ? or do you get FIXMEs from another sort?
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #5 from Austin English austinenglish@gmail.com 2010-06-27 13:27:45 --- Created an attachment (id=29192) --> (http://bugs.winehq.org/attachment.cgi?id=29192) backtrace example
It's better, but there's still quite a few fixme's.
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #6 from Eric Pouech eric.pouech@orange.fr 2010-06-27 15:57:02 --- the latest fixmes seem to come from two distinct issues: - GCC seems now to be able to alias a local var to a global var ; dbghelp spits out a warning in that case (that was needed to debug the stabs part). this will have no nocive impact (except the console garbage) - missing save/restore of context in CFA management. AJ did it in ntdll/signal_x64_86.c ; it should be ported to dlls/dbghelp/dwarf.c
TODOs after 1.2
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #7 from Eric Pouech eric.pouech@orange.fr 2010-07-05 14:39:51 --- support for save/restore has been committed *before* 1.2 please retest and if appropriate close the bug
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #8 from Austin English austinenglish@gmail.com 2010-07-07 23:08:00 --- (In reply to comment #7)
support for save/restore has been committed *before* 1.2 please retest and if appropriate close the bug
Looking great! These lines are still there: fixme:dbghelp:elf_new_wine_thunks Duplicate in L"kernel32<elf>": __wine_dbch_time<7ef001c0-00000010> __dbch<7ef001c0-0> fixme:dbghelp:elf_new_wine_thunks Duplicate in L"kernel32<elf>": __wine_dbch_ver<7ef001e0-00000010> __dbch<7ef001e0-0>
but otherwise, much more manageable. Do you want a separate bug report for that issue?
http://bugs.winehq.org/show_bug.cgi?id=23137
--- Comment #9 from Eric Pouech eric.pouech@orange.fr 2010-09-11 01:19:47 CDT --- yes a separate bug report is better (it's another issue, that was hidden behind this bug report)
http://bugs.winehq.org/show_bug.cgi?id=23137
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |24359
http://bugs.winehq.org/show_bug.cgi?id=23137
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #10 from Austin English austinenglish@gmail.com 2010-09-11 15:49:11 CDT --- Fixed. Second part is bug 24359.
http://bugs.winehq.org/show_bug.cgi?id=23137
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org 2010-09-18 13:05:24 CDT --- Closing bugs fixed in 1.3.3.