Module Name: src Committed By: pooka Date: Thu Feb 24 09:52:35 UTC 2011
Modified Files: src/lib/librumpclient: rumpclient.c Log Message: Die with a sensible error message if a symbol cannot be found. To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.34 src/lib/librumpclient/rumpclient.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/librumpclient/rumpclient.c diff -u src/lib/librumpclient/rumpclient.c:1.33 src/lib/librumpclient/rumpclient.c:1.34 --- src/lib/librumpclient/rumpclient.c:1.33 Fri Feb 18 16:22:10 2011 +++ src/lib/librumpclient/rumpclient.c Thu Feb 24 09:52:34 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpclient.c,v 1.33 2011/02/18 16:22:10 pooka Exp $ */ +/* $NetBSD: rumpclient.c,v 1.34 2011/02/24 09:52:34 pooka Exp $ */ /* * Copyright (c) 2010, 2011 Antti Kantee. All Rights Reserved. @@ -43,6 +43,7 @@ #include <assert.h> #include <dlfcn.h> +#include <err.h> #include <errno.h> #include <fcntl.h> #include <link.h> @@ -743,24 +744,29 @@ */ #define FINDSYM2(_name_,_syscall_) \ if ((host_##_name_ = rumpclient_dlsym(RTLD_NEXT, \ - #_syscall_)) == NULL) \ - /* host_##_name_ = _syscall_ */; + #_syscall_)) == NULL) { \ + if (rumpclient_dlsym == dlsym) \ + host_##_name_ = _name_; /* static fallback */ \ + else \ + errx(1, "cannot find %s: %s", #_syscall_, \ + dlerror()); \ + } #define FINDSYM(_name_) FINDSYM2(_name_,_name_) - FINDSYM2(socket,__socket30); - FINDSYM(close); - FINDSYM(connect); - FINDSYM(fcntl); - FINDSYM(poll); - FINDSYM(read); - FINDSYM(sendto); - FINDSYM(setsockopt); - FINDSYM(dup); - FINDSYM(kqueue); - FINDSYM(execve); + FINDSYM2(socket,__socket30) + FINDSYM(close) + FINDSYM(connect) + FINDSYM(fcntl) + FINDSYM(poll) + FINDSYM(read) + FINDSYM(sendto) + FINDSYM(setsockopt) + FINDSYM(dup) + FINDSYM(kqueue) + FINDSYM(execve) #if !__NetBSD_Prereq__(5,99,7) - FINDSYM(kevent); + FINDSYM(kevent) #else - FINDSYM2(kevent,_sys___kevent50); + FINDSYM2(kevent,_sys___kevent50) #endif #undef FINDSYM #undef FINDSY2