Mailing List Archive

netbsd updates.
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
Re: netbsd updates. [ In reply to ]
> From: matthew green <mrg@eterna.com.au>
>
> also, netbsd now has a real dlerror(), so the hack in dl_dlopen.xs
> can be removed:
>
> - #ifdef __NetBSD__
> - # define dlerror() strerror(errno)
> - #endif
> -

But that will fail for old versions of netbsd.

Can you supply a patch which works for all versions ?

Tim.
Re: netbsd updates. [ In reply to ]
On Fri, 27 Oct 1995, matthew green wrote:

> also, netbsd now has a real dlerror(), so the hack in dl_dlopen.xs
> can be removed:

But since it's surrounded by #ifndef HAS_DLERROR/#endif,
we might as well leave it in so older versions of NetBSD will continue
to work.

However, adding a comment such as

#ifdef __NetBSD__ /* Needed for versions prior to xxx.xxx */

would be nice.

Andy Dougherty doughera@lafcol.lafayette.edu
--
To subscribe or unsubscribe, send your request (subscribe, unsubscribe)
in the BODY of a message to perl5-porters-request@africa.nicoh.com.