I've attached the patch separately. Now, it should be fine. Sorry for inconvenience. 1) test case extern int printf(const char *fmt,...); int main() { printf("Hello, World !\n"); printf("Let's make DWARF consistent across all the tools !\n"); } 2) output from "readelf --debug-dump" The section .debug_info contains: Compilation Unit @ 0: Length: 241 Version: 2 Abbrev Offset: 0 Pointer Size: 4 <0>: Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_name : test.c DW_AT_comp_dir : /home/maxim/W/BadgerPass/PR_14999 DW_AT_producer : xt-xcc for 7.1.2-development -O0 -OPT:align_instructions=32 -g2 DW_AT_language : 1 (ANSI C) DW_AT_identifier_case: 0 (case_sensitive) DW_AT_stmt_list : 0 [ . . . . . ] Dump of debug contents of section .debug_line: Length: 101 DWARF Version: 2 Prologue Length: 65 [ . . . . .] The Directory Table: /home/maxim/W/BadgerPass/PR_14999 The File Name Table: Entry Dir Time Size Name 1 1 1173897037 152 test.c * * * * * So the compilation directory is listed in the directory table. And, there is a reference from the file table pointing to this directory. Normally, we wouldn't see a compilation directory in a line table prologue. With my native GCC on the same test case I have: <0>: Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_stmt_list : 0 DW_AT_high_pc : 0x80483b6 DW_AT_low_pc : 0x8048384 DW_AT_producer : GNU C 4.1.1 20060525 (Red Hat 4.1.1-1) DW_AT_language : 1 (ANSI C) DW_AT_name : test.c DW_AT_comp_dir : /home/maxim/W/BadgerPass/PR_14999 [ . . . . ] The Directory Table is empty. The File Name Table: Entry Dir Time Size Name 1 0 0 0 test.c So the compilation directory gets always described and referenced explicitly. Thanks for looking into this. 2007-03-15 Maxim Grigoriev * buildsym.c (start_subfile): Add handling missing case while building symbol table for a compilation unit. < Patch is attached > Daniel Jacobowitz wrote: > On Wed, Mar 14, 2007 at 06:54:57PM -0700, Maxim Grigoriev wrote: > >> Hello All, >> > > >> Tensilica compiler seems to provide a unique approach in building DWARF >> line tables. It confuses GDB algorithms being used to build symbol tables. >> > > >> First in DW_TAG_compile_unit entry >> > > >> DW_AT_name is a source file name as it was used in a command line; >> DW_AT_comp_dir is a full path name to a compilation directory; >> Then in the statement program prologue, the directory table includes at >> least one entry, which is again the compilation directory. And, there is >> a corresponding file table entry referencing to this directory. >> > > >> Assuming that this combination of the names of the directories and files >> does not contradict DWARF standard, I think GDB has to handle this situation. >> > > >> I suggest the following patch to fix this problem: >> > > First of all, your mailer ate whitespace in the patch again - very > hard to read. > > Unfortunately, I do not understand your description. Could you show > me an example? > >