From 1c582fe71858efabae951c5f3ed7dccfb23fb86e Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Sat, 21 Mar 2015 21:09:46 -0700 Subject: Fix bug when optimizing string pools of aligned strings. Tail optimization of string pools (enabled when linker is run with -O2 or greater) should not be done when the section alignment is greater than the size of the characters in the strings; otherwise, unaligned strings may result. gold/ PR gold/18010 * stringpool.cc (Stringpool_template): Don't optimize if section alignment is greater than sizeof(char). --- gold/stringpool.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gold/stringpool.cc') diff --git a/gold/stringpool.cc b/gold/stringpool.cc index c6d3c9b..d6fd715 100644 --- a/gold/stringpool.cc +++ b/gold/stringpool.cc @@ -39,7 +39,9 @@ Stringpool_template::Stringpool_template(uint64_t addralign) zero_null_(true), optimize_(false), offset_(sizeof(Stringpool_char)), addralign_(addralign) { - if (parameters->options_valid() && parameters->options().optimize() >= 2) + if (parameters->options_valid() + && parameters->options().optimize() >= 2 + && addralign <= sizeof(Stringpool_char)) this->optimize_ = true; } -- cgit v1.1