From c3dc346d44c8c5485b3eb1a97f32ba2ed2e76ece Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 26 Sep 2015 16:03:23 +0000 Subject: webkitgtk: Fix build with clang/musl backtrace is glibc only feature on linux so check for glibc before using it Clangs clear_cache has different signature than gcc provided builtin make it compatible for both Signed-off-by: Khem Raj --- ...nable-backtrace-on-linux-when-using-glibc.patch | 39 ++++++++++++++ ...x-build-with-non-glibc-libraries-on-linux.patch | 61 ++++++++++++++++++++++ meta/recipes-sato/webkit/webkitgtk/clang.patch | 25 +++++++++ meta/recipes-sato/webkit/webkitgtk_2.10.4.bb | 3 ++ 4 files changed, 128 insertions(+) create mode 100644 meta/recipes-sato/webkit/webkitgtk/0001-Enable-backtrace-on-linux-when-using-glibc.patch create mode 100644 meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-non-glibc-libraries-on-linux.patch create mode 100644 meta/recipes-sato/webkit/webkitgtk/clang.patch (limited to 'meta/recipes-sato') diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Enable-backtrace-on-linux-when-using-glibc.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Enable-backtrace-on-linux-when-using-glibc.patch new file mode 100644 index 0000000000..d7e4ef6263 --- /dev/null +++ b/meta/recipes-sato/webkit/webkitgtk/0001-Enable-backtrace-on-linux-when-using-glibc.patch @@ -0,0 +1,39 @@ +From 0b68ad206d2d90df78d91cad4da19152084014cf Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 16 Sep 2015 05:15:04 +0000 +Subject: [PATCH] Enable backtrace on linux when using glibc + +We dont have backtrace() implemented on non-glibc libc's on linux + +Signed-off-by: Khem Raj +--- +Upstream-Status: Accepted + + Source/WTF/wtf/Assertions.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp +index 191d53f..a4d86b5 100644 +--- a/Source/WTF/wtf/Assertions.cpp ++++ b/Source/WTF/wtf/Assertions.cpp +@@ -68,7 +68,7 @@ + #include + #endif + +-#if OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__)) ++#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)) + #include + #include + #include +@@ -225,7 +225,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f + + void WTFGetBacktrace(void** stack, int* size) + { +-#if OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__)) ++#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)) + *size = backtrace(stack, *size); + #elif OS(WINDOWS) + // The CaptureStackBackTrace function is available in XP, but it is not defined +-- +2.5.2 + diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-non-glibc-libraries-on-linux.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-non-glibc-libraries-on-linux.patch new file mode 100644 index 0000000000..77ebf37efa --- /dev/null +++ b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-non-glibc-libraries-on-linux.patch @@ -0,0 +1,61 @@ +From 30e2ef302a329850ba55c7c458c98cbf396186ec Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 31 Dec 2015 21:47:34 +0000 +Subject: [PATCH] Fix build with non-glibc libraries on linux + +qualify isnan() calls with std namespace +malloc_trim is glibc specific API so guard it with __GLIBC__ +let ctype be used on non-glibc ( musl ) C library + +Signed-off-by: Khem Raj +--- +Upstream-Status: Accepted + + Source/JavaScriptCore/runtime/Options.cpp | 2 +- + Source/WTF/wtf/DisallowCType.h | 2 +- + Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp | 2 ++ + 3 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Source/JavaScriptCore/runtime/Options.cpp b/Source/JavaScriptCore/runtime/Options.cpp +index fe830b4..c49aade 100644 +--- a/Source/JavaScriptCore/runtime/Options.cpp ++++ b/Source/JavaScriptCore/runtime/Options.cpp +@@ -610,7 +610,7 @@ bool Option::operator==(const Option& other) const + case Options::Type::unsignedType: + return m_entry.unsignedVal == other.m_entry.unsignedVal; + case Options::Type::doubleType: +- return (m_entry.doubleVal == other.m_entry.doubleVal) || (isnan(m_entry.doubleVal) && isnan(other.m_entry.doubleVal)); ++ return (m_entry.doubleVal == other.m_entry.doubleVal) || (std::isnan(m_entry.doubleVal) && std::isnan(other.m_entry.doubleVal)); + case Options::Type::int32Type: + return m_entry.int32Val == other.m_entry.int32Val; + case Options::Type::optionRangeType: +diff --git a/Source/WTF/wtf/DisallowCType.h b/Source/WTF/wtf/DisallowCType.h +index d85e767..dc6bcab 100644 +--- a/Source/WTF/wtf/DisallowCType.h ++++ b/Source/WTF/wtf/DisallowCType.h +@@ -40,7 +40,7 @@ + // are used from wx headers. On GTK+ for Mac many GTK+ files include + // or , which in turn include which uses + // isacii(). +-#if !(OS(DARWIN) && PLATFORM(GTK)) && !PLATFORM(EFL) && !defined(_LIBCPP_VERSION) ++#if !(OS(DARWIN) && PLATFORM(GTK)) && !PLATFORM(EFL) && !defined(_LIBCPP_VERSION) && defined(__GLIBC__) + + #include + +diff --git a/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp b/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp +index ea61909..1495642 100644 +--- a/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp ++++ b/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp +@@ -202,7 +202,9 @@ void MemoryPressureHandler::respondToMemoryPressure(Critical critical, Synchrono + void MemoryPressureHandler::platformReleaseMemory(Critical) + { + ReliefLogger log("Run malloc_trim"); ++#ifdef __GLIBC__ + malloc_trim(0); ++#endif + } + + void MemoryPressureHandler::ReliefLogger::platformLog() +-- +2.6.4 + diff --git a/meta/recipes-sato/webkit/webkitgtk/clang.patch b/meta/recipes-sato/webkit/webkitgtk/clang.patch new file mode 100644 index 0000000000..e5267138bf --- /dev/null +++ b/meta/recipes-sato/webkit/webkitgtk/clang.patch @@ -0,0 +1,25 @@ +Clang's builtin for clear_cache accepts char* and errors out when using void*, +using char* work on both gcc and clang since char* is auto-converted to void* in gcc case + +Source/JavaScriptCore/assembler/ARM64Assembler.h:2857:33: error: cannot initialize a parameter of type 'char *' with an rvalue of type 'void *' + __builtin___clear_cache(reinterpret_cast(begin), reinterpret_cast(end)); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1 error generated. + +Signed-off-by: Khem Raj + +Upstream-Status: Accepted + +Index: webkitgtk-2.8.5/Source/JavaScriptCore/assembler/ARM64Assembler.h +=================================================================== +--- webkitgtk-2.8.5.orig/Source/JavaScriptCore/assembler/ARM64Assembler.h ++++ webkitgtk-2.8.5/Source/JavaScriptCore/assembler/ARM64Assembler.h +@@ -2854,7 +2854,7 @@ public: + #if OS(LINUX) && COMPILER(GCC) + static inline void linuxPageFlush(uintptr_t begin, uintptr_t end) + { +- __builtin___clear_cache(reinterpret_cast(begin), reinterpret_cast(end)); ++ __builtin___clear_cache(reinterpret_cast(begin), reinterpret_cast(end)); + } + #endif + diff --git a/meta/recipes-sato/webkit/webkitgtk_2.10.4.bb b/meta/recipes-sato/webkit/webkitgtk_2.10.4.bb index 4d5aeb48eb..098bbbbeef 100644 --- a/meta/recipes-sato/webkit/webkitgtk_2.10.4.bb +++ b/meta/recipes-sato/webkit/webkitgtk_2.10.4.bb @@ -12,6 +12,9 @@ LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d842 SRC_URI = "\ http://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \ + file://clang.patch \ + file://0001-Enable-backtrace-on-linux-when-using-glibc.patch \ + file://0001-Fix-build-with-non-glibc-libraries-on-linux.patch \ " SRC_URI[md5sum] = "fb010031c6f61c3a1a00793b112badb5" SRC_URI[sha256sum] = "dbf8260da5cac0c74de2d3cce1fe7c519da3cd816a2c769cb6c6d56addd2f055" -- cgit 1.2.3-korg