binutils: add upstream patch to fix issue with parallel use of dlltool

https://sourceware.org/bugzilla/show_bug.cgi?id=28885

Patch taken from the upstream binutils-2_38-branch branch.
main
Stefan Frijters 2 years ago
parent 5a4412d6ee
commit 4b0f59afcc
No known key found for this signature in database
GPG Key ID: 7619A6BC6E7DFA6F
  1. 6
      pkgs/development/tools/misc/binutils/default.nix
  2. 36
      pkgs/development/tools/misc/binutils/deterministic-temp-prefixes.patch

@ -82,6 +82,12 @@ stdenv.mkDerivation {
# override this behavior, forcing ld to search DT_RPATH even when
# cross-compiling.
./always-search-rpath.patch
# Fixed in 2.39
# https://sourceware.org/bugzilla/show_bug.cgi?id=28885
# https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=99852365513266afdd793289813e8e565186c9e6
# https://github.com/NixOS/nixpkgs/issues/170946
./deterministic-temp-prefixes.patch
]
++ lib.optional targetPlatform.isiOS ./support-ios.patch
# This patch was suggested by Nick Clifton to fix

@ -0,0 +1,36 @@
From 99852365513266afdd793289813e8e565186c9e6 Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Wed, 23 Mar 2022 11:39:49 +0000
Subject: [PATCH] dlltool: Use the output name as basis for deterministic temp
prefixes
PR 28885
* dlltool.c (main): use imp_name rather than dll_name when
generating a temporary file name.
---
binutils/ChangeLog | 9 +++++++++
binutils/dlltool.c | 7 ++++---
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index d95bf3f5470..89871510b45 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -3992,10 +3992,11 @@ main (int ac, char **av)
if (tmp_prefix == NULL)
{
/* If possible use a deterministic prefix. */
- if (dll_name)
+ if (imp_name || delayimp_name)
{
- tmp_prefix = xmalloc (strlen (dll_name) + 2);
- sprintf (tmp_prefix, "%s_", dll_name);
+ const char *input = imp_name ? imp_name : delayimp_name;
+ tmp_prefix = xmalloc (strlen (input) + 2);
+ sprintf (tmp_prefix, "%s_", input);
for (i = 0; tmp_prefix[i]; i++)
if (!ISALNUM (tmp_prefix[i]))
tmp_prefix[i] = '_';
--
2.31.1
Loading…
Cancel
Save