This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [rfa] try to remove uses of DEPRECATED_SYMBOL_NAME in symtab.h
- From: David Carlton <carlton at math dot stanford dot edu>
- To: Elena Zannoni <ezannoni at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com, Jim Blandy <jimb at redhat dot com>
- Date: 03 Mar 2003 10:36:30 -0800
- Subject: Re: [rfa] try to remove uses of DEPRECATED_SYMBOL_NAME in symtab.h
- References: <ro1lm01nx9p.fsf@jackfruit.Stanford.EDU><15970.39249.629140.373607@localhost.redhat.com><ro13cm4iaxp.fsf@jackfruit.Stanford.EDU>
On 03 Mar 2003 10:04:18 -0800, David Carlton <carlton at math dot Stanford dot EDU> said:
> On Sun, 2 Mar 2003 18:52:49 -0500, Elena Zannoni <ezannoni at redhat dot com> said:
>> I think it would make more sense to get rid of the REGEXP macro
>> completely. There are only 4 occurrences, and you are really
>> simplifying it. This should go in as one commit.
>> As a separate commit you can check in the rest of this patch, to fix
>> gdb/33.
>> i.e. deal with one macro at the time.
> Good idea. Here's the regexp patch, which I've just committed; I'll
> prepare the other one in a few minutes.
And here's the other one, which I've also committed: no changes from
the previous version that I submitted (other than, of course, not
deleting SYMBOL_MATCHES_REGEXP).
David Carlton
carlton at math dot stanford dot edu
2003-03-03 David Carlton <carlton at math dot stanford dot 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.
Index: symtab.h
===================================================================
RCS file: /cvs/src/src/gdb/symtab.h,v
retrieving revision 1.64
diff -u -p -r1.64 symtab.h
--- symtab.h 3 Mar 2003 18:01:33 -0000 1.64
+++ symtab.h 3 Mar 2003 18:32:22 -0000
@@ -217,10 +217,23 @@ extern char *symbol_demangled_name (stru
"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
Index: symtab.c
===================================================================
RCS file: /cvs/src/src/gdb/symtab.c,v
retrieving revision 1.96
diff -u -p -r1.96 symtab.c
--- symtab.c 27 Feb 2003 20:48:03 -0000 1.96
+++ symtab.c 27 Feb 2003 22:18:07 -0000
@@ -1423,10 +1423,7 @@ lookup_partial_symbol (struct partial_sy
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_sy
{
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 stru
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 stru
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 stru
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
Index: minsyms.c
===================================================================
RCS file: /cvs/src/src/gdb/minsyms.c,v
retrieving revision 1.26
diff -u -p -r1.26 minsyms.c
--- minsyms.c 25 Feb 2003 21:36:18 -0000 1.26
+++ minsyms.c 27 Feb 2003 22:18:12 -0000
@@ -188,7 +188,7 @@ lookup_minimal_symbol (register const ch
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 con
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 (
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;
}