* write.c (relax_segment <rs_space>): Calculate growth using
[deliverable/binutils-gdb.git] / gdb / minsyms.c
index 9070b6fee8ffc0f64cf37f296454ae9e902fc0dc..0ed38d2a33a2e8e63b63f35420a68879f70e2597 100644 (file)
@@ -1,5 +1,6 @@
 /* GDB routines for manipulating the minimal symbol tables.
-   Copyright 1992, 93, 94, 96, 97, 1998 Free Software Foundation, Inc.
+   Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+   Free Software Foundation, Inc.
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
    This file is part of GDB.
@@ -46,7 +47,8 @@
 #include "symfile.h"
 #include "objfiles.h"
 #include "demangle.h"
-#include "gdb-stabs.h"
+#include "value.h"
+#include "cp-abi.h"
 
 /* Accumulate the minimal symbols for each objfile in bunches of BUNCH_SIZE.
    At the end, copy them all into one newly allocated location on an objfile's
@@ -482,6 +484,10 @@ lookup_minimal_symbol_by_pc_section (CORE_ADDR pc, asection *section)
              /* This is the new code that distinguishes it from the old function */
              if (section)
                while (hi >= 0
+                      /* Some types of debug info, such as COFF,
+                         don't fill the bfd_section member, so don't
+                         throw away symbols on those platforms.  */
+                      && SYMBOL_BFD_SECTION (&msymbol[hi]) != NULL
                       && SYMBOL_BFD_SECTION (&msymbol[hi]) != section)
                  --hi;
 
@@ -952,9 +958,24 @@ install_minimal_symbols (struct objfile *objfile)
       objfile->minimal_symbol_count = mcount;
       objfile->msymbols = msymbols;
 
+      /* Try to guess the appropriate C++ ABI by looking at the names 
+        of the minimal symbols in the table.  */
+      {
+       int i;
+
+       for (i = 0; i < mcount; i++)
+         {
+           const char *name = SYMBOL_NAME (&objfile->msymbols[i]);
+           if (name[0] == '_' && name[1] == 'Z')
+             {
+               switch_to_cp_abi ("gnu-v3");
+               break;
+             }
+         }
+      }
+      
       /* Now walk through all the minimal symbols, selecting the newly added
          ones and attempting to cache their C++ demangled names. */
-
       for (; mcount-- > 0; msymbols++)
        SYMBOL_INIT_DEMANGLED_NAME (msymbols, &objfile->symbol_obstack);
 
This page took 0.024621 seconds and 4 git commands to generate.