[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/17005] [Gold] .ehframe problem with --sort-section=name

From: aivchenk at gmail dot com
Subject: [Bug gold/17005] [Gold] .ehframe problem with --sort-section=name
Date: Wed, 11 Jun 2014 12:59:53 +0000


--- Comment #3 from Alexander Ivchenko <aivchenk at gmail dot com> ---
If we assume that we applied patch from Comment 2, the resulting binary would
still fails, because the .eh_frame_hdr offset table is calculated incorrectly.

In Fde::write:

  // Tell the exception frame header about this FDE.
  if (eh_frame_hdr != NULL)
    eh_frame_hdr->record_fde(offset, fde_encoding);

Here offset for all fde's is recorder from the beginning of the oview. However,
oview address could be different from the beginning of the output section (like
in our case).

I would just simply disable sorting eh_frame sections with something like:

diff --git a/gold/output.cc b/gold/output.cc
index c078fbb..5a9d591 100644
--- a/gold/output.cc
+++ b/gold/output.cc
@@ -3626,7 +3626,8 @@ Output_section::sort_attached_input_sections()
          || this->type() == elfcpp::SHT_FINI_ARRAY)
        std::sort(sort_list.begin(), sort_list.end(),
-      else if (strcmp(parameters->options().sort_section(), "name") == 0)
+      else if (strcmp(parameters->options().sort_section(), "name") == 0
+              && strcmp(this->name(), ".eh_frame") != 0)
        std::sort(sort_list.begin(), sort_list.end(),
       else if (strcmp(this->name(), ".text") == 0)

You are receiving this mail because:
You are on the CC list for the bug.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]