X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fopenbsd.sh;h=54626fbe09286f111e62b6cdcf90856f94abb815;hb=f412e1d69424d7787af14ab6844279246479c4f1;hp=3b73578a9d6bace4a724afe09d08a95acbc5bd5a;hpb=938db3fad98564dfc0759b508b5b58c33f0fa4c6;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/openbsd.sh b/hints/openbsd.sh index 3b73578..54626fb 100644 --- a/hints/openbsd.sh +++ b/hints/openbsd.sh @@ -2,7 +2,7 @@ # # hints file for OpenBSD; Todd Miller # Edited to allow Configure command-line overrides by -# Andy Dougherty +# Andy Dougherty # # To build with distribution paths, use: # ./Configure -des -Dopenbsd_distribution=defined @@ -11,17 +11,20 @@ # OpenBSD has a better malloc than perl... test "$usemymalloc" || usemymalloc='n' -# Currently, vfork(2) is not a real win over fork(2) but this will -# change starting with OpenBSD 2.7. -usevfork='true' +# Currently, vfork(2) is not a real win over fork(2). +usevfork="$undef" -# setre?[ug]id() have been replaced by the _POSIX_SAVED_IDS versions -# in 4.4BSD. Configure will find these but they are just emulated -# and do not have the same semantics as in 4.3BSD. -d_setregid=$undef -d_setreuid=$undef -d_setrgid=$undef -d_setruid=$undef +# In OpenBSD < 3.3, the setre?[ug]id() are emulated using the +# _POSIX_SAVED_IDS functionality which does not have the same +# semantics as 4.3BSD. Starting with OpenBSD 3.3, the original +# semantics have been restored. +case "$osvers" in +[0-2].*|3.[0-2]) + d_setregid=$undef + d_setreuid=$undef + d_setrgid=$undef + d_setruid=$undef +esac # # Not all platforms support dynamic loading... @@ -30,25 +33,35 @@ d_setruid=$undef # it can set the libperl name appropriately. # Allow command line overrides. # -ARCH=`arch|sed 's/^OpenBSD.//'` +ARCH=`arch | sed 's/^OpenBSD.//'` case "${ARCH}-${osvers}" in -alpha-*|mips-*|vax-*|powerpc-2.[0-7]|m88k-*) +alpha-2.[0-8]|mips-2.[0-8]|powerpc-2.[0-7]|m88k-*|hppa-*|vax-*) test -z "$usedl" && usedl=$undef ;; *) test -z "$usedl" && usedl=$define - # we use -fPIC here because -fpic is *NOT* enough for some of the + # We use -fPIC here because -fpic is *NOT* enough for some of the # extensions like Tk on some OpenBSD platforms (ie: sparc) cccdlflags="-DPIC -fPIC $cccdlflags" case "$osvers" in [01].*|2.[0-7]|2.[0-7].*) lddlflags="-Bshareable $lddlflags" ;; - *) # from 2.8 onwards + 2.[8-9]|3.0) + ld=${cc:-cc} + lddlflags="-shared -fPIC $lddlflags" + ;; + *) # from 3.1 onwards ld=${cc:-cc} lddlflags="-shared -fPIC $lddlflags" + libswanted=`echo $libswanted | sed 's/ dl / /'` ;; esac + + # We need to force ld to export symbols on ELF platforms. + # Without this, dlopen() is crippled. + ELF=`${cc:-cc} -dM -E -