authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-01-26 00:33:37+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-01-26 05:48:32+01:00
logce58f68903f13a90f3bb2a566755e4c74b56ecdf
tree818eef458729cc26d3264aa7ef543ca898290efd
parentdcaf43674e35372e1d28ab12c4c4ff9af9f3d646

elf: merge all mergeable string rodata sections into one


1 files changed, 2 insertions(+), 1 deletions(-)

src/link/Elf/Object.zig+2-1
...@@ -251,7 +251,8 @@ fn initOutputSection(self: Object, elf_file: *Elf, shdr: ElfShdr) error{OutOfMem...@@ -251,7 +251,8 @@ fn initOutputSection(self: Object, elf_file: *Elf, shdr: ElfShdr) error{OutOfMem
251 const name = blk: {251 const name = blk: {
252 const name = self.getString(shdr.sh_name);252 const name = self.getString(shdr.sh_name);
253 if (elf_file.base.isRelocatable()) break :blk name;253 if (elf_file.base.isRelocatable()) break :blk name;
254 if (shdr.sh_flags & elf.SHF_MERGE != 0) break :blk name;254 if (shdr.sh_flags & elf.SHF_MERGE != 0 and shdr.sh_flags & elf.SHF_STRINGS == 0)
255 break :blk name; // TODO: consider dropping SHF_STRINGS once ICF is implemented
255 const sh_name_prefixes: []const [:0]const u8 = &.{256 const sh_name_prefixes: []const [:0]const u8 = &.{
256 ".text", ".data.rel.ro", ".data", ".rodata", ".bss.rel.ro", ".bss",257 ".text", ".data.rel.ro", ".data", ".rodata", ".bss.rel.ro", ".bss",
257 ".init_array", ".fini_array", ".tbss", ".tdata", ".gcc_except_table", ".ctors",258 ".init_array", ".fini_array", ".tbss", ".tdata", ".gcc_except_table", ".ctors",