diff --git a/7.3.050 b/7.3.050 new file mode 100644 index 0000000..cccb836 --- /dev/null +++ b/7.3.050 @@ -0,0 +1,199 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.050 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.050 +Problem: The link script is clumsy. +Solution: Use the --as-needed linker option if available. (Kirill A. + Shutemov) +Files: src/Makefile, src/auto/configure, src/config.mk.in, + src/configure.in, src/link.sh + + +*** ../vim-7.3.049/src/Makefile 2010-10-27 16:49:41.000000000 +0200 +--- src/Makefile 2010-11-03 22:26:45.000000000 +0100 +*************** +*** 1700,1706 **** + $(CCC) version.c -o objects/version.o + @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ + -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \ +! MAKE="$(MAKE)" sh $(srcdir)/link.sh + + xxd/xxd$(EXEEXT): xxd/xxd.c + cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ +--- 1700,1707 ---- + $(CCC) version.c -o objects/version.o + @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ + -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \ +! MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \ +! sh $(srcdir)/link.sh + + xxd/xxd$(EXEEXT): xxd/xxd.c + cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ +*** ../vim-7.3.049/src/auto/configure 2010-11-03 21:59:23.000000000 +0100 +--- src/auto/configure 2010-11-03 22:28:03.000000000 +0100 +*************** +*** 593,598 **** +--- 593,599 ---- + + ac_subst_vars='LTLIBOBJS + LIBOBJS ++ LINK_AS_NEEDED + DEPEND_CFLAGS_FILTER + MAKEMO + MSGFMT +*************** +*** 12404,12409 **** +--- 12405,12427 ---- + fi + + ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5 ++ $as_echo_n "checking linker --as-needed support... " >&6; } ++ LINK_AS_NEEDED= ++ # Check if linker supports --as-needed and --no-as-needed options ++ if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then ++ LDFLAGS="$LDFLAGS -Wl,--as-needed" ++ LINK_AS_NEEDED=yes ++ fi ++ if test "$LINK_AS_NEEDED" = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++ $as_echo "yes" >&6; } ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++ $as_echo "no" >&6; } ++ fi ++ ++ + ac_config_files="$ac_config_files auto/config.mk:config.mk.in" + + cat >confcache <<\_ACEOF +*** ../vim-7.3.049/src/config.mk.in 2010-08-15 21:57:28.000000000 +0200 +--- src/config.mk.in 2010-11-03 22:26:24.000000000 +0100 +*************** +*** 30,35 **** +--- 30,36 ---- + CPP = @CPP@ + CPP_MM = @CPP_MM@ + DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@ ++ LINK_AS_NEEDED = @LINK_AS_NEEDED@ + X_CFLAGS = @X_CFLAGS@ + X_LIBS_DIR = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +*** ../vim-7.3.049/src/configure.in 2010-11-03 21:59:23.000000000 +0100 +--- src/configure.in 2010-11-03 22:26:16.000000000 +0100 +*************** +*** 3527,3532 **** +--- 3527,3549 ---- + fi + AC_SUBST(DEPEND_CFLAGS_FILTER) + ++ dnl link.sh tries to avoid overlinking in a hackish way. ++ dnl At least GNU ld supports --as-needed which provides the same functionality ++ dnl at linker level. Let's use it. ++ AC_MSG_CHECKING(linker --as-needed support) ++ LINK_AS_NEEDED= ++ # Check if linker supports --as-needed and --no-as-needed options ++ if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then ++ LDFLAGS="$LDFLAGS -Wl,--as-needed" ++ LINK_AS_NEEDED=yes ++ fi ++ if test "$LINK_AS_NEEDED" = yes; then ++ AC_MSG_RESULT(yes) ++ else ++ AC_MSG_RESULT(no) ++ fi ++ AC_SUBST(LINK_AS_NEEDED) ++ + dnl write output files + AC_OUTPUT(auto/config.mk:config.mk.in) + +*** ../vim-7.3.049/src/link.sh 2010-08-15 21:57:25.000000000 +0200 +--- src/link.sh 2010-11-03 22:26:08.000000000 +0100 +*************** +*** 5,11 **** + # libraries when they exist, but this doesn't mean they are needed for Vim. + # + # Author: Bram Moolenaar +! # Last change: 2006 Sep 26 + # License: Public domain + # + # Warning: This fails miserably if the linker doesn't return an error code! +--- 5,11 ---- + # libraries when they exist, but this doesn't mean they are needed for Vim. + # + # Author: Bram Moolenaar +! # Last change: 2010 Nov 03 + # License: Public domain + # + # Warning: This fails miserably if the linker doesn't return an error code! +*************** +*** 16,26 **** + echo "$LINK " >link.cmd + exit_value=0 + + # + # If auto/link.sed already exists, use it. We assume a previous run of + # link.sh has found the correct set of libraries. + # +- if test -f auto/link.sed; then + echo "link.sh: The file 'auto/link.sed' exists, which is going to be used now." + echo "link.sh: If linking fails, try deleting the auto/link.sed file." + echo "link.sh: If this fails too, try creating an empty auto/link.sed file." +--- 16,38 ---- + echo "$LINK " >link.cmd + exit_value=0 + ++ if test "$LINK_AS_NEEDED" = yes; then ++ echo "link.sh: \$LINK_AS_NEEDED set to 'yes': invoking linker directly." ++ cat link.cmd ++ if sh link.cmd; then ++ exit_value=0 ++ echo "link.sh: Linked fine" ++ else ++ exit_value=$? ++ echo "link.sh: Linking failed" ++ fi ++ else ++ if test -f auto/link.sed; then ++ + # + # If auto/link.sed already exists, use it. We assume a previous run of + # link.sh has found the correct set of libraries. + # + echo "link.sh: The file 'auto/link.sed' exists, which is going to be used now." + echo "link.sh: If linking fails, try deleting the auto/link.sed file." + echo "link.sh: If this fails too, try creating an empty auto/link.sed file." +*************** +*** 124,129 **** +--- 136,143 ---- + fi + fi + ++ fi ++ + # + # cleanup + # +*** ../vim-7.3.049/src/version.c 2010-11-03 21:59:23.000000000 +0100 +--- src/version.c 2010-11-03 22:30:17.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 50, + /**/ + +-- +Save the plankton - eat a whale. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///