5#include "qplatformdefs.h"
10#include <private/qfilesystementry_p.h>
11#include <private/qsimd_p.h>
16# include <private/qcore_mac_p.h>
20#include <private/qjnihelpers_p.h>
21#include <QtCore/qjnienvironment.h>
30 const char *err = dlerror();
62#elif defined(Q_OS_AIX)
80 suffixes <<
".bundle"_L1 <<
".dylib"_L1;
91bool QLibraryPrivate::load_sys()
93#if defined(Q_OS_WASM) && defined(QT_STATIC)
111 if (pluginState != IsAPlugin) {
120 dlFlags |= RTLD_LAZY;
123 dlFlags |= RTLD_GLOBAL;
125#if !defined(Q_OS_CYGWIN)
127 dlFlags |= RTLD_LOCAL;
130#if defined(RTLD_DEEPBIND)
132 dlFlags |= RTLD_DEEPBIND;
140#if defined(RTLD_NODELETE)
145 dlFlags |= RTLD_NODELETE;
151 dlFlags |= RTLD_MEMBER;
158 if (fsEntry.isAbsolute()) {
166#if defined(Q_PROCESSOR_X86) && !defined(Q_OS_DARWIN)
179 if (pluginState == IsAPlugin) {
192 for (
int prefix = 0; retry && !hnd && prefix < prefixes.size(); prefix++) {
193 for (
int suffix = 0; retry && !hnd && suffix < suffixes.size(); suffix++) {
194 if (!prefixes.at(prefix).isEmpty() &&
name.startsWith(prefixes.at(prefix)))
196 if (
path.isEmpty() && prefixes.at(prefix).contains(u
'/'))
198 if (!suffixes.at(suffix).isEmpty() &&
name.endsWith(suffixes.at(suffix)))
204 lparen = attempt.
size();
205 attempt =
path + prefixes.at(prefix) + attempt.
insert(lparen, suffixes.at(suffix));
207 attempt =
path + prefixes.at(prefix) +
name + suffixes.at(suffix);
213 auto attemptFromBundle = attempt;
217 using JniOnLoadPtr = jint (*)(JavaVM *vm,
void *reserved);
218 JniOnLoadPtr jniOnLoad =
reinterpret_cast<JniOnLoadPtr
>(dlsym(hnd,
"JNI_OnLoad"));
219 if (jniOnLoad && jniOnLoad(QJniEnvironment::javaVM(),
nullptr) == JNI_ERR) {
239 QCFType<CFURLRef> bundleUrl = CFURLCreateFromFileSystemRepresentation(NULL,
reinterpret_cast<const UInt8*
>(utf8Bundle.
data()), utf8Bundle.
length(),
true);
243 char executableFile[FILENAME_MAX];
244 CFURLGetFileSystemRepresentation(
url,
true,
reinterpret_cast<UInt8*
>(executableFile), FILENAME_MAX);
260 return (hnd !=
nullptr);
263bool QLibraryPrivate::unload_sys()
266#if defined (Q_OS_QNX)
267 char *
error = dlerror();
281#if defined(Q_OS_LINUX)
282Q_CORE_EXPORT QFunctionPointer qt_linux_find_symbol_sys(
const char *symbol)
284 return QFunctionPointer(dlsym(RTLD_DEFAULT, symbol));
289Q_CORE_EXPORT QFunctionPointer qt_mac_resolve_sys(
void *
handle,
const char *symbol)
291 return QFunctionPointer(dlsym(
handle, symbol));
295QFunctionPointer QLibraryPrivate::resolve_sys(
const char *symbol)
Type loadAcquire() const noexcept
void storeRelaxed(Type newValue) noexcept
char * data()
\macro QT_NO_CAST_FROM_BYTEARRAY
qsizetype length() const noexcept
Same as size().
static QByteArray encodeName(const QString &fileName)
Converts fileName to an 8-bit encoding that you can use in native APIs.
bool exists() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
QString qualifiedFileName
QAtomicPointer< std::remove_pointer< Handle >::type > pHnd
static QStringList suffixes_sys(const QString &fullVersion)
const QString fullVersion
static QStringList prefixes_sys()
QLibrary::LoadHints loadHints() const
@ ExportExternalSymbolsHint
void reserve(qsizetype size)
void append(parameter_type t)
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool startsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string starts with s; otherwise returns false.
static QString fromLocal8Bit(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
void clear()
Clears the contents of the string and makes it null.
qsizetype size() const
Returns the number of characters in this string.
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
QString arg(qlonglong a, int fieldwidth=0, int base=10, QChar fillChar=u' ') const
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
QString & insert(qsizetype i, QChar c)
static QString static QString qsizetype indexOf(QChar c, qsizetype from=0, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
QByteArray toUtf8() const &
Combined button and popup list for selecting options.
Q_CORE_EXPORT jint androidSdkVersion()
Q_CORE_EXPORT int qstrcmp(const char *str1, const char *str2)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError * error
static QString qdlerror()
GLuint64 GLenum void * handle
GLuint GLenum GLenum transform
GLuint GLuint64EXT address
GLsizei const GLchar *const * path
#define qCpuHasFeature(feature)
#define QStringLiteral(str)
QUrl url("example.com")
[constructor-url-reference]