* minsyms.c (install_minimal_symbols): Move dropping leading
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 29 Mar 2004 11:26:04 +0000 (11:26 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 29 Mar 2004 11:26:04 +0000 (11:26 +0000)
char from linkage name from here...
(prim_record_minimal_symbol_and_info): ...to here.  Simplify
test for "__gnu_compiled*" symbols.

gdb/ChangeLog
gdb/minsyms.c

index 77ad9cb057c7efbe51ae96693d26b409c5fdaf9e..153997a56d93690ef952fe167fc80c35b78de4c9 100644 (file)
@@ -1,3 +1,10 @@
+2004-03-29  Corinna Vinschen  <vinschen@redhat.com>
+
+       * minsyms.c (install_minimal_symbols): Move dropping leading
+       char from linkage name from here...
+       (prim_record_minimal_symbol_and_info): ...to here.  Simplify
+       test for "__gnu_compiled*" symbols.
+
 2004-03-28  Jim Blandy  <jimb@redhat.com>
 
        * rs6000-tdep.c (skip_prologue): Recognize moves from argument
index 83aef9d442876dd2c16c466c9729582685fd6229..b06c3f09d63b8719d88d0b7824f1fe7b2884ab8a 100644 (file)
@@ -580,26 +580,23 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address,
   struct msym_bunch *new;
   struct minimal_symbol *msymbol;
 
-  if (ms_type == mst_file_text)
-    {
-      /* Don't put gcc_compiled, __gnu_compiled_cplus, and friends into
-         the minimal symbols, because if there is also another symbol
-         at the same address (e.g. the first function of the file),
-         lookup_minimal_symbol_by_pc would have no way of getting the
-         right one.  */
-      if (name[0] == 'g'
-         && (strcmp (name, GCC_COMPILED_FLAG_SYMBOL) == 0
-             || strcmp (name, GCC2_COMPILED_FLAG_SYMBOL) == 0))
-       return (NULL);
-
-      {
-       const char *tempstring = name;
-       if (tempstring[0] == get_symbol_leading_char (objfile->obfd))
-         ++tempstring;
-       if (strncmp (tempstring, "__gnu_compiled", 14) == 0)
-         return (NULL);
-      }
-    }
+  /* Don't put gcc_compiled, __gnu_compiled_cplus, and friends into
+     the minimal symbols, because if there is also another symbol
+     at the same address (e.g. the first function of the file),
+     lookup_minimal_symbol_by_pc would have no way of getting the
+     right one.  */
+  if (ms_type == mst_file_text && name[0] == 'g'
+      && (strcmp (name, GCC_COMPILED_FLAG_SYMBOL) == 0
+         || strcmp (name, GCC2_COMPILED_FLAG_SYMBOL) == 0))
+    return (NULL);
+
+  /* It's safe to strip the leading char here once, since the name
+     is also stored stripped in the minimal symbol table. */
+  if (name[0] == get_symbol_leading_char (objfile->obfd))
+    ++name;
+
+  if (ms_type == mst_file_text && strncmp (name, "__gnu_compiled", 14) == 0)
+    return (NULL);
 
   if (msym_bunch_index == BUNCH_SIZE)
     {
@@ -831,7 +828,6 @@ install_minimal_symbols (struct objfile *objfile)
   struct msym_bunch *bunch;
   struct minimal_symbol *msymbols;
   int alloc_count;
-  char leading_char;
 
   if (msym_count > 0)
     {
@@ -859,18 +855,11 @@ install_minimal_symbols (struct objfile *objfile)
          each bunch is full. */
 
       mcount = objfile->minimal_symbol_count;
-      leading_char = get_symbol_leading_char (objfile->obfd);
 
       for (bunch = msym_bunch; bunch != NULL; bunch = bunch->next)
        {
          for (bindex = 0; bindex < msym_bunch_index; bindex++, mcount++)
-           {
-             msymbols[mcount] = bunch->contents[bindex];
-             if (SYMBOL_LINKAGE_NAME (&msymbols[mcount])[0] == leading_char)
-               {
-                 SYMBOL_LINKAGE_NAME (&msymbols[mcount])++;
-               }
-           }
+           msymbols[mcount] = bunch->contents[bindex];
          msym_bunch_index = BUNCH_SIZE;
        }