Tom Russell asked me about this, and I think it's a bug in the v5 specification.
In v5, the line-table header's directory table added an entry for directory 0. Previous versions had directory 0 mean the current compilation directory, i.e. DW_AT_comp_dir from the compile unit DIE. The file table also added an entry for file 0, claiming that it similarly used to mean the primary compilation file. I can't find any evidence that was actually true, though; the default value for the line-number program's "file" register was (and still is) 1, not 0, and in fact section 2.14 says that DW_AT_decl_file = 0 means there is no source file (analogous to line 0 meaning no specific source line). If DW_AT_decl_file = 0 means "no source file" then the file table pretty much has to have two entries for the primary source file, entry 0 to satisfy the line-table specification and another non-zero entry to satisfy the DW_AT_decl_file requirements. That's wasteful. Am I missing something? Happy to be wrong here, but it helps explain why it has been such a bear to get file 0 working properly in LLVM. If I'm not wrong I will file an issue to get this fixed in DWARF v6. Thanks, --paulr _______________________________________________ Dwarf-Discuss mailing list Dwarf-Discuss@lists.dwarfstd.org http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org