bug-libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

libtool and FreeBSD.


From: Mark Andrews
Subject: libtool and FreeBSD.
Date: Thu, 15 Jun 2006 12:40:50 +1000

        libtool 1.5.22 fails to link a simple threaded executable
        under FreeBSD. -pthread is a compiler directive not a library.

        Note also the FreeBSD porters handbook explicitly recommends
        against linking in -lpthread or -lc_r directly.

http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/dads-pthread.html

        Note: specifying -lpthread on the command line will also allow the
        linking to complete but should not be required.  This change supports
        specifying both -pthread and -lpthread.

        Mark

Without patch:

/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=compile gcc -pthread  
-I/home/marka/cvs/bind9-xx -I/home/marka/cvs/bind9-xx/lib/dns/include  
-I../../lib/dns/include -I/home/marka/cvs/bind9-xx/lib/isc/include  
-I../../lib/isc  -I../../lib/isc/include  -I../../lib/isc/unix/include  
-I../../lib/isc/pthreads/include  -I../../lib/isc/x86_32/include 
-I/home/marka/cvs/bind9-xx/lib/isccfg/include  -I../../lib/isccfg/include  
-I/home/marka/cvs/bind9-xx/lib/lwres/include  -I../../lib/lwres/unix/include  
-I../../lib/lwres/include    -D_REENTRANT  -D_THREAD_SAFE -g -O2   -W -Wall 
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith 
-fno-strict-aliasing  -c genrandom.c
 gcc -pthread -I/home/marka/cvs/bind9-xx 
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include 
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc 
-I../../lib/isc/include -I../../lib/isc/unix/include 
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include 
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include 
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include 
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall 
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith 
-fno-strict-aliasing -c genrandom.c  -fPIC -DPIC -o .libs/genrandom.o
 gcc -pthread -I/home/marka/cvs/bind9-xx 
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include 
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc 
-I../../lib/isc/include -I../../lib/isc/unix/include 
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include 
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include 
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include 
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall 
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith 
-fno-strict-aliasing -c genrandom.c -o genrandom.o >/dev/null 2>&1
/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=link  gcc -pthread -g -O2  -o 
genrandom genrandom.lo
rm -f .libs/genrandom.nm .libs/genrandom.nmS .libs/genrandom.nmT
creating .libs/genrandomS.c
extracting global C symbols from `.libs/genrandom.o'
(cd .libs && gcc -pthread -c -fno-builtin "genrandomS.c")
rm -f .libs/genrandomS.c .libs/genrandom.nm .libs/genrandom.nmS 
.libs/genrandom.nmT
gcc -g -O2 -o genrandom .libs/genrandom.o  .libs/genrandom.o 
.libs/genrandom.o(.text+0x0): In function `main':
/home/marka/cvs/bind9-xx/bin/tests/genrandom.c:29: multiple definition of `main'
.libs/genrandom.o(.text+0x0):/home/marka/cvs/bind9-xx/bin/tests/genrandom.c:29: 
first defined here
rm -f .libs/genrandomS.o
*** Error code 1

With patch:

/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=compile gcc -pthread  
-I/home/marka/cvs/bind9-xx -I/home/marka/cvs/bind9-xx/lib/dns/include  
-I../../lib/dns/include -I/home/marka/cvs/bind9-xx/lib/isc/include  
-I../../lib/isc  -I../../lib/isc/include  -I../../lib/isc/unix/include  
-I../../lib/isc/pthreads/include  -I../../lib/isc/x86_32/include 
-I/home/marka/cvs/bind9-xx/lib/isccfg/include  -I../../lib/isccfg/include  
-I/home/marka/cvs/bind9-xx/lib/lwres/include  -I../../lib/lwres/unix/include  
-I../../lib/lwres/include    -D_REENTRANT  -D_THREAD_SAFE -g -O2   -W -Wall 
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith 
-fno-strict-aliasing  -c genrandom.c
 gcc -pthread -I/home/marka/cvs/bind9-xx 
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include 
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc 
-I../../lib/isc/include -I../../lib/isc/unix/include 
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include 
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include 
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include 
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall 
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith 
-fno-strict-aliasing -c genrandom.c  -fPIC -DPIC -o .libs/genrandom.o
 gcc -pthread -I/home/marka/cvs/bind9-xx 
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include 
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc 
-I../../lib/isc/include -I../../lib/isc/unix/include 
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include 
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include 
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include 
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall 
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith 
-fno-strict-aliasing -c genrandom.c -o genrandom.o >/dev/null 2>&1
/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=link  gcc -pthread -g -O2  -o 
genrandom genrandom.lo
gcc -pthread -g -O2 -o genrandom .libs/genrandom.o

% ldd genrandom
genrandom:
        libpthread.so.2 => /usr/lib/libpthread.so.2 (0x28074000)
        libc.so.6 => /lib/libc.so.6 (0x28099000)
%

Index: bind9/ltmain.sh
diff -u bind9/ltmain.sh:1.11 bind9/ltmain.sh:1.11.434.1
--- bind9/ltmain.sh:1.11        Thu Dec  2 22:58:01 2004
+++ bind9/ltmain.sh     Thu Jun 15 00:49:49 2006
@@ -1488,9 +1488,17 @@
        ;;
 
      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
-       case "$archive_cmds" in
-        *"\$LD"*) ;;
-        *) deplibs="$deplibs $arg";;
+       case $host in
+       *-*-freebsd*)
+          compile_command="$compile_command $arg"
+          finalize_command="$finalize_command $arg"
+          ;;
+       *)
+          case "$archive_cmds" in
+            *"\$LD"*) ;;
+            *) deplibs="$deplibs $arg";;
+          esac
+          ;;
        esac
        continue
        ;;
-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE:  +61 2 9871 4742                  INTERNET: address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]