dwarf DW_AT_decl_name: system headers vs source files?
DJ Delorie
dj@redhat.com
Sat Jun 20 04:42:00 GMT 2015
Consider:
# 1 "dj.c"
# 1 "dj.h" 1 3
int dj(int x);
# 2 "dj.c" 2
int dj(int x)
{
}
If you compile with -g and look at the dwarf output, you see:
<1><2d>: Abbrev Number: 2 (DW_TAG_subprogram)
<2e> DW_AT_external : 1
<2e> DW_AT_name : dj
<31> DW_AT_decl_file : 2
<32> DW_AT_decl_line : 1
The File Name Table:
Entry Dir Time Size Name
1 0 0 0 dj.c
2 0 0 0 dj.h
Note that the DW_AT_decl_file refers to "dj.h" and not "dj.c". If you
remove the "3" from the '# 1 "dj.h" 1 3' line, the DW_AT_decl_file
instead refers to "dj.c". It's been this way for many releases.
Is this intentional?
If so, what is the rationalization for it?
More information about the Gcc
mailing list