aboutsummaryrefslogtreecommitdiff
path: root/gold/script-sections.h
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2015-06-03 20:30:11 -0700
committerCary Coutant <ccoutant@gmail.com>2015-06-03 20:30:11 -0700
commit8086551f52df808681fa09ca00dfb91e67d8d2ff (patch)
tree495eb3d4047371bf419af67f46c65762ca3fd635 /gold/script-sections.h
parent374082dfab280123f5a54a23b1c1b2cb893b4d2b (diff)
downloadgdb-8086551f52df808681fa09ca00dfb91e67d8d2ff.zip
gdb-8086551f52df808681fa09ca00dfb91e67d8d2ff.tar.gz
gdb-8086551f52df808681fa09ca00dfb91e67d8d2ff.tar.bz2
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.
Diffstat (limited to 'gold/script-sections.h')
-rw-r--r--gold/script-sections.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gold/script-sections.h b/gold/script-sections.h
index 2e07aa2..e247ea5 100644
--- a/gold/script-sections.h
+++ b/gold/script-sections.h
@@ -319,6 +319,8 @@ class Script_sections
bool saw_relro_end_;
// Whether we have seen SEGMENT_START.
bool saw_segment_start_expression_;
+ // Whether we have created all necessary segments.
+ bool segments_created_;
};
// Attributes for memory regions.