mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Merge branch 'double-0-check'
This commit is contained in:
commit
b35b4d5a9a
8
changes/double-0-check
Normal file
8
changes/double-0-check
Normal file
@ -0,0 +1,8 @@
|
||||
o Build improvements (bizarre platform detection):
|
||||
- Try to detect it if we are ever building on a platform where
|
||||
memset(...,0,...) does not set the value of a double to 0.0. Such
|
||||
platforms are permitted by the C standard, though in practice
|
||||
they're pretty rare (since IEEE 754 is nigh-ubiquitous). We don't
|
||||
currently support them, but it's better to detect them and fail
|
||||
than to perform erroneously.
|
||||
|
24
configure.ac
24
configure.ac
@ -1033,6 +1033,30 @@ if test "$tor_cv_null_is_zero" != no; then
|
||||
[Define to 1 iff memset(0) sets pointers to NULL])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([whether memset(0) sets doubles to 0.0], tor_cv_dbl0_is_zero,
|
||||
[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
[[#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#ifdef HAVE_STDDEF_H
|
||||
#include <stddef.h>
|
||||
#endif
|
||||
int main () { double d1,d2; d1=0; memset(&d2,0,sizeof(d2));
|
||||
return memcmp(&d1,&d2,sizeof(d1))?1:0; }]])],
|
||||
[tor_cv_dbl0_is_zero=yes],
|
||||
[tor_cv_dbl0_is_zero=no],
|
||||
[tor_cv_dbl0_is_zero=cross])])
|
||||
|
||||
if test "$tor_cv_dbl0_is_zero" = cross ; then
|
||||
# Cross-compiling; let's hope that the target isn't raving mad.
|
||||
AC_MSG_NOTICE([Cross-compiling: we'll assume that 0.0 can be represented as a sequence of 0-valued bytes.])
|
||||
fi
|
||||
|
||||
if test "$tor_cv_dbl0_is_zero" != no; then
|
||||
AC_DEFINE([DOUBLE_0_REP_IS_ZERO_BYTES], 1,
|
||||
[Define to 1 iff memset(0) sets doubles to 0.0])
|
||||
fi
|
||||
|
||||
# And what happens when we malloc zero?
|
||||
AC_CACHE_CHECK([whether we can malloc(0) safely.], tor_cv_malloc_zero_works,
|
||||
[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
|
@ -74,6 +74,11 @@
|
||||
#error "It seems your platform does not represent NULL as zero. We can't cope."
|
||||
#endif
|
||||
|
||||
#ifndef DOUBLE_0_REP_IS_ZERO_BYTES
|
||||
#error "It seems your platform does not represent 0.0 as zeros. We can't cope."
|
||||
#endif
|
||||
|
||||
|
||||
#if 'a'!=97 || 'z'!=122 || 'A'!=65 || ' '!=32
|
||||
#error "It seems that you encode characters in something other than ASCII."
|
||||
#endif
|
||||
|
@ -151,6 +151,9 @@
|
||||
/* Define to 1 iff NULL is represented by a 0 in memory. */
|
||||
#define NULL_REP_IS_ZERO_BYTES 1
|
||||
|
||||
/* Define to 1 iff memset(0) sets doubles to 0.0 */
|
||||
#define DOUBLE_0_REP_IS_ZERO_BYTES 1
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "tor"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user