PR32870: ld: arm32: fix segfault when linking with LLVMgold.so plugin under LTO

Message ID cec025e66b0c4deb9ed2d1d8f5a1d004@huawei.com
State New
Headers
Series PR32870: ld: arm32: fix segfault when linking with LLVMgold.so plugin under LTO |

Checks

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

Commit Message

dongjianqiang (A) April 15, 2025, 9:14 a.m. UTC
  Hi, 

Proposed patch to PR32870.
When handling the iplt in ARM32, the ld must check whether the input_bfd
is in ELF format. If the input is an LLVM Bitcode file, an error will be raised.

Any suggestions? Thanks.

---
	PR 32870
	* elf32-arm.c (elf32_arm_output_arch_local_syms): Check input_bfd
  

Patch

diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 3b7cee3de1c..3af964ce034 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -18345,6 +18345,9 @@  elf32_arm_output_arch_local_syms (bfd *output_bfd,
 	  struct arm_local_iplt_info **local_iplt;
 	  unsigned int i, num_syms;
 
+	  if (!is_arm_elf (input_bfd))
+	    continue;
+
 	  local_iplt = elf32_arm_local_iplt (input_bfd);
 	  if (local_iplt != NULL)
 	    {