From 8086551f52df808681fa09ca00dfb91e67d8d2ff Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Wed, 3 Jun 2015 20:30:11 -0700 Subject: Fix SIZEOF_HEADERS in gold. Gold undercounts the number of program headers it's going to add when initially evaluating the SIZEOF_HEADERS expression. As a result, scripts that use it end up skipping a page unnecessarily when the starting address is too low. The undercounting is because it doesn't count the PT_INTERP segment. Then, when finalizing symbols, gold overcounts the program headers: all segments have already been created, but we still count the headers we expected to add from the script. This patch fixes both problems. gold/ * script-sections.cc (Script_sections::Script_sections): Initialize segments_created_. (Script_sections::create_note_and_tls_segments): Set flag when segments are created. (Script_sections::expected_segment_count): Count PT_INTERP. (Script_sections::attach_sections_using_phdrs_clause): Set flag when segments are created. * script-sections.h (Script_sections::segments_created_): New data member. --- gold/ChangeLog | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gold/ChangeLog') diff --git a/gold/ChangeLog b/gold/ChangeLog index f5f3817..8996a97 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,15 @@ +2015-06-03 Cary Coutant + + * script-sections.cc (Script_sections::Script_sections): Initialize + segments_created_. + (Script_sections::create_note_and_tls_segments): Set flag when + segments are created. + (Script_sections::expected_segment_count): Count PT_INTERP. + (Script_sections::attach_sections_using_phdrs_clause): Set flag when + segments are created. + * script-sections.h (Script_sections::segments_created_): New data + member. + 2015-06-03 Cary Coutant PR gold/15370 -- cgit v1.1