2004-01-23 David Carlton <carlton@kealia.com>
Partial workaround for PR c++/1511: * cp-namespace.c: Include frame.h. (cp_lookup_transparent_type): New (cp_lookup_transparent_type_loop): New. * cp-support.h: Declare cp_lookup_transparent_type. * symtab.c (basic_lookup_transparent_type): Renamed from lookup_transparent_type. (lookup_transparent_type): Replace old body by a call to current_language->la_lookup_transparent_type. * symtab.h: Update copyright. Declare basic_lookup_transparent_type. * language.h: Update copyright. (struct language_defn): Add la_lookup_transparent_type. * language.c: Update copyright. (unknown_language_defn): Add basic_lookup_transparent_type. (auto_language_defn): Add basic_lookup_transparent_type. (local_language_defn): Add basic_lookup_transparent_type. * ada-lang.c: Update copyright. (ada_language_defn): Add basic_lookup_transparent_type. * c-lang.c: Update copyright. (c_language_defn): Add basic_lookup_transparent_type. (cplus_language_defn): Add basic_lookup_transparent_type. (asm_language_defn): Add basic_lookup_transparent_type. (minimal_language_defn): Add basic_lookup_transparent_type. * f-lang.c: Update copyright. (f_language_defn): Add basic_lookup_transparent_type. * jv-lang.c: Update copyright. (java_language_defn): Add basic_lookup_transparent_type. * m2-lang.c: Update copyright. (m2_language_defn): Add basic_lookup_transparent_type. * objc-lang.c: Update copyright. (objc_language_defn): Add basic_lookup_transparent_type. * p-lang.c: Update copyright. (p_language_defn): Add basic_lookup_transparent_type. * scm-lang.c: Update copyright. (scm_language_defn): Add basic_lookup_transparent_type. * Makefile.in (cp-namespace.o): Depend on frame.h. 2004-01-23 David Carlton <carlton@kealia.com> * gdb.cp/rtti.exp: Don't include full path in ${srcfile}. Add test for cp_lookup_transparent_type. * gdb.cp/rtti1.cc: Update copyright. Add n2::func and refer_to; call them.
This commit is contained in:
parent
3835ff9bee
commit
b368761e45
19 changed files with 205 additions and 26 deletions
|
@ -1,3 +1,43 @@
|
||||||
|
2004-01-23 David Carlton <carlton@kealia.com>
|
||||||
|
|
||||||
|
Partial workaround for PR c++/1511:
|
||||||
|
* cp-namespace.c: Include frame.h.
|
||||||
|
(cp_lookup_transparent_type): New
|
||||||
|
(cp_lookup_transparent_type_loop): New.
|
||||||
|
* cp-support.h: Declare cp_lookup_transparent_type.
|
||||||
|
* symtab.c (basic_lookup_transparent_type): Renamed from
|
||||||
|
lookup_transparent_type.
|
||||||
|
(lookup_transparent_type): Replace old body by a call to
|
||||||
|
current_language->la_lookup_transparent_type.
|
||||||
|
* symtab.h: Update copyright. Declare
|
||||||
|
basic_lookup_transparent_type.
|
||||||
|
* language.h: Update copyright.
|
||||||
|
(struct language_defn): Add la_lookup_transparent_type.
|
||||||
|
* language.c: Update copyright.
|
||||||
|
(unknown_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
(auto_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
(local_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* ada-lang.c: Update copyright.
|
||||||
|
(ada_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* c-lang.c: Update copyright.
|
||||||
|
(c_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
(cplus_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
(asm_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
(minimal_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* f-lang.c: Update copyright.
|
||||||
|
(f_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* jv-lang.c: Update copyright.
|
||||||
|
(java_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* m2-lang.c: Update copyright.
|
||||||
|
(m2_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* objc-lang.c: Update copyright.
|
||||||
|
(objc_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* p-lang.c: Update copyright.
|
||||||
|
(p_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* scm-lang.c: Update copyright.
|
||||||
|
(scm_language_defn): Add basic_lookup_transparent_type.
|
||||||
|
* Makefile.in (cp-namespace.o): Depend on frame.h.
|
||||||
|
|
||||||
2004-01-23 David Carlton <carlton@kealia.com>
|
2004-01-23 David Carlton <carlton@kealia.com>
|
||||||
|
|
||||||
Patch for PR c++/1520:
|
Patch for PR c++/1520:
|
||||||
|
|
|
@ -1691,7 +1691,7 @@ cp-abi.o: cp-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(command_h) $(gdbcmd_h) \
|
||||||
$(ui_out_h) $(gdb_string_h)
|
$(ui_out_h) $(gdb_string_h)
|
||||||
cp-namespace.o: cp-namespace.c $(defs_h) $(cp_support_h) $(gdb_obstack_h) \
|
cp-namespace.o: cp-namespace.c $(defs_h) $(cp_support_h) $(gdb_obstack_h) \
|
||||||
$(symtab_h) $(symfile_h) $(gdb_assert_h) $(block_h) $(objfiles_h) \
|
$(symtab_h) $(symfile_h) $(gdb_assert_h) $(block_h) $(objfiles_h) \
|
||||||
$(gdbtypes_h) $(dictionary_h) $(command_h)
|
$(gdbtypes_h) $(dictionary_h) $(command_h) $(frame_h)
|
||||||
cp-support.o: cp-support.c $(defs_h) $(cp_support_h) $(gdb_string_h) \
|
cp-support.o: cp-support.c $(defs_h) $(cp_support_h) $(gdb_string_h) \
|
||||||
$(demangle_h) $(gdb_assert_h) $(gdbcmd_h) $(dictionary_h) \
|
$(demangle_h) $(gdb_assert_h) $(gdbcmd_h) $(dictionary_h) \
|
||||||
$(objfiles_h) $(frame_h) $(symtab_h) $(block_h) $(complaints_h) \
|
$(objfiles_h) $(frame_h) $(symtab_h) $(block_h) $(complaints_h) \
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Ada language support routines for GDB, the GNU debugger. Copyright
|
/* Ada language support routines for GDB, the GNU debugger. Copyright
|
||||||
1992, 1993, 1994, 1997, 1998, 1999, 2000, 2003
|
1992, 1993, 1994, 1997, 1998, 1999, 2000, 2003, 2004
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -8019,6 +8019,7 @@ const struct language_defn ada_language_defn = {
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* C language support routines for GDB, the GNU debugger.
|
/* C language support routines for GDB, the GNU debugger.
|
||||||
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002
|
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, 2003, 2004
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -556,6 +556,7 @@ const struct language_defn c_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
NULL, /* value_of_this */
|
NULL, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
@ -613,6 +614,7 @@ const struct language_defn cplus_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
cp_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
cp_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
cp_lookup_transparent_type, /* lookup_transparent_type */
|
||||||
cplus_demangle, /* Language specific symbol demangler */
|
cplus_demangle, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
@ -647,6 +649,7 @@ const struct language_defn asm_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
NULL, /* value_of_this */
|
NULL, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
@ -686,6 +689,7 @@ const struct language_defn minimal_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
NULL, /* value_of_this */
|
NULL, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "gdbtypes.h"
|
#include "gdbtypes.h"
|
||||||
#include "dictionary.h"
|
#include "dictionary.h"
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
#include "frame.h"
|
||||||
|
|
||||||
/* When set, the file that we're processing is known to have debugging
|
/* When set, the file that we're processing is known to have debugging
|
||||||
info for C++ namespaces. */
|
info for C++ namespaces. */
|
||||||
|
@ -85,6 +86,10 @@ static struct symbol *lookup_symbol_file (const char *name,
|
||||||
struct symtab **symtab,
|
struct symtab **symtab,
|
||||||
int anonymous_namespace);
|
int anonymous_namespace);
|
||||||
|
|
||||||
|
static struct type *cp_lookup_transparent_type_loop (const char *name,
|
||||||
|
const char *scope,
|
||||||
|
int scope_len);
|
||||||
|
|
||||||
static void initialize_namespace_symtab (struct objfile *objfile);
|
static void initialize_namespace_symtab (struct objfile *objfile);
|
||||||
|
|
||||||
static struct block *get_possible_namespace_block (struct objfile *objfile);
|
static struct block *get_possible_namespace_block (struct objfile *objfile);
|
||||||
|
@ -551,6 +556,74 @@ cp_lookup_nested_type (struct type *parent_type,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The C++-version of lookup_transparent_type. */
|
||||||
|
|
||||||
|
/* FIXME: carlton/2004-01-16: The problem that this is trying to
|
||||||
|
address is that, unfortunately, sometimes NAME is wrong: it may not
|
||||||
|
include the name of namespaces enclosing the type in question.
|
||||||
|
lookup_transparent_type gets called when the the type in question
|
||||||
|
is a declaration, and we're trying to find its definition; but, for
|
||||||
|
declarations, our type name deduction mechanism doesn't work.
|
||||||
|
There's nothing we can do to fix this in general, I think, in the
|
||||||
|
absence of debug information about namespaces (I've filed PR
|
||||||
|
gdb/1511 about this); until such debug information becomes more
|
||||||
|
prevalent, one heuristic which sometimes looks is to search for the
|
||||||
|
definition in namespaces containing the current namespace.
|
||||||
|
|
||||||
|
We should delete this functions once the appropriate debug
|
||||||
|
information becomes more widespread. (GCC 3.4 will be the first
|
||||||
|
released version of GCC with such information.) */
|
||||||
|
|
||||||
|
struct type *
|
||||||
|
cp_lookup_transparent_type (const char *name)
|
||||||
|
{
|
||||||
|
/* First, try the honest way of looking up the definition. */
|
||||||
|
struct type *t = basic_lookup_transparent_type (name);
|
||||||
|
const char *scope;
|
||||||
|
|
||||||
|
if (t != NULL)
|
||||||
|
return t;
|
||||||
|
|
||||||
|
/* If that doesn't work and we're within a namespace, look there
|
||||||
|
instead. */
|
||||||
|
scope = block_scope (get_selected_block (0));
|
||||||
|
|
||||||
|
if (scope[0] == '\0')
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return cp_lookup_transparent_type_loop (name, scope, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lookup the the type definition associated to NAME in
|
||||||
|
namespaces/classes containing SCOPE whose name is strictly longer
|
||||||
|
than LENGTH. LENGTH must be the index of the start of a
|
||||||
|
component of SCOPE. */
|
||||||
|
|
||||||
|
static struct type *
|
||||||
|
cp_lookup_transparent_type_loop (const char *name, const char *scope,
|
||||||
|
int length)
|
||||||
|
{
|
||||||
|
int scope_length = cp_find_first_component (scope + length);
|
||||||
|
char *full_name;
|
||||||
|
|
||||||
|
/* If the current scope is followed by "::", look in the next
|
||||||
|
component. */
|
||||||
|
if (scope[scope_length] == ':')
|
||||||
|
{
|
||||||
|
struct type *retval
|
||||||
|
= cp_lookup_transparent_type_loop (name, scope, scope_length + 2);
|
||||||
|
if (retval != NULL)
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
full_name = alloca (scope_length + 2 + strlen (name) + 1);
|
||||||
|
strncpy (full_name, scope, scope_length);
|
||||||
|
strncpy (full_name + scope_length, "::", 2);
|
||||||
|
strcpy (full_name + scope_length + 2, name);
|
||||||
|
|
||||||
|
return basic_lookup_transparent_type (full_name);
|
||||||
|
}
|
||||||
|
|
||||||
/* Now come functions for dealing with symbols associated to
|
/* Now come functions for dealing with symbols associated to
|
||||||
namespaces. (They're used to store the namespaces themselves, not
|
namespaces. (They're used to store the namespaces themselves, not
|
||||||
objects that live in the namespaces.) These symbols come in two
|
objects that live in the namespaces.) These symbols come in two
|
||||||
|
|
|
@ -108,6 +108,8 @@ extern struct type *cp_lookup_nested_type (struct type *parent_type,
|
||||||
extern void cp_check_possible_namespace_symbols (const char *name,
|
extern void cp_check_possible_namespace_symbols (const char *name,
|
||||||
struct objfile *objfile);
|
struct objfile *objfile);
|
||||||
|
|
||||||
|
struct type *cp_lookup_transparent_type (const char *name);
|
||||||
|
|
||||||
/* The list of "maint cplus" commands. */
|
/* The list of "maint cplus" commands. */
|
||||||
|
|
||||||
extern struct cmd_list_element *maint_cplus_cmd_list;
|
extern struct cmd_list_element *maint_cplus_cmd_list;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Fortran language support routines for GDB, the GNU debugger.
|
/* Fortran language support routines for GDB, the GNU debugger.
|
||||||
Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
|
Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Motorola. Adapted from the C parser by Farooq Butt
|
Contributed by Motorola. Adapted from the C parser by Farooq Butt
|
||||||
(fmbutt@engage.sps.mot.com).
|
(fmbutt@engage.sps.mot.com).
|
||||||
|
@ -475,6 +475,7 @@ const struct language_defn f_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%o", "0", "o", ""}, /* Octal format info */
|
{"0%o", "0", "o", ""}, /* Octal format info */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Java language support routines for GDB, the GNU debugger.
|
/* Java language support routines for GDB, the GNU debugger.
|
||||||
Copyright 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
|
Copyright 1997, 1998, 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
|
||||||
|
@ -1046,6 +1046,7 @@ const struct language_defn java_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
java_demangle, /* Language specific symbol demangler */
|
java_demangle, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* Multiple source language support for GDB.
|
/* Multiple source language support for GDB.
|
||||||
|
|
||||||
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
|
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
|
||||||
2001, 2002, 2003 Free Software Foundation, Inc.
|
2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Contributed by the Department of Computer Science at the State University
|
Contributed by the Department of Computer Science at the State University
|
||||||
of New York at Buffalo.
|
of New York at Buffalo.
|
||||||
|
@ -1289,6 +1289,7 @@ const struct language_defn unknown_language_defn =
|
||||||
unk_lang_trampoline, /* Language specific skip_trampoline */
|
unk_lang_trampoline, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
unk_lang_demangle, /* Language specific symbol demangler */
|
unk_lang_demangle, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
@ -1324,6 +1325,7 @@ const struct language_defn auto_language_defn =
|
||||||
unk_lang_trampoline, /* Language specific skip_trampoline */
|
unk_lang_trampoline, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
unk_lang_demangle, /* Language specific symbol demangler */
|
unk_lang_demangle, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
@ -1358,6 +1360,7 @@ const struct language_defn local_language_defn =
|
||||||
unk_lang_trampoline, /* Language specific skip_trampoline */
|
unk_lang_trampoline, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
unk_lang_demangle, /* Language specific symbol demangler */
|
unk_lang_demangle, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* Source-language-related definitions for GDB.
|
/* Source-language-related definitions for GDB.
|
||||||
|
|
||||||
Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003 Free
|
Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003,
|
||||||
Software Foundation, Inc.
|
2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Contributed by the Department of Computer Science at the State University
|
Contributed by the Department of Computer Science at the State University
|
||||||
of New York at Buffalo.
|
of New York at Buffalo.
|
||||||
|
@ -233,6 +233,9 @@ struct language_defn
|
||||||
const domain_enum,
|
const domain_enum,
|
||||||
struct symtab **);
|
struct symtab **);
|
||||||
|
|
||||||
|
/* Find the definition of the type with the given name. */
|
||||||
|
struct type *(*la_lookup_transparent_type) (const char *);
|
||||||
|
|
||||||
/* Return demangled language symbol, or NULL. */
|
/* Return demangled language symbol, or NULL. */
|
||||||
char *(*la_demangle) (const char *mangled, int options);
|
char *(*la_demangle) (const char *mangled, int options);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Modula 2 language support routines for GDB, the GNU debugger.
|
/* Modula 2 language support routines for GDB, the GNU debugger.
|
||||||
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2002
|
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2002, 2003, 2004
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -428,6 +428,7 @@ const struct language_defn m2_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"%loB", "", "o", "B"}, /* Octal format info */
|
{"%loB", "", "o", "B"}, /* Octal format info */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Objective-C language support routines for GDB, the GNU debugger.
|
/* Objective-C language support routines for GDB, the GNU debugger.
|
||||||
|
|
||||||
Copyright 2002, 2003 Free Software Foundation, Inc.
|
Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Contributed by Apple Computer, Inc.
|
Contributed by Apple Computer, Inc.
|
||||||
Written by Michael Snyder.
|
Written by Michael Snyder.
|
||||||
|
@ -672,6 +672,7 @@ const struct language_defn objc_language_defn = {
|
||||||
objc_skip_trampoline, /* Language specific skip_trampoline */
|
objc_skip_trampoline, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
objc_demangle, /* Language specific symbol demangler */
|
objc_demangle, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Pascal language support routines for GDB, the GNU debugger.
|
/* Pascal language support routines for GDB, the GNU debugger.
|
||||||
Copyright 2000, 2002 Free Software Foundation, Inc.
|
Copyright 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
|
||||||
|
@ -464,6 +464,7 @@ const struct language_defn pascal_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "%", "b", ""}, /* Binary format info */
|
{"", "%", "b", ""}, /* Binary format info */
|
||||||
{"0%lo", "0", "o", ""}, /* Octal format info */
|
{"0%lo", "0", "o", ""}, /* Octal format info */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Scheme/Guile language support routines for GDB, the GNU debugger.
|
/* Scheme/Guile language support routines for GDB, the GNU debugger.
|
||||||
|
|
||||||
Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003 Free Software
|
Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2004 Free Software
|
||||||
Foundation, Inc.
|
Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -263,6 +263,7 @@ const struct language_defn scm_language_defn =
|
||||||
NULL, /* Language specific skip_trampoline */
|
NULL, /* Language specific skip_trampoline */
|
||||||
value_of_this, /* value_of_this */
|
value_of_this, /* value_of_this */
|
||||||
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
|
||||||
|
basic_lookup_transparent_type,/* lookup_transparent_type */
|
||||||
NULL, /* Language specific symbol demangler */
|
NULL, /* Language specific symbol demangler */
|
||||||
{"", "", "", ""}, /* Binary format info */
|
{"", "", "", ""}, /* Binary format info */
|
||||||
{"#o%lo", "#o", "o", ""}, /* Octal format info */
|
{"#o%lo", "#o", "o", ""}, /* Octal format info */
|
||||||
|
|
22
gdb/symtab.c
22
gdb/symtab.c
|
@ -1,7 +1,7 @@
|
||||||
/* Symbol table lookup for the GNU debugger, GDB.
|
/* Symbol table lookup for the GNU debugger, GDB.
|
||||||
|
|
||||||
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||||
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -1480,15 +1480,23 @@ lookup_partial_symbol (struct partial_symtab *pst, const char *name,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look up a type named NAME in the struct_domain. The type returned
|
/* Look up a type named NAME in the struct_domain. The type returned
|
||||||
must not be opaque -- i.e., must have at least one field defined
|
must not be opaque -- i.e., must have at least one field
|
||||||
|
defined. */
|
||||||
This code was modelled on lookup_symbol -- the parts not relevant to looking
|
|
||||||
up types were just left out. In particular it's assumed here that types
|
|
||||||
are available in struct_domain and only at file-static or global blocks. */
|
|
||||||
|
|
||||||
|
|
||||||
struct type *
|
struct type *
|
||||||
lookup_transparent_type (const char *name)
|
lookup_transparent_type (const char *name)
|
||||||
|
{
|
||||||
|
return current_language->la_lookup_transparent_type (name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The standard implementation of lookup_transparent_type. This code
|
||||||
|
was modeled on lookup_symbol -- the parts not relevant to looking
|
||||||
|
up types were just left out. In particular it's assumed here that
|
||||||
|
types are available in struct_domain and only at file-static or
|
||||||
|
global blocks. */
|
||||||
|
|
||||||
|
struct type *
|
||||||
|
basic_lookup_transparent_type (const char *name)
|
||||||
{
|
{
|
||||||
struct symbol *sym;
|
struct symbol *sym;
|
||||||
struct symtab *s = NULL;
|
struct symtab *s = NULL;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* Symbol table definitions for GDB.
|
/* Symbol table definitions for GDB.
|
||||||
|
|
||||||
Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
|
Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
|
||||||
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
|
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
|
||||||
Foundation, Inc.
|
Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -1107,6 +1107,7 @@ extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
|
||||||
extern void reread_symbols (void);
|
extern void reread_symbols (void);
|
||||||
|
|
||||||
extern struct type *lookup_transparent_type (const char *);
|
extern struct type *lookup_transparent_type (const char *);
|
||||||
|
extern struct type *basic_lookup_transparent_type (const char *);
|
||||||
|
|
||||||
|
|
||||||
/* Macro for name of symbol to indicate a file compiled with gcc. */
|
/* Macro for name of symbol to indicate a file compiled with gcc. */
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2004-01-23 David Carlton <carlton@kealia.com>
|
||||||
|
|
||||||
|
* gdb.cp/rtti.exp: Don't include full path in ${srcfile}. Add
|
||||||
|
test for cp_lookup_transparent_type.
|
||||||
|
* gdb.cp/rtti1.cc: Update copyright. Add n2::func and refer_to;
|
||||||
|
call them.
|
||||||
|
|
||||||
2004-01-23 Daniel Jacobowitz <drow@mvista.com>
|
2004-01-23 Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
* gdb.mi/mi-var-child.exp: Update copyright year. Move new test
|
* gdb.mi/mi-var-child.exp: Update copyright year. Move new test
|
||||||
|
|
|
@ -46,8 +46,9 @@ set srcfile2 "${srcdir}/${subdir}/${testfile}2.cc"
|
||||||
set objfile2 "${objdir}/${subdir}/${testfile}2.o"
|
set objfile2 "${objdir}/${subdir}/${testfile}2.o"
|
||||||
set binfile ${objdir}/${subdir}/${testfile}
|
set binfile ${objdir}/${subdir}/${testfile}
|
||||||
|
|
||||||
# gdb_get_line_number needs this to be called srcfile.
|
# gdb_get_line_number needs this to be called srcfile. Except that it
|
||||||
set srcfile "${srcfile1}"
|
# gets confused if the directories are included. :-(
|
||||||
|
set srcfile "${testfile}1.cc"
|
||||||
|
|
||||||
if { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } {
|
if { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } {
|
||||||
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
|
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
|
||||||
|
@ -78,8 +79,8 @@ if ![runto_main] then {
|
||||||
|
|
||||||
# First, run to after we've constructed the object:
|
# First, run to after we've constructed the object:
|
||||||
|
|
||||||
gdb_breakpoint [gdb_get_line_number "constructs-done"]
|
gdb_breakpoint [gdb_get_line_number "main-constructs-done"]
|
||||||
gdb_continue_to_breakpoint "end of constructors"
|
gdb_continue_to_breakpoint "end of constructors in main"
|
||||||
|
|
||||||
gdb_test_multiple "print *e1" "print *e1" {
|
gdb_test_multiple "print *e1" "print *e1" {
|
||||||
-re "warning: RTTI symbol not found for class 'n1::D1'.*$gdb_prompt $" {
|
-re "warning: RTTI symbol not found for class 'n1::D1'.*$gdb_prompt $" {
|
||||||
|
@ -131,5 +132,13 @@ gdb_test_multiple "print *e2" "print *e2" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Now we test the hack that's been implemented to get around some
|
||||||
|
# instances of PR gdb/1511.
|
||||||
|
|
||||||
|
gdb_breakpoint [gdb_get_line_number "func-constructs-done"]
|
||||||
|
gdb_continue_to_breakpoint "end of constructors in func"
|
||||||
|
|
||||||
|
gdb_test "print *obj" "\\$\[0-9\]* = {<n2::Base2> = .*}"
|
||||||
|
|
||||||
gdb_exit
|
gdb_exit
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Code to go along with tests in rtti.exp.
|
/* Code to go along with tests in rtti.exp.
|
||||||
|
|
||||||
Copyright 2003 Free Software Foundation, Inc.
|
Copyright 2003, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
|
Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
|
||||||
Inc.
|
Inc.
|
||||||
|
@ -55,6 +55,26 @@ namespace n1 {
|
||||||
|
|
||||||
} // n1
|
} // n1
|
||||||
|
|
||||||
|
// NOTE: carlton/2004-01-23: This call exists only to convince GCC to
|
||||||
|
// keep around a reference to 'obj' in n2::func - GCC 3.4 had been
|
||||||
|
// optimizing it away.
|
||||||
|
void refer_to (n2::C2 *obj)
|
||||||
|
{
|
||||||
|
// Do nothing.
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace n2
|
||||||
|
{
|
||||||
|
void func ()
|
||||||
|
{
|
||||||
|
C2 *obj = create2 ();
|
||||||
|
|
||||||
|
refer_to (obj); // func-constructs-done
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using namespace n1;
|
using namespace n1;
|
||||||
|
@ -63,5 +83,7 @@ int main()
|
||||||
C1 *e1 = create1();
|
C1 *e1 = create1();
|
||||||
C2 *e2 = create2();
|
C2 *e2 = create2();
|
||||||
|
|
||||||
return 0; // constructs-done
|
n2::func(); // main-constructs-done
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue