From 624d3b6a99778443e35fb260bef50a3969df9215 Mon Sep 17 00:00:00 2001 From: Adrian Perez de Castro Date: Wed, 26 May 2021 01:24:59 +0300 Subject: [PATCH] Support building against uClibc https://bugs.webkit.org/show_bug.cgi?id=226244 Reviewed by Michael Catanzaro. Source/JavaScriptCore: * assembler/MacroAssemblerARM64.cpp: (getauxval): Provide a fallback implementation of getauxval() for systems which do not provide , like those using uClibc as their C library. Source/WTF: * wtf/PlatformRegisters.h: Use the header instead of , which is enough to gain access to the type definitions for CPU registers and is available on every libc. On the other hand, uClibc does not have , so this fixes the build in that case. Signed-off-by: Adrian Perez de Castro [Backport from upstream: - https://bugs.webkit.org/show_bug.cgi?id=226244 - https://trac.webkit.org/changeset/278302 (current svn, soon legacy) - https://commits.webkit.org/238339@main (future-proof for after the migration to git) ] [yann.morin.1998@free.fr: add upstream commit refs] Signed-off-by: Yann E. MORIN --- .../assembler/MacroAssemblerARM64.cpp | 18 ++++++++++++++++++ Source/WTF/wtf/PlatformRegisters.h | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp b/Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp index 9e5c5147ea0..d20e632d825 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp +++ b/Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp @@ -34,7 +34,25 @@ #if OS(LINUX) #include +#if __has_include() #include +#else +#include +// Provide an implementation for C libraries which do not ship one. +static unsigned long getauxval(unsigned long type) +{ + char** env = environ; + while (*env++) { /* no-op */ } + + for (auto* auxv = reinterpret_cast(env); *auxv != AT_NULL; auxv += 2) { + if (*auxv == type) + return auxv[1]; + } + + errno = ENOENT; + return 0; +} +#endif #endif namespace JSC { diff --git a/Source/WTF/wtf/PlatformRegisters.h b/Source/WTF/wtf/PlatformRegisters.h index d26ef985169..e7f15b7eb62 100644 --- a/Source/WTF/wtf/PlatformRegisters.h +++ b/Source/WTF/wtf/PlatformRegisters.h @@ -35,7 +35,7 @@ #elif OS(WINDOWS) #include #else -#include +#include #endif namespace WTF { -- 2.31.1