diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 83982b1376e9..8e44a982067d 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -48,6 +48,11 @@ stdenv.mkDerivation rec { # there) and causes a cycle between the lib and bin outputs, so # get rid of it. ./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" ]; diff --git a/pkgs/development/tools/misc/binutils/disambiguate-arm-targets.patch b/pkgs/development/tools/misc/binutils/disambiguate-arm-targets.patch new file mode 100644 index 000000000000..abbfa73da05d --- /dev/null +++ b/pkgs/development/tools/misc/binutils/disambiguate-arm-targets.patch @@ -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