Convert dwarf2_section_size to a method

This changes dwarf2_section_size to be a method on
dwarf2_section_info.

2020-02-08  Tom Tromey  <tom@tromey.com>

	* dwarf2/read.c (dwarf2_section_size): Remove.
	(error_check_comp_unit_head, dwarf2_symbol_mark_computed):
	Update.
	* dwarf2/section.h (struct dwarf2_section_info) <get_size>: New method.

Change-Id: I12928fee5c84350ce98883e329357b86888d639b
This commit is contained in:
Tom Tromey 2020-02-08 13:40:54 -07:00
parent 4075cb2668
commit 2c7d5afccf
3 changed files with 22 additions and 18 deletions

View file

@ -1,3 +1,10 @@
2020-02-08 Tom Tromey <tom@tromey.com>
* dwarf2/read.c (dwarf2_section_size): Remove.
(error_check_comp_unit_head, dwarf2_symbol_mark_computed):
Update.
* dwarf2/section.h (struct dwarf2_section_info) <get_size>: New method.
2020-02-08 Tom Tromey <tom@tromey.com> 2020-02-08 Tom Tromey <tom@tromey.com>
* dwarf2/read.c (read_initial_length): Move to leb.c. * dwarf2/read.c (read_initial_length): Move to leb.c.

View file

@ -2073,22 +2073,6 @@ dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
this->has_section_at_zero = true; this->has_section_at_zero = true;
} }
/* A helper function that returns the size of a section in a safe way.
If you are positive that the section has been read before using the
size, then it is safe to refer to the dwarf2_section_info object's
"size" field directly. In other cases, you must call this
function, because for compressed sections the size field is not set
correctly until the section has been read. */
static bfd_size_type
dwarf2_section_size (struct objfile *objfile,
struct dwarf2_section_info *info)
{
if (!info->readin)
info->read (objfile);
return info->size;
}
/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
SECTION_NAME. */ SECTION_NAME. */
@ -6092,7 +6076,7 @@ error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
const char *filename = section->get_file_name (); const char *filename = section->get_file_name ();
if (to_underlying (header->abbrev_sect_off) if (to_underlying (header->abbrev_sect_off)
>= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section)) >= abbrev_section->get_size (dwarf2_per_objfile->objfile))
error (_("Dwarf Error: bad offset (%s) in compilation unit header " error (_("Dwarf Error: bad offset (%s) in compilation unit header "
"(offset %s + 6) [in module %s]"), "(offset %s + 6) [in module %s]"),
sect_offset_str (header->abbrev_sect_off), sect_offset_str (header->abbrev_sect_off),
@ -24395,7 +24379,7 @@ dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
/* .debug_loc{,.dwo} may not exist at all, or the offset may be outside /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
the section. If so, fall through to the complaint in the the section. If so, fall through to the complaint in the
other branch. */ other branch. */
&& DW_UNSND (attr) < dwarf2_section_size (objfile, section)) && DW_UNSND (attr) < section->get_size (objfile))
{ {
struct dwarf2_loclist_baton *baton; struct dwarf2_loclist_baton *baton;

View file

@ -81,6 +81,19 @@ struct dwarf2_section_info
If the section is compressed, uncompress it before returning. */ If the section is compressed, uncompress it before returning. */
void read (struct objfile *objfile); void read (struct objfile *objfile);
/* A helper function that returns the size of a section in a safe way.
If you are positive that the section has been read before using the
size, then it is safe to refer to the dwarf2_section_info object's
"size" field directly. In other cases, you must call this
function, because for compressed sections the size field is not set
correctly until the section has been read. */
bfd_size_type get_size (struct objfile *objfile)
{
if (!readin)
read (objfile);
return size;
}
union union
{ {
/* If this is a real section, the bfd section. */ /* If this is a real section, the bfd section. */