Blame SOURCES/qtbase-qlibrary-do-not-attempt-to-load-library-relative-to-pwd.patch

844c28
From e6f1fde24f77f63fb16b2df239f82a89d2bf05dd Mon Sep 17 00:00:00 2001
844c28
From: Thiago Macieira <thiago.macieira@intel.com>
844c28
Date: Fri, 10 Jan 2020 09:26:27 -0800
844c28
Subject: QLibrary/Unix: do not attempt to load a library relative to $PWD
844c28
844c28
I added the code in commit 5219c37f7c98f37f078fee00fe8ca35d83ff4f5d to
844c28
find libraries in a haswell/ subdir of the main path, but we only need
844c28
to do that transformation if the library is contains at least one
844c28
directory seprator. That is, if the user asks to load "lib/foo", then we
844c28
should try "lib/haswell/foo" (often, the path prefix will be absolute).
844c28
844c28
When the library name the user requested has no directory separators, we
844c28
let dlopen() do the transformation for us. Testing on Linux confirms
844c28
glibc does so:
844c28
844c28
$ LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 --inhibit-cache ./qml -help |& grep Xcursor
844c28
   1972475:     find library=libXcursor.so.1 [0]; searching
844c28
   1972475:       trying file=/usr/lib64/haswell/avx512_1/libXcursor.so.1
844c28
   1972475:       trying file=/usr/lib64/haswell/libXcursor.so.1
844c28
   1972475:       trying file=/usr/lib64/libXcursor.so.1
844c28
   1972475:     calling init: /usr/lib64/libXcursor.so.1
844c28
   1972475:     calling fini: /usr/lib64/libXcursor.so.1 [0]
844c28
844c28
Fixes: QTBUG-81272
844c28
Change-Id: I596aec77785a4e4e84d5fffd15e89689bb91ffbb
844c28
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
844c28
---
844c28
 src/corelib/plugin/qlibrary_unix.cpp | 4 +++-
844c28
 1 file changed, 3 insertions(+), 1 deletion(-)
844c28
844c28
diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp
844c28
index e0381498..7cc7c8e3 100644
844c28
--- a/src/corelib/plugin/qlibrary_unix.cpp
844c28
+++ b/src/corelib/plugin/qlibrary_unix.cpp
844c28
@@ -1,7 +1,7 @@
844c28
 /****************************************************************************
844c28
 **
844c28
 ** Copyright (C) 2016 The Qt Company Ltd.
844c28
-** Copyright (C) 2018 Intel Corporation
844c28
+** Copyright (C) 2020 Intel Corporation
844c28
 ** Contact: https://www.qt.io/licensing/
844c28
 **
844c28
 ** This file is part of the QtCore module of the Qt Toolkit.
844c28
@@ -208,6 +208,8 @@ bool QLibraryPrivate::load_sys()
844c28
         for(int suffix = 0; retry && !pHnd && suffix < suffixes.size(); suffix++) {
844c28
             if (!prefixes.at(prefix).isEmpty() && name.startsWith(prefixes.at(prefix)))
844c28
                 continue;
844c28
+            if (path.isEmpty() && prefixes.at(prefix).contains(QLatin1Char('/')))
844c28
+                continue;
844c28
             if (!suffixes.at(suffix).isEmpty() && name.endsWith(suffixes.at(suffix)))
844c28
                 continue;
844c28
             if (loadHints & QLibrary::LoadArchiveMemberHint) {