well.
here's a couple of interesting things. i removed the setr*id
defines from the netbsd.sh (well, i forced the undef) and now i
can do the ($<, $>) = ($uid, $uid) trick to get setuid to be
called (same with setgid/$(/$)).
also, netbsd now has a real dlerror(), so the hack in dl_dlopen.xs
can be removed:
Index: dl_dlopen.xs
===================================================================
RCS file: /local/cvs/perl5/ext/DynaLoader/dl_dlopen.xs,v
retrieving revision 1.3
diff -c -r1.3 dl_dlopen.xs
*** dl_dlopen.xs 1995/06/17 02:55:50 1.3
--- dl_dlopen.xs 1995/10/26 13:43:22
***************
*** 118,127 ****
#define dlerror() "Unknown error - dlerror() not implemented"
#endif
- #ifdef __NetBSD__
- # define dlerror() strerror(errno)
- #endif
-
#include "dlutils.c" /* SaveError() etc */
--- 118,123 ----
i've updated the netbsd.sh (see below) to reflect reality. i've
also changed the -fpic to -fPIC because that is required to build
the Tk extension on my machine (sparc elc).
.mrg.
here's my netbsd.sh as it stands now.
# hints/netbsd.sh
#
# talk to mrg@eterna.com.au if you want to change this file.
#
# netbsd keeps dynamic loading dl*() functions in /usr/lib/crt0.o,
# so Configure doesn't find them (unless you abandon the nm scan).
# this should be *just* 0.9 below as netbsd 0.9a was the first to
# introduce shared libraries.
case "$osvers" in
0.9|0.8*)
usedl="$undef"
;;
*) d_dlopen=$define
d_dlerror=$define
# we use -fPIC here because -fpic is *NOT* enough for some of the
# extensions like Tk on some netbsd platforms (the sparc is one)
cccdlflags="-DPIC -fPIC $cccdlflags"
lddlflags="-Bforcearchive -Bshareable $lddlflags"
# netbsd has these but they don't really work as advertised. if they
# are defined, then there isn't a way to make perl call setuid() or
# setgid(). if they aren't, then ($<, $>) = ($u, $u); will work (same
# for $(/$)). this is because you can not change the real userid of
# a process under 4.4BSD.
d_setregid="$undef"
d_setreuid="$undef"
d_setrgid="$undef"
d_setruid="$undef"
;;
esac
# Avoid telldir prototype conflict in pp_sys.c (NetBSD uses const DIR *)
# Configure should test for this. Volunteers?
pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"'
case "$archname" in
'')
archname=`uname -m`-${osname}
;;
esac
here's a couple of interesting things. i removed the setr*id
defines from the netbsd.sh (well, i forced the undef) and now i
can do the ($<, $>) = ($uid, $uid) trick to get setuid to be
called (same with setgid/$(/$)).
also, netbsd now has a real dlerror(), so the hack in dl_dlopen.xs
can be removed:
Index: dl_dlopen.xs
===================================================================
RCS file: /local/cvs/perl5/ext/DynaLoader/dl_dlopen.xs,v
retrieving revision 1.3
diff -c -r1.3 dl_dlopen.xs
*** dl_dlopen.xs 1995/06/17 02:55:50 1.3
--- dl_dlopen.xs 1995/10/26 13:43:22
***************
*** 118,127 ****
#define dlerror() "Unknown error - dlerror() not implemented"
#endif
- #ifdef __NetBSD__
- # define dlerror() strerror(errno)
- #endif
-
#include "dlutils.c" /* SaveError() etc */
--- 118,123 ----
i've updated the netbsd.sh (see below) to reflect reality. i've
also changed the -fpic to -fPIC because that is required to build
the Tk extension on my machine (sparc elc).
.mrg.
here's my netbsd.sh as it stands now.
# hints/netbsd.sh
#
# talk to mrg@eterna.com.au if you want to change this file.
#
# netbsd keeps dynamic loading dl*() functions in /usr/lib/crt0.o,
# so Configure doesn't find them (unless you abandon the nm scan).
# this should be *just* 0.9 below as netbsd 0.9a was the first to
# introduce shared libraries.
case "$osvers" in
0.9|0.8*)
usedl="$undef"
;;
*) d_dlopen=$define
d_dlerror=$define
# we use -fPIC here because -fpic is *NOT* enough for some of the
# extensions like Tk on some netbsd platforms (the sparc is one)
cccdlflags="-DPIC -fPIC $cccdlflags"
lddlflags="-Bforcearchive -Bshareable $lddlflags"
# netbsd has these but they don't really work as advertised. if they
# are defined, then there isn't a way to make perl call setuid() or
# setgid(). if they aren't, then ($<, $>) = ($u, $u); will work (same
# for $(/$)). this is because you can not change the real userid of
# a process under 4.4BSD.
d_setregid="$undef"
d_setreuid="$undef"
d_setrgid="$undef"
d_setruid="$undef"
;;
esac
# Avoid telldir prototype conflict in pp_sys.c (NetBSD uses const DIR *)
# Configure should test for this. Volunteers?
pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"'
case "$archname" in
'')
archname=`uname -m`-${osname}
;;
esac