From 2af63b4415510274a96e19667d9017fdd70eaddf Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Tue, 26 Jan 2021 08:55:11 +0100 Subject: qtbase: revert one commit to fix build in some configurations Signed-off-by: Martin Jansa --- recipes-qt/qt5/nativesdk-qtbase_git.bb | 1 + recipes-qt/qt5/qtbase-native_git.bb | 1 + ...vert-Fix-workaround-in-pthread-destructor.patch | 67 ++++++++++++++++++++++ recipes-qt/qt5/qtbase_git.bb | 1 + 4 files changed, 70 insertions(+) create mode 100644 recipes-qt/qt5/qtbase/0020-Revert-Fix-workaround-in-pthread-destructor.patch 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 +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(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 -- cgit v1.2.3