libsheepy

C lib for handling text files, strings and json like data structure with an object oriented system
git clone https://spartatek.se/git/libsheepy.git
Log | Files | Refs | README | LICENSE

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:
MgenMake.c | 12++++++++----
Mrelease/libsheepy.c | 10+++++-----
Mrelease/libsheepy.h | 4++--
Msrc/libsheepy.c | 10+++++-----
Msrc/libsheepy.h | 4++--
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>