OSDN Git Service

2004-01-14 David Carlton <carlton@kealia.com>
authorcarlton <carlton>
Wed, 14 Jan 2004 16:54:38 +0000 (16:54 +0000)
committercarlton <carlton>
Wed, 14 Jan 2004 16:54:38 +0000 (16:54 +0000)
commite723a282ef5e0a80d29256f6cd23e032da54fe0e
tree7c7aabdc80ea976136adfbdc40ab7944c83f50df
parent4e73070a200663762b2f1f1d8df9893e6a5b7187
2004-01-14  David Carlton  <carlton@kealia.com>

Change symbols for C++ nested types to contain the fully qualified
name, if possible.  (At least in the DWARF-2 case.)  Partial fix
for PR's c++/57, c++/488, c++/539, c++/573, c++/609, c++/832,
c++/895.
* c-exp.y: Update copyright:
(qualified_type): Handle types nested within classes.
* cp-namespace.c: Update comments.
(cp_set_block_scope): Delete #if 0.
(cp_lookup_nested_type): Handle types nested within classes.
* dwarf2read.c: (scan_partial_symbols): Call add_partial_structure
when appropriate.
(add_partial_symbol): Add the name of the enclosing namespace to
types.
(pdi_needs_namespace): New.
(add_partial_namespace): Tweak comment.
(add_partial_structure): New.
(psymtab_to_symtab_1): Initialize processing_current_prefix
here...
(process_die): instead of here.
(read_structure_scope): Try to figure out the name of the class or
namespace that the structure might be defined within.
(read_enumeration): Generate fully-qualified names, if possible.
(read_namespace): Don't set name to NULL.
(die_specification): New.
(new_symbol): Generate fully-qualified names for types.
(read_type_die): Determine appropriate prefix.
(determine_prefix): New.
(typename_concat): New.
(class_name): New.
* valops.c: Update copyright.
(value_aggregate_elt): Pass NOSIDE to
value_struct_elt_for_reference.
(value_struct_elt_for_reference): Make static, add NOSIDE
parameter, call value_maybe_namespace_elt as a last resort.
(value_namespace_elt): Break out code into
value_maybe_namespace_elt.
(value_maybe_namespace_elt): New.

2004-01-14  David Carlton  <carlton@kealia.com>

* gdb.cp/namespace.exp: Add tests involving classes defined within
namespaces.
* gdb.cp/namespace.cc (C::CClass): New.
* gdb.cp/namespace1.cc: Update copyright.
(C::OtherFileClass): New.
gdb/ChangeLog
gdb/c-exp.y
gdb/cp-namespace.c
gdb/dwarf2read.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/namespace.cc
gdb/testsuite/gdb.cp/namespace.exp
gdb/testsuite/gdb.cp/namespace1.cc
gdb/valops.c