On 03/04/2010 07:34 PM, Török Edwin wrote:
> On 03/04/2010 07:25 PM, Renato Botelho wrote:
>>>> testegw# ldd llvmunittest_ADT
>>>> llvmunittest_ADT:
>>>> libthr.so.2 => /usr/lib/libthr.so.2 (0x8006e7000)
>>>> libstdc++.so.6 => /usr/local/lib/gcc42/libstdc++.so.6 (0x8007fe000)
>>>> libm.so.4 => /lib/libm.so.4 (0x800a0a000)
>>>> libgcc_s.so.1 => /usr/local/lib/gcc42/libgcc_s.so.1 (0x800b26000)
>>>> libpthread.so.2 => /lib/libpthread.so.2 (0x800c33000)
>>>> libc.so.6 => /lib/libc.so.6 (0x800d5e000)
>>> Ouch, how did the linker even allow that?!
>>
>> Yeah, I think we found it:
>
> Ok that comes from here libclamav/c++/Makefile.am:
> libllvmsystem_la_LDFLAGS=-pthread
Please try the attached patch (patch -p1 <freebsd.patch from the source
root).
If it works, I'll commit it, and you should have it in tomorrow's snapshot.
>
> I thought -pthread is the appropriate thing to use (the OpenBSD manpage
> says so at least), guess I should pass @THREAD_LIBS@ from ClamAV's main
> configure to the one in libclamav/c++.
>
>
> Best regards,
> --Edwin
diff --git a/libclamav/c++/Makefile.am b/libclamav/c++/Makefile.am
index 0f0b07f..132a4e4 100644
--- a/libclamav/c++/Makefile.am
+++ b/libclamav/c++/Makefile.am
@@ -79,7 +79,7 @@ TBLGENFILES=llvm/include/llvm/Intrinsics.gen X86GenRegisterInfo.h.inc X86GenRegi
BUILT_SOURCES=
EXTRA_DIST=$(top_srcdir)/llvm llvmdejagnu.sh $(TBLGENFILES)
-libllvmsystem_la_LDFLAGS=-pthread
+libllvmsystem_la_ldfla...@thread_libs@
libllvmsystem_la_LIBADD=
libllvmsystem_la_SOURCES=\
llvm/lib/System/Alarm.cpp\
@@ -151,7 +151,7 @@ noinst_PROGRAMS = tblgen
tblgen_CXXFLAGS=$(LLVM_CXXFLAGS)
tblgen_CFLAGS=
#TODO: if VERSIONSCRIPT
-tblgen_LDFLAGS=-pthread -Wl,--version-script,@top_srcdir@/llvm/autoconf/ExportMap.map
+tblgen_ldfla...@thread_libs@ -Wl,--version-script,@top_srcdir@/llvm/autoconf/ExportMap.map
# tblgen needs rtti (for now), and we build everything else with -fno-rtti
# since tblgen is only a maintainer-mode tool, build these files twice (once for
# libllvmsupport.la -fno-rtti, and once here, with defaults (rtti)).
diff --git a/libclamav/c++/Makefile.in b/libclamav/c++/Makefile.in
index 45b4375..a0c9574 100644
--- a/libclamav/c++/Makefile.in
+++ b/libclamav/c++/Makefile.in
@@ -841,6 +841,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
+THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
@@ -951,7 +952,7 @@ TBLGENFILES = llvm/include/llvm/Intrinsics.gen X86GenRegisterInfo.h.inc X86GenRe
# LLVM
BUILT_SOURCES = $(am__append_13) llvm/config.status
EXTRA_DIST = $(top_srcdir)/llvm llvmdejagnu.sh $(TBLGENFILES)
-libllvmsystem_la_LDFLAGS = -pthread
+libllvmsystem_la_LDFLAGS = @THREAD_LIBS@
libllvmsystem_la_LIBADD =
libllvmsystem_la_SOURCES = llvm/lib/System/Alarm.cpp \
llvm/lib/System/Atomic.cpp llvm/lib/System/Disassembler.cpp \
@@ -1012,7 +1013,7 @@ libllvmsupport_la_SOURCES = \
@maintainer_mode_t...@tblgen_cxxflags = $(LLVM_CXXFLAGS)
@maintainer_mode_t...@tblgen_cflags =
#TODO: if VERSIONSCRIPT
-...@maintainer_mode_true@tblgen_LDFLAGS = -pthread -Wl,--version-script,@top_srcdir@/llvm/autoconf/ExportMap.map
+...@maintainer_mode_true@tblgen_LDFLAGS = @THREAD_LIBS@ -Wl,--version-script,@top_srcdir@/llvm/autoconf/ExportMap.map
# tblgen needs rtti (for now), and we build everything else with -fno-rtti
# since tblgen is only a maintainer-mode tool, build these files twice (once for
# libllvmsupport.la -fno-rtti, and once here, with defaults (rtti)).
diff --git a/libclamav/c++/configure b/libclamav/c++/configure
index d600a8f..35e2332 100755
--- a/libclamav/c++/configure
+++ b/libclamav/c++/configure
@@ -754,6 +754,7 @@ BUILD_PPC_FALSE
BUILD_PPC_TRUE
BUILD_X86_FALSE
BUILD_X86_TRUE
+THREAD_LIBS
DEBUG_BUILD_FALSE
DEBUG_BUILD_TRUE
subdirs
@@ -5080,13 +5081,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:5083: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:5084: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:5086: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:5087: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:5089: output\"" >&5)
+ (eval echo "\"\$as_me:5090: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -6292,7 +6293,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6295 "configure"' > conftest.$ac_ext
+ echo '#line 6296 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -8348,11 +8349,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8351: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8352: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8355: \$? = $ac_status" >&5
+ echo "$as_me:8356: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8687,11 +8688,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8690: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8691: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8694: \$? = $ac_status" >&5
+ echo "$as_me:8695: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8792,11 +8793,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8795: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8796: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8799: \$? = $ac_status" >&5
+ echo "$as_me:8800: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -8847,11 +8848,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8850: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8851: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8854: \$? = $ac_status" >&5
+ echo "$as_me:8855: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -11231,7 +11232,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11234 "configure"
+#line 11235 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11327,7 +11328,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11330 "configure"
+#line 11331 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13283,11 +13284,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13286: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13287: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13290: \$? = $ac_status" >&5
+ echo "$as_me:13291: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -13382,11 +13383,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13385: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13386: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13389: \$? = $ac_status" >&5
+ echo "$as_me:13390: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13434,11 +13435,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13437: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13438: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13441: \$? = $ac_status" >&5
+ echo "$as_me:13442: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14536,6 +14537,21 @@ case "$target_cpu" in
build_arm=yes
;;
esac
+
+# FreeBSD is only one which needs something else than -pthread,
+# according to the logic in ClamAV's main configure.in.
+case "$target_os" in
+freebsd[45]*)
+ THREAD_LIBS="-pthread -lc_r"
+ ;;
+freebsd*)
+ THREAD_LIBS="-lthr"
+ ;;
+*)
+ THREAD_LIBS="-pthread"
+esac
+
+
if test "$enable_alltargets" = "yes"; then
build_x86=yes
build_ppc=yes
diff --git a/libclamav/c++/configure.ac b/libclamav/c++/configure.ac
index c490906..d142789 100644
--- a/libclamav/c++/configure.ac
+++ b/libclamav/c++/configure.ac
@@ -123,6 +123,21 @@ case "$target_cpu" in
build_arm=yes
;;
esac
+
+# FreeBSD is only one which needs something else than -pthread,
+# according to the logic in ClamAV's main configure.in.
+case "$target_os" in
+freebsd[[45]]*)
+ THREAD_LIBS="-pthread -lc_r"
+ ;;
+freebsd*)
+ THREAD_LIBS="-lthr"
+ ;;
+*)
+ THREAD_LIBS="-pthread"
+esac
+AC_SUBST([THREAD_LIBS])
+
if test "$enable_alltargets" = "yes"; then
build_x86=yes
build_ppc=yes
_______________________________________________
http://lurker.clamav.net/list/clamav-devel.html
Please submit your patches to our Bugzilla: http://bugs.clamav.net