Bug 11682 - undefined reference to `__condvar_cleanup' from 2.3.5 to 2.12
Summary: undefined reference to `__condvar_cleanup' from 2.3.5 to 2.12
Status: RESOLVED INVALID
Alias: None
Product: glibc
Classification: Unclassified
Component: nptl (show other bugs)
Version: 2.12
: P2 normal
Target Milestone: ---
Assignee: Ulrich Drepper
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-09 02:23 UTC by Frédéric L. W. Meunier
Modified: 2014-06-30 17:51 UTC (History)
1 user (show)

See Also:
Host: i686-pc-linux-gnu
Target: i686-pc-linux-gnu
Build: i686-pc-linux-gnu
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Frédéric L. W. Meunier 2010-06-09 02:23:34 UTC
I get the following error upgrading from 2.3.5 to 2.12 git, using --prefix=/usr
--enable-stackguard-randomization --enable-add-ons=libidn,nptl --enable-bind-now
--enable-kernel=2.6.33 --without-cvs
--with-headers=/home/fredlwm/src/linux-2.6.34/objdir/usr/include --with-tls

/home/fredlwm/src/glibc-2.12-20100601/objdir/nptl/libpthread_pic.a(pthread_cond_timedwait.os):
In function `pthread_cond_timedwait@@GLIBC_2.3.2':
pthread_cond_timedwait.c:(.text+0xaa): undefined reference to `__condvar_cleanup'
/usr/lib/gcc/i686-pc-linux-gnu/4.4.4/../../../../i686-pc-linux-gnu/bin/ld:
/home/fredlwm/src/glibc-2.12-20100601/objdir/nptl/libpthread_pic.a(pthread_cond_timedwait.os):
relocation R_386_GOTOFF against undefined hidden symbol `__condvar_cleanup' can
not be used when making a shared object
/usr/lib/gcc/i686-pc-linux-gnu/4.4.4/../../../../i686-pc-linux-gnu/bin/ld: final
link failed: Bad value
collect2: ld returned 1 exit status
make[2]: *** [/home/fredlwm/src/glibc-2.12-20100601/objdir/nptl/libpthread.so]
Error 1

binutils is 2.20.51.0.9, GCC 4.4.4, kernel headers from 2.6.34.
Comment 1 Petr Baudis 2010-06-09 09:31:57 UTC
Can you confirm that dropping --enable-bind-now fixes the problem?
Comment 2 Frédéric L. W. Meunier 2010-06-09 14:34:28 UTC
Sorry for that, but I meant 2.3.6, not 2.3.5.

I tried without --enable-bind-now (2.3.6 was compiled with it), but it doesn't
fix it. I also removed --enable-stackguard-randomization.

I also tried 2.11.2, and it compiles nptl, but stops at nscd:

/home/fredlwm/src/glibc-2.11.2/objdir/nscd/nscd.o: In function `nscd_open_socket
':
nscd.c:(.text+0x277): undefined reference to `__stack_chk_guard'
/home/fredlwm/src/glibc-2.11.2/objdir/nscd/nscd.o: In function `parse_opt':
nscd.c:(.text+0x91f): undefined reference to `__stack_chk_guard'
/home/fredlwm/src/glibc-2.11.2/objdir/nscd/connections.o: In function `restart':
connections.c:(.text+0x2f9): undefined reference to `__stack_chk_guard'
connections.c:(.text+0x459): undefined reference to `__stack_chk_guard'
/home/fredlwm/src/glibc-2.11.2/objdir/nscd/connections.o: In function
`main_loop_epoll':
connections.c:(.text+0xa26): undefined reference to `__stack_chk_guard'
/home/fredlwm/src/glibc-2.11.2/objdir/nscd/connections.o:connections.c
(.text+0x11119): more undefined references to `__stack_chk_guard' follow
collect2: ld returned 1 exit status
make[2]: *** [/home/fredlwm/src/glibc-2.11.2/objdir/nscd/nscd] Error 1

The same happens with or without --enable-stackguard-randomization.
Comment 3 Petr Baudis 2010-06-09 18:01:54 UTC
Hmm, this is probably an issue with your toolchain then - most likely, the gcc
version you are using is actually some older one, or you have some spurious
stuff in your $CFLAGS (like -fstack-protector?).

Unfortunately, glibc is tricky to build and we cannot support people having
build issues here, I recommend that you seek a help on some mailing list instead.
Comment 4 Frédéric L. W. Meunier 2010-06-09 18:50:13 UTC
Andreas Jaeger reported it in 2005 -
http://sourceware.org/ml/libc-alpha/2005-07/msg00045.html

My GCC was compiled agaist glibc 2.3.5. I thought that was fixed.

Here, what I did is

-have-ssp = no
+have-ssp = yes

in config.make.

Anyway, I still don't know why 2.12 fails. Do you think I should try compiling
it after 2.11.2 is installed ?

BTW, dozens of nptl tests failed with 2.11.2. I guess, because 2.3.5 was installed.