2010-10-20 Doug Kwan <dougkwan@google.com>
* arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections without SHF_LINK_ORDER flags. * layout.cc (Layout::choose_output_section): Do not filter SHF_LINK_ORDER flag in a relocatable link.
This commit is contained in:
parent
e0ae9e28cc
commit
c9484ea5b3
3 changed files with 16 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-10-20 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
|
||||
without SHF_LINK_ORDER flags.
|
||||
* layout.cc (Layout::choose_output_section): Do not filter
|
||||
SHF_LINK_ORDER flag in a relocatable link.
|
||||
|
||||
2010-10-17 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* output.h (Output_segment::set_section_addresses): Change function
|
||||
|
|
|
@ -6662,6 +6662,10 @@ Arm_relobj<big_endian>::do_read_symbols(Read_symbols_data* sd)
|
|||
+ text_shndx * shdr_size);
|
||||
this->make_exidx_input_section(i, shdr, text_shndx, text_shdr);
|
||||
}
|
||||
// EHABI 4.4.1 requires that SHF_LINK_ORDER flag to be set.
|
||||
if ((shdr.get_sh_flags() & elfcpp::SHF_LINK_ORDER) == 0)
|
||||
gold_warning(_("SHF_LINK_ORDER not set in EXIDX section %s of %s"),
|
||||
this->section_name(i).c_str(), this->name().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -489,11 +489,15 @@ Layout::choose_output_section(const Relobj* relobj, const char* name,
|
|||
// Some flags in the input section should not be automatically
|
||||
// copied to the output section.
|
||||
flags &= ~ (elfcpp::SHF_INFO_LINK
|
||||
| elfcpp::SHF_LINK_ORDER
|
||||
| elfcpp::SHF_GROUP
|
||||
| elfcpp::SHF_MERGE
|
||||
| elfcpp::SHF_STRINGS);
|
||||
|
||||
// We only clear the SHF_LINK_ORDER flag in for
|
||||
// a non-relocatable link.
|
||||
if (!parameters->options().relocatable())
|
||||
flags &= ~elfcpp::SHF_LINK_ORDER;
|
||||
|
||||
if (this->script_options_->saw_sections_clause())
|
||||
{
|
||||
// We are using a SECTIONS clause, so the output section is
|
||||
|
|
Loading…
Reference in a new issue