From a817ff49c331c180f5b75cff4da1c338366c5d4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Ko=C5=9Bcielnicki?= Date: Mon, 5 Oct 2015 16:57:14 +0200 Subject: Fix empty string alignment in .rodata.str* gold/ PR gold/18959 * stringpool.cc (Stringpool_template::new_key_offset): Align all strings, even zero-length. (Stringpool_template::set_string_offsets): --- gold/stringpool.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gold/stringpool.cc') diff --git a/gold/stringpool.cc b/gold/stringpool.cc index d6fd715..595b1c7 100644 --- a/gold/stringpool.cc +++ b/gold/stringpool.cc @@ -228,9 +228,8 @@ Stringpool_template::new_key_offset(size_t length) else { offset = this->offset_; - // Align non-zero length strings. - if (length != 0) - offset = align_address(offset, this->addralign_); + // Align strings. + offset = align_address(offset, this->addralign_); this->offset_ = offset + (length + 1) * sizeof(Stringpool_char); } this->key_to_offset_.push_back(offset); @@ -421,6 +420,8 @@ Stringpool_template::set_string_offsets() if (this->zero_null_ && (*curr)->first.string[0] == 0) this_offset = 0; else if (last != v.end() + && ((((*curr)->first.length - (*last)->first.length) + % this->addralign_) == 0) && is_suffix((*curr)->first.string, (*curr)->first.length, (*last)->first.string, -- cgit v1.1