diff options
| author | pooka <pooka@NetBSD.org> | 2010-12-13 13:32:25 +0000 |
|---|---|---|
| committer | pooka <pooka@NetBSD.org> | 2010-12-13 13:32:25 +0000 |
| commit | ce9bd2c69ecdc80ee79b3dfc01ee1bdd6077d7ac (patch) | |
| tree | ca7267c15783ed4d7d22d817d5d9421f106c7f81 /usr.bin | |
| parent | 7cc194eed583c7e8aab32cf40a6718517bf9222a (diff) | |
Handle -l which dlopens libs. This is more applicable to rump_server
than rump_allserver.
So if I do:
golem> rump_server unix:///tmp/commsuck
==>
golem> env RUMP_SERVER=unix:///tmp/commsuck rump.modstat
NAME CLASS SOURCE REFS SIZE REQUIRES
suser secmodel builtin 0 - -
and:
golem> rump_server -l librumpvfs.so unix:///tmp/commsuck
==>
golem> env RUMP_SERVER=unix:///tmp/commsuck rump.modstat
NAME CLASS SOURCE REFS SIZE REQUIRES
suser secmodel builtin 0 - -
wapbl vfs builtin 0 - -
golem> rump_server -l librumpvfs.so -l librumpfs_ffs.so unix:///tmp/commsuck
==>
golem> env RUMP_SERVER=unix:///tmp/commsuck rump.modstat
NAME CLASS SOURCE REFS SIZE REQUIRES
ffs vfs builtin 0 - -
suser secmodel builtin 0 - -
wapbl vfs builtin 0 - -
Well, you get the picture...
Diffstat (limited to 'usr.bin')
| -rw-r--r-- | usr.bin/rump_allserver/rump_allserver.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/usr.bin/rump_allserver/rump_allserver.c b/usr.bin/rump_allserver/rump_allserver.c index b6a43d6f79a..4850c41a5c8 100644 --- a/usr.bin/rump_allserver/rump_allserver.c +++ b/usr.bin/rump_allserver/rump_allserver.c @@ -1,4 +1,4 @@ -/* $NetBSD: rump_allserver.c,v 1.5 2010/12/12 18:33:44 pooka Exp $ */ +/* $NetBSD: rump_allserver.c,v 1.6 2010/12/13 13:32:25 pooka Exp $ */ /*- * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -27,7 +27,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: rump_allserver.c,v 1.5 2010/12/12 18:33:44 pooka Exp $"); +__RCSID("$NetBSD: rump_allserver.c,v 1.6 2010/12/13 13:32:25 pooka Exp $"); #endif /* !lint */ #include <sys/types.h> @@ -36,6 +36,7 @@ __RCSID("$NetBSD: rump_allserver.c,v 1.5 2010/12/12 18:33:44 pooka Exp $"); #include <rump/rump.h> #include <rump/rump_syscalls.h> +#include <dlfcn.h> #include <err.h> #include <errno.h> #include <semaphore.h> @@ -80,8 +81,13 @@ main(int argc, char *argv[]) setprogname(argv[0]); sflag = 0; - while ((ch = getopt(argc, argv, "s")) != -1) { + while ((ch = getopt(argc, argv, "l:s")) != -1) { switch (ch) { + case 'l': + if (dlopen(optarg, RTLD_LAZY|RTLD_GLOBAL) == NULL) + errx(1, "dlopen %s failed: %s", + optarg, dlerror()); + break; case 's': sflag = 1; break; |
