summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2003-12-30 21:01:20 +0000
committerDaniel Jacobowitz <dan@debian.org>2003-12-30 21:01:20 +0000
commitdb6ed21e3316c19ecd0c0a3751df594f89642bce (patch)
tree914e050cdabe5a26a4ad36984a6fe77637bf6c77
parentc11bc4c3350d1246e63ad1a92e2825cb65974afd (diff)
downloadgdb-db6ed21e3316c19ecd0c0a3751df594f89642bce.tar.gz
* cp-names.y (yylex): Fix thinko for character constants.
* dwarf2read.c: Include "cp-names.h". (read_structure_scope): Canonicalize class names.
-rw-r--r--gdb/ChangeLog.cplus6
-rw-r--r--gdb/cp-names.y11
-rw-r--r--gdb/dwarf2read.c11
3 files changed, 23 insertions, 5 deletions
diff --git a/gdb/ChangeLog.cplus b/gdb/ChangeLog.cplus
index 99fd1c88419..a13d44f56cd 100644
--- a/gdb/ChangeLog.cplus
+++ b/gdb/ChangeLog.cplus
@@ -1,3 +1,9 @@
+2003-12-30 Daniel Jacobowitz <drow@mvista.com>
+
+ * cp-names.y (yylex): Fix thinko for character constants.
+ * dwarf2read.c: Include "cp-names.h".
+ (read_structure_scope): Canonicalize class names.
+
2003-12-24 Daniel Jacobowitz <drow@mvista.com>
* Makefile.in (cp_names_h): New variable.
diff --git a/gdb/cp-names.y b/gdb/cp-names.y
index eac833336e4..60df8a8de3c 100644
--- a/gdb/cp-names.y
+++ b/gdb/cp-names.y
@@ -1597,13 +1597,18 @@ yylex (void)
"character set `%s'.", tok, target_charset ());
}
- yylval.typed_val_int.val = c;
- yylval.typed_val_int.type = d_builtin_type ('c' - 'a');
-
c = *lexptr++;
if (c != '\'')
error ("Invalid character constant.");
+ /* FIXME: We should refer to a canonical form of the character,
+ presumably the same one that appears in manglings - the decimal
+ representation. But if that isn't in our input then we have to
+ allocate memory for it somewhere. */
+ yylval.comp = d_make_comp (di, D_COMP_LITERAL,
+ d_builtin_type ('c' - 'a'),
+ d_make_name (di, tokstart, lexptr - tokstart));
+
return INT;
case '(':
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index bf2a57e5197..0616a35d8e5 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -44,6 +44,7 @@
#include "dwarf2expr.h"
#include "dwarf2loc.h"
#include "cp-support.h"
+#include "cp-names.h"
#include <fcntl.h>
#include "gdb_string.h"
@@ -2779,9 +2780,15 @@ read_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
attr = dwarf_attr (die, DW_AT_name);
if (attr && DW_STRING (attr))
{
- TYPE_TAG_NAME (type) = obsavestring (DW_STRING (attr),
- strlen (DW_STRING (attr)),
+ /* FIXME: This should be in a more general location. */
+ char *name;
+ name = cp_canonicalize_string (DW_STRING (attr));
+ if (name == NULL)
+ name = DW_STRING (attr);
+ TYPE_TAG_NAME (type) = obsavestring (name, strlen (name),
&objfile->type_obstack);
+ if (name != DW_STRING (attr))
+ free (name);
}
if (die->tag == DW_TAG_structure_type)