Updated copyright notices for most files.
[deliverable/binutils-gdb.git] / gdb / buildsym.c
index 93090ede2667a7bbfbda4c0fe913f45a00bacbac..cccd769ffa9b4f3480f3ee9c25058519648a7455 100644 (file)
@@ -1,13 +1,13 @@
 /* Support routines for building symbol tables in GDB's internal format.
-   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+   Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008
    Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -16,9 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* This module provides subroutines used for creating and adding to
    the symbol table.  These routines are called from various symbol-
@@ -38,7 +36,6 @@
 #include "complaints.h"
 #include "gdb_string.h"
 #include "expression.h"                /* For "enum exp_opcode" used by... */
-#include "language.h"          /* For "local_hex_string" */
 #include "bcache.h"
 #include "filenames.h"         /* For DOSish file names */
 #include "macrotab.h"
@@ -46,6 +43,7 @@
 #include "block.h"
 #include "cp-support.h"
 #include "dictionary.h"
+#include "addrmap.h"
 
 /* Ask buildsym.h to define the vars it normally declares `extern'.  */
 #define        EXTERN
 
 #include "stabsread.h"
 
+/* List of subfiles.  */
+
+static struct subfile *subfiles;
+
 /* List of free `struct pending' structures for reuse.  */
 
 static struct pending *free_pendings;
@@ -66,6 +68,23 @@ static struct pending *free_pendings;
    otherwise empty symtab from being tossed.  */
 
 static int have_line_numbers;
+
+/* The mutable address map for the compilation unit whose symbols
+   we're currently reading.  The symtabs' shared blockvector will
+   point to a fixed copy of this.  */
+static struct addrmap *pending_addrmap;
+
+/* The obstack on which we allocate pending_addrmap.
+   If pending_addrmap is NULL, this is uninitialized; otherwise, it is
+   initialized (and holds pending_addrmap).  */
+static struct obstack pending_addrmap_obstack;
+
+/* Non-zero if we recorded any ranges in the addrmap that are
+   different from those in the blockvector already.  We set this to
+   zero when we start processing a symfile, and if it's still zero at
+   the end, then we just toss the addrmap.  */
+static int pending_addrmap_interesting;
+
 \f
 static int compare_line_numbers (const void *ln1p, const void *ln2p);
 \f
@@ -194,6 +213,12 @@ really_free_pendings (void *dummy)
 
   if (pending_macros)
     free_macro_table (pending_macros);
+
+  if (pending_addrmap)
+    {
+      obstack_free (&pending_addrmap_obstack, NULL);
+      pending_addrmap = NULL;
+    }
 }
 
 /* This function is called to discard any pending blocks. */
@@ -201,17 +226,8 @@ really_free_pendings (void *dummy)
 void
 free_pending_blocks (void)
 {
-#if 0                          /* Now we make the links in the
-                                  symbol_obstack, so don't free
-                                  them.  */
-  struct pending_block *bnext, *bnext1;
-
-  for (bnext = pending_blocks; bnext; bnext = bnext1)
-    {
-      bnext1 = bnext->next;
-      xfree ((void *) bnext);
-    }
-#endif
+  /* The links are made in the objfile_obstack, so we only need to
+     reset PENDING_BLOCKS.  */
   pending_blocks = NULL;
 }
 
@@ -219,7 +235,7 @@ free_pending_blocks (void)
    the order the symbols have in the list (reversed from the input
    file).  Put the block on the list of pending blocks.  */
 
