* buildsym.h (add_free_pendings): Declare.
authorJim Blandy <jimb@codesourcery.com>
Fri, 18 Feb 2000 22:15:46 +0000 (22:15 +0000)
committerJim Blandy <jimb@codesourcery.com>
Fri, 18 Feb 2000 22:15:46 +0000 (22:15 +0000)
* buildsym.c (add_free_pendings): New function.
(make_blockvector): 32x64 fix using longest_local_hex_string().
(start_subfile): initialize variable 'subfile'.

gdb/buildsym.c
gdb/buildsym.h

index 867a5db7bcdd3b37379c3eca91b6ac5aa6e1b8f0..27dad46fb6d6ea993977e05b630e2486c5c95bee 100644 (file)
@@ -81,10 +81,24 @@ struct complaint innerblock_anon_complaint =
 {"inner block (0x%lx-0x%lx) not inside outer block (0x%lx-0x%lx)", 0, 0};
 
 struct complaint blockvector_complaint =
-{"block at 0x%lx out of order", 0, 0};
+{"block at %s out of order", 0, 0};
 \f
 /* maintain the lists of symbols and blocks */
 
+/* Add a pending list to free_pendings. */
+void
+add_free_pendings (struct pending *list)
+{
+  register struct pending *link = list;
+
+  if (list)
+    {
+      while (link->next) link = link->next;
+      link->next = free_pendings;
+      free_pendings = list;
+    }
+}
+      
 /* Add a symbol to one of the lists of symbols.  */
 
 void
@@ -487,17 +501,11 @@ make_blockvector (struct objfile *objfile)
          if (BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i - 1))
              > BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i)))
            {
-
-             /* FIXME-32x64: loses if CORE_ADDR doesn't fit in a
-                long.  Possible solutions include a version of
-                complain which takes a callback, a
-                sprintf_address_numeric to match
-                print_address_numeric, or a way to set up a UI_FILE
-                which causes sprintf rather than fprintf to be
-                called.  */
+             CORE_ADDR start
+               = BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
 
              complain (&blockvector_complaint,
-                       (unsigned long) BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i)));
+                       longest_local_hex_string ((LONGEST) start));
            }
        }
     }
@@ -533,6 +541,7 @@ start_subfile (char *name, char *dirname)
      source file.  */
 
   subfile = (struct subfile *) xmalloc (sizeof (struct subfile));
+  memset ((char *) subfile, 0, sizeof (struct subfile));
   subfile->next = subfiles;
   subfiles = subfile;
   current_subfile = subfile;
index a67d72275bdb3aecf0d8baac59ced1eec0e1e57d..f9ef5f18e5c307a528aca8b71e7516d767eb607f 100644 (file)
@@ -231,6 +231,8 @@ EXTERN int type_vector_length;
 
 #define        INITIAL_TYPE_VECTOR_LENGTH      160
 
+extern void add_free_pendings (struct pending *list);
+
 extern void add_symbol_to_list (struct symbol *symbol,
                                struct pending **listhead);