Bug 35377

Summary: stack-protector: multiple definition of `__stack_chk_fail_local'
Product: gcc Reporter: Gabor Z. Papp <gzp>
Component: otherAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs
Priority: P3    
Version: 4.4.5   
Target Milestone: ---   
Host: i686-pc-linux-gnu Target: i686-pc-linux-gnu
Build: i686-pc-linux-gnu Known to work:
Known to fail: Last reconfirmed:

Description Gabor Z. Papp 2008-02-26 11:34:50 UTC
I was compiled and installed gcc-4.2.3 on Linux 2.4, glibc 2.3.6

main configure options was:

--enable-shared=libstdc++
--enable-static
--disable-debug
--enable-cpp
--enable-languages=c,c++
--enable-threads

After successfully compile and install got some problems when compiling apps
using the -fstack-protector option:

Linking C executable at-parser
/pkg/lib/gcc/i686-pc-linux-gnu/4.2.3/../../../libssp.a(ssp.o): In function `__stack_chk_fail_local':
/home/gzp/src/gcc-4.2.3/obj/i686-pc-linux-gnu/libssp/../../../libssp/ssp.c:175: multiple definition of `__stack_chk_fail_local'
/pkg/lib/gcc/i686-pc-linux-gnu/4.2.3/../../../libssp_nonshared.a(libssp_nonshared_la-ssp-local.o):/home/gzp/src/gcc-4.2.3/obj/i686-pc-linux-gnu/libssp/../../../libssp/ssp-local.c:48: first defined here
collect2: ld returned 1 exit status
make[3]: *** [tests/at-parser] Error 1

libssp present only in static format, as libssp_nonshared.
Comment 1 Gabor Z. Papp 2008-12-27 09:11:28 UTC
ping, the problem still exist, due the combinations of the configure options (static vs shared)
Comment 2 Gabor Z. Papp 2010-10-01 17:47:57 UTC
Changing in gcc/gcc.c

#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}"

to


#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp}"

solved the problem.