Commit 0a9fdbbf authored by Alan Modra's avatar Alan Modra
Browse files

[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.

(cherry picked from commit 4c51daca)
parent 64dde846
2019-09-20 Alan Modra <amodra@gmail.com>
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.
2019-09-09 Phil Blundell <pb@pbcl.net> 2019-09-09 Phil Blundell <pb@pbcl.net>
binutils 2.33 branch created. binutils 2.33 branch created.
......
...@@ -466,6 +466,7 @@ Layout::Layout(int number_of_input_files, Script_options* script_options) ...@@ -466,6 +466,7 @@ Layout::Layout(int number_of_input_files, Script_options* script_options)
unique_segment_for_sections_specified_(false), unique_segment_for_sections_specified_(false),
incremental_inputs_(NULL), incremental_inputs_(NULL),
record_output_section_data_from_script_(false), record_output_section_data_from_script_(false),
lto_slim_object_(false),
script_output_section_data_list_(), script_output_section_data_list_(),
segment_states_(NULL), segment_states_(NULL),
relaxation_debug_check_(NULL), relaxation_debug_check_(NULL),
......
...@@ -1884,10 +1884,15 @@ Sized_relobj_file<size, big_endian>::do_layout(Symbol_table* symtab, ...@@ -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) if (strncmp (name, lto_section_name, strlen (lto_section_name)) == 0)
{ {
section_size_type contents_len; section_size_type contents_len;
const unsigned char* pcontents = this->section_contents(i, &contents_len, false); const unsigned char* pcontents
struct lto_section lsection = *(const lto_section*)pcontents; = this->section_contents(i, &contents_len, false);
if (lsection.slim_object) if (contents_len >= sizeof(lto_section))
layout->set_lto_slim_object (); {
const lto_section* lsection
= reinterpret_cast<const lto_section*>(pcontents);
if (lsection->slim_object)
layout->set_lto_slim_object();
}
} }
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment