x86-64: Return SHN_COMMON on non-ELF input

Message ID CAMe9rOocK3FW8wp-pEeixfa_EnVTYbx30qmhBMbQFSJT_XCE_w@mail.gmail.com
State New
Headers
Series x86-64: Return SHN_COMMON on non-ELF input |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 success Test passed
linaro-tcwg-bot/tcwg_binutils_check--master-arm success Test passed

Commit Message

H.J. Lu July 30, 2026, 7:53 a.m. UTC
  elf_x86_64_common_definition segfaults on PE/x86-64 input.  Return
SHN_COMMON on non-ELF input.  Linker now gets assertion fail at
bfd/coffgen.c:575, instead of getting segfault.

PR ld/34449
* elf64-x86-64.c (elf_x86_64_common_definition): Return
SHN_COMMON on non-ELF input.
  

Patch

From fb72e8483e55333dd66f39c7ab5df250418133bc Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 30 Jul 2026 15:47:05 +0800
Subject: [PATCH] x86-64: Return SHN_COMMON on non-ELF input

elf_x86_64_common_definition segfaults on PE/x86-64 input.  Return
SHN_COMMON on non-ELF input.  Linker now gets assertion fail at
bfd/coffgen.c:575, instead of getting segfault.

	PR ld/34449
	* elf64-x86-64.c (elf_x86_64_common_definition): Return
	SHN_COMMON on non-ELF input.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
---
 bfd/elf64-x86-64.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index f412b076933..e7efc6210d2 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -6105,7 +6105,8 @@  elf_x86_64_common_definition (Elf_Internal_Sym *sym)
 static unsigned int
 elf_x86_64_common_section_index (asection *sec)
 {
-  if ((elf_section_flags (sec) & SHF_X86_64_LARGE) == 0)
+  if (bfd_get_flavour (sec->owner) != bfd_target_elf_flavour
+      || (elf_section_flags (sec) & SHF_X86_64_LARGE) == 0)
     return SHN_COMMON;
   else
     return SHN_X86_64_LCOMMON;
-- 
2.55.0