diff options
author | Daniel Jacobowitz <drow@false.org> | 2003-12-30 21:01:20 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2003-12-30 21:01:20 +0000 |
commit | 0ae7a3405acdeb95b389bb0ddbf104e7ccf65a77 (patch) | |
tree | 4789164946e3d18baee6d3c81783a1529fb2037b | |
parent | bc694da6ac7fd711069bb449bf4bb3e4fe5a205f (diff) | |
download | gdb-0ae7a3405acdeb95b389bb0ddbf104e7ccf65a77.zip gdb-0ae7a3405acdeb95b389bb0ddbf104e7ccf65a77.tar.gz gdb-0ae7a3405acdeb95b389bb0ddbf104e7ccf65a77.tar.bz2 |
* 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.cplus | 6 | ||||
-rw-r--r-- | gdb/cp-names.y | 11 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 11 |
3 files changed, 23 insertions, 5 deletions
diff --git a/gdb/ChangeLog.cplus b/gdb/ChangeLog.cplus index 99fd1c8..a13d44f 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 eac8333..60df8a8 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 bf2a57e..0616a35 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) |