From af6b7be16a1bf716a58ef692b175725b5acb561d Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Wed, 10 Mar 2010 08:08:46 +0000 Subject: [PATCH] Adjust handling of Ada DIEs after dwarf2_physname patch. * dwarf2read.c (dwarf2_compute_name): Add handling of Ada DIEs. --- gdb/ChangeLog | 9 +++++++-- gdb/dwarf2read.c | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d41f036cf02..88187f1ff84 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2010-03-09 Joel Brobecker + + Adjust handling of Ada DIEs after dwarf2_physname patch. + * dwarf2read.c (dwarf2_compute_name): Add handling of Ada DIEs. + 2010-03-09 Christopher Faylor Pierre Muller @@ -127,8 +132,8 @@ * python/python-internal.h: Include symtab.h. -2010-03-09 Joel Brobecker - Pierre Muller +2010-03-09 Joel Brobecker + Pierre Muller * p-lang.c (is_pascal_string_type): Remove unneeded parentheses. * p-valprint.c (pascal_val_print): Remove undeed block and fix diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 1f25a456cf0..fd75c74d43e 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -3324,6 +3324,9 @@ die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu) compute the physname for the object, which include a method's formal parameters (C++/Java) and return type (Java). + For Ada, return the DIE's linkage name rather than the fully qualified + name. PHYSNAME is ignored.. + The result is allocated on the objfile_obstack and canonicalized. */ static const char * @@ -3396,6 +3399,19 @@ dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu, } } } + else if (cu->language == language_ada) + { + /* For Ada unit, we prefer the linkage name over the name, as + the former contains the exported name, which the user expects + to be able to reference. Ideally, we want the user to be able + to reference this entity using either natural or linkage name, + but we haven't started looking at this enhancement yet. */ + struct attribute *attr; + + attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu); + if (attr && DW_STRING (attr)) + name = DW_STRING (attr); + } return name; } -- 2.30.2