From: KOSAKI Motohiro Date: 2011-11-27T14:17:03+09:00 Subject: [ruby-core:41320] Re: [ruby-trunk - Bug #5676][Open] miniruby linking error: undefined reference to ___stack_chk_guard > I get what I think is a linking error when linking miniruby. > Below is a (shortened) copy of the output I get. This is on > a clean checkout of trunk (using Ruby 1.8.7 as baseruby). > > duerst@jougashima /cygdrive/c/Data/ruby-public > $ make > � � � �CC = gcc > � � � �LD = ld > � � � �LDSHARED = gcc -shared -s > � � � �CFLAGS = -O3 -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration > � � � �XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fstack-protector -DRUBY_EXPORT > � � � �CPPFLAGS = � -I. -I.ext/include/i386-cygwin -I./include -I. > � � � �DLDFLAGS = -Wl,--enable-auto-image-base,--enable-auto-import -Wl,--out-implib=libruby191.dll.a cygruby191.def -Xlinker --no-undefined > � � � �SOLIBS = cygruby191.res.o -lpthread -lrt -ldl -lcrypt > linking miniruby.exe > dmyencoding.o: In function `set_encoding_const': > /cygdrive/c/Data/ruby-public/encoding.c:1473: undefined reference to `___stack_chk_guard' > /cygdrive/c/Data/ruby-public/encoding.c:1520: undefined reference to `___stack_chk_guard' > /cygdrive/c/Data/ruby-public/encoding.c:1520: undefined reference to `___stack_chk_fail' > bignum.o: In function `rb_str_to_inum': > /cygdrive/c/Data/ruby-public/bignum.c:763: undefined reference to `___stack_chk_guard' > /cygdrive/c/Data/ruby-public/bignum.c:790: undefined reference to `___stack_chk_guard' > /cygdrive/c/Data/ruby-public/bignum.c:790: undefined reference to `___stack_chk_fail' > dir.o: In function `dir_read': > /cygdrive/c/Data/ruby-public/dir.c:569: undefined reference to `___stack_chk_guard' > /cygdrive/c/Data/ruby-public/dir.c:586: undefined reference to `___stack_chk_guard' > /cygdrive/c/Data/ruby-public/dir.c:586: undefined reference to `___stack_chk_fail' Could you please try following patch? Thanks. From aedc302aede815ee90fef99e756877cbdbd21b14 Mon Sep 17 00:00:00 2001 From: KOSAKI Motohiro Date: Sun, 27 Nov 2011 00:14:44 -0500 Subject: [PATCH] * configure.in: add -fstack-protector into XLDFLAGS as well as XCFLAGS if stack-protector is used. --- ChangeLog | 5 +++++ configure.in | 3 ++- 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5f32df8..cf9068e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Nov 27 14:13:33 2011 KOSAKI Motohiro + + * configure.in: add -fstack-protector into XLDFLAGS as well as + XCFLAGS if stack-protector is used. + Sun Nov 27 04:57:11 2011 NARUSE, Yui * configure.in (--no-undefined): r33840 breaks FreeBSD and DragonFly diff --git a/configure.in b/configure.in index ce4ea18..b12399a 100644 --- a/configure.in +++ b/configure.in @@ -497,7 +497,8 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then fi if test "$GCC" = yes; then RUBY_TRY_CFLAGS(-D_FORTIFY_SOURCE=2, [RUBY_APPEND_OPTION(XCFLAGS, -D_FORTIFY_SOURCE=2)]) - RUBY_TRY_CFLAGS(-fstack-protector, [RUBY_APPEND_OPTION(XCFLAGS, -fstack-protector)]) + RUBY_TRY_CFLAGS(-fstack-protector, [RUBY_APPEND_OPTION(XCFLAGS, -fstack-protector) + RUBY_APPEND_OPTION(XLDFLAGS, -fstack-protector)]) fi if test "$GCC" = ""; then -- 1.7.1