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:
parent
4cf2ad7200
commit
f12650bff1
@ -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>
|
2020-12-07 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* plugin.cc (Plugin_recorder::init): Replace strncpy with memcpy.
|
* plugin.cc (Plugin_recorder::init): Replace strncpy with memcpy.
|
||||||
|
@ -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_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_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_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 =
|
typename elfcpp::Elf_types<size>::Elf_WXword sh_addralign =
|
||||||
shdr.get_sh_addralign();
|
shdr.get_sh_addralign();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user