nixpkgs/pkgs/development/tools/misc/binutils/disambiguate-arm-targets.patch
Orivej Desh c76890f2fe binutils: disambiguate ARM targets
https://github.com/NixOS/nixpkgs/pull/30484#issuecomment-345472766

Since [1] libbfd is compiled with support for all available targets. However, it
can not choose whether an ARM ELF file is elf32-littlearm,
elf32-littlearm-symbian, or elf32-littlearm-vxworks, and fails with the "File
format is ambiguous" error.  Here [2] Alan Modra intended to prioritize the
first of the three, but although his patch was merged and reportedly solved the
issue, currently glibc 2.28.1 and 2.29.1 again fail to disambiguate these
targets.  This commit makes it prioritize elf32-littlearm over the other two.

[1] f8741c38cd546e3ff18ce9d708de14ff2aae68ab
[2] https://sourceware.org/ml/binutils/2013-05/msg00271.html
2017-11-19 03:36:53 +00:00

24 lines
826 B
Diff

diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 9f956d3..f5b61f1 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -19585,7 +19585,10 @@ elf32_arm_vxworks_final_write_processing (bfd *abfd, bfd_boolean linker)
#undef ELF_MAXPAGESIZE
#define ELF_MAXPAGESIZE 0x1000
+/* Prioritize elf32-*arm (priority 1) over elf32-*arm-vxworks (priority 2) */
+#define elf_match_priority 2
#include "elf32-target.h"
+#undef elf_match_priority
/* Merge backend specific data from an object file to the output
@@ -19974,4 +19977,7 @@ elf32_arm_symbian_plt_sym_val (bfd_vma i, const asection *plt,
#undef ELF_MAXPAGESIZE
#define ELF_MAXPAGESIZE 0x8000
+/* Prioritize elf32-*arm (priority 1) over elf32-*arm-symbian (priority 2) */
+#define elf_match_priority 2
#include "elf32-target.h"
+#undef elf_match_priority