[GOLD] Fix spurious "plugin needed to handle lto object" warnings

lto_slim_object_ was unitialized.  I also thought it worth adding
a sanity check on the .gnu.lto_.lto.* section size, and made some
other tidies.

	PR 24768
	* layout.cc (Layout::Layout): Init lto_slim_object_.
	* object.cc (Sized_relobj_file::do_layout): Wrap overlong line.
	Don't use C cast.  Validate section size.  Don't copy contents.
This commit is contained in:
Alan Modra
2019-09-20 14:52:54 +09:30
parent e59a100122
commit 4c51dacacf
3 changed files with 17 additions and 4 deletions

View File

@@ -1884,10 +1884,15 @@ Sized_relobj_file<size, big_endian>::do_layout(Symbol_table* symtab,
if (strncmp (name, lto_section_name, strlen (lto_section_name)) == 0)
{
section_size_type contents_len;
const unsigned char* pcontents = this->section_contents(i, &contents_len, false);
struct lto_section lsection = *(const lto_section*)pcontents;
if (lsection.slim_object)
layout->set_lto_slim_object ();
const unsigned char* pcontents
= this->section_contents(i, &contents_len, false);
if (contents_len >= sizeof(lto_section))
{
const lto_section* lsection
= reinterpret_cast<const lto_section*>(pcontents);
if (lsection->slim_object)
layout->set_lto_slim_object();
}
}
}