From: Cary Coutant Date: Sun, 13 Dec 2020 23:19:41 +0000 (-0800) Subject: Fix incremental linking with rodata merge sections. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f12650bff1a591357c26e0ef6d7be0323f76fdb8;p=binutils-gdb.git 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. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index e152e1ed698..bfb7a7002ac 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2020-12-13 Cary Coutant + + 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 * plugin.cc (Plugin_recorder::init): Replace strncpy with memcpy. diff --git a/gold/layout.cc b/gold/layout.cc index 8563f110995..8acfb960d12 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -1099,7 +1099,8 @@ Layout::init_fixed_output_section(const char* name, typename elfcpp::Elf_types::Elf_Addr sh_addr = shdr.get_sh_addr(); typename elfcpp::Elf_types::Elf_Off sh_offset = shdr.get_sh_offset(); typename elfcpp::Elf_types::Elf_WXword sh_size = shdr.get_sh_size(); - typename elfcpp::Elf_types::Elf_WXword sh_flags = shdr.get_sh_flags(); + typename elfcpp::Elf_types::Elf_WXword sh_flags = + this->get_output_section_flags(shdr.get_sh_flags()); typename elfcpp::Elf_types::Elf_WXword sh_addralign = shdr.get_sh_addralign();