/* Support routines for building symbol tables in GDB's internal format.
- Copyright 1986-2000 Free Software Foundation, Inc.
+ Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+ 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GDB.
#include "gdbtypes.h"
#include "complaints.h"
#include "gdb_string.h"
-
+#include "expression.h" /* For "enum exp_opcode" used by... */
+#include "language.h" /* For "longest_local_hex_string_custom" */
+#include "bcache.h"
+#include "filenames.h" /* For DOSish file names */
/* Ask buildsym.h to define the vars it normally declares `extern'. */
#define EXTERN
/**/
for (next = free_pendings; next; next = next1)
{
next1 = next->next;
- free ((void *) next);
+ xfree ((void *) next);
}
free_pendings = NULL;
for (next = file_symbols; next != NULL; next = next1)
{
next1 = next->next;
- free ((void *) next);
+ xfree ((void *) next);
}
file_symbols = NULL;
for (next = global_symbols; next != NULL; next = next1)
{
next1 = next->next;
- free ((void *) next);
+ xfree ((void *) next);
}
global_symbols = NULL;
}
for (bnext = pending_blocks; bnext; bnext = bnext1)
{
bnext1 = bnext->next;
- free ((void *) bnext);
+ xfree ((void *) bnext);
}
#endif
pending_blocks = NULL;
for (next = pending_blocks; next; next = next1)
{
next1 = next->next;
- free (next);
+ xfree (next);
}
#endif
pending_blocks = NULL;
for (subfile = subfiles; subfile; subfile = subfile->next)
{
- if (STREQ (subfile->name, name))
+ if (FILENAME_CMP (subfile->name, name) == 0)
{
current_subfile = subfile;
return;
subfile_stack = tem;
if (current_subfile == NULL || current_subfile->name == NULL)
{
- abort ();
+ internal_error (__FILE__, __LINE__, "failed internal consistency check");
}
tem->name = current_subfile->name;
}
if (link == NULL)
{
- abort ();
+ internal_error (__FILE__, __LINE__, "failed internal consistency check");
}
name = link->name;
subfile_stack = link->next;
- free ((void *) link);
+ xfree ((void *) link);
return (name);
}
\f
e = subfile->line_vector->item + subfile->line_vector->nitems++;
e->line = line;
- e->pc = pc;
+ e->pc = ADDR_BITS_REMOVE(pc);
}
/* Needed in order to sort line tables from IBM xcoff files. Sigh! */
}
if (subfile->name != NULL)
{
- free ((void *) subfile->name);
+ xfree ((void *) subfile->name);
}
if (subfile->dirname != NULL)
{
- free ((void *) subfile->dirname);
+ xfree ((void *) subfile->dirname);
}
if (subfile->line_vector != NULL)
{
- free ((void *) subfile->line_vector);
+ xfree ((void *) subfile->line_vector);
}
if (subfile->debugformat != NULL)
{
- free ((void *) subfile->debugformat);
+ xfree ((void *) subfile->debugformat);
}
nextsub = subfile->next;
- free ((void *) subfile);
+ xfree ((void *) subfile);
}
/* Set this for the main source file. */
return new;
}
\f
+
/* Compute a small integer hash code for the given name. */
int
hashname (char *name)
{
- register char *p = name;
- register int total = p[0];
- register int c;
-
- c = p[1];
- total += c << 2;
- if (c)
- {
- c = p[2];
- total += c << 4;
- if (c)
- {
- total += p[3] << 6;
- }
- }
-
- /* Ensure result is positive. */
- if (total < 0)
- {
- total += (1000 << 6);
- }
- return (total % HASHSIZE);
+ return (hash(name,strlen(name)) % HASHSIZE);
}
\f
corresponding to a psymtab. */
void
-buildsym_init ()
+buildsym_init (void)
{
free_pendings = NULL;
file_symbols = NULL;
file, e.g. a shared library). */
void
-buildsym_new_init ()
+buildsym_new_init (void)
{
buildsym_init ();
}