Drop 'missing mapping symbols' warning for arm and aarch64.

The psABI (AAELF) says this about mapping symbols:

    4.6.5.1 Section-relative mapping symbols

    Mapping symbols defined in a section define a sequence of
    half-open address intervals that cover the address range of the
    section. Each interval starts at the address defined by the
    mapping symbol, and continues up to, but not including, the
    address defined by the next (in address order) mapping symbol or
    the end of the section. A section must have a mapping symbol
    defined at the beginning of the section; however, if the section
    contains only data then the mapping symbol may be omitted.

That makes it pretty clear that, in the absence of a mapping symbol,
the entire section can be treated as data.

gold/ChangeLog:
	* aarch64.cc (AArch64_relobj::scan_errata): Drop missing symbol warning.
	* arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Drop missing
	symbol warning.
This commit is contained in:
Han Shen 2015-07-09 15:38:12 -07:00
parent 58d2eda55c
commit 61163dfaae
3 changed files with 10 additions and 13 deletions

View file

@ -1,3 +1,11 @@
2015-07-09 Han Shen <shenhan@google.com>
Drop missing symbol warning for arm/aarch64.
* aarch64.cc (AArch64_relobj::scan_errata): Drop missing symbol warning.
* arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Drop missing
symbol warning.
2015-07-07 Han Shen <shenhan@google.com>
Make gold aarch64 accept long form of mapping symbols.

View file

@ -2084,10 +2084,6 @@ AArch64_relobj<size, big_endian>::scan_errata(
// Find the first mapping symbol record within section shndx.
typename Mapping_symbol_info::const_iterator p =
this->mapping_symbol_info_.lower_bound(section_start);
if (p == this->mapping_symbol_info_.end() || p->first.shndx_ != shndx)
gold_warning(_("cannot scan executable section %u of %s for Cortex-A53 "
"erratum because it has no mapping symbols."),
shndx, this->name().c_str());
while (p != this->mapping_symbol_info_.end() &&
p->first.shndx_ == shndx)
{

View file

@ -6255,16 +6255,9 @@ Arm_relobj<big_endian>::scan_section_for_cortex_a8_erratum(
this->mapping_symbols_info_.lower_bound(section_start);
// There are no mapping symbols for this section. Treat it as a data-only
// section. Issue a warning if section is marked as containing
// instructions.
// section.
if (p == this->mapping_symbols_info_.end() || p->first.first != shndx)
{
if ((this->section_flags(shndx) & elfcpp::SHF_EXECINSTR) != 0)
gold_warning(_("cannot scan executable section %u of %s for Cortex-A8 "
"erratum because it has no mapping symbols."),
shndx, this->name().c_str());
return;
}
return;
Arm_address output_address =
this->simple_input_section_output_address(shndx, os);