MIPS: Don't __gnu_lto_slim to .scommon

Message ID 20230703103647.3162351-1-yunqiang.su@cipunited.com
State Accepted
Headers
Series MIPS: Don't __gnu_lto_slim to .scommon |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

YunQiang Su July 3, 2023, 10:36 a.m. UTC
  The LTO plugin doesn't expect __gnu_lto_slim is marked as COMMON,
and in .scommon section.

Let's skip __gnu_lto_slim when detect symbols that should be moved
to .scommon.

This patch can fix testcase:
	PR ld/15323 (3)
	PR ld/15323 (4)
for MIPS.
---
 bfd/elfxx-mips.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Patch

diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 71f2dc9d779..63742de009c 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -7861,6 +7861,10 @@  _bfd_mips_elf_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
   switch (sym->st_shndx)
     {
     case SHN_COMMON:
+      /* __gnu_lto_slim shouldn't mark as COMMON and move to .scommon:
+	lto plugin doesn't expect so.  */
+      if (strcmp (*namep, "__gnu_lto_slim") == 0)
+	break;
       /* Common symbols less than the GP size are automatically
 	 treated as SHN_MIPS_SCOMMON symbols.  */
       if (sym->st_size > elf_gp_size (abfd)