-void
+struct block *
 finish_block (struct symbol *symbol, struct pending **listhead,
              struct pending_block *old_blocks,
              CORE_ADDR start, CORE_ADDR end,
@@ -230,16 +246,16 @@ finish_block (struct symbol *symbol, struct pending **listhead,
   struct pending_block *pblock;
   struct pending_block *opblock;
 
-  block = allocate_block (&objfile->symbol_obstack);
+  block = allocate_block (&objfile->objfile_obstack);
 
   if (symbol)
     {
-      BLOCK_DICT (block) = dict_create_linear (&objfile->symbol_obstack,
+      BLOCK_DICT (block) = dict_create_linear (&objfile->objfile_obstack,
                                               *listhead);
     }
   else
     {
-      BLOCK_DICT (block) = dict_create_hashed (&objfile->symbol_obstack,
+      BLOCK_DICT (block) = dict_create_hashed (&objfile->objfile_obstack,
                                               *listhead);
     }
 
@@ -249,8 +265,6 @@ finish_block (struct symbol *symbol, struct pending **listhead,
   BLOCK_SUPERBLOCK (block) = NULL;
   BLOCK_NAMESPACE (block) = NULL;
 
-  BLOCK_GCC_COMPILED (block) = processing_gcc_compilation;
-
   /* Put the block in as the value of the symbol that names it.  */
 
   if (symbol)
@@ -347,7 +361,7 @@ finish_block (struct symbol *symbol, struct pending **listhead,
       /* If we're in the C++ case, set the block's scope.  */
       if (SYMBOL_LANGUAGE (symbol) == language_cplus)
        {
-         cp_set_block_scope (symbol, block, &objfile->symbol_obstack);
+         cp_set_block_scope (symbol, block, &objfile->objfile_obstack);
        }
     }
   else
@@ -365,7 +379,6 @@ finish_block (struct symbol *symbol, struct pending **listhead,
     }
   *listhead = NULL;
 
-#if 1
   /* Check to be sure that the blocks have an end address that is
      greater than starting address */
 
@@ -374,19 +387,18 @@ finish_block (struct symbol *symbol, struct pending **listhead,
       if (symbol)
        {
          complaint (&symfile_complaints,
-                    "block end address less than block start address in %s (patched it)",
+                    _("block end address less than block start address in %s (patched it)"),
                     SYMBOL_PRINT_NAME (symbol));
        }
       else
        {
          complaint (&symfile_complaints,
-                    "block end address 0x%s less than block start address 0x%s (patched it)",
+                    _("block end address 0x%s less than block start address 0x%s (patched it)"),
                     paddr_nz (BLOCK_END (block)), paddr_nz (BLOCK_START (block)));
        }
       /* Better than nothing */
       BLOCK_END (block) = BLOCK_START (block);
     }
-#endif
 
   /* Install this block as the superblock of all blocks made since the
      start of this scope that don't have superblocks yet.  */
@@ -398,23 +410,27 @@ finish_block (struct symbol *symbol, struct pending **listhead,
     {
       if (BLOCK_SUPERBLOCK (pblock->block) == NULL)
        {
-#if 1
          /* Check to be sure the blocks are nested as we receive
             them. If the compiler/assembler/linker work, this just
-            burns a small amount of time.  */
-         if (BLOCK_START (pblock->block) < BLOCK_START (block) ||
-             BLOCK_END (pblock->block) > BLOCK_END (block))
+            burns a small amount of time.
+
+            Skip blocks which correspond to a function; they're not
+            physically nested inside this other blocks, only
+            lexically nested.  */
+         if (BLOCK_FUNCTION (pblock->block) == NULL
+             && (BLOCK_START (pblock->block) < BLOCK_START (block)
+                 || BLOCK_END (pblock->block) > BLOCK_END (block)))
            {
              if (symbol)
                {
                  complaint (&symfile_complaints,
-                            "inner block not inside outer block in %s",
+                            _("inner block not inside outer block in %s"),
                             SYMBOL_PRINT_NAME (symbol));
                }
              else
                {
                  complaint (&symfile_complaints,
-                            "inner block (0x%s-0x%s) not inside outer block (0x%s-0x%s)",
+                            _("inner block (0x%s-0x%s) not inside outer block (0x%s-0x%s)"),
                             paddr_nz (BLOCK_START (pblock->block)),
                             paddr_nz (BLOCK_END (pblock->block)),
                             paddr_nz (BLOCK_START (block)),
@@ -425,13 +441,14 @@ finish_block (struct symbol *symbol, struct pending **listhead,
              if (BLOCK_END (pblock->block) > BLOCK_END (block))
                BLOCK_END (pblock->block) = BLOCK_END (block);
            }
-#endif
          BLOCK_SUPERBLOCK (pblock->block) = block;
        }
       opblock = pblock;
     }
 
   record_pending_block (objfile, block, opblock);
+
+  return block;
 }
 
 
@@ -439,7 +456,7 @@ finish_block (struct symbol *symbol, struct pending **listhead,
    OPBLOCK, or at the beginning if opblock is NULL.  This puts the
    block in the list after all its subblocks.
 
-   Allocate the pending block struct in the symbol_obstack to save
+   Allocate the pending block struct in the objfile_obstack to save
    time.  This wastes a little space.  FIXME: Is it worth it?  */
 
 void
@@ -449,7 +466,7 @@ record_pending_block (struct objfile *objfile, struct block *block,
   struct pending_block *pblock;
 
   pblock = (struct pending_block *)
-    obstack_alloc (&objfile->symbol_obstack, sizeof (struct pending_block));
+    obstack_alloc (&objfile->objfile_obstack, sizeof (struct pending_block));
   pblock->block = block;
   if (opblock)
     {
@@ -463,6 +480,38 @@ record_pending_block (struct objfile *objfile, struct block *block,
     }
 }
 
+
+/* Record that the range of addresses from START to END_INCLUSIVE
+   (inclusive, like it says) belongs to BLOCK.  BLOCK's start and end
+   addresses must be set already.  You must apply this function to all
+   BLOCK's children before applying it to BLOCK.
+
+   If a call to this function complicates the picture beyond that
+   already provided by BLOCK_START and BLOCK_END, then we create an
+   address map for the block.  */
+void
+record_block_range (struct block *block,
+                    CORE_ADDR start, CORE_ADDR end_inclusive)
+{
+  /* If this is any different from the range recorded in the block's
+     own BLOCK_START and BLOCK_END, then note that the address map has
+     become interesting.  Note that even if this block doesn't have
+     any "interesting" ranges, some later block might, so we still
+     need to record this block in the addrmap.  */
+  if (start != BLOCK_START (block)
+      || end_inclusive + 1 != BLOCK_END (block))
+    pending_addrmap_interesting = 1;
+
+  if (! pending_addrmap)
+    {
+      obstack_init (&pending_addrmap_obstack);
+      pending_addrmap = addrmap_create_mutable (&pending_addrmap_obstack);
+    }
+
+  addrmap_set_empty (pending_addrmap, start, end_inclusive, block);
+}
+
+
 static struct blockvector *
 make_blockvector (struct objfile *objfile)
 {
@@ -477,7 +526,7 @@ make_blockvector (struct objfile *objfile)
     }
 
   blockvector = (struct blockvector *)
-    obstack_alloc (&objfile->symbol_obstack,
+    obstack_alloc (&objfile->objfile_obstack,
                   (sizeof (struct blockvector)
                    + (i - 1) * sizeof (struct block *)));
 
@@ -493,23 +542,19 @@ make_blockvector (struct objfile *objfile)
       BLOCKVECTOR_BLOCK (blockvector, --i) = next->block;
     }
 
-#if 0                          /* Now we make the links in the
-                                  obstack, so don't free them.  */
-  /* Now free the links of the list, and empty the list.  */
-
-  for (next = pending_blocks; next; next = next1)
-    {
-      next1 = next->next;
-      xfree (next);
-    }
-#endif
-  pending_blocks = NULL;
+  free_pending_blocks ();
 
-#if 1                          /* FIXME, shut this off after a while
-                                  to speed up symbol reading.  */
+  /* If we needed an address map for this symtab, record it in the
+     blockvector.  */
+  if (pending_addrmap && pending_addrmap_interesting)
+    BLOCKVECTOR_MAP (blockvector)
+      = addrmap_create_fixed (pending_addrmap, &objfile->objfile_obstack);
+  else
+    BLOCKVECTOR_MAP (blockvector) = 0;
+        
   /* Some compilers output blocks in the wrong order, but we depend on
      their being in the right order so we can binary search. Check the
-     order and moan about it.  FIXME.  */
+     order and moan about it.  */
   if (BLOCKVECTOR_NBLOCKS (blockvector) > 1)
     {
       for (i = 1; i < BLOCKVECTOR_NBLOCKS (blockvector); i++)
@@ -520,12 +565,11 @@ make_blockvector (struct objfile *objfile)
              CORE_ADDR start
                = BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
 
-             complaint (&symfile_complaints, "block at %s out of order",
-                        local_hex_string ((LONGEST) start));
+             complaint (&symfile_complaints, _("block at %s out of order"),
+                        hex_string ((LONGEST) start));
            }
        }
     }
-#endif
 
   return (blockvector);
 }
@@ -533,7 +577,7 @@ make_blockvector (struct objfile *objfile)
 /* Start recording information about source code that came from an
    included (or otherwise merged-in) source file with a different
    name.  NAME is the name of the file (cannot be NULL), DIRNAME is
-   the directory in which it resides (or NULL if not known).  */
+   the directory in which the file was compiled (or NULL if not known).  */
 
 void
 start_subfile (char *name, char *dirname)
@@ -545,11 +589,27 @@ start_subfile (char *name, char *dirname)
 
   for (subfile = subfiles; subfile; subfile = subfile->next)
     {
-      if (FILENAME_CMP (subfile->name, name) == 0)
+      char *subfile_name;
+
+      /* If NAME is an absolute path, and this subfile is not, then
+        attempt to create an absolute path to compare.  */
+      if (IS_ABSOLUTE_PATH (name)
+         && !IS_ABSOLUTE_PATH (subfile->name)
+         && subfile->dirname != NULL)
+       subfile_name = concat (subfile->dirname, SLASH_STRING,
+                              subfile->name, NULL);
+      else
+       subfile_name = subfile->name;
+
+      if (FILENAME_CMP (subfile_name, name) == 0)
        {
          current_subfile = subfile;
+         if (subfile_name != subfile->name)
+           xfree (subfile_name);
          return;
        }
+      if (subfile_name != subfile->name)
+       xfree (subfile_name);
     }
 
   /* This subfile is not known.  Add an entry for it. Make an entry
@@ -592,6 +652,9 @@ start_subfile (char *name, char *dirname)
      later via a call to record_debugformat. */
   subfile->debugformat = NULL;
 
+  /* Similarly for the producer.  */
+  subfile->producer = NULL;
+
   /* If the filename of this subfile ends in .C, then change the
      language of any pending subfiles from C to C++.  We also accept
      any other C++ suffixes accepted by deduce_language_from_filename.  */
@@ -675,7 +738,7 @@ push_subfile (void)
   subfile_stack = tem;
   if (current_subfile == NULL || current_subfile->name == NULL)
     {
-      internal_error (__FILE__, __LINE__, "failed internal consistency check");
+      internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
     }
   tem->name = current_subfile->name;
 }
@@ -688,7 +751,7 @@ pop_subfile (void)
 
   if (link == NULL)
     {
-      internal_error (__FILE__, __LINE__, "failed internal consistency check");
+      internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
     }
   name = link->name;
   subfile_stack = link->next;
@@ -731,9 +794,34 @@ record_line (struct subfile *subfile, int line, CORE_ADDR pc)
                      * sizeof (struct linetable_entry))));
     }
 
+  pc = gdbarch_addr_bits_remove (current_gdbarch, pc);
+
+  /* Normally, we treat lines as unsorted.  But the end of sequence
+     marker is special.  We sort line markers at the same PC by line
+     number, so end of sequence markers (which have line == 0) appear
+     first.  This is right if the marker ends the previous function,
+     and there is no padding before the next function.  But it is
+     wrong if the previous line was empty and we are now marking a
+     switch to a different subfile.  We must leave the end of sequence
+     marker at the end of this group of lines, not sort the empty line
+     to after the marker.  The easiest way to accomplish this is to
+     delete any empty lines from our table, if they are followed by
+     end of sequence markers.  All we lose is the ability to set
+     breakpoints at some lines which contain no instructions
+     anyway.  */
+  if (line == 0 && subfile->line_vector->nitems > 0)
+    {
+      e = subfile->line_vector->item + subfile->line_vector->nitems - 1;
+      while (subfile->line_vector->nitems > 0 && e->pc == pc)
+       {
+         e--;
+         subfile->line_vector->nitems--;
+       }
+    }
+
   e = subfile->line_vector->item + subfile->line_vector->nitems++;
   e->line = line;
-  e->pc = ADDR_BITS_REMOVE(pc);
+  e->pc = pc;
 }
 
 /* Needed in order to sort line tables from IBM xcoff files.  Sigh!  */
@@ -760,12 +848,15 @@ compare_line_numbers (const void *ln1p, const void *ln2p)
 /* Start a new symtab for a new source file.  Called, for example,
    when a stabs symbol of type N_SO is seen, or when a DWARF
    TAG_compile_unit DIE is seen.  It indicates the start of data for
-   one original source file.  */
+   one original source file.
+
+   NAME is the name of the file (cannot be NULL).  DIRNAME is the directory in
+   which the file was compiled (or NULL if not known).  START_ADDR is the
+   lowest address of objects in the file (or 0 if not known).  */
 
 void
 start_symtab (char *name, char *dirname, CORE_ADDR start_addr)
 {
-
   last_source_file = name;
   last_source_start_addr = start_addr;
   file_symbols = NULL;
@@ -783,6 +874,9 @@ start_symtab (char *name, char *dirname, CORE_ADDR start_addr)
     }
   context_stack_depth = 0;
 
+  /* We shouldn't have any address map at this point.  */
+  gdb_assert (! pending_addrmap);
+
   /* Set up support for C++ namespace support, in case we need it.  */
 
   cp_initialize_namespace ();
@@ -839,7 +933,7 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
             believed to happen in most cases (even for coffread.c);
             it used to be an abort().  */
          complaint (&symfile_complaints,
-                    "Context stack not empty in end_symtab");
+                    _("Context stack not empty in end_symtab"));
          context_stack_depth = 0;
        }
     }
@@ -909,13 +1003,12 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
                    objfile);
       blockvector = make_blockvector (objfile);
       cp_finalize_namespace (BLOCKVECTOR_BLOCK (blockvector, STATIC_BLOCK),
-                            &objfile->symbol_obstack);
+                            &objfile->objfile_obstack);
     }
 
-#ifndef PROCESS_LINENUMBER_HOOK
-#define PROCESS_LINENUMBER_HOOK()
-#endif
-  PROCESS_LINENUMBER_HOOK ();  /* Needed for xcoff. */
+  /* Read the line table if it has to be read separately.  */
+  if (objfile->sf->sym_read_linetable != NULL)
+    objfile->sf->sym_read_linetable ();
 
   /* Now create the symtab objects proper, one for each subfile.  */
   /* (The main file is the last one on the chain.)  */
@@ -933,14 +1026,6 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
            {
              linetablesize = sizeof (struct linetable) +
                subfile->line_vector->nitems * sizeof (struct linetable_entry);
-#if 0
-             /* I think this is artifact from before it went on the
-                obstack. I doubt we'll need the memory between now
-                and when we free it later in this function.  */
-             /* First, shrink the linetable to make more memory.  */
-             subfile->line_vector = (struct linetable *)
-               xrealloc ((char *) subfile->line_vector, linetablesize);
-#endif
 
              /* Like the pending blocks, the line table may be
                 scrambled in reordered executables.  Sort it if
@@ -952,7 +1037,10 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
            }
 
          /* Now, allocate a symbol table.  */
-         symtab = allocate_symtab (subfile->name, objfile);
+         if (subfile->symtab == NULL)
+           symtab = allocate_symtab (subfile->name, objfile);
+         else
+           symtab = subfile->symtab;
 
          /* Fill in its components.  */
          symtab->blockvector = blockvector;
@@ -961,7 +1049,7 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
            {
              /* Reallocate the line table on the symbol obstack */
              symtab->linetable = (struct linetable *)
-               obstack_alloc (&objfile->symbol_obstack, linetablesize);
+               obstack_alloc (&objfile->objfile_obstack, linetablesize);
              memcpy (symtab->linetable, subfile->line_vector, linetablesize);
            }
          else
@@ -973,7 +1061,7 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
            {
              /* Reallocate the dirname on the symbol obstack */
              symtab->dirname = (char *)
-               obstack_alloc (&objfile->symbol_obstack,
+               obstack_alloc (&objfile->objfile_obstack,
                               strlen (subfile->dirname) + 1);
              strcpy (symtab->dirname, subfile->dirname);
            }
@@ -997,9 +1085,15 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
            {
              symtab->debugformat = obsavestring (subfile->debugformat,
                                              strlen (subfile->debugformat),
-                                                 &objfile->symbol_obstack);
+                                                 &objfile->objfile_obstack);
            }
 
+         /* Similarly for the producer.  */
+         if (subfile->producer != NULL)
+           symtab->producer = obsavestring (subfile->producer,
+                                            strlen (subfile->producer),
+                                            &objfile->objfile_obstack);
+
          /* All symtabs for the main file and the subfiles share a
             blockvector, so we need to clear primary for everything
             but the main file.  */
@@ -1022,6 +1116,8 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
        {
          xfree ((void *) subfile->debugformat);
        }
+      if (subfile->producer != NULL)
+       xfree (subfile->producer);
 
       nextsub = subfile->next;
       xfree ((void *) subfile);
@@ -1033,9 +1129,34 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
       symtab->primary = 1;
     }
 
+  /* Default any symbols without a specified symtab to the primary
+     symtab.  */
+  if (blockvector)
+    {
+      int block_i;
+
+      for (block_i = 0; block_i < BLOCKVECTOR_NBLOCKS (blockvector); block_i++)
+       {
+         struct block *block = BLOCKVECTOR_BLOCK (blockvector, block_i);
+         struct symbol *sym;
+         struct dict_iterator iter;
+
+         for (sym = dict_iterator_first (BLOCK_DICT (block), &iter);
+              sym != NULL;
+              sym = dict_iterator_next (&iter))
+           if (SYMBOL_SYMTAB (sym) == NULL)
+             SYMBOL_SYMTAB (sym) = symtab;
+       }
+    }
+
   last_source_file = NULL;
   current_subfile = NULL;
   pending_macros = NULL;
+  if (pending_addrmap)
+    {
+      obstack_free (&pending_addrmap_obstack, NULL);
+      pending_addrmap = NULL;
+    }
 
   return symtab;
 }
@@ -1098,6 +1219,17 @@ record_debugformat (char *format)
   current_subfile->debugformat = savestring (format, strlen (format));
 }
 
+void
+record_producer (const char *producer)
+{
+  /* The producer is not always provided in the debugging info.
+     Do nothing if PRODUCER is NULL.  */
+  if (producer == NULL)
+    return;
+
+  current_subfile->producer = savestring (producer, strlen (producer));
+}
+
 /* Merge the first symbol list SRCLIST into the second symbol list
    TARGETLIST by repeated calls to add_symbol_to_list().  This
    procedure "frees" each link of SRCLIST by adding it to the
@@ -1138,6 +1270,10 @@ buildsym_init (void)
   global_symbols = NULL;
   pending_blocks = NULL;
   pending_macros = NULL;
+
+  /* We shouldn't have any address map at this point.  */
+  gdb_assert (! pending_addrmap);
+  pending_addrmap_interesting = 0;
 }
 
 /* Initialize anything that needs initializing when a completely new
This page took 0.032134 seconds and 4 git commands to generate.