0012-Prefer-response-files-over-linker-scripts-for-mingw-.patch (3895B)
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.in b/build-aux/ltmain.in 16 index e2fb263..db5d590 100644 17 --- a/build-aux/ltmain.in 18 +++ b/build-aux/ltmain.in 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