mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 06:45:56 +08:00
* mdebugread.c (psymtab_to_symtab_1): Copy linetable to obstack.
(new_symtab): Don't set `free_code' on symtab. (new_linetable): Properly handle size==0. * symtab.h (struct symtab) <free_code, free_func>: Remove. * symmisc.c (free_symtab): Don't free the linetable. Don't call free_func. * jv-lang.c (struct jv_per_objfile_data): New. (jv_per_objfile_free): Free the data. (get_dynamics_objfile): Allocate a jv_per_objfile_data. (get_java_class_symtab): Set the `dict' field on the jv_per_objfile_data. (free_class_block): Remove. * buildsym.c (end_symtab): Don't set `free_code' or `free_func' on the symtab.
This commit is contained in:
@ -4204,7 +4204,7 @@ psymtab_to_symtab_1 (struct partial_symtab *pst, const char *filename)
|
||||
{
|
||||
/* This symbol table contains ordinary ecoff entries. */
|
||||
|
||||
int maxlines;
|
||||
int maxlines, size;
|
||||
EXTR *ext_ptr;
|
||||
|
||||
if (fh == 0)
|
||||
@ -4311,7 +4311,14 @@ psymtab_to_symtab_1 (struct partial_symtab *pst, const char *filename)
|
||||
}
|
||||
}
|
||||
|
||||
LINETABLE (st) = lines;
|
||||
size = lines->nitems;
|
||||
if (size > 1)
|
||||
--size;
|
||||
LINETABLE (st) = obstack_copy (¤t_objfile->objfile_obstack,
|
||||
lines,
|
||||
(sizeof (struct linetable)
|
||||
+ size * sizeof (lines->item)));
|
||||
xfree (lines);
|
||||
|
||||
/* .. and our share of externals.
|
||||
XXX use the global list to speed up things here. How?
|
||||
@ -4763,7 +4770,6 @@ new_symtab (const char *name, int maxlines, struct objfile *objfile)
|
||||
BLOCK_SUPERBLOCK (BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK)) =
|
||||
BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
|
||||
|
||||
s->free_code = free_linetable;
|
||||
s->debugformat = "ECOFF";
|
||||
return (s);
|
||||
}
|
||||
@ -4803,7 +4809,9 @@ new_linetable (int size)
|
||||
{
|
||||
struct linetable *l;
|
||||
|
||||
size = (size - 1) * sizeof (l->item) + sizeof (struct linetable);
|
||||
if (size > 1)
|
||||
--size;
|
||||
size = size * sizeof (l->item) + sizeof (struct linetable);
|
||||
l = (struct linetable *) xmalloc (size);
|
||||
l->nitems = 0;
|
||||
return l;
|
||||
|
Reference in New Issue
Block a user