* dwarf2read.c (dwarf2_find_base_address): Move definition.

This commit is contained in:
Doug Evans 2012-06-29 00:28:23 +00:00
parent 7f4c1aab46
commit 3b80fe9b75
2 changed files with 33 additions and 31 deletions

View File

@ -1,5 +1,7 @@
2012-06-28 Doug Evans <dje@google.com>
* dwarf2read.c (dwarf2_find_base_address): Move definition.
* dwarf2read.c (ABBREV_HASH_SIZE): Remove enclosing #ifndef/#endif.
(struct abbrev_table): Define.
(dwarf2_cu): Replace members dwarf2_abbrevs, abbrev_obstack with

View File

@ -3371,6 +3371,37 @@ offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
}
/* Find the base address of the compilation unit for range lists and
location lists. It will normally be specified by DW_AT_low_pc.
In DWARF-3 draft 4, the base address could be overridden by
DW_AT_entry_pc. It's been removed, but GCC still uses this for
compilation units with discontinuous ranges. */
static void
dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
{
struct attribute *attr;
cu->base_known = 0;
cu->base_address = 0;
attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
if (attr)
{
cu->base_address = DW_ADDR (attr);
cu->base_known = 1;
}
else
{
attr = dwarf2_attr (die, DW_AT_low_pc, cu);
if (attr)
{
cu->base_address = DW_ADDR (attr);
cu->base_known = 1;
}
}
}
/* Read in the comp unit header information from the debug_info at info_ptr.
NOTE: This leaves members offset, first_die_offset to be filled in
by the caller. */
@ -3832,37 +3863,6 @@ init_cu_die_reader (struct die_reader_specs *reader,
reader->buffer_end = section->buffer + section->size;
}
/* Find the base address of the compilation unit for range lists and
location lists. It will normally be specified by DW_AT_low_pc.
In DWARF-3 draft 4, the base address could be overridden by
DW_AT_entry_pc. It's been removed, but GCC still uses this for
compilation units with discontinuous ranges. */
static void
dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
{
struct attribute *attr;
cu->base_known = 0;
cu->base_address = 0;
attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
if (attr)
{
cu->base_address = DW_ADDR (attr);
cu->base_known = 1;
}
else
{
attr = dwarf2_attr (die, DW_AT_low_pc, cu);
if (attr)
{
cu->base_address = DW_ADDR (attr);
cu->base_known = 1;
}
}
}
/* Initialize a CU (or TU) and read its DIEs.
If the CU defers to a DWO file, read the DWO file as well.