summaryrefslogtreecommitdiffstats
path: root/gdb/dbxread.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/dbxread.c')
-rw-r--r--gdb/dbxread.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index b41a1ca21c..42ca221c90 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -235,7 +235,7 @@ static unsigned int symnum;
translated through the type_translations hash table to get
the index into the type vector.) */
-static struct typevector *type_vector;
+static struct type **type_vector;
/* Number of elements allocated for type_vector currently. */
@@ -629,14 +629,13 @@ dbx_lookup_type (typenums)
while (index >= type_vector_length)
{
type_vector_length *= 2;
- type_vector = (struct typevector *)
+ type_vector = (struct type **)
xrealloc (type_vector,
- (sizeof (struct typevector)
- + type_vector_length * sizeof (struct type *)));
- bzero (&type_vector->type[type_vector_length / 2],
+ (type_vector_length * sizeof (struct type *)));
+ bzero (&type_vector[type_vector_length / 2],
type_vector_length * sizeof (struct type *) / 2);
}
- return &type_vector->type[index];
+ return &type_vector[index];
}
else
{
@@ -1026,10 +1025,9 @@ start_symtab (name, dirname, start_addr)
new_object_header_files ();
type_vector_length = 160;
- type_vector = (struct typevector *)
- xmalloc (sizeof (struct typevector)
- + type_vector_length * sizeof (struct type *));
- bzero (type_vector->type, type_vector_length * sizeof (struct type *));
+ type_vector = (struct type **)
+ xmalloc (type_vector_length * sizeof (struct type *));
+ bzero (type_vector, type_vector_length * sizeof (struct type *));
/* Initialize the list of sub source files with one entry
for this file (the top-level source file). */
@@ -1156,15 +1154,11 @@ end_symtab (end_addr)
symtab->linetable = (struct linetable *)
xrealloc (lv, (sizeof (struct linetable)
+ lv->nitems * sizeof (struct linetable_entry)));
- type_vector->length = type_vector_length;
- symtab->typevector = type_vector;
symtab->dirname = subfile->dirname;
symtab->free_code = free_linetable;
symtab->free_ptr = 0;
- if (subfile->next == 0)
- symtab->free_ptr = (char *) type_vector;
/* There should never already be a symtab for this name, since
any prev dups have been removed when the psymtab was read in.
@@ -1179,6 +1173,7 @@ end_symtab (end_addr)
free (subfile);
}
+ free ((char *) type_vector);
type_vector = 0;
type_vector_length = -1;
line_vector = 0;
OpenPOWER on IntegriCloud