diff options
author | David Carlton <carlton@bactrian.org> | 2003-03-03 18:34:12 +0000 |
---|---|---|
committer | David Carlton <carlton@bactrian.org> | 2003-03-03 18:34:12 +0000 |
commit | 8e43749752917ad2777c89e45218a7256f05547c (patch) | |
tree | 6281e60277aec8fcfcb64dea97c76b9ab458f284 | |
parent | 25120b0d7a5d5e498fa200d6d14d8ee2cf0cb493 (diff) | |
download | gdb-8e43749752917ad2777c89e45218a7256f05547c.zip gdb-8e43749752917ad2777c89e45218a7256f05547c.tar.gz gdb-8e43749752917ad2777c89e45218a7256f05547c.tar.bz2 |
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/ChangeLog | 15 | ||||
-rw-r--r-- | gdb/minsyms.c | 6 | ||||
-rw-r--r-- | gdb/symtab.c | 13 | ||||
-rw-r--r-- | gdb/symtab.h | 15 |
4 files changed, 37 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b79b9d1..3a544ea 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 057bd8fd..e3f649e 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 af07d77..9ecbd54 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 9e515de..79705fe 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. |