diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-11-20 13:28:16 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-11-20 13:28:16 -0500 |
commit | 444eff62862551fd984b8173ecb174483d7dbb7b (patch) | |
tree | d84930a9fba4a5118a90b30049e217cc1292e65f | |
parent | 1ee580407ccb91304cf7ae24c0d809f57e6b4ccc (diff) | |
download | tor-444eff62862551fd984b8173ecb174483d7dbb7b.tar.gz tor-444eff62862551fd984b8173ecb174483d7dbb7b.zip |
Fix compilation on OSX 10.3.
On this OSX version, there is a stub mlockall() function
that doesn't work, *and* the declaration for it is hidden by
an '#ifdef _P1003_1B_VISIBLE'. This would make autoconf
successfully find the function, but our code fail to build
when no declaration was found.
This patch adds an additional test for the declaration.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | configure.in | 9 | ||||
-rw-r--r-- | src/common/compat.c | 9 |
3 files changed, 14 insertions, 8 deletions
@@ -1,3 +1,7 @@ +Changes in version 0.2.2.7-alpha - 2009-??-?? + o Minor bugfixes: + - Fix compilation on OSX 10.3, which has a stub mlockall() but hides it. + Changes in version 0.2.2.6-alpha - 2009-11-19 o Major features: - Directory authorities can now create, vote on, and serve multiple diff --git a/configure.in b/configure.in index 6f2baf7e01..f419fdfd60 100644 --- a/configure.in +++ b/configure.in @@ -629,9 +629,14 @@ if test x$tcmalloc = xyes ; then fi # By default, we're going to assume we don't have mlockall() -# bionic and other platforms have various broken mlockall subsystems -# some of systems don't have a working mlockall, some aren't linkable +# bionic and other platforms have various broken mlockall subsystems. +# Some systems don't have a working mlockall, some aren't linkable, +# and some have it but don't declare it. AC_CHECK_FUNCS(mlockall) +AC_CHECK_DECLS([mlockall], , , [ +#ifdef HAVE_SYS_MMAN_H +#include <sys/mman.h> +#endif]) # Allow user to specify an alternate syslog facility AC_ARG_WITH(syslog-facility, diff --git a/src/common/compat.c b/src/common/compat.c index 96012e2e01..4fc44afac9 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -2258,7 +2258,6 @@ int tor_mlockall(void) { static int memory_lock_attempted = 0; - int ret; if (memory_lock_attempted) { return 1; @@ -2273,15 +2272,13 @@ tor_mlockall(void) * http://msdn.microsoft.com/en-us/library/aa366895(VS.85).aspx */ -#ifdef HAVE_MLOCKALL - ret = tor_set_max_memlock(); - if (ret == 0) { +#if defined(HAVE_MLOCKALL) && HAVE_DECL_MLOCKALL + if (tor_set_max_memlock() == 0) { /* Perhaps we only want to log this if we're in a verbose mode? */ log_notice(LD_GENERAL, "RLIMIT_MEMLOCK is now set to RLIM_INFINITY."); } - ret = mlockall(MCL_CURRENT|MCL_FUTURE); - if (ret == 0) { + if (mlockall(MCL_CURRENT|MCL_FUTURE) == 0) { log_notice(LD_GENERAL, "Insecure OS paging is effectively disabled."); return 0; } else { |