aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorPierre-Marie de Rodat <derodat@adacore.com>2015-11-24 16:59:43 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2015-11-24 16:59:43 +0000
commitcaadda8e359e968af9f650d65ed9950fb177f184 (patch)
tree522018b552faad2113b7bdd5be2a93c93d473835 /gcc/ada
parent16a21ab32693a8a42f1d20e36e0d10e9c99d7f86 (diff)
downloadgcc-caadda8e359e968af9f650d65ed9950fb177f184.zip
gcc-caadda8e359e968af9f650d65ed9950fb177f184.tar.gz
gcc-caadda8e359e968af9f650d65ed9950fb177f184.tar.bz2
DWARF: materialize subprogram renamings in Ada as imported declarations
... so that debugger users can reference them instead of the renamed subprograms. This is in accordance with the DWARF specification: the section 3.2.3 (Imported (or Renamed) Declaration Entities) allows DW_TAG_imported_declaration DIEs to be used "as a general means to rename or provide an alias for an entity regardless of the context in which the importing declaration or the imported entity occur." (wording from the DWARFv3 and DWARFv4 specifications, allowed in DWARFv2). gcc/ada/ChangeLog: * gcc-interface/utils.c (gnat_write_global_declarations): Output debugging information for top-level imported declarations. gcc/ChangeLog: * dwarf2out.c (gen_decl_die): Generate DW_TAG_imported_* instead of DW_TAG_namespace for IMPORTED_DECL declarations. Call dwarf2out_imported_module_or_decl_1 for all DWARF versions as this function already takes care of checking what it can emit. Bootstrapped, regtested and checked with GDB's testsuite on x86_64-linux. From-SVN: r230821
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/utils.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a83124f..e5c2441 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-24 Pierre-Marie de Rodat <derodat@adacore.com>
+
+ * gcc-interface/utils.c (gnat_write_global_declarations): Output
+ debugging information for top-level imported declarations.
+
2015-11-24 Gary Dismukes <dismukes@adacore.com>
* sem_ch3.adb, sem_type.adb, sem_ch7.adb, sem_ch9.adb, checks.adb,
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index aa2fdf2..0016a3f 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -5281,6 +5281,13 @@ gnat_write_global_declarations (void)
FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
if (TREE_CODE (iter) == VAR_DECL)
rest_of_decl_compilation (iter, true, 0);
+
+ /* Output the imported modules/declarations. In GNAT, these are only
+ materializing subprogram. */
+ FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
+ if (TREE_CODE (iter) == IMPORTED_DECL && !DECL_IGNORED_P (iter))
+ debug_hooks->imported_module_or_decl (iter, DECL_NAME (iter),
+ DECL_CONTEXT (iter), 0);
}
/* ************************************************************************