summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Carlton <carlton@bactrian.org>2003-03-03 18:34:12 +0000
committerDavid Carlton <carlton@bactrian.org>2003-03-03 18:34:12 +0000
commitd0aaed087c864c0b22023f72ed28cb03a60a7ef9 (patch)
tree6317b9a80451501aa922572d0d1c1c76fccd59f4
parent2266bd5f452e9cf3af4f44e621df240f8834da85 (diff)
downloadgdb-d0aaed087c864c0b22023f72ed28cb03a60a7ef9.tar.gz
2003-03-03 David Carlton <carlton@math.stanford.edu>
* symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Rename from SYMBOL_MATCHES_NAME, add comment. (SYMBOL_MATCHES_NATURAL_NAME): New. * minsyms.c (lookup_minimal_symbol_solib_trampoline): Replace SYMBOL_MATCHES_NAME with DEPRECATED_SYMBOL_MATCHES_NAME. (lookup_minimal_symbol, lookup_minimal_symbol_text): Ditto. * symtab.c (lookup_partial_symbol): Use SYMBOL_MATCHES_NATURAL_NAME, not SYMBOL_MATCHES_NAME. Delete unhelpful comment. (lookup_block_symbol): Use SYMBOL_MATCHES_NATURAL_NAME, not SYMBOL_MATCHES_NAME. Fix for PR c++/33.
-rw-r--r--gdb/ChangeLog15
-rw-r--r--gdb/minsyms.c6
-rw-r--r--gdb/symtab.c13
-rw-r--r--gdb/symtab.h15
4 files changed, 37 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b79b9d12640..3a544ea0aff 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,20 @@
2003-03-03 David Carlton <carlton@math.stanford.edu>
+ * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Rename from
+ SYMBOL_MATCHES_NAME, add comment.
+ (SYMBOL_MATCHES_NATURAL_NAME): New.
+ * minsyms.c (lookup_minimal_symbol_solib_trampoline): Replace
+ SYMBOL_MATCHES_NAME with DEPRECATED_SYMBOL_MATCHES_NAME.
+ (lookup_minimal_symbol, lookup_minimal_symbol_text): Ditto.
+ * symtab.c (lookup_partial_symbol): Use
+ SYMBOL_MATCHES_NATURAL_NAME, not SYMBOL_MATCHES_NAME. Delete
+ unhelpful comment.
+ (lookup_block_symbol): Use SYMBOL_MATCHES_NATURAL_NAME, not
+ SYMBOL_MATCHES_NAME.
+ Fix for PR c++/33.
+
+2003-03-03 David Carlton <carlton@math.stanford.edu>
+
* symtab.h (SYMBOL_MATCHES_REGEXP): Delete.
* symtab.c (search_symbols): Replace uses of SYMBOL_MATCHES_REGEXP
by regexp matching against SYMBOL_NATURAL_NAME.
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 057bd8fd048..e3f649e0289 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -188,7 +188,7 @@ lookup_minimal_symbol (register const char *name, const char *sfile,
while (msymbol != NULL && found_symbol == NULL)
{
- if (SYMBOL_MATCHES_NAME (msymbol, name))
+ if (DEPRECATED_SYMBOL_MATCHES_NAME (msymbol, name))
{
switch (MSYMBOL_TYPE (msymbol))
{
@@ -288,7 +288,7 @@ lookup_minimal_symbol_text (register const char *name, const char *sfile,
msymbol != NULL && found_symbol == NULL;
msymbol = msymbol->hash_next)
{
- if (SYMBOL_MATCHES_NAME (msymbol, name) &&
+ if (DEPRECATED_SYMBOL_MATCHES_NAME (msymbol, name) &&
(MSYMBOL_TYPE (msymbol) == mst_text ||
MSYMBOL_TYPE (msymbol) == mst_file_text))
{
@@ -364,7 +364,7 @@ lookup_minimal_symbol_solib_trampoline (register const char *name,
msymbol != NULL && found_symbol == NULL;
msymbol = msymbol->hash_next)
{
- if (SYMBOL_MATCHES_NAME (msymbol, name) &&
+ if (DEPRECATED_SYMBOL_MATCHES_NAME (msymbol, name) &&
MSYMBOL_TYPE (msymbol) == mst_solib_trampoline)
return msymbol;
}
diff --git a/gdb/symtab.c b/gdb/symtab.c
index af07d77e47f..9ecbd54e10f 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1423,10 +1423,7 @@ lookup_partial_symbol (struct partial_symtab *pst, const char *name, int global,
if (!(top == bottom))
internal_error (__FILE__, __LINE__, "failed internal consistency check");
- /* djb - 2000-06-03 - Use SYMBOL_MATCHES_NAME, not a strcmp, so
- we don't have to force a linear search on C++. Probably holds true
- for JAVA as well, no way to check.*/
- while (top <= real_top && SYMBOL_MATCHES_NAME (*top,name))
+ while (top <= real_top && SYMBOL_MATCHES_NATURAL_NAME (*top,name))
{
if (SYMBOL_NAMESPACE (*top) == namespace)
{
@@ -1445,7 +1442,7 @@ lookup_partial_symbol (struct partial_symtab *pst, const char *name, int global,
{
if (namespace == SYMBOL_NAMESPACE (*psym))
{
- if (SYMBOL_MATCHES_NAME (*psym, name))
+ if (SYMBOL_MATCHES_NATURAL_NAME (*psym, name))
{
return (*psym);
}
@@ -1623,7 +1620,7 @@ lookup_block_symbol (register const struct block *block, const char *name,
if (SYMBOL_NAMESPACE (sym) == namespace
&& (mangled_name
? strcmp (DEPRECATED_SYMBOL_NAME (sym), mangled_name) == 0
- : SYMBOL_MATCHES_NAME (sym, name)))
+ : SYMBOL_MATCHES_NATURAL_NAME (sym, name)))
return sym;
}
return NULL;
@@ -1693,7 +1690,7 @@ lookup_block_symbol (register const struct block *block, const char *name,
if (SYMBOL_NAMESPACE (sym) == namespace
&& (mangled_name
? strcmp (DEPRECATED_SYMBOL_NAME (sym), mangled_name) == 0
- : SYMBOL_MATCHES_NAME (sym, name)))
+ : SYMBOL_MATCHES_NATURAL_NAME (sym, name)))
{
return sym;
}
@@ -1728,7 +1725,7 @@ lookup_block_symbol (register const struct block *block, const char *name,
if (SYMBOL_NAMESPACE (sym) == namespace
&& (mangled_name
? strcmp (DEPRECATED_SYMBOL_NAME (sym), mangled_name) == 0
- : SYMBOL_MATCHES_NAME (sym, name)))
+ : SYMBOL_MATCHES_NATURAL_NAME (sym, name)))
{
/* If SYM has aliases, then use any alias that is active
at the current PC. If no alias is active at the current
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 9e515de9321..79705fec06d 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -217,11 +217,24 @@ extern char *symbol_demangled_name (struct general_symbol_info *symbol);
"foo :: bar (int, long)".
Evaluates to zero if the match fails, or nonzero if it succeeds. */
-#define SYMBOL_MATCHES_NAME(symbol, name) \
+/* FIXME: carlton/2003-02-27: This is an unholy mixture of linkage
+ names and natural names. If you want to test the linkage names
+ with strcmp, do that. If you want to test the natural names with
+ strcmp_iw, use SYMBOL_MATCHES_NATURAL_NAME. */
+
+#define DEPRECATED_SYMBOL_MATCHES_NAME(symbol, name) \
(STREQ (DEPRECATED_SYMBOL_NAME (symbol), (name)) \
|| (SYMBOL_DEMANGLED_NAME (symbol) != NULL \
&& strcmp_iw (SYMBOL_DEMANGLED_NAME (symbol), (name)) == 0))
+/* Macro that tests a symbol for a match against a specified name
+ string. It tests against SYMBOL_NATURAL_NAME, and it ignores
+ whitespace and trailing parentheses. (See strcmp_iw for details
+ about its behavior.) */
+
+#define SYMBOL_MATCHES_NATURAL_NAME(symbol, name) \
+ (strcmp_iw (SYMBOL_NATURAL_NAME (symbol), (name)) == 0)
+
/* Define a simple structure used to hold some very basic information about
all defined global symbols (text, data, bss, abs, etc). The only required
information is the general_symbol_info.