This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gold] Drop 'missing mapping symbols' warning


Hi, I submitted the following pre-approved (by Cary Coutant) CL.

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. No warning shall be issued.

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.

diff --git a/gold/aarch64.cc b/gold/aarch64.cc
index 0d86d05..b9d04cd 100644
--- a/gold/aarch64.cc
+++ b/gold/aarch64.cc
@@ -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)
     {
diff --git a/gold/arm.cc b/gold/arm.cc
index 9812c88..ec8b89d 100644
--- a/gold/arm.cc
+++ b/gold/arm.cc
@@ -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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]