mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-19 09:50:29 +01:00
Add an autoconf test for whether unaligned int access is permitted.
It works on macos, and works correctly when I twiddle the test code to generate a spurious segfault. Will it work anywhere else? svn:r1329
This commit is contained in:
parent
f608b85ddf
commit
b69f5f3e1b
13
configure.in
13
configure.in
@ -163,6 +163,19 @@ AC_CHECK_SIZEOF(long)
|
||||
AC_CHECK_SIZEOF(long long)
|
||||
AC_CHECK_SIZEOF(__int64)
|
||||
|
||||
# Now, let's see about alignment requirements
|
||||
AC_CACHE_CHECK([whether unaligned int access is allowed], tor_cv_unaligned_ok,
|
||||
[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
[[int main () { char s[] = "A\x00\x00\x00\x00\x00\x00\x00";
|
||||
return *(int*)(&s[1]); }]])],
|
||||
[tor_cv_unaligned_ok=yes],
|
||||
[tor_cv_unaligned_ok=no],
|
||||
[tor_cv_unaligned_ok=cross])])
|
||||
if test tor_cv_unaligned_ok = yes; then
|
||||
AC_DEFINE([UNALIGNED_INT_ACCESS_OK], 1,
|
||||
[Define to 1 iff unaligned int access is allowed])
|
||||
fi
|
||||
|
||||
# $prefix stores the value of the --prefix command line option, or
|
||||
# NONE if the option wasn't set. In the case that it wasn't set, make
|
||||
# it be the default, so that we can use it to expand directories now.
|
||||
|
@ -86,7 +86,7 @@ void tor_strlower(char *s)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef UNALIGNED_ACCESS_OK
|
||||
#ifndef UNALIGNED_INT_ACCESS_OK
|
||||
uint16_t get_uint16(char *cp)
|
||||
{
|
||||
uint16_t v;
|
||||
|
@ -43,7 +43,7 @@ char *tor_strndup(const char *s, size_t n);
|
||||
#define tor_free(p) do {if(p) {free(p); (p)=NULL;}} while(0)
|
||||
void tor_strlower(char *s);
|
||||
|
||||
#ifdef UNALIGNED_ACCESS_OK
|
||||
#ifdef UNALIGNED_INT_ACCESS_OK
|
||||
/* XXX Not actually used yet, but would probably be faster on non-sun
|
||||
* hardare.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user