* dwarf2read.c (struct dwarf2_per_cu_data): Update comment.
(load_full_comp_unit): Take OBJFILE argument and use it. (dwarf2_build_psymtabs_hard): Skip partial units. (process_queue): Pass OBJFILE to load_full_comp_unit. Check type_hash for read in CUs. Test psymtab for NULL.
This commit is contained in:
parent
625b50039a
commit
31ffec4870
@ -1,3 +1,11 @@
|
||||
2006-11-02 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* dwarf2read.c (struct dwarf2_per_cu_data): Update comment.
|
||||
(load_full_comp_unit): Take OBJFILE argument and use it.
|
||||
(dwarf2_build_psymtabs_hard): Skip partial units.
|
||||
(process_queue): Pass OBJFILE to load_full_comp_unit. Check
|
||||
type_hash for read in CUs. Test psymtab for NULL.
|
||||
|
||||
2006-11-02 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* arm-tdep.c (arm_gdbarch_init): Handle EF_ARM_EABI_VER5.
|
||||
|
@ -389,7 +389,9 @@ struct dwarf2_per_cu_data
|
||||
it. */
|
||||
htab_t type_hash;
|
||||
|
||||
/* The partial symbol table associated with this compilation unit. */
|
||||
/* The partial symbol table associated with this compilation unit,
|
||||
or NULL for partial units (which do not have an associated
|
||||
symtab). */
|
||||
struct partial_symtab *psymtab;
|
||||
};
|
||||
|
||||
@ -1066,7 +1068,8 @@ static void reset_die_and_siblings_types (struct die_info *,
|
||||
|
||||
static void create_all_comp_units (struct objfile *);
|
||||
|
||||
static struct dwarf2_cu *load_full_comp_unit (struct dwarf2_per_cu_data *);
|
||||
static struct dwarf2_cu *load_full_comp_unit (struct dwarf2_per_cu_data *,
|
||||
struct objfile *);
|
||||
|
||||
static void process_full_comp_unit (struct dwarf2_per_cu_data *);
|
||||
|
||||
@ -1470,6 +1473,14 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
|
||||
info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
|
||||
abfd, info_ptr, &cu);
|
||||
|
||||
if (comp_unit_die.tag == DW_TAG_partial_unit)
|
||||
{
|
||||
info_ptr = (beg_of_comp_unit + cu.header.length
|
||||
+ cu.header.initial_length_size);
|
||||
do_cleanups (back_to_inner);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Set the language we're debugging */
|
||||
set_cu_language (comp_unit_die.language, &cu);
|
||||
|
||||
@ -2386,14 +2397,14 @@ process_queue (struct objfile *objfile)
|
||||
{
|
||||
/* Read in this compilation unit. This may add new items to
|
||||
the end of the queue. */
|
||||
load_full_comp_unit (item->per_cu);
|
||||
load_full_comp_unit (item->per_cu, objfile);
|
||||
|
||||
item->per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
|
||||
dwarf2_per_objfile->read_in_chain = item->per_cu;
|
||||
|
||||
/* If this compilation unit has already had full symbols created,
|
||||
reset the TYPE fields in each DIE. */
|
||||
if (item->per_cu->psymtab->readin)
|
||||
if (item->per_cu->type_hash)
|
||||
reset_die_and_siblings_types (item->per_cu->cu->dies,
|
||||
item->per_cu->cu);
|
||||
}
|
||||
@ -2402,7 +2413,7 @@ process_queue (struct objfile *objfile)
|
||||
them, one at a time, removing from the queue as we finish. */
|
||||
for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
|
||||
{
|
||||
if (!item->per_cu->psymtab->readin)
|
||||
if (item->per_cu->psymtab && !item->per_cu->psymtab->readin)
|
||||
process_full_comp_unit (item->per_cu);
|
||||
|
||||
item->per_cu->queued = 0;
|
||||
@ -2495,10 +2506,9 @@ psymtab_to_symtab_1 (struct partial_symtab *pst)
|
||||
/* Load the DIEs associated with PST and PER_CU into memory. */
|
||||
|
||||
static struct dwarf2_cu *
|
||||
load_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
|
||||
load_full_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile)
|
||||
{
|
||||
struct partial_symtab *pst = per_cu->psymtab;
|
||||
bfd *abfd = pst->objfile->obfd;
|
||||
bfd *abfd = objfile->obfd;
|
||||
struct dwarf2_cu *cu;
|
||||
unsigned long offset;
|
||||
gdb_byte *info_ptr;
|
||||
@ -2517,7 +2527,7 @@ load_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
|
||||
/* If an error occurs while loading, release our storage. */
|
||||
free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
|
||||
|
||||
cu->objfile = pst->objfile;
|
||||
cu->objfile = objfile;
|
||||
|
||||
/* read in the comp_unit header */
|
||||
info_ptr = read_comp_unit_head (&cu->header, info_ptr, abfd);
|
||||
|
Loading…
Reference in New Issue
Block a user