]> wagner.pp.ru Git - openssl-gost/engine.git/commitdiff
Provide cmake test if alignment requirement is strict
authorVitaly Chikunov <vt@altlinux.org>
Thu, 17 Sep 2020 22:47:27 +0000 (01:47 +0300)
committerDmitry Belyavskiy <beldmit@gmail.com>
Fri, 18 Sep 2020 13:30:34 +0000 (16:30 +0300)
This is based on AX_CHECK_ALIGNED_ACCESS_REQUIRED from autoconf-archive.

Note, that on some arches unaligned access behavior could be changed at
runtime via prctl(1). Also, unaligned memory access is still slower (and
very slow on some arches) even if it's not strictly required.

(cherry picked from commit d2810d23a9f30ae885f9bf0783f0847a12972ff3)

CMakeLists.txt

index 28236b54b98d893d4a215764460b8f787604c487..0c8cb2c6e93d553d57a9805c99a3054b761d5adb 100644 (file)
@@ -66,6 +66,18 @@ if (ADDCARRY_U64)
   add_definitions(-DHAVE_ADDCARRY_U64)
 endif()
 
+check_c_source_runs("
+  int main(void) {
+    char buf[16] = { 0, 1, 2 };
+    int *p = buf + 1;
+    int *q = buf + 2;
+    return (*p == *q);
+  }
+  " RELAXED_ALIGNMENT)
+if (NOT RELAXED_ALIGNMENT)
+  add_definitions(-DSTRICT_ALIGNMENT)
+endif()
+
 set(BIN_DIRECTORY bin)
 
 # Same soversion as OpenSSL