aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jansa <Martin.Jansa@gmail.com>2021-01-26 08:55:11 +0100
committerMartin Jansa <Martin.Jansa@gmail.com>2021-01-26 08:55:13 +0100
commitb6f9fee5a31f62e36562ffb4055a525a5920b1c0 (patch)
tree0e897bcc071e83b0529431d725d0ffdb79c9b264
parent9d8457ad32a346245cf2d947f60fa88238e2c07f (diff)
qtbase: revert one commit to fix build in some configurations
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-rw-r--r--recipes-qt/qt5/nativesdk-qtbase_git.bb1
-rw-r--r--recipes-qt/qt5/qtbase-native_git.bb1
-rw-r--r--recipes-qt/qt5/qtbase/0020-Revert-Fix-workaround-in-pthread-destructor.patch67
-rw-r--r--recipes-qt/qt5/qtbase_git.bb1
4 files changed, 70 insertions, 0 deletions
diff --git a/recipes-qt/qt5/nativesdk-qtbase_git.bb b/recipes-qt/qt5/nativesdk-qtbase_git.bb
index 4bf81339..06d237d0 100644
--- a/recipes-qt/qt5/nativesdk-qtbase_git.bb
+++ b/recipes-qt/qt5/nativesdk-qtbase_git.bb
@@ -42,6 +42,7 @@ SRC_URI += "\
file://0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
file://0018-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch \
file://0019-Define-__NR_futex-if-it-does-not-exist.patch \
+ file://0020-Revert-Fix-workaround-in-pthread-destructor.patch \
"
# common for qtbase-native and nativesdk-qtbase
diff --git a/recipes-qt/qt5/qtbase-native_git.bb b/recipes-qt/qt5/qtbase-native_git.bb
index 4be4aaa8..8effb0af 100644
--- a/recipes-qt/qt5/qtbase-native_git.bb
+++ b/recipes-qt/qt5/qtbase-native_git.bb
@@ -37,6 +37,7 @@ SRC_URI += "\
file://0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
file://0018-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch \
file://0019-Define-__NR_futex-if-it-does-not-exist.patch \
+ file://0020-Revert-Fix-workaround-in-pthread-destructor.patch \
"
# common for qtbase-native and nativesdk-qtbase
diff --git a/recipes-qt/qt5/qtbase/0020-Revert-Fix-workaround-in-pthread-destructor.patch b/recipes-qt/qt5/qtbase/0020-Revert-Fix-workaround-in-pthread-destructor.patch
new file mode 100644
index 00000000..c397ddb3
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0020-Revert-Fix-workaround-in-pthread-destructor.patch
@@ -0,0 +1,67 @@
+From aeaea761f21e5430d3199d2ca4414d18ed7b0fd5 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 26 Jan 2021 08:50:45 +0100
+Subject: [PATCH] Revert "Fix workaround in pthread destructor"
+
+This reverts commit 81ce2d1d6fa741de4d27b939a378147a02019ec1.
+
+currentThreadData was reverted in 5.12 before this commit:
+
+81ce2d1d6f Fix workaround in pthread destructor
+8867e0eaa7 Revert "Remove pthread storage for thread local data"
+78665d8a0c Remove pthread storage for thread local data
+
+causing build failures in configurations which use this
+| /home/jenkins/workspace/luneos-unstable/webos-ports/tmp-glibc/work/cortexa8t2hf-neon-halium-webos-linux-gnueabi/qtbase/5.15.2+gitAUTOINC+40143c189b-r0/git/src/corelib/thread/qthread_unix.cpp: In function 'void destroy_current_thread_data(void*)':
+| /home/jenkins/workspace/luneos-unstable/webos-ports/tmp-glibc/work/cortexa8t2hf-neon-halium-webos-linux-gnueabi/qtbase/5.15.2+gitAUTOINC+40143c189b-r0/git/src/corelib/thread/qthread_unix.cpp:121:5: error: 'currentThreadData' was not declared in this scope
+| 121 | currentThreadData = data;
+| | ^~~~~~~~~~~~~~~~~
+
+---
+ src/corelib/thread/qthread_unix.cpp | 25 +++++++++++++++++++------
+ 1 file changed, 19 insertions(+), 6 deletions(-)
+
+diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
+index 659d5fb03c..1da68b3130 100644
+--- a/src/corelib/thread/qthread_unix.cpp
++++ b/src/corelib/thread/qthread_unix.cpp
+@@ -116,11 +116,18 @@ static pthread_key_t current_thread_data_key;
+
+ static void destroy_current_thread_data(void *p)
+ {
++#if defined(Q_OS_VXWORKS)
++ // Calling setspecific(..., 0) sets the value to 0 for ALL threads.
++ // The 'set to 1' workaround adds a bit of an overhead though,
++ // since this function is called twice now.
++ if (p == (void *)1)
++ return;
++#endif
++ // POSIX says the value in our key is set to zero before calling
++ // this destructor function, so we need to set it back to the
++ // right value...
++ pthread_setspecific(current_thread_data_key, p);
+ QThreadData *data = static_cast<QThreadData *>(p);
+- // thread_local variables are set to zero before calling this destructor function,
+- // if they are internally using pthread-specific data management,
+- // so we need to set it back to the right value...
+- currentThreadData = data;
+ if (data->isAdopted) {
+ QThread *thread = data->thread.loadAcquire();
+ Q_ASSERT(thread);
+@@ -131,8 +138,14 @@ static void destroy_current_thread_data(void *p)
+ data->deref();
+
+ // ... but we must reset it to zero before returning so we aren't
+- // leaving a dangling pointer.
+- currentThreadData = nullptr;
++ // called again (POSIX allows implementations to call destructor
++ // functions repeatedly until all values are zero)
++ pthread_setspecific(current_thread_data_key,
++#if defined(Q_OS_VXWORKS)
++ (void *)1);
++#else
++ nullptr);
++#endif
+ }
+
+ static void create_current_thread_data_key()
diff --git a/recipes-qt/qt5/qtbase_git.bb b/recipes-qt/qt5/qtbase_git.bb
index a7811ddf..19c22d0a 100644
--- a/recipes-qt/qt5/qtbase_git.bb
+++ b/recipes-qt/qt5/qtbase_git.bb
@@ -33,6 +33,7 @@ SRC_URI += "\
file://0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
file://0018-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch \
file://0019-Define-__NR_futex-if-it-does-not-exist.patch \
+ file://0020-Revert-Fix-workaround-in-pthread-destructor.patch \
"
# Disable LTO for now, QT5 patches are being worked upstream, perhaps revisit with