forked from mirrors/nixpkgs
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] f8741c38cd
[2] https://sourceware.org/ml/binutils/2013-05/msg00271.html
This commit is contained in:
parent
d4d7e1ea09
commit
c76890f2fe
|
@ -48,6 +48,11 @@ stdenv.mkDerivation rec {
|
||||||
# there) and causes a cycle between the lib and bin outputs, so
|
# there) and causes a cycle between the lib and bin outputs, so
|
||||||
# get rid of it.
|
# get rid of it.
|
||||||
./no-plugins.patch
|
./no-plugins.patch
|
||||||
|
|
||||||
|
# Help bfd choose between elf32-littlearm, elf32-littlearm-symbian, and
|
||||||
|
# elf32-littlearm-vxworks in favor of the first.
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/30484#issuecomment-345472766
|
||||||
|
./disambiguate-arm-targets.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
outputs = [ "out" "info" ];
|
outputs = [ "out" "info" ];
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
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
|
Loading…
Reference in a new issue