From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Petazzoni Date: Mon, 14 Jun 2010 10:25:04 +0200 Subject: [Buildroot] PATCH [1/1] fix building QT with uclibc 0.9.31 In-Reply-To: References: Message-ID: <20100614102504.4ba36304@surf> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Hello Sagaert, Your patch is unfortunately word-wrapped. Can you configure your e-mail client not to word-wrap patches ? Moreover, this patch needs a description: what is it fixing ? Thanks! Thomas On Mon, 14 Jun 2010 10:19:45 +0200 "Sagaert Johan" wrote: > diff -rupN > buildroot-2010.05/package/qt/qt-4.6.2-pthread_getattr_np.patch > buildroot/package/qt/qt-4.6.2-pthread_getattr_np.patch --- > buildroot-2010.05/package/qt/qt-4.6.2-pthread_getattr_np.patch > 1970-01-01 01:00:00.000000000 +0100 +++ > buildroot/package/qt/qt-4.6.2-pthread_getattr_np.patch 2010-06-13 > 19:10:16.000000000 +0200 @@ -0,0 +1,104 @@ > +--- > qt-everywhere-opensource-src-4.6.2/src/3rdparty/javascriptcore/JavaScriptCor > e/runtime/Collector.cpp 2010-02-11 16:55:20.000000000 +0100 > ++++ > qt-everywhere-opensource-src-4.6.2JS/src/3rdparty/javascriptcore/JavaScriptC > ore/runtime/Collector.cpp 2010-05-23 10:49:29.000000000 +0200 > +@@ -74,6 +74,22 @@ > + #endif > + #include > + > ++#if defined(QT_LINUXBASE) > ++#include > ++#endif > ++ > ++#if defined(__UCLIBC__) > ++// versions of uClibc 0.9.28 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 > ++extern int *__libc_stack_end; > ++#endif > ++#endif > ++ > + #if PLATFORM(SOLARIS) > + #include > + #else > +@@ -667,16 +683,59 @@ static inline void* currentThreadStackBa > + get_thread_info(find_thread(NULL), &threadInfo); > + return threadInfo.stack_end; > + #elif PLATFORM(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 = NULL; > ++ 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 > + static void* stackBase = 0; > + static size_t stackSize = 0; > + static pthread_t stackThread; > + pthread_t thread = pthread_self(); > + if (stackBase == 0 || thread != stackThread) { > ++ > ++#if defined(QT_LINUXBASE) > ++ // LinuxBase is missing pthread_getattr_np - resolve it > once at runtime instead > ++ // see http://bugs.linuxbase.org/show_bug.cgi?id=2364 > ++ typedef int (*GetAttrPtr)(pthread_t, pthread_attr_t *); > ++ static int (*pthread_getattr_np_ptr)(pthread_t, > pthread_attr_t *) = 0; > ++ if (!pthread_getattr_np_ptr) > ++ *(void **)&pthread_getattr_np_ptr = dlsym(RTLD_DEFAULT, > "pthread_getattr_np"); > ++#endif > + pthread_attr_t sattr; > + pthread_attr_init(&sattr); > + #if HAVE(PTHREAD_NP_H) || PLATFORM(NETBSD) > + // e.g. on FreeBSD 5.4, neundorf at kde.org > + pthread_attr_get_np(thread, &sattr); > ++#elif defined(QT_LINUXBASE) > ++ if (pthread_getattr_np_ptr) > ++ pthread_getattr_np_ptr(thread, &sattr); > + #else > + // FIXME: this function is non-portable; other POSIX > systems may have different np alternatives > + pthread_getattr_np(thread, &sattr); > +@@ -688,6 +747,7 @@ static inline void* currentThreadStackBa > + stackThread = thread; > + } > + return static_cast(stackBase) + stackSize; > ++#endif > + #elif PLATFORM(WINCE) > + if (g_stackBase) > + return g_stackBase; > +--- > qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/JavaScriptCore/runtim > e/Collector.cpp 2010-02-11 16:55:17.000000000 +0100 > ++++ > qt-everywhere-opensource-src-4.6.2JS/src/3rdparty/webkit/JavaScriptCore/runt > ime/Collector.cpp 2010-05-23 01:41:06.000000000 +0200 > +@@ -83,7 +83,7 @@ > + // pthread_getattr_np or pthread_attr_getstack. > + #if __UCLIBC_MAJOR__ == 0 && \ > + (__UCLIBC_MINOR__ < 9 || \ > +- (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 30)) > ++ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 31)) > + #define UCLIBC_USE_PROC_SELF_MAPS 1 > + #include > + extern int *__libc_stack_end; > -- Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com