This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] dwarf2_compute_name: add fixme, don't use same name as parameter for local


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=2ee7123e5a54fba15b976a05bce173871eba8aba

commit 2ee7123e5a54fba15b976a05bce173871eba8aba
Author: Doug Evans <xdje42@gmail.com>
Date:   Sun Sep 20 14:13:54 2015 -0700

    dwarf2_compute_name: add fixme, don't use same name as parameter for local
    
    gdb/ChangeLog:
    
    	* dwarf2read.c (dwarf2_compute_name): Add FIXME.  Don't use a local
    	variable name that collides with a parameter.

Diff:
---
 gdb/ChangeLog    |  5 +++++
 gdb/dwarf2read.c | 21 +++++++++++++--------
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 95bc753..270ae7d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-20  Doug Evans  <xdje42@gmail.com>
+
+	* dwarf2read.c (dwarf2_compute_name): Add FIXME.  Don't use a local
+	variable name that collides with a parameter.
+
 2015-09-20  Joel Brobecker  <brobecker@adacore.com>
 
 	* dwarf2loc.c (locexpr_get_frame_base): Renames
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 6ec8595..b8c0872 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -8431,8 +8431,13 @@ dwarf2_compute_name (const char *name,
   if (name == NULL)
     name = dwarf2_name (die, cu);
 
-  /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
-     compute it by typename_concat inside GDB.  */
+  /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
+     but otherwise compute it by typename_concat inside GDB.
+     FIXME: Actually this is not really true, or at least not always true.
+     It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
+     Fortran names because there is no mangling standard.  So new_symbol_full
+     will set the demangled name to the result of dwarf2_full_name, and it is
+     the demangled name that GDB uses if it exists.  */
   if (cu->language == language_ada
       || (cu->language == language_fortran && physname))
     {
@@ -8441,13 +8446,13 @@ dwarf2_compute_name (const char *name,
 	 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.  */
-      const char *name;
+      const char *linkage_name;
 
-      name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
-      if (name == NULL)
-	name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
-      if (name != NULL)
-	return name;
+      linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
+      if (linkage_name == NULL)
+	linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
+      if (linkage_name != NULL)
+	return linkage_name;
     }
 
   /* These are the only languages we know how to qualify names in.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]