--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp	2010-09-10 11:05:22.000000000 +0200
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp	2010-11-15 16:39:53.000000000 +0100
@@ -70,6 +70,18 @@
 #endif
 #include <unistd.h>

+#if defined(__UCLIBC__)
+// versions of uClibc 0.9.31 and below do not have
+// pthread_getattr_np or pthread_attr_getstack.
+#if __UCLIBC_MAJOR__ == 0 && \
+    (__UCLIBC_MINOR__ < 9 || \
+    (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 31))
+#define UCLIBC_USE_PROC_SELF_MAPS 1
+#include <stdio_ext.h>
+extern int* __libc_stack_end;
+#endif
+#endif
+
 #if OS(SOLARIS)
 #include <thread.h>
 #else
@@ -580,6 +592,37 @@
     get_thread_info(find_thread(NULL), &threadInfo);
     return threadInfo.stack_end;
 #elif OS(UNIX)
+#ifdef UCLIBC_USE_PROC_SELF_MAPS
+    // Read /proc/self/maps and locate the line whose address
+    // range contains __libc_stack_end.
+    FILE* file = fopen("/proc/self/maps", "r");
+    if (!file)
+        return 0;
+    __fsetlocking(file, FSETLOCKING_BYCALLER);
+    char* line = 0;
+    size_t lineLen = 0;
+    while (!feof_unlocked(file)) {
+        if (getdelim(&line, &lineLen, '\n', file) <= 0)
+            break;
+
+        long from;
+        long to;
+        if (sscanf (line, "%lx-%lx", &from, &to) != 2)
+            continue;
+        if (from <= (long)__libc_stack_end && (long)__libc_stack_end < to) {
+            fclose(file);
+            free(line);
+#ifdef _STACK_GROWS_UP
+            return (void *)from;
+#else
+            return (void *)to;
+#endif
+        }
+    }
+    fclose(file);
+    free(line);
+    return 0;
+#else
     AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex);
     MutexLocker locker(mutex);
     static void* stackBase = 0;
@@ -603,6 +646,7 @@
         stackThread = thread;
     }
     return static_cast<char*>(stackBase) + stackSize;
+#endif
 #elif OS(WINCE)
     AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex);
     MutexLocker locker(mutex);
