--- /dev/null
+From 624d3b6a99778443e35fb260bef50a3969df9215 Mon Sep 17 00:00:00 2001
+From: Adrian Perez de Castro <aperez@igalia.com>
+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 <sys/auxv.h>, like those using uClibc
+as their C library.
+
+Source/WTF:
+
+* wtf/PlatformRegisters.h: Use the <sys/ucontext.h> header instead of
+<ucontext.h>, 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 <ucontext.h>, so this fixes the build in that
+case.
+
+Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
+[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 <yann.morin.1998@free.fr>
+---
+ .../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 <asm/hwcap.h>
++#if __has_include(<sys/auxv.h>)
+ #include <sys/auxv.h>
++#else
++#include <linux/auxvec.h>
++// 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<unsigned long*>(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 <windows.h>
+ #else
+-#include <ucontext.h>
++#include <sys/ucontext.h>
+ #endif
+
+ namespace WTF {
+--
+2.31.1
+