From 1ef426cd9d0a281d5e0a33a424554ca5379fff45 Mon Sep 17 00:00:00 2001 From: pmderodat Date: Tue, 24 Nov 2015 16:59:43 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230821 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/ada/ChangeLog | 5 +++++ gcc/ada/gcc-interface/utils.c | 7 +++++++ gcc/dwarf2out.c | 6 +++++- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8fb91521574e..d61154fdb504 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-11-24 Pierre-Marie de Rodat + + * 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. + 2015-11-24 Szabolcs Nagy * doc/invoke.texi (-fpic): Add the AArch64 limit. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a83124f2cc24..e5c24418f606 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2015-11-24 Pierre-Marie de Rodat + + * gcc-interface/utils.c (gnat_write_global_declarations): Output + debugging information for top-level imported declarations. + 2015-11-24 Gary Dismukes * 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 aa2fdf240558..0016a3fa288f 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); } /* ************************************************************************ diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index f18475009105..d46a6715cf7e 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -21585,11 +21585,15 @@ gen_decl_die (tree decl, tree origin, dw_die_ref context_die) context_die); case NAMESPACE_DECL: - case IMPORTED_DECL: if (dwarf_version >= 3 || !dwarf_strict) gen_namespace_die (decl, context_die); break; + case IMPORTED_DECL: + dwarf2out_imported_module_or_decl_1 (decl, DECL_NAME (decl), + DECL_CONTEXT (decl), context_die); + break; + case NAMELIST_DECL: gen_namelist_decl (DECL_NAME (decl), context_die, NAMELIST_DECL_ASSOCIATED_DECL (decl)); -- 2.47.2