diff options
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.patch | 83 |
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 @@ | |||
1 | From ec15841963ca3aab3bc88fb0932c014337284bfc Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st> | ||
3 | Date: Wed, 10 Oct 2018 10:47:21 +0300 | ||
4 | Subject: [PATCH 2/2] Prefer response files over linker scripts for mingw tools | ||
5 | |||
6 | The GCC/binutils tools support response files just fine, while | ||
7 | lld (impersonating GNU ld) only supports response files, not | ||
8 | linker scripts. Using a linker script as input just to pass a | ||
9 | list 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 | |||
15 | diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh | ||
16 | index 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..." | ||
61 | diff --git a/m4/libtool.m4 b/m4/libtool.m4 | ||
62 | index 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 | -- | ||
82 | 2.7.4 | ||
83 | |||