0001-Fixes-for-musl.patch (7232B)
- From f9b0ff92a9c173e2b73f2cb897153b31e46e0276 Mon Sep 17 00:00:00 2001
- From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
- Date: Tue, 28 Jan 2020 18:34:42 +0100
- Subject: [PATCH 01/15] Fixes for musl
- Grabbed from CarbsLinux
- Original upstream: Alpine Linux
- Source: @q66, @pullmoll
- Original upstream: Alpine Linux
- Reason: fixing machine context access for musl libc; reduce stack/heap usage for jsc; fix some overly restrictive __GLIBC__ checks
- Updated for latest webkit2gtk.
- ---
- Source/JavaScriptCore/runtime/MachineContext.h | 10 +++++-----
- Source/JavaScriptCore/runtime/Options.h | 16 +++++++++++++---
- .../compiler/preprocessor/ExpressionParser.cpp | 4 ++--
- Source/WTF/wtf/Platform.h | 2 +-
- Source/WebCore/xml/XPathGrammar.cpp | 4 ++--
- 5 files changed, 23 insertions(+), 13 deletions(-)
- diff --git a/Source/JavaScriptCore/runtime/MachineContext.h b/Source/JavaScriptCore/runtime/MachineContext.h
- index 823964c2..e8062952 100644
- --- a/Source/JavaScriptCore/runtime/MachineContext.h
- +++ b/Source/JavaScriptCore/runtime/MachineContext.h
- @@ -188,7 +188,7 @@ static inline void*& stackPointerImpl(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
- -#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
- +#elif OS(FUCHSIA) || defined(__linux__)
- #if CPU(X86)
- return reinterpret_cast<void*&>((uintptr_t&) machineContext.gregs[REG_ESP]);
- @@ -335,7 +335,7 @@ static inline void*& framePointerImpl(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
- -#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
- +#elif OS(FUCHSIA) || defined(__linux__)
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
- @@ -482,7 +482,7 @@ static inline void*& instructionPointerImpl(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
- -#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
- +#elif OS(FUCHSIA) || defined(__linux__)
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
- @@ -639,7 +639,7 @@ inline void*& argumentPointer<1>(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
- -#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
- +#elif OS(FUCHSIA) || defined(__linux__)
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
- @@ -756,7 +756,7 @@ inline void*& llintInstructionPointer(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
- -#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
- +#elif OS(FUCHSIA) || defined(__linux__)
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
- diff --git a/Source/JavaScriptCore/runtime/Options.h b/Source/JavaScriptCore/runtime/Options.h
- index 44fbc30c..271e0652 100644
- --- a/Source/JavaScriptCore/runtime/Options.h
- +++ b/Source/JavaScriptCore/runtime/Options.h
- @@ -112,6 +112,16 @@ constexpr bool enableWebAssemblyStreamingApi = true;
- constexpr bool enableWebAssemblyStreamingApi = false;
- #endif
- +#if defined(__GLIBC__)
- +constexpr unsigned jscMaxPerThreadStack = 4 * MB;
- +constexpr unsigned jscSoftReservedZoneSize = 128 * KB;
- +constexpr unsigned jscReservedZoneSize = 64 * KB;
- +#else
- +constexpr unsigned jscMaxPerThreadStack = 80 * KB;
- +constexpr unsigned jscSoftReservedZoneSize = 32 * KB;
- +constexpr unsigned jscReservedZoneSize = 16 * KB;
- +#endif
- +
- #define JSC_OPTIONS(v) \
- v(bool, useKernTCSM, true, Normal, "Note: this needs to go before other options since they depend on this value.") \
- v(bool, validateOptions, false, Normal, "crashes if mis-typed JSC options were passed to the VM") \
- @@ -127,9 +137,9 @@ constexpr bool enableWebAssemblyStreamingApi = false;
- \
- v(bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \
- \
- - v(unsigned, maxPerThreadStackUsage, 4 * MB, Normal, "Max allowed stack usage by the VM") \
- - v(unsigned, softReservedZoneSize, 128 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \
- - v(unsigned, reservedZoneSize, 64 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \
- + v(unsigned, maxPerThreadStackUsage, jscMaxPerThreadStack, Normal, "Max allowed stack usage by the VM") \
- + v(unsigned, softReservedZoneSize, jscSoftReservedZoneSize, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \
- + v(unsigned, reservedZoneSize, jscReservedZoneSize, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \
- \
- v(bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \
- v(unsigned, jitMemoryReservationSize, 0, Normal, "Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.)") \
- diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp
- index 5da6a22d..b380fb71 100644
- --- a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp
- +++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp
- @@ -728,7 +728,7 @@ int yydebug;
- #if YYERROR_VERBOSE
- # ifndef yystrlen
- -# if defined __GLIBC__ && defined _STRING_H
- +# if defined __linux__ && defined _STRING_H
- # define yystrlen strlen
- # else
- /* Return the length of YYSTR. */
- @@ -743,7 +743,7 @@ static YYSIZE_T yystrlen(const char *yystr)
- # endif
- # ifndef yystpcpy
- -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- +# if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE
- # define yystpcpy stpcpy
- # else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
- index 0e6faaa8..f8c6d684 100644
- --- a/Source/WTF/wtf/Platform.h
- +++ b/Source/WTF/wtf/Platform.h
- @@ -707,7 +707,7 @@
- #endif /* OS(DARWIN) */
- -#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
- +#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__linux__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
- #define HAVE_MACHINE_CONTEXT 1
- #endif
- diff --git a/Source/WebCore/xml/XPathGrammar.cpp b/Source/WebCore/xml/XPathGrammar.cpp
- index 5e069d79..c58413c8 100644
- --- a/Source/WebCore/xml/XPathGrammar.cpp
- +++ b/Source/WebCore/xml/XPathGrammar.cpp
- @@ -966,7 +966,7 @@ int yydebug;
- #if YYERROR_VERBOSE
- # ifndef yystrlen
- -# if defined __GLIBC__ && defined _STRING_H
- +# if defined __linux__ && defined _STRING_H
- # define yystrlen strlen
- # else
- /* Return the length of YYSTR. */
- @@ -989,7 +989,7 @@ yystrlen (yystr)
- # endif
- # ifndef yystpcpy
- -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- +# if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE
- # define yystpcpy stpcpy
- # else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- --
- 2.24.1