[perl #69686] Fix DragonFly thread lib selection
Simon 'corecode' Schubert [Sat, 10 Oct 2009 16:55:26 +0000 (17:55 +0100)]
  Hey,

  attached patch fixes the thread library detection in DragonFly.  All
  versions of DragonFly can be used threaded with -pthread.  libc_r must
  not be used directly.

  Please let me know if you have any questions.

  Thanks,
     simon

hints/dragonfly.sh

index 88da5ec..8966aef 100644 (file)
@@ -19,18 +19,10 @@ esac
 # out here to avoid duplicating them everywhere.
 case "$osvers" in
 *)  objformat=`/usr/bin/objformat`
-    if [ x$objformat = xelf ]; then
-       libpth="/usr/lib /usr/local/lib"
-       glibpth="/usr/lib /usr/local/lib"
-       ldflags="-Wl,-E "
-       lddlflags="-shared "
-    else
-       if [ -e /usr/lib/aout ]; then
-           libpth="/usr/lib/aout /usr/local/lib /usr/lib"
-           glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
-       fi
-       lddlflags='-Bshareable'
-    fi
+    libpth="/usr/lib /usr/local/lib"
+    glibpth="/usr/lib /usr/local/lib"
+    ldflags="-Wl,-E "
+    lddlflags="-shared "
     cccdlflags='-DPIC -fPIC'
     ;;
 esac
@@ -67,43 +59,16 @@ d_voidsig='define'
 cat > UU/usethreads.cbu <<'EOCBU'
 case "$usethreads" in
 $define|true|[yY]*)
-    lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`
     case "$osvers" in
-    *)  if [ ! -r "$lc_r" ]; then
-           cat <<EOM >&4
-POSIX threads should be supported by FreeBSD $osvers --
-but your system is missing the shared libc_r.
-(/sbin/ldconfig -r doesn't find any).
+    *)  ldflags="-pthread $ldflags"
 
-Consider using the latest STABLE release.
-EOM
-           exit 1
-       fi
-       case "$osvers" in
-           *)  ldflags="-pthread $ldflags"
-               ;;
-       esac
        # Both in 4.x and 5.x gethostbyaddr_r exists but
        # it is "Temporary function, not threadsafe"...
        # Presumably earlier it didn't even exist.
        d_gethostbyaddr_r="undef"
        d_gethostbyaddr_r_proto="0"
-       ;;
-    esac
 
-    set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
-    shift
-    libswanted="$*"
-    # Configure will probably pick the wrong libc to use for nm scan.
-    # The safest quick-fix is just to not use nm at all...
-    usenm=false
-
-    unset lc_r
-
-    # Even with the malloc mutexes the Perl malloc does not
-    # seem to be threadsafe in FreeBSD?
-    case "$usemymalloc" in
-    '')  usemymalloc=n ;;
+       ;;
     esac
 esac
 EOCBU