aboutsummaryrefslogtreecommitdiff
path: root/contrib/autotools-patches/0012-Prefer-response-files-over-linker-scripts-for-mingw-mod.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/autotools-patches/0012-Prefer-response-files-over-linker-scripts-for-mingw-mod.patch')
-rw-r--r--contrib/autotools-patches/0012-Prefer-response-files-over-linker-scripts-for-mingw-mod.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/contrib/autotools-patches/0012-Prefer-response-files-over-linker-scripts-for-mingw-mod.patch b/contrib/autotools-patches/0012-Prefer-response-files-over-linker-scripts-for-mingw-mod.patch
new file mode 100644
index 00000000..e0222b59
--- /dev/null
+++ b/contrib/autotools-patches/0012-Prefer-response-files-over-linker-scripts-for-mingw-mod.patch
@@ -0,0 +1,83 @@
1From ec15841963ca3aab3bc88fb0932c014337284bfc Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
3Date: Wed, 10 Oct 2018 10:47:21 +0300
4Subject: [PATCH 2/2] Prefer response files over linker scripts for mingw tools
5
6The GCC/binutils tools support response files just fine, while
7lld (impersonating GNU ld) only supports response files, not
8linker scripts. Using a linker script as input just to pass a
9list of files is overkill for cases when a response file is enough.
10---
11 build-aux/ltmain.in | 28 ++++++++++++++--------------
12 m4/libtool.m4 | 2 ++
13 2 files changed, 16 insertions(+), 14 deletions(-)
14
15diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
16index e2fb263..db5d590 100644
17--- a/build-aux/ltmain.sh
18+++ b/build-aux/ltmain.sh
19@@ -7932,20 +7932,7 @@ EOF
20 last_robj=
21 k=1
22
23- if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
24- output=$output_objdir/$output_la.lnkscript
25- func_verbose "creating GNU ld script: $output"
26- echo 'INPUT (' > $output
27- for obj in $save_libobjs
28- do
29- func_to_tool_file "$obj"
30- $ECHO "$func_to_tool_file_result" >> $output
31- done
32- echo ')' >> $output
33- func_append delfiles " $output"
34- func_to_tool_file "$output"
35- output=$func_to_tool_file_result
36- elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
37+ if test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
38 output=$output_objdir/$output_la.lnk
39 func_verbose "creating linker input file list: $output"
40 : > $output
41@@ -7964,6 +7951,19 @@ EOF
42 func_append delfiles " $output"
43 func_to_tool_file "$output"
44 output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
45+ elif test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
46+ output=$output_objdir/$output_la.lnkscript
47+ func_verbose "creating GNU ld script: $output"
48+ echo 'INPUT (' > $output
49+ for obj in $save_libobjs
50+ do
51+ func_to_tool_file "$obj"
52+ $ECHO "$func_to_tool_file_result" >> $output
53+ done
54+ echo ')' >> $output
55+ func_append delfiles " $output"
56+ func_to_tool_file "$output"
57+ output=$func_to_tool_file_result
58 else
59 if test -n "$save_libobjs"; then
60 func_verbose "creating reloadable object files..."
61diff --git a/m4/libtool.m4 b/m4/libtool.m4
62index d9322d0..9046a84 100644
63--- a/m4/libtool.m4
64+++ b/m4/libtool.m4
65@@ -5130,6 +5130,7 @@ _LT_EOF
66 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
67 _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
68 _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
69+ _LT_TAGVAR(file_list_spec, $1)='@'
70
71 if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
72 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
73@@ -6706,6 +6707,7 @@ if test yes != "$_lt_caught_CXX_error"; then
74 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
75 _LT_TAGVAR(always_export_symbols, $1)=no
76 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
77+ _LT_TAGVAR(file_list_spec, $1)='@'
78
79 if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
80 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
81--
822.7.4
83