On Sat, 15 May 2010 09:07:49 +0200
Bart Van Assche <bvanass...@acm.org> wrote:
> This behavior has been observed with libtool version 2.2.6.

Bug confirmed.  When code is compiled with -fstack-protector{,-all},
GCC "emits extra code to check for buffer overflows, such as stack
smashing attacks".  This extra code uses symbols from libssp, and
therefore (at least) Cygwin's GCC specs contain:

*link_ssp:
%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}

Therefore, when libtool fails to pass -fstack-protector{,-all} at link
stage, the link fails.

Patch attached.  (Yes, I have a copyright assignment on file.)


Yaakov
Cygwin/X
>From b79f4e117b6f73cc461a2e232063e08481d33300 Mon Sep 17 00:00:00 2001
From: Yaakov Selkowitz <yselkow...@users.sourceforge.net>
Date: Tue, 1 Jun 2010 22:18:51 -0500
Subject: [PATCH] Fix linking with -fstack-protector

* libltdl/config/ltmain.m4sh (func_mode_link): Pass -fstack-protector*
to the linker as it is required at link time to resolve libssp symbols.

Signed-off-by: Yaakov Selkowitz <yselkow...@users.sourceforge.net>
---
 libltdl/config/ltmain.m4sh |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 9e6646f..891d7bb 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -4492,10 +4492,12 @@ func_mode_link ()
       # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
       # -F/path              path to uninstalled frameworks, gcc on darwin
       # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
       # @file                GCC response files
       # -tp=*                Portland pgcc target processor selection
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*| \
+      -fstack-protector*)
         func_quote_for_eval "$arg"
 	arg="$func_quote_for_eval_result"
         func_append compile_command " $arg"
-- 
1.7.0.4

Reply via email to