From 73da4108b9aceb447669e050d172e31ec229bbe1 Mon Sep 17 00:00:00 2001 From: Daniel Lockyer Date: Sun, 17 Apr 2022 14:32:33 +0100 Subject: [PATCH] Fixed prebuilt binary compatibility with musl and ARM64 systems fixes https://github.com/TryGhost/node-sqlite3/issues/1578#issuecomment-1099213777 - up until recently, we've never provided musl and arm64 prebuilt binaries to users - to maintain compatibility with older glibc versions, we have a symbol override that gets included at compile time - this didn't take into account ARM64 systems, which ship with a later glibc version which first supported arm64: https://www.phoronix.com/scan.php?page=news_item&px=MTI2MTc - it also didn't take into account musl systems, which don't use glibc and therefore should be ignored --- src/gcc-preinclude.h | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/gcc-preinclude.h b/src/gcc-preinclude.h index 9ea8c5765..d9058f82e 100644 --- a/src/gcc-preinclude.h +++ b/src/gcc-preinclude.h @@ -1,6 +1,26 @@ // http://web.archive.org/web/20140401031018/http://rjpower9000.wordpress.com:80/2012/04/09/fun-with-shared-libraries-version-glibc_2-14-not-found/ -#if defined(__linux__) && defined(__x86_64__) +#define _GNU_SOURCE +#include +#undef _GNU_SOURCE + +#if defined(__linux__) && defined(__USE_GNU) + +#if defined(__x86_64__) __asm__(".symver memcpy,memcpy@GLIBC_2.2.5"); +__asm__(".symver exp,exp@GLIBC_2.2.5"); +__asm__(".symver log,log@GLIBC_2.2.5"); +__asm__(".symver pow,pow@GLIBC_2.2.5"); +__asm__(".symver fcntl64,fcntl@GLIBC_2.2.5"); +#endif + +#if defined(__aarch64__) || defined(_M_ARM64) +__asm__(".symver memcpy,memcpy@GLIBC_2.17"); +__asm__(".symver exp,exp@GLIBC_2.17"); +__asm__(".symver log,log@GLIBC_2.17"); +__asm__(".symver pow,pow@GLIBC_2.17"); +__asm__(".symver fcntl64,fcntl@GLIBC_2.17"); +#endif + #endif