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):
This commit is contained in:
Marcin Kościelnicki 2015-10-05 16:57:14 +02:00 committed by Cary Coutant
parent e79a4bad70
commit a817ff49c3
2 changed files with 11 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2015-10-28 Marcin Kościelnicki <koriakin@0x04.net>
PR gold/18959
* stringpool.cc (Stringpool_template::new_key_offset): Align all
strings, even zero-length.
(Stringpool_template::set_string_offsets): Likewise.
2015-10-28 Marcin Kościelnicki <koriakin@0x04.net>
* s390.cc: New file.

View File

@ -228,9 +228,8 @@ Stringpool_template<Stringpool_char>::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<Stringpool_char>::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,