[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 |
https://sourceware.org/bugzilla/show_bug.cgi?id=17005
--- 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(),
Input_section_sort_init_fini_compare());
- 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(),
Input_section_sort_section_name_compare());
else if (strcmp(this->name(), ".text") == 0)
--
You are receiving this mail because:
You are on the CC list for the bug.