Make this build again on SunOS.

The change to src/3rdparty/webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp
is untested.
This commit is contained in:
hans 2012-02-16 20:42:46 +00:00
parent 7d9e29bcd9
commit 8f16206eb4
5 changed files with 125 additions and 4 deletions

View file

@ -1,4 +1,4 @@
$NetBSD: distinfo,v 1.69 2012/01/23 08:16:36 joerg Exp $
$NetBSD: distinfo,v 1.70 2012/02/16 20:42:46 hans Exp $
SHA1 (qt-everywhere-opensource-src-4.8.0.tar.gz) = 2ba35adca8fb9c66a58eca61a15b21df6213f22e
RMD160 (qt-everywhere-opensource-src-4.8.0.tar.gz) = 7506dce7743215481fd9fe56920b8a47f07a112e
@ -39,7 +39,10 @@ SHA1 (patch-cg) = 2519fe525237167f10dffb9294c861f4d7063f31
SHA1 (patch-ci) = bc85adf9ea17be24f92897b960517941f5b28ab7
SHA1 (patch-cj) = 4f6d3546e3bc04ca2034af21645fc6f27bc82eef
SHA1 (patch-qmake_generators_makefile.cpp) = 54184d85fd06c86a62640add6c8334ca323ea863
SHA1 (patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp) = 11059a233c4b272084a85c077a8118e863aad25b
SHA1 (patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp) = 5b5ed1512adcde18ef86044986f36d0bb87e1666
SHA1 (patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp) = bfe38ea1e26fef02dd78e40c95c000cb0cc32a04
SHA1 (patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h) = 384bfccabae5e3a4ea6dea39b912a941133c5632
SHA1 (patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h) = 10bfe59d623db5047e2a4c678ee79a217ea8b7ec
SHA1 (patch-src_3rdparty_webkit_Source_WebCore_features.pri) = d0053dd2732604908fcec294b2a833aeb6d93f40
SHA1 (patch-src_3rdparty_webkit_Source_WebCore_platform_DefaultLocalizationStrategy.cpp) = 9e4a68fe02204e5fda7272f988d991992dfd281e
SHA1 (patch-src_3rdparty_webkit_Source_WebCore_platform_graphics_MediaPlayer.cpp) = f9a1f71b4607c5f542c059873cf5735fad9ff3a1

View file

@ -0,0 +1,92 @@
$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp,v 1.1 2012/02/16 20:42:46 hans Exp $
--- src/3rdparty/webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp.orig 2011-12-08 06:06:02.000000000 +0100
+++ src/3rdparty/webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2012-01-15 02:26:20.184685861 +0100
@@ -20,6 +20,9 @@
*/
#include "config.h"
+#if OS(SOLARIS)
+#undef _FILE_OFFSET_BITS
+#endif
#include "MachineStackMarker.h"
#include "ConservativeRoots.h"
@@ -60,6 +63,10 @@
#include <unistd.h>
#if OS(SOLARIS)
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <procfs.h>
#include <thread.h>
#else
#include <pthread.h>
@@ -331,6 +338,7 @@ typedef pthread_attr_t PlatformThreadReg
#error Need a thread register struct for this platform
#endif
+#if !OS(SOLARIS)
static size_t getPlatformThreadRegisters(const PlatformThread& platformThread, PlatformThreadRegisters& regs)
{
#if OS(DARWIN)
@@ -381,6 +389,7 @@ static size_t getPlatformThreadRegisters
#error Need a way to get thread registers on this platform
#endif
}
+#endif
static inline void* otherThreadStackPointer(const PlatformThreadRegisters& regs)
{
@@ -431,6 +440,7 @@ static inline void* otherThreadStackPoin
#endif
}
+#if !OS(SOLARIS)
static void freePlatformThreadRegisters(PlatformThreadRegisters& regs)
{
#if USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN)
@@ -439,24 +449,40 @@ static void freePlatformThreadRegisters(
UNUSED_PARAM(regs);
#endif
}
+#endif
void MachineThreads::gatherFromOtherThread(ConservativeRoots& conservativeRoots, Thread* thread)
{
suspendThread(thread->platformThread);
+#if OS(SOLARIS)
+ struct lwpstatus lwp;
+ char procfile[64];
+ int fd;
+ snprintf(procfile, 64, "/proc/self/lwp/%u/lwpstatus", thread->platformThread);
+ fd = open(procfile, O_RDONLY, 0);
+ if (fd == -1) {
+ fprintf(stderr, "%s: %s\n", procfile, strerror(errno));
+ abort();
+ }
+ pread(fd, &lwp, sizeof(lwp), 0);
+ close(fd);
+ void* stackPointer = (void*)lwp.pr_reg[REG_SP];
+#else
PlatformThreadRegisters regs;
size_t regSize = getPlatformThreadRegisters(thread->platformThread, regs);
conservativeRoots.add(static_cast<void*>(&regs), static_cast<void*>(reinterpret_cast<char*>(&regs) + regSize));
void* stackPointer = otherThreadStackPointer(regs);
+
+ freePlatformThreadRegisters(regs);
+#endif
void* stackBase = thread->stackBase;
swapIfBackwards(stackPointer, stackBase);
conservativeRoots.add(stackPointer, stackBase);
resumeThread(thread->platformThread);
-
- freePlatformThreadRegisters(regs);
}
#endif

View file

@ -1,4 +1,4 @@
$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp,v 1.1 2012/01/16 09:00:27 adam Exp $
$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp,v 1.2 2012/02/16 20:42:46 hans Exp $
Fix building on NetBSD/amd64 with GCC.
@ -9,7 +9,7 @@ Fix building on NetBSD/amd64 with GCC.
#endif
-#if (OS(LINUX) || OS(FREEBSD)) && CPU(X86_64)
+#if (OS(LINUX) || OS(FREEBSD) || OS(NETBSD)) && CPU(X86_64)
+#if (OS(LINUX) || OS(FREEBSD) || OS(NETBSD) || OS(SOLARIS)) && CPU(X86_64) || (OS(SOLARIS) && CPU(X86))
#define SYMBOL_STRING_RELOCATION(name) #name "@plt"
#elif OS(DARWIN) || (CPU(X86_64) && COMPILER(MINGW) && !GCC_VERSION_AT_LEAST(4, 5, 0))
#define SYMBOL_STRING_RELOCATION(name) "_" #name

View file

@ -0,0 +1,13 @@
$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h,v 1.1 2012/02/16 20:42:46 hans Exp $
--- src/3rdparty/webkit/Source/JavaScriptCore/wtf/MathExtras.h.orig 2011-12-08 06:06:02.000000000 +0100
+++ src/3rdparty/webkit/Source/JavaScriptCore/wtf/MathExtras.h 2012-01-15 01:09:37.169459335 +0100
@@ -248,7 +248,7 @@ inline int clampToInteger(unsigned value
return static_cast<int>(std::min(value, static_cast<unsigned>(std::numeric_limits<int>::max())));
}
-#if !COMPILER(MSVC) && !(COMPILER(RVCT) && PLATFORM(BREWMP)) && !OS(SOLARIS) && !OS(SYMBIAN)
+#if !COMPILER(MSVC) && !(COMPILER(RVCT) && PLATFORM(BREWMP)) && !(OS(SOLARIS) && COMPILER(GCC) && (GCC_VERSION < 40600)) && !OS(SYMBIAN)
using std::isfinite;
using std::isinf;
using std::isnan;

View file

@ -0,0 +1,13 @@
$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h,v 1.1 2012/02/16 20:42:46 hans Exp $
--- src/3rdparty/webkit/Source/JavaScriptCore/wtf/Threading.h.orig 2011-12-08 06:06:02.000000000 +0100
+++ src/3rdparty/webkit/Source/JavaScriptCore/wtf/Threading.h 2012-01-15 02:04:00.160127709 +0100
@@ -113,6 +113,8 @@ using WTF::createThread;
using WTF::currentThread;
using WTF::detachThread;
using WTF::waitForThreadCompletion;
+#if !OS(SOLARIS)
using WTF::yield;
+#endif
#endif // Threading_h