mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 13:53:31 +01:00
Add a fallthrough macro.
This macro defers to __attribute__((fallthrough)) on GCC (and clang). Previously we had been using GCC's magic /* fallthrough */ comments, but clang very sensibly doesn't accept those. Since not all compiler recognize it, we only define it when our configure script detects that it works. Part of a fix for 34078.
This commit is contained in:
parent
d380acaeca
commit
6c3c94357c
16
configure.ac
16
configure.ac
@ -356,6 +356,22 @@ if test "$tor_cv_c_c99_designated_init" != "yes"; then
|
||||
AC_MSG_ERROR([Your compiler doesn't support c99 designated initializers. This is required as of Tor 0.2.6.x])
|
||||
fi
|
||||
|
||||
saved_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
AC_CACHE_CHECK([for __attribute__((fallthrough))],
|
||||
tor_cv_c_attr_fallthrough,
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([extern int x; void fn(void) ;],
|
||||
[[ switch (x) { case 1: fn(); __attribute__((fallthrough));
|
||||
case 2: fn(); break; } ]])],
|
||||
[tor_cv_c_attr_fallthrough=yes],
|
||||
[tor_cv_c_attr_fallthrough=no] )])
|
||||
CFLAGS="$saved_CFLAGS"
|
||||
|
||||
if test "$tor_cv_c_attr_fallthrough" == "yes"; then
|
||||
AC_DEFINE(HAVE_ATTR_FALLTHROUGH, [1], [defined if we have the fallthrough attribute.])
|
||||
fi
|
||||
|
||||
TORUSER=_tor
|
||||
AC_ARG_WITH(tor-user,
|
||||
AS_HELP_STRING(--with-tor-user=NAME, [specify username for tor daemon]),
|
||||
|
@ -50,6 +50,12 @@
|
||||
#define CHECK_SCANF(formatIdx, firstArg)
|
||||
#endif /* defined(__GNUC__) */
|
||||
|
||||
#if defined(HAVE_ATTR_FALLTHROUGH)
|
||||
#define FALLTHROUGH __attribute__((fallthrough))
|
||||
#else
|
||||
#define FALLTHROUGH
|
||||
#endif
|
||||
|
||||
/* What GCC do we have? */
|
||||
#ifdef __GNUC__
|
||||
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
|
||||
|
Loading…
Reference in New Issue
Block a user