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

Reply via email to