From: Jim Blandy Date: Fri, 18 Feb 2000 22:15:46 +0000 (+0000) Subject: * buildsym.h (add_free_pendings): Declare. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=59527da01ed91d3e1b397499a5ecff7f58a0912b;p=binutils-gdb.git * buildsym.h (add_free_pendings): Declare. * buildsym.c (add_free_pendings): New function. (make_blockvector): 32x64 fix using longest_local_hex_string(). (start_subfile): initialize variable 'subfile'. --- diff --git a/gdb/buildsym.c b/gdb/buildsym.c index 867a5db7bcd..27dad46fb6d 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -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}; /* 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; diff --git a/gdb/buildsym.h b/gdb/buildsym.h index a67d72275bd..f9ef5f18e5c 100644 --- a/gdb/buildsym.h +++ b/gdb/buildsym.h @@ -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);