Pārlūkot izejas kodu

Merge pull request #517 from mslehto/openbsd

OpenBSD fixes
Daniel-Constantin Mierla 9 gadi atpakaļ
vecāks
revīzija
fedde6e9b4
3 mainītis faili ar 9 papildinājumiem un 30 dzēšanām
  1. 2 18
      Makefile.defs
  2. 6 12
      sr_module.c
  3. 1 0
      tcp_options.h

+ 2 - 18
Makefile.defs

@@ -1844,7 +1844,8 @@ ifeq ($(OS), openbsd)
 	C_DEFS+=-DHAVE_SOCKADDR_SA_LEN  -DHAVE_GETHOSTBYNAME2 \
 	C_DEFS+=-DHAVE_SOCKADDR_SA_LEN  -DHAVE_GETHOSTBYNAME2 \
 		-DHAVE_UNION_SEMUN -DHAVE_MSGHDR_MSG_CONTROL \
 		-DHAVE_UNION_SEMUN -DHAVE_MSGHDR_MSG_CONTROL \
 		-DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \
 		-DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \
-		-DHAVE_NETINET_IN_SYSTM -DUSE_SIGWAIT
+		-DHAVE_NETINET_IN_SYSTM -DUSE_SIGWAIT \
+		-DHAVE_SCHED_YIELD
 	ifneq ($(found_lock_method), yes)
 	ifneq ($(found_lock_method), yes)
 		C_DEFS+= -DUSE_PTHREAD_MUTEX  # try pthread sems
 		C_DEFS+= -DUSE_PTHREAD_MUTEX  # try pthread sems
 		found_lock_method=yes
 		found_lock_method=yes
@@ -1860,25 +1861,8 @@ ifeq ($(OS), openbsd)
 	endif
 	endif
 	# (symbols on openbsd are prefixed by "_")
 	# (symbols on openbsd are prefixed by "_")
 	YACC=yacc
 	YACC=yacc
-	# no sched_yield on openbsd unless linking with c_r (not recommended)
 	# unfortunately pthread is needed for sigwait
 	# unfortunately pthread is needed for sigwait
 	LIBS= -lpthread
 	LIBS= -lpthread
-	OPENBSD_IS_AOUT:= $(shell echo "$(OSREL)" | \
-				sed -e 's/^3\.[0-3][^0-9]*$$/yes/' |sed -e 's/^[0-2]\..*/yes/')
-# exception: on sparc openbsd 3.2 is elf and not aout
-ifeq ($(OSREL), 3.2)
-ifeq	($(ARCH), sparc)
-		OPENBSD_IS_AOUT:=no
-endif
-ifeq	($(ARCH), sparc64)
-		OPENBSD_IS_AOUT:=no
-endif
-endif
-	
-ifeq ($(OPENBSD_IS_AOUT), yes)
-		C_DEFS+=-DDLSYM_PREFIX='"_"'
-		LDFLAGS=        # openbsd ld doesn't like -O2 or -E
-endif
 endif   # if opensd
 endif   # if opensd
 	
 	
 ifeq ($(OS), netbsd)
 ifeq ($(OS), netbsd)

+ 6 - 12
sr_module.c

@@ -381,23 +381,18 @@ error:
 	return ret;
 	return ret;
 }
 }
 
 
-#ifndef DLSYM_PREFIX
-/* define it to null */
-#define DLSYM_PREFIX
-#endif
-
 static inline int version_control(void *handle, char *path)
 static inline int version_control(void *handle, char *path)
 {
 {
 	char **m_ver;
 	char **m_ver;
 	char **m_flags;
 	char **m_flags;
 	char* error;
 	char* error;
 
 
-	m_ver=(char **)dlsym(handle, DLSYM_PREFIX "module_version");
+	m_ver=(char **)dlsym(handle, "module_version");
 	if ((error=(char *)dlerror())!=0) {
 	if ((error=(char *)dlerror())!=0) {
 		LM_ERR("no version info in module <%s>: %s\n", path, error);
 		LM_ERR("no version info in module <%s>: %s\n", path, error);
 		return 0;
 		return 0;
 	}
 	}
-	m_flags=(char **)dlsym(handle, DLSYM_PREFIX "module_flags");
+	m_flags=(char **)dlsym(handle, "module_flags");
 	if ((error=(char *)dlerror())!=0) {
 	if ((error=(char *)dlerror())!=0) {
 		LM_ERR("no compile flags info in module <%s>: %s\n", path, error);
 		LM_ERR("no compile flags info in module <%s>: %s\n", path, error);
 		return 0;
 		return 0;
@@ -587,14 +582,13 @@ reload:
 	if (!version_control(handle, path)) {
 	if (!version_control(handle, path)) {
 		exit(-1);
 		exit(-1);
 	}
 	}
-	mod_if_ver = (unsigned *)dlsym(handle,
-									DLSYM_PREFIX "module_interface_ver");
+	mod_if_ver = (unsigned *)dlsym(handle, "module_interface_ver");
 	if ( (error =(char*)dlerror())!=0 ){
 	if ( (error =(char*)dlerror())!=0 ){
 		LM_ERR("no module interface version in module <%s>\n", path );
 		LM_ERR("no module interface version in module <%s>\n", path );
 		goto error1;
 		goto error1;
 	}
 	}
 	/* launch register */
 	/* launch register */
-	mr = (mod_register_function)dlsym(handle, DLSYM_PREFIX "mod_register");
+	mr = (mod_register_function)dlsym(handle, "mod_register");
 	if (((error =(char*)dlerror())==0) && mr) {
 	if (((error =(char*)dlerror())==0) && mr) {
 		/* no error call it */
 		/* no error call it */
 		new_dlflags=dlflags;
 		new_dlflags=dlflags;
@@ -612,7 +606,7 @@ reload:
 			goto error;
 			goto error;
 		}
 		}
 	}
 	}
-	exp = (union module_exports_u*)dlsym(handle, DLSYM_PREFIX "exports");
+	exp = (union module_exports_u*)dlsym(handle, "exports");
 	if(exp==NULL) {
 	if(exp==NULL) {
 		/* 'exports' structure not found, look up for '_modulename_exports' */
 		/* 'exports' structure not found, look up for '_modulename_exports' */
 		mdir = strrchr(mod_path, '/');
 		mdir = strrchr(mod_path, '/');
@@ -624,7 +618,7 @@ reload:
 		expref.len = strlen(expref.s);
 		expref.len = strlen(expref.s);
 		if(expref.len>3 && strcmp(expref.s+expref.len-3, ".so")==0)
 		if(expref.len>3 && strcmp(expref.s+expref.len-3, ".so")==0)
 			expref.len -= 3;
 			expref.len -= 3;
-		snprintf(exbuf, 62, DLSYM_PREFIX "_%.*s_exports", expref.len, expref.s);
+		snprintf(exbuf, 62, "_%.*s_exports", expref.len, expref.s);
 		exp = (union module_exports_u*)dlsym(handle, exbuf);
 		exp = (union module_exports_u*)dlsym(handle, exbuf);
 		LM_DBG("looking up exports with name: %s\n", exbuf);
 		LM_DBG("looking up exports with name: %s\n", exbuf);
 		if ( (error =(char*)dlerror())!=0 ){
 		if ( (error =(char*)dlerror())!=0 ){

+ 1 - 0
tcp_options.h

@@ -23,6 +23,7 @@
 
 
 #ifdef USE_TCP
 #ifdef USE_TCP
 
 
+#include <netinet/in.h>
 #include <netinet/tcp.h>
 #include <netinet/tcp.h>
 #ifndef NO_TCP_ASYNC
 #ifndef NO_TCP_ASYNC
 #define TCP_ASYNC /* enabled async mode */
 #define TCP_ASYNC /* enabled async mode */