[tor/master] Have autoconf check whether enums are signed.

commit 41200b47709bcdaf6f3a66e8453b3d852bd8d2a6 Author: Nick Mathewson <nickm@torproject.org> Date: Thu Feb 7 16:29:32 2013 -0500 Have autoconf check whether enums are signed. Fixes bug 7727; fix on 0.2.4.10-alpha. --- changes/signof_enum | 3 +++ configure.ac | 6 ++++++ src/common/compat.h | 3 +-- src/win32/orconfig.h | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/changes/signof_enum b/changes/signof_enum index fc9b9ed..ba4fb59 100644 --- a/changes/signof_enum +++ b/changes/signof_enum @@ -2,3 +2,6 @@ - Use Ville Laurikari's implementation of AX_CHECK_SIGN() to determine the signs of types during autoconf. This is better than our old approach, which didn't work when cross-compiling. + - Detect the sign of enum values, rather than assuming that MSC is the + only compiler where enum types are all signed. Fix for bug 7727; + bugfix on 0.2.4.10-alpha. diff --git a/configure.ac b/configure.ac index e80e6f6..864477b 100644 --- a/configure.ac +++ b/configure.ac @@ -984,6 +984,12 @@ if test "$tor_cv_size_t_signed" = yes; then AC_MSG_ERROR([You have a signed size_t; that's grossly nonconformant.]) fi +AX_CHECK_SIGN([enum always], + [ AC_DEFINE(ENUM_VALS_ARE_SIGNED, 1, [Define if enum is always signed]) ], + [ : ], [ + enum always { AAA, BBB, CCC }; +]) + AC_CHECK_SIZEOF(socklen_t, , [AC_INCLUDES_DEFAULT() #ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> diff --git a/src/common/compat.h b/src/common/compat.h index d2944e6..fa071e5 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -136,8 +136,7 @@ extern INLINE double U64_TO_DBL(uint64_t x) { #define DBL_TO_U64(x) ((uint64_t) (x)) #endif -#if defined(_MSC_VER) -/* XXXX024 we should instead have a more general check for "Is enum signed?"*/ +#ifdef ENUM_VALS_ARE_SIGNED #define ENUM_BF(t) unsigned #else /** Wrapper for having a bitfield of an enumerated type. Where possible, we diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h index 4312d9f..f5d5cf4 100644 --- a/src/win32/orconfig.h +++ b/src/win32/orconfig.h @@ -256,3 +256,4 @@ #define CURVE25519_ENABLED #define USE_CURVE25519_DONNA +#define ENUM_VALS_ARE_SIGNED 1
participants (1)
-
nickm@torproject.org