Hi, it appears that the (standard DWARF as of version 4) discriminator directive can confuse non-GDB DWARF 2/3 debuggers, so this patch changes the compiler to stop emitting it in strict mode.
Tested on i586-suse-linux, OK for the mainline? 2011-04-19 Eric Botcazou <ebotca...@adacore.com> * dwarf2out.c (dwarf2out_source_line): Emit "discriminator" directive only for version 4 or above, or else in non-strict mode. -- Eric Botcazou
Index: dwarf2out.c =================================================================== --- dwarf2out.c (revision 172693) +++ dwarf2out.c (working copy) @@ -22232,7 +22240,9 @@ dwarf2out_source_line (unsigned int line fprintf (asm_out_file, "\t.loc %d %d 0", file_num, line); if (is_stmt != table->is_stmt) fprintf (asm_out_file, " is_stmt %d", is_stmt ? 1 : 0); - if (SUPPORTS_DISCRIMINATOR && discriminator != 0) + if (SUPPORTS_DISCRIMINATOR + && discriminator != 0 + && (dwarf_version >= 4 || !dwarf_strict)) fprintf (asm_out_file, " discriminator %d", discriminator); fputc ('\n', asm_out_file); }