clone 625355 -1 reassign -1 openjade1.3 tags -1 + patch thanks Errgl, things got completely mangled with bugs. Let's fix this.
Samuel Thibault, le Fri 19 Aug 2011 13:10:18 +0200, a écrit : > Samuel Thibault, le Fri 19 Aug 2011 12:34:44 +0200, a écrit : > > Svante Signell, le Fri 19 Aug 2011 12:32:13 +0200, a écrit : > > > Currently opensp does not compile on GNU/Hurd. > > > > What is the *actual* error? > > Ok, in a private mail you told me it's the same as we have already seen: > the pthread assertion issue. > > Now that I realized that I didn't get the issue simply because I had > openjade already installed (and not openjade1.3), I've found the actual > issue: > > $ objdump -x /usr/bin/openjade | grep NEED > NEEDED libthreads.so.0.3 > NEEDED libosp.so.5 > NEEDED libpthread.so.0.3 > NEEDED libnsl.so.1 > NEEDED libstdc++.so.6 > NEEDED libm.so.6 > NEEDED libgcc_s.so.1 > NEEDED libc.so.0.3 > VERNEED 0x08051a94 > VERNEEDNUM 0x00000005 > > That is, openjade links against both libthreads and libpthread. libc > thus only early-initializes one, which is libthreads, thus pthread > assertion issues due to missing pthread initialization. The most forward > way to fix it is to just drop libthread use from openjade, as attached > patch does (along with an autoconf run of course). > > Samuel
--- config/configure.in.orig 2011-08-19 12:46:11.000000000 +0000 +++ config/configure.in 2011-08-19 12:46:41.000000000 +0000 @@ -172,8 +172,14 @@ dnl dnl Check for thread support. -AC_CHECK_LIB(threads,cthread_fork,LIB_THREADS="-lthreads",LIB_THREADS="") -AC_SUBST(LIB_THREADS) +case "${host}" in + *-*-gnu*) + ;; + *) + AC_CHECK_LIB(threads,cthread_fork,LIB_THREADS="-lthreads",LIB_THREADS="") + AC_SUBST(LIB_THREADS) + ;; +esac dnl dnl Check if type of size_t is unsigned int --- spgrove/threads.h.orig 2011-08-19 12:47:12.000000000 +0000 +++ spgrove/threads.h 2011-08-19 12:47:22.000000000 +0000 @@ -141,7 +141,7 @@ #endif /* _MSC_VER && _MT */ -#if ((defined __MACH__) && !(defined __APPLE__)) || (defined __GNU__) +#if ((defined __MACH__) && !(defined __APPLE__) && !(defined __GNU__)) // For Mach, using C Threads. May or may not work as-is on your Mach-based OS. // Written by Raf Schietekat <rfsch...@maze.ruca.ua.ac.be> on 1996-11-10.