* mn10300-tdep.c (mn10300_gdbarch_init): Rather than using
[deliverable/binutils-gdb.git] / gdb / symtab.c
index a51126a1d8c10262c0b20a278d27c856eb63bf98..8207eef5c2a2076769b31269b28a9318477d9e96 100644 (file)
@@ -37,6 +37,7 @@
 #include "demangle.h"
 #include "inferior.h"
 #include "linespec.h"
+#include "filenames.h"         /* for FILENAME_CMP */
 
 #include "obstack.h"
 
@@ -45,6 +46,7 @@
 #include "gdb_string.h"
 #include "gdb_stat.h"
 #include <ctype.h>
+#include "cp-abi.h"
 
 /* Prototype for one function in parser-defs.h,
    instead of including that entire file. */
@@ -140,7 +142,6 @@ lookup_symtab_1 (char *name)
 {
   register struct symtab *s;
   register struct partial_symtab *ps;
-  register char *slash;
   register struct objfile *objfile;
 
 got_symtab:
@@ -148,23 +149,15 @@ got_symtab:
   /* First, search for an exact match */
 
   ALL_SYMTABS (objfile, s)
-    if (STREQ (name, s->filename))
-    return s;
-
-  slash = strchr (name, '/');
+    if (FILENAME_CMP (name, s->filename) == 0)
+      return s;
 
   /* Now, search for a matching tail (only if name doesn't have any dirs) */
 
-  if (!slash)
+  if (basename (name) == name)
     ALL_SYMTABS (objfile, s)
     {
-      char *p = s->filename;
-      char *tail = strrchr (p, '/');
-
-      if (tail)
-       p = tail + 1;
-
-      if (STREQ (p, name))
+      if (FILENAME_CMP (basename (s->filename), name) == 0)
        return s;
     }
 
@@ -243,7 +236,7 @@ lookup_partial_symtab (char *name)
 
   ALL_PSYMTABS (objfile, pst)
   {
-    if (STREQ (name, pst->filename))
+    if (FILENAME_CMP (name, pst->filename) == 0)
       {
        return (pst);
       }
@@ -251,16 +244,10 @@ lookup_partial_symtab (char *name)
 
   /* Now, search for a matching tail (only if name doesn't have any dirs) */
 
-  if (!strchr (name, '/'))
+  if (basename (name) == name)
     ALL_PSYMTABS (objfile, pst)
     {
-      char *p = pst->filename;
-      char *tail = strrchr (p, '/');
-
-      if (tail)
-       p = tail + 1;
-
-      if (STREQ (p, name))
+      if (FILENAME_CMP (basename (pst->filename), name) == 0)
        return (pst);
     }
 
@@ -288,20 +275,17 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
   int is_full_physname_constructor;
 
   int is_constructor;
-  int is_destructor = DESTRUCTOR_PREFIX_P (physname);
+  int is_destructor = is_destructor_name (physname);
   /* Need a new type prefix.  */
   char *const_prefix = method->is_const ? "C" : "";
   char *volatile_prefix = method->is_volatile ? "V" : "";
   char buf[20];
   int len = (newname == NULL ? 0 : strlen (newname));
 
-  if (OPNAME_PREFIX_P (field_name))
+  if (is_operator_name (field_name))
     return xstrdup (physname);
 
-  is_full_physname_constructor =
-    ((physname[0] == '_' && physname[1] == '_' &&
-      (isdigit (physname[2]) || physname[2] == 'Q' || physname[2] == 't'))
-     || (strncmp (physname, "__ct", 4) == 0));
+  is_full_physname_constructor = is_constructor_name (physname);
 
   is_constructor =
     is_full_physname_constructor || (newname && STREQ (field_name, newname));
@@ -2844,17 +2828,6 @@ completion_list_add_name (char *symname, char *sym_text, int sym_text_len,
       return;
     }
 
-  /* Clip any symbol names that we've already considered.  (This is a
-     time optimization)  */
-
-  for (i = 0; i < return_val_index; ++i)
-    {
-      if (STREQ (symname, return_val[i]))
-       {
-         return;
-       }
-    }
-
   /* We have a match for a completion, so add SYMNAME to the current list
      of matches. Note that the name is moved to freshly malloc'd space. */
 
@@ -2880,19 +2853,6 @@ completion_list_add_name (char *symname, char *sym_text, int sym_text_len,
        strcat (new, symname);
       }
 
-    /* Recheck for duplicates if we intend to add a modified symbol.  */
-    if (word != sym_text)
-      {
-       for (i = 0; i < return_val_index; ++i)
-         {
-           if (STREQ (new, return_val[i]))
-             {
-               xfree (new);
-               return;
-             }
-         }
-      }
-
     if (return_val_index + 3 > return_val_size)
       {
        newsize = (return_val_size *= 2) * sizeof (char *);
This page took 0.024701 seconds and 4 git commands to generate.