commit f1b0fc4f8175b71280fad399be6fceb72399432e
parent ed462ae7949f6d9a1f88f5e764df067e5c5d6792
Author: Remy Noulin <loader2x@gmail.com>
Date: Thu, 22 Jul 2021 12:22:51 +0000
fix compilation issues in linux arm 64 platforms
like the pinephone and raspberry pi 4
genMake.c | 12 ++++++++----
release/libsheepy.c | 10 +++++-----
release/libsheepy.h | 4 ++--
src/libsheepy.c | 10 +++++-----
src/libsheepy.h | 4 ++--
5 files changed, 22 insertions(+), 18 deletions(-)
Diffstat:
5 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/genMake.c b/genMake.c
@@ -152,18 +152,20 @@ bool fileExists(const char *filePath) {
int main(int ARGC, char** ARGV) {
-#if __arm__
+#if __arm__ || __aarch64__
// remove -mrdrnd cflag in Makefile on ARM platforms
// because there is no HW random number generator
char *m = readFileToS("Makefile");
- char *b = readfiletos("build.sh");
- char *B = readfiletos("buildMemcheck.sh");
+ char *b = readFileToS("build.sh");
+ char *B = readFileToS("buildMemcheck.sh");
+ char *a = readFileToS("buildAsan.sh");
#if !TERMUX
puts("ARM cpu");
iReplaceS(&m, " -mrdrnd", "", 1);
iReplaceS(&b, " -mrdrnd", "", 1);
iReplaceS(&B, " -mrdrnd", "", 1);
+ iReplaceS(&a, " -mrdrnd", "", 1);
#else // #if !TERMUX
puts("ARM cpu Termux");
char *i = readFileToS("install.sh");
@@ -183,11 +185,13 @@ int main(int ARGC, char** ARGV) {
writeFileS("Makefile", m);
writeFileS("build.sh", b);
writeFileS("buildMemcheck.sh", B);
+ writeFileS("buildAsan.sh", a);
free(m);
free(b);
free(B);
+ free(a);
-#endif // #if __arm__
+#endif // #if __arm__ || __aarch64__
#if __APPLE__
diff --git a/release/libsheepy.c b/release/libsheepy.c
@@ -75,7 +75,7 @@ typedef enum { LOCALE_NORMAL, LOCALE_TURKIC, LOCALE_LITHUANIAN } localeType;
#endif
#if ((__FreeBSD__))
#endif
-#if (!(__arm__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
+#if (!(__arm__ || __aarch64__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
internal void segfault_sigaction(int signal, siginfo_t *si, void *arg);
internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED);
#endif
@@ -835,7 +835,7 @@ static char *libSheepyRealProgPath = NULL;
*
* prints line and file where the segfault crash occured
*/
-#if (!(__arm__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
+#if (!(__arm__ || __aarch64__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
internal void segfault_sigaction(int signal, siginfo_t *si, void *arg) {
/* char addr[20] */
@@ -853,7 +853,7 @@ internal void segfault_sigaction(int signal, siginfo_t *si, void *arg) {
/* systemNFree(s); */
XFAILURE
}
-#else // __arm__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__
+#else // __arm__ || __aarch64__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__
internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED) {
puts("Segfault");
@@ -5850,7 +5850,7 @@ uint64_t randomWordFromHW(void) {
unsigned long long r;
#ifdef __GNUC__
- #if (!defined(__arm__) && !defined(__i386__))
+ #if (!defined(__arm__) && !defined(__aarch64__) && !defined(__i386__))
// TODO valgrind doesn't support the rdrand instruction 171117
#ifndef unitTest
_rdrand64_step(&r);
@@ -5861,7 +5861,7 @@ uint64_t randomWordFromHW(void) {
#else
puts("HW Random generator not available on the ARM platform");
return(0);
- // __arm__ || __i386__
+ // __arm__ || __aarch64__ || __i386__
#endif
// __GNUC__
#endif
diff --git a/release/libsheepy.h b/release/libsheepy.h
@@ -36,9 +36,9 @@
#include <stdlib.h>
#include <ctype.h>
#ifdef __GNUC__
-#ifndef __arm__
+#if !defined(__arm__) && !defined(__aarch64__)
#include <immintrin.h>
-#endif
+#endif // #if !defined(__arm__) && !defined(__aarch64__)
#endif // __GNUC__
#include <time.h>
#include <setjmp.h>
diff --git a/src/libsheepy.c b/src/libsheepy.c
@@ -77,7 +77,7 @@ typedef enum { LOCALE_NORMAL, LOCALE_TURKIC, LOCALE_LITHUANIAN } localeType;
#endif
void *myMalloc(size_t l);
void *myRealloc(void *buffer, size_t l);
-#if (!(__arm__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
+#if (!(__arm__ || __aarch64__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
internal void segfault_sigaction(int signal, siginfo_t *si, void *arg);
internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED);
#endif
@@ -891,7 +891,7 @@ static char *libSheepyRealProgPath = NULL;
*
* prints line and file where the segfault crash occured
*/
-#if (!(__arm__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
+#if (!(__arm__ || __aarch64__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__))
internal void segfault_sigaction(int signal, siginfo_t *si, void *arg) {
/* char addr[20] */
@@ -909,7 +909,7 @@ internal void segfault_sigaction(int signal, siginfo_t *si, void *arg) {
/* systemNFree(s); */
XFAILURE
}
-#else // __arm__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__
+#else // __arm__ || __aarch64__ || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__
internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED) {
puts("Segfault");
@@ -5906,7 +5906,7 @@ uint64_t randomWordFromHW(void) {
unsigned long long r;
#ifdef __GNUC__
- #if (!defined(__arm__) && !defined(__i386__))
+ #if (!defined(__arm__) && !defined(__aarch64__) && !defined(__i386__))
// TODO valgrind doesn't support the rdrand instruction 171117
#ifndef unitTest
_rdrand64_step(&r);
@@ -5917,7 +5917,7 @@ uint64_t randomWordFromHW(void) {
#else
puts("HW Random generator not available on the ARM platform");
return(0);
- // __arm__ || __i386__
+ // __arm__ || __aarch64__ || __i386__
#endif
// __GNUC__
#endif
diff --git a/src/libsheepy.h b/src/libsheepy.h
@@ -36,9 +36,9 @@
#include <stdlib.h>
#include <ctype.h>
#ifdef __GNUC__
-#ifndef __arm__
+#if !defined(__arm__) && !defined(__aarch64__)
#include <immintrin.h>
-#endif
+#endif // #if !defined(__arm__) && !defined(__aarch64__)
#endif // __GNUC__
#include <time.h>
#include <setjmp.h>