gold: Get alignment of uncompressed section from ch_addralign
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 2 Dec 2018 13:42:36 +0000 (05:42 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 2 Dec 2018 13:43:04 +0000 (05:43 -0800)
commit5f6c22aee74f17393b82934a5682d985672e011a
treefb4a7272b32272ff0b678b1482d61073d55c45d7
parent3134061ce6e33ade4cc65a36578b94983228815e
gold: Get alignment of uncompressed section from ch_addralign

The ELF compression header has a field (ch_addralign) that is set to
the alignment of the uncompressed section. This way the section itself
can have a different alignment than the decompressed section.  Update
decompress_input_section to get alignment of the decompressed section
and use it when merging decompressed strings.

PR binutils/23919
* merge.cc (Output_merge_string<Char_type>::do_add_input_section):
Get addralign from decompressed_section_contents.
* object.cc (build_compressed_section_map): Set info.addralign.
(Object::decompressed_section_contents): Add a palign
argument and store p->second.addralign in *palign if it isn't
NULL.
* object.h (Compressed_section_info): Add addralign.
(section_is_compressed): Add a palign argument, default it
to NULL, store p->second.addralign in *palign if it isn't NULL.
(Object::decompressed_section_contents): Likewise.
* output.cc (Output_section::add_input_section): Get addralign
from section_is_compressed.
gold/ChangeLog
gold/merge.cc
gold/object.cc
gold/object.h
gold/output.cc