summaryrefslogtreecommitdiff
path: root/dev-util/mingw64-toolchain/files/binutils-2.40-import-lib.patch
blob: 844fdf93020dc7f6b5e29ab89caa32537a2bf96a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Fixes building app-emulation/dxvk:

    FAILED: src/d3d10/d3d10.dll
    x86_64-w64-mingw32-g++ -m32 -mfpmath=sse  -o src/d3d10/d3d10.dll <snip>
    ld: internal error: aborting at ldlang.c:527 in compare_section
    ld: please report this bug

https://sourceware.org/PR30079
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=b7eab2a9d4f4e92692daf14b09fc95ca11b72e30
From: Michael Matz <matz@suse.de>
Date: Thu, 9 Feb 2023 15:29:00 +0100
Subject: [PATCH] Fix PR30079: abort on mingw

the early-out in wild_sort is not enough, it might still be
that filenames are equal _and_ the wildcard list doesn't specify
a sort order either.  Don't call compare_section then.

Tested on all targets.
--- a/binutils/ld/ldlang.c
+++ b/binutils/ld/ldlang.c
@@ -649,7 +649,8 @@ wild_sort (lang_wild_statement_type *wild,
 	 looking at the sections for this file.  */
 
       /* Find the correct node to append this section.  */
-      if (compare_section (sec->spec.sorted, section, (*tree)->section) < 0)
+      if (sec && sec->spec.sorted != none && sec->spec.sorted != by_none
+	  && compare_section (sec->spec.sorted, section, (*tree)->section) < 0)
 	tree = &((*tree)->left);
       else
 	tree = &((*tree)->right);