[Dwarf-Discuss] DWARF v5 and "file 0"

paul.robinson@sony.com paul.robinson
Thu Jul 8 19:23:14 GMT 2021

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.

More information about the Dwarf-discuss mailing list