Add support for Android 5, both 32- and 64-bit cases.
authorAndy Polyakov <appro@openssl.org>
Mon, 11 May 2015 10:04:12 +0000 (12:04 +0200)
committerAndy Polyakov <appro@openssl.org>
Wed, 13 May 2015 14:47:55 +0000 (16:47 +0200)
Special note about additional -pie flag in android-armv7. The initial
reason for adding it is that Android 5 refuses to execute non-PIE
binaries. But what about older systems and previously validated
platforms? It should be noted that flag is not used when compiling
object code, fipscanister.o in this context, only when linking
applications, *supplementary* fips_algvs used during validation
procedure.

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
Configure
config
fips/fips_canister.c
fips/fips_test_suite.c
test/fips_algvs.c

index f51f7214288f337312b77d680746f43d78cbfd9f..613f829d1fb1fce2a94baddfd975d904323bd9ab 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -405,7 +405,8 @@ my %table=(
 # Android: linux-* but without -DTERMIO and pointers to headers and libs.
 "android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 "android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-pie%-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"android64-aarch64","gcc:-mandroid -fPIC -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-pie%-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 
 #### *BSD [do see comment about ${BSDthreads} above!]
 "BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
diff --git a/config b/config
index 07e231739267c33b7bd400dfca1a7d286c2eaf92..9d0383e611c149568c04cb1e9a7a3cab28b69bc3 100755 (executable)
--- a/config
+++ b/config
@@ -872,6 +872,7 @@ case "$GUESSOS" in
   *-*-qnx6) OUT="QNX6" ;;
   x86-*-android|i?86-*-android) OUT="android-x86" ;;
   armv[7-9]*-*-android) OUT="android-armv7" ;;
+  aarch64-*-android) OUT="android64-aarch64" ;;
   *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
 esac
 
index dcdb0671cbc0e5473f232c5ee773a34f0c47811e..adbe696afa5e718be39231ab9122f4e65eb1e388 100644 (file)
@@ -29,6 +29,7 @@ const void         *FIPS_text_end(void);
 
 #if !defined(FIPS_REF_POINT_IS_CROSS_COMPILER_AWARE)
 # if   (defined(__ANDROID__) && (defined(__arm__) || defined(__arm)    || \
+                                 defined(__aarch64__)                  || \
                                  defined(__i386__)|| defined(__i386))) || \
        (defined(__vxworks)   && (defined(__ppc__) || defined(__ppc)    || \
                                  defined(__mips__)|| defined(__mips))) || \
index 647de96fa1ca83536e7e2370bb7380e198ef0035..3c9bbaa5c4049257e473759e0b0772151209e855 100644 (file)
@@ -1325,7 +1325,7 @@ int main(int argc, char **argv)
 
     FIPS_post_set_callback(post_cb);
 
-#if defined(__APPLE__) && (defined(__arm__) || defined(__aarch64__))
+#if (defined(__arm__) || defined(__aarch64__))
     extern unsigned int OPENSSL_armcap_P;
     if (0 == OPENSSL_armcap_P)
        fprintf(stderr, "Optimizations disabled\n");
index 170295f0b37fedbc5392e9a5197c95cba32a0da8..8ff75dcd2e0772615ac9bf574ea19578682ca6f2 100644 (file)
@@ -326,7 +326,7 @@ int main(int argc, char **argv)
        SysInit();
 #endif
 
-#if defined(__APPLE__) && (defined(__arm__) || defined(__aarch64__))
+#if (defined(__arm__) || defined(__aarch64__))
        if (*args && !strcmp(*args, "-noaccel"))
                {
                extern unsigned int OPENSSL_armcap_P;