Drop 'missing mapping symbols' warning for arm and aarch64.
authorHan Shen <shenhan@google.com>
Thu, 9 Jul 2015 22:38:12 +0000 (15:38 -0700)
committerHan Shen <shenhan@google.com>
Thu, 9 Jul 2015 22:43:15 +0000 (15:43 -0700)
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.

gold/ChangeLog
gold/aarch64.cc
gold/arm.cc

index bdc5a58d22bcb68ec9ccc98ccc797b26e0032f9c..9febcbad060ce3a5d3bf9ad81cab0bec0e943632 100644 (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.
index 0d86d05d571a7e25a3ae51a6515efdd26af24c31..b9d04cd9894598a51baf30a92e6a5f8e731e377a 100644 (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)
     {
index 9812c8888fc869e4d9b65dcd6c40680da930ff2a..ec8b89d2f30b01847ea0913fe15f2f091eaf8f30 100644 (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);