Fix incremental linking with rodata merge sections.

When processing the incremental update, incoming .rodata merge sections
do not match the corresponding section in the base file, because the
SHF_MERGE flag had not been masked out of the latter.

gold/
	PR gold/24123
	* layout.cc (Layout::init_fixed_output_section): Mask out flags that
	should be ignored when matching sections.
This commit is contained in:
Cary Coutant 2020-12-13 15:19:41 -08:00
parent 4cf2ad7200
commit f12650bff1
2 changed files with 8 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2020-12-13 Cary Coutant <ccoutant@gmail.com>
PR gold/24123
* layout.cc (Layout::init_fixed_output_section): Mask out flags that
should be ignored when matching sections.
2020-12-07 Alan Modra <amodra@gmail.com>
* plugin.cc (Plugin_recorder::init): Replace strncpy with memcpy.

View File

@ -1099,7 +1099,8 @@ Layout::init_fixed_output_section(const char* name,
typename elfcpp::Elf_types<size>::Elf_Addr sh_addr = shdr.get_sh_addr();
typename elfcpp::Elf_types<size>::Elf_Off sh_offset = shdr.get_sh_offset();
typename elfcpp::Elf_types<size>::Elf_WXword sh_size = shdr.get_sh_size();
typename elfcpp::Elf_types<size>::Elf_WXword sh_flags = shdr.get_sh_flags();
typename elfcpp::Elf_types<size>::Elf_WXword sh_flags =
this->get_output_section_flags(shdr.get_sh_flags());
typename elfcpp::Elf_types<size>::Elf_WXword sh_addralign =
shdr.get_sh_addralign();