aboutsummaryrefslogtreecommitdiff
path: root/gold/ChangeLog
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2014-07-02 09:39:41 -0700
committerCary Coutant <ccoutant@google.com>2014-09-02 14:49:18 -0700
commit9860cbcfb60bdae2f9800e6a6ea5f21ef1507d08 (patch)
treeda0a996a6e7e26eec815fc647283fe878fe23e7a /gold/ChangeLog
parentdf7e526582809b829ee8651a1315a17627cfea4d (diff)
downloadgdb-9860cbcfb60bdae2f9800e6a6ea5f21ef1507d08.zip
gdb-9860cbcfb60bdae2f9800e6a6ea5f21ef1507d08.tar.gz
gdb-9860cbcfb60bdae2f9800e6a6ea5f21ef1507d08.tar.bz2
Fix problem with optimization of .eh_frame section and --sort-section option.
When --sort-section=name is used, gold will sort the linker-generated contents of .eh_frame (after optimization) after the endcap provided by crtendS.o. This causes two problems: the .eh_frame_hdr section is generated assuming that the optimized .eh_frame contents will be placed at the very beginning of the section, and the endcap no longer appears at the end of the section. This patch fixes the first problem by adjusting FDE offsets to take into account the actual starting offset within the output section, and fixes the second problem by sorting linker-generated (Output_section_data) sections based on the name of the output section. gold/ PR gold/17005 * ehframe.cc (Fde::write): Add output_offset parameter. (Cie::write): Likewise. (Eh_frame::set_final_data_size): Account for offset within output section. (Eh_frame::do_sized_write): Likewise. * ehframe.h (Fde::write): Add output_offset parameter. (Cie::write): Likewise. * output.cc (Output_section::Input_section_sort_entry): Remove section_has_name_; add output_section_name parameter. Use output section name for non-input sections. (Output_section::Input_section_sort_entry::section_has_name): Remove. (Output_section::Input_section_sort_entry::section_has_name_): Remove. (Output_section::Input_section_sort_compare): Remove logic for sections without names. (Output_section::Input_section_sort_init_fini_compare): Likewise. (Output_section::Input_section_sort_section_prefix_special_ordering_compare): Likewise. (Output_section::Input_section_sort_section_name_compare): Likewise.
Diffstat (limited to 'gold/ChangeLog')
-rw-r--r--gold/ChangeLog22
1 files changed, 22 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 4fce2cb..0fa1561 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,25 @@
+2014-09-02 Cary Coutant <ccoutant@google.com>
+
+ PR gold/17005
+ * ehframe.cc (Fde::write): Add output_offset parameter.
+ (Cie::write): Likewise.
+ (Eh_frame::set_final_data_size): Account for offset within output
+ section.
+ (Eh_frame::do_sized_write): Likewise.
+ * ehframe.h (Fde::write): Add output_offset parameter.
+ (Cie::write): Likewise.
+ * output.cc (Output_section::Input_section_sort_entry): Remove
+ section_has_name_; add output_section_name parameter. Use
+ output section name for non-input sections.
+ (Output_section::Input_section_sort_entry::section_has_name): Remove.
+ (Output_section::Input_section_sort_entry::section_has_name_): Remove.
+ (Output_section::Input_section_sort_compare): Remove logic for
+ sections without names.
+ (Output_section::Input_section_sort_init_fini_compare): Likewise.
+ (Output_section::Input_section_sort_section_prefix_special_ordering_compare):
+ Likewise.
+ (Output_section::Input_section_sort_section_name_compare): Likewise.
+
2014-08-29 Han Shen <shenhan@google.com>
Jing Yu <jingyu@google.com>