summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorTaylor Yu <catalyst@torproject.org>2017-05-26 17:04:52 -0400
committerTaylor Yu <catalyst@torproject.org>2017-06-19 14:28:36 -0400
commit027614c263b4a1ae6f74e3470723f97331af8baa (patch)
treec482415ce4d66098562070f75e0eb009b1af63d8 /configure.ac
parenteff5e29404980a87b4618e8623c35a363af6cc04 (diff)
downloadtor-027614c263b4a1ae6f74e3470723f97331af8baa.tar.gz
tor-027614c263b4a1ae6f74e3470723f97331af8baa.zip
Ensure that uint8_t is unsigned char
Many places in our code assume that uint8_t is the same type as unsigned char. Test this assumption in the configure script. This is important because of the privileged aliasing properties of character types in C. Fixes #22410.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac18
1 files changed, 18 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 0c673d033d..e8b35e8ce7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1552,6 +1552,24 @@ if test "$tor_cv_sign_extend" != "no"; then
[Define to 1 iff right-shifting a negative value performs sign-extension])
fi
+# Is uint8_t the same type as unsigned char?
+AC_CACHE_CHECK([whether uint8_t is the same type as unsigned char], tor_cv_uint8_uchar,
+[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <stdint.h>
+extern uint8_t c;
+unsigned char c;]])],
+ [tor_cv_uint8_uchar=yes],
+ [tor_cv_uint8_uchar=no],
+ [tor_cv_uint8_uchar=cross])])
+
+if test "$tor_cv_uint8_uchar" = "cross"; then
+ AC_MSG_NOTICE([Cross-compiling: we'll assume that uint8_t is the same type as unsigned char])
+fi
+
+if test "$tor_cv_uint8_uchar" = "no"; then
+ AC_MSG_ERROR([We assume that uint8_t is the same type as unsigned char, but your compiler disagrees.])
+fi
+
# Whether we should use the dmalloc memory allocation debugging library.
AC_MSG_CHECKING(whether to use dmalloc (debug memory allocation library))
AC_ARG_WITH(dmalloc,