mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 04:12:10 +08:00
* dwarf2read.c (init_one_comp_unit): Delete arg "objfile".
New arg "per_cu". All callers updated.
This commit is contained in:
parent
5953832c5a
commit
23745b4786
@ -1,5 +1,8 @@
|
|||||||
2012-01-04 Doug Evans <dje@google.com>
|
2012-01-04 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
|
* dwarf2read.c (init_one_comp_unit): Delete arg "objfile".
|
||||||
|
New arg "per_cu". All callers updated.
|
||||||
|
|
||||||
Delete #if 0'd out code.
|
Delete #if 0'd out code.
|
||||||
* language.c (binop_result_type): Delete.
|
* language.c (binop_result_type): Delete.
|
||||||
(simple_type, ordered_type, same_type, integral_type): Delete.
|
(simple_type, ordered_type, same_type, integral_type): Delete.
|
||||||
|
@ -1269,7 +1269,7 @@ static struct dwarf2_per_cu_data *dwarf2_find_comp_unit
|
|||||||
(unsigned int offset, struct objfile *objfile);
|
(unsigned int offset, struct objfile *objfile);
|
||||||
|
|
||||||
static void init_one_comp_unit (struct dwarf2_cu *cu,
|
static void init_one_comp_unit (struct dwarf2_cu *cu,
|
||||||
struct objfile *objfile);
|
struct dwarf2_per_cu_data *per_cu);
|
||||||
|
|
||||||
static void prepare_one_comp_unit (struct dwarf2_cu *cu,
|
static void prepare_one_comp_unit (struct dwarf2_cu *cu,
|
||||||
struct die_info *comp_unit_die);
|
struct die_info *comp_unit_die);
|
||||||
@ -2277,7 +2277,7 @@ dw2_get_file_names (struct objfile *objfile,
|
|||||||
if (this_cu->v.quick->no_file_data)
|
if (this_cu->v.quick->no_file_data)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
init_one_comp_unit (&cu, objfile);
|
init_one_comp_unit (&cu, this_cu);
|
||||||
cleanups = make_cleanup (free_stack_comp_unit, &cu);
|
cleanups = make_cleanup (free_stack_comp_unit, &cu);
|
||||||
|
|
||||||
if (this_cu->debug_types_section)
|
if (this_cu->debug_types_section)
|
||||||
@ -2302,9 +2302,6 @@ dw2_get_file_names (struct objfile *objfile,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
this_cu->cu = &cu;
|
|
||||||
cu.per_cu = this_cu;
|
|
||||||
|
|
||||||
dwarf2_read_abbrevs (abfd, &cu);
|
dwarf2_read_abbrevs (abfd, &cu);
|
||||||
make_cleanup (dwarf2_free_abbrev_table, &cu);
|
make_cleanup (dwarf2_free_abbrev_table, &cu);
|
||||||
|
|
||||||
@ -3408,7 +3405,20 @@ process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
|
|||||||
struct die_reader_specs reader_specs;
|
struct die_reader_specs reader_specs;
|
||||||
const char *filename;
|
const char *filename;
|
||||||
|
|
||||||
init_one_comp_unit (&cu, objfile);
|
/* If this compilation unit was already read in, free the
|
||||||
|
cached copy in order to read it in again. This is
|
||||||
|
necessary because we skipped some symbols when we first
|
||||||
|
read in the compilation unit (see load_partial_dies).
|
||||||
|
This problem could be avoided, but the benefit is
|
||||||
|
unclear. */
|
||||||
|
if (this_cu->cu != NULL)
|
||||||
|
free_one_cached_comp_unit (this_cu->cu);
|
||||||
|
|
||||||
|
/* Note that this is a pointer to our stack frame, being
|
||||||
|
added to a global data structure. It will be cleaned up
|
||||||
|
in free_stack_comp_unit when we finish with this
|
||||||
|
compilation unit. */
|
||||||
|
init_one_comp_unit (&cu, this_cu);
|
||||||
back_to_inner = make_cleanup (free_stack_comp_unit, &cu);
|
back_to_inner = make_cleanup (free_stack_comp_unit, &cu);
|
||||||
|
|
||||||
info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr,
|
info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr,
|
||||||
@ -3428,22 +3438,6 @@ process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
|
|||||||
|
|
||||||
cu.list_in_scope = &file_symbols;
|
cu.list_in_scope = &file_symbols;
|
||||||
|
|
||||||
/* If this compilation unit was already read in, free the
|
|
||||||
cached copy in order to read it in again. This is
|
|
||||||
necessary because we skipped some symbols when we first
|
|
||||||
read in the compilation unit (see load_partial_dies).
|
|
||||||
This problem could be avoided, but the benefit is
|
|
||||||
unclear. */
|
|
||||||
if (this_cu->cu != NULL)
|
|
||||||
free_one_cached_comp_unit (this_cu->cu);
|
|
||||||
|
|
||||||
/* Note that this is a pointer to our stack frame, being
|
|
||||||
added to a global data structure. It will be cleaned up
|
|
||||||
in free_stack_comp_unit when we finish with this
|
|
||||||
compilation unit. */
|
|
||||||
this_cu->cu = &cu;
|
|
||||||
cu.per_cu = this_cu;
|
|
||||||
|
|
||||||
/* Read the abbrevs for this compilation unit into a table. */
|
/* Read the abbrevs for this compilation unit into a table. */
|
||||||
dwarf2_read_abbrevs (abfd, &cu);
|
dwarf2_read_abbrevs (abfd, &cu);
|
||||||
make_cleanup (dwarf2_free_abbrev_table, &cu);
|
make_cleanup (dwarf2_free_abbrev_table, &cu);
|
||||||
@ -3701,7 +3695,7 @@ load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
|
|||||||
if (this_cu->cu == NULL)
|
if (this_cu->cu == NULL)
|
||||||
{
|
{
|
||||||
cu = xmalloc (sizeof (*cu));
|
cu = xmalloc (sizeof (*cu));
|
||||||
init_one_comp_unit (cu, objfile);
|
init_one_comp_unit (cu, this_cu);
|
||||||
|
|
||||||
read_cu = 1;
|
read_cu = 1;
|
||||||
|
|
||||||
@ -3722,10 +3716,6 @@ load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Link this compilation unit into the compilation unit tree. */
|
|
||||||
this_cu->cu = cu;
|
|
||||||
cu->per_cu = this_cu;
|
|
||||||
|
|
||||||
/* Link this CU into read_in_chain. */
|
/* Link this CU into read_in_chain. */
|
||||||
this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
|
this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
|
||||||
dwarf2_per_objfile->read_in_chain = this_cu;
|
dwarf2_per_objfile->read_in_chain = this_cu;
|
||||||
@ -4718,7 +4708,7 @@ load_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
|
|||||||
if (per_cu->cu == NULL)
|
if (per_cu->cu == NULL)
|
||||||
{
|
{
|
||||||
cu = xmalloc (sizeof (*cu));
|
cu = xmalloc (sizeof (*cu));
|
||||||
init_one_comp_unit (cu, objfile);
|
init_one_comp_unit (cu, per_cu);
|
||||||
|
|
||||||
read_cu = 1;
|
read_cu = 1;
|
||||||
|
|
||||||
@ -4745,10 +4735,6 @@ load_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
|
|||||||
dwarf2_read_abbrevs (abfd, cu);
|
dwarf2_read_abbrevs (abfd, cu);
|
||||||
free_abbrevs_cleanup = make_cleanup (dwarf2_free_abbrev_table, cu);
|
free_abbrevs_cleanup = make_cleanup (dwarf2_free_abbrev_table, cu);
|
||||||
|
|
||||||
/* Link this compilation unit into the compilation unit tree. */
|
|
||||||
per_cu->cu = cu;
|
|
||||||
cu->per_cu = per_cu;
|
|
||||||
|
|
||||||
/* Link this CU into read_in_chain. */
|
/* Link this CU into read_in_chain. */
|
||||||
per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
|
per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
|
||||||
dwarf2_per_objfile->read_in_chain = per_cu;
|
dwarf2_per_objfile->read_in_chain = per_cu;
|
||||||
@ -14424,10 +14410,7 @@ read_signatured_type (struct signatured_type *type_sig)
|
|||||||
gdb_assert (type_sig->per_cu.cu == NULL);
|
gdb_assert (type_sig->per_cu.cu == NULL);
|
||||||
|
|
||||||
cu = xmalloc (sizeof (*cu));
|
cu = xmalloc (sizeof (*cu));
|
||||||
init_one_comp_unit (cu, objfile);
|
init_one_comp_unit (cu, &type_sig->per_cu);
|
||||||
|
|
||||||
type_sig->per_cu.cu = cu;
|
|
||||||
cu->per_cu = &type_sig->per_cu;
|
|
||||||
|
|
||||||
/* If an error occurs while loading, release our storage. */
|
/* If an error occurs while loading, release our storage. */
|
||||||
free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
|
free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
|
||||||
@ -15864,13 +15847,15 @@ dwarf2_find_comp_unit (unsigned int offset, struct objfile *objfile)
|
|||||||
return this_cu;
|
return this_cu;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize dwarf2_cu CU for OBJFILE in a pre-allocated space. */
|
/* Initialize dwarf2_cu CU, owned by PER_CU. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_one_comp_unit (struct dwarf2_cu *cu, struct objfile *objfile)
|
init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
|
||||||
{
|
{
|
||||||
memset (cu, 0, sizeof (*cu));
|
memset (cu, 0, sizeof (*cu));
|
||||||
cu->objfile = objfile;
|
per_cu->cu = cu;
|
||||||
|
cu->per_cu = per_cu;
|
||||||
|
cu->objfile = per_cu->objfile;
|
||||||
obstack_init (&cu->comp_unit_obstack);
|
obstack_init (&cu->comp_unit_obstack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15903,8 +15888,8 @@ free_heap_comp_unit (void *data)
|
|||||||
{
|
{
|
||||||
struct dwarf2_cu *cu = data;
|
struct dwarf2_cu *cu = data;
|
||||||
|
|
||||||
if (cu->per_cu != NULL)
|
gdb_assert (cu->per_cu != NULL);
|
||||||
cu->per_cu->cu = NULL;
|
cu->per_cu->cu = NULL;
|
||||||
cu->per_cu = NULL;
|
cu->per_cu = NULL;
|
||||||
|
|
||||||
obstack_free (&cu->comp_unit_obstack, NULL);
|
obstack_free (&cu->comp_unit_obstack, NULL);
|
||||||
@ -15924,20 +15909,18 @@ free_stack_comp_unit (void *data)
|
|||||||
{
|
{
|
||||||
struct dwarf2_cu *cu = data;
|
struct dwarf2_cu *cu = data;
|
||||||
|
|
||||||
|
gdb_assert (cu->per_cu != NULL);
|
||||||
|
cu->per_cu->cu = NULL;
|
||||||
|
cu->per_cu = NULL;
|
||||||
|
|
||||||
obstack_free (&cu->comp_unit_obstack, NULL);
|
obstack_free (&cu->comp_unit_obstack, NULL);
|
||||||
cu->partial_dies = NULL;
|
cu->partial_dies = NULL;
|
||||||
|
|
||||||
if (cu->per_cu != NULL)
|
/* The previous code only did this if per_cu != NULL.
|
||||||
{
|
But that would always succeed, so now we just unconditionally do
|
||||||
/* This compilation unit is on the stack in our caller, so we
|
the aging. This seems like the wrong place to do such aging,
|
||||||
should not xfree it. Just unlink it. */
|
but cleaning that up is left for later. */
|
||||||
cu->per_cu->cu = NULL;
|
age_cached_comp_units ();
|
||||||
cu->per_cu = NULL;
|
|
||||||
|
|
||||||
/* If we had a per-cu pointer, then we may have other compilation
|
|
||||||
units loaded, so age them now. */
|
|
||||||
age_cached_comp_units ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free all cached compilation units. */
|
/* Free all cached compilation units. */
|
||||||
|
Loading…
Reference in New Issue
Block a user