------- Comment #3 from dfranke at gcc dot gnu dot org 2007-08-11 22:08 -------
gfortran seems to lack the following information:
1. DW_TAG_module
to describe the module at hand
2. DW_TAG_imported_declaration/DW_TAG_imported_module/DW_AT_import
to describe use-associated variables (dwarf2, sec. 4.3; dwarf3, sec. 3.2.3
and 3.2.4)
The former is generated by ifort, the latter is not.
As dwarf3, sec 3.2, indicates similarities of modules to C++ namespaces, it
could be worth a try to see how it is implemented over there. The equivalent
C++-code:
$> cat a.cpp
#include <cstdio>
namespace foo {
int i = 42;
}
int main() {
using namespace foo;
printf("%d\n", i);
return 0;
}
$> g++ -g a.cpp
$> readelf
[...]
<1><ad3>: Abbrev Number: 29 (DW_TAG_subprogram)
DW_AT_external : 1
DW_AT_name : main
DW_AT_decl_file : 1
DW_AT_decl_line : 17
DW_AT_type : <109>
DW_AT_low_pc : 0x8048484
DW_AT_high_pc : 0x80484b8
DW_AT_frame_base : 0 (location list)
DW_AT_sibling : <af8>
<2><af0>: Abbrev Number: 30 (DW_TAG_imported_module)
DW_AT_decl_file : 1
DW_AT_decl_line : 18
DW_AT_import : <af8>
<1><af8>: Abbrev Number: 4 (DW_TAG_namespace)
DW_AT_name : foo
DW_AT_decl_file : 1
DW_AT_decl_line : 13
DW_AT_sibling : <b1a>
<2><b03>: Abbrev Number: 31 (DW_TAG_variable)
DW_AT_name : i
DW_AT_decl_file : 1
DW_AT_decl_line : 14
DW_AT_MIPS_linkage_name: _ZN3foo1iE
DW_AT_type : <109>
DW_AT_external : 1
DW_AT_declaration : 1
<1><b1a>: Abbrev Number: 32 (DW_TAG_variable)
DW_AT_specification: <b03>
DW_AT_location : 5 byte block: 3 ec 96 4 8 (DW_OP_addr: 80496ec)
[...]
Steven, are you (still) working on this?
--
dfranke at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dfranke at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29635