| Line | Source Code | Coverage |
|---|
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | static QString qdlerror() | - |
| 10 | { | - |
| 11 | | - |
| 12 | | - |
| 13 | | - |
| 14 | const char *err = dlerror(); | - |
| 15 | | - |
| 16 | | - |
| 17 | | - |
| 18 | return err ? QLatin1Char('(') + QString::fromLocal8Bit(err) + QLatin1Char(')'): QString(); executed: return err ? QLatin1Char('(') + QString::fromLocal8Bit(err) + QLatin1Char(')'): QString();Execution Count:55 | 55 |
| 19 | } | - |
| 20 | | - |
| 21 | QStringList QLibraryPrivate::suffixes_sys(const QString& fullVersion) | - |
| 22 | { | - |
| 23 | QStringList suffixes; | - |
| 24 | if (!fullVersion.isEmpty()) { evaluated: !fullVersion.isEmpty()| yes Evaluation Count:55 | yes Evaluation Count:40 |
| 40-55 |
| 25 | suffixes << QString::fromLatin1(".so.%1").arg(fullVersion); | - |
| 26 | } else { executed: }Execution Count:55 | 55 |
| 27 | suffixes << QLatin1String(".so"); | - |
| 28 | } executed: }Execution Count:40 | 40 |
| 29 | return suffixes; executed: return suffixes;Execution Count:95 | 95 |
| 30 | } | - |
| 31 | | - |
| 32 | QStringList QLibraryPrivate::prefixes_sys() | - |
| 33 | { | - |
| 34 | return QStringList() << QLatin1String("lib"); executed: return QStringList() << QLatin1String("lib");Execution Count:95 | 95 |
| 35 | } | - |
| 36 | | - |
| 37 | bool QLibraryPrivate::load_sys() | - |
| 38 | { | - |
| 39 | QString attempt; | - |
| 40 | | - |
| 41 | QFileSystemEntry fsEntry(fileName); | - |
| 42 | | - |
| 43 | QString path = fsEntry.path(); | - |
| 44 | QString name = fsEntry.fileName(); | - |
| 45 | if (path == QLatin1String(".") && !fileName.startsWith(path)) evaluated: path == QLatin1String(".")| yes Evaluation Count:68 | yes Evaluation Count:192 |
partially evaluated: !fileName.startsWith(path)| yes Evaluation Count:68 | no Evaluation Count:0 |
| 0-192 |
| 46 | path.clear(); executed: path.clear();Execution Count:68 | 68 |
| 47 | else | - |
| 48 | path += QLatin1Char('/'); executed: path += QLatin1Char('/');Execution Count:192 | 192 |
| 49 | | - |
| 50 | QStringList suffixes; | - |
| 51 | QStringList prefixes; | - |
| 52 | if (pluginState != IsAPlugin) { evaluated: pluginState != IsAPlugin| yes Evaluation Count:93 | yes Evaluation Count:167 |
| 93-167 |
| 53 | prefixes = prefixes_sys(); | - |
| 54 | suffixes = suffixes_sys(fullVersion); | - |
| 55 | } executed: }Execution Count:93 | 93 |
| 56 | int dlFlags = 0; | - |
| 57 | if (loadHints & QLibrary::ResolveAllSymbolsHint) { evaluated: loadHints & QLibrary::ResolveAllSymbolsHint| yes Evaluation Count:4 | yes Evaluation Count:256 |
| 4-256 |
| 58 | dlFlags |= 0x00002; | - |
| 59 | } else { executed: }Execution Count:4 | 4 |
| 60 | dlFlags |= 0x00001; | - |
| 61 | } executed: }Execution Count:256 | 256 |
| 62 | if (loadHints & QLibrary::ExportExternalSymbolsHint) { partially evaluated: loadHints & QLibrary::ExportExternalSymbolsHint| no Evaluation Count:0 | yes Evaluation Count:260 |
| 0-260 |
| 63 | dlFlags |= 0x00100; | - |
| 64 | } | 0 |
| 65 | | - |
| 66 | else { | - |
| 67 | | - |
| 68 | | - |
| 69 | | - |
| 70 | dlFlags |= 0; | - |
| 71 | } executed: }Execution Count:260 | 260 |
| 72 | if (loadHints & QLibrary::PreventUnloadHint) { partially evaluated: loadHints & QLibrary::PreventUnloadHint| no Evaluation Count:0 | yes Evaluation Count:260 |
| 0-260 |
| 73 | dlFlags |= 0x01000; | - |
| 74 | } | 0 |
| 75 | if (fsEntry.isAbsolute()) { evaluated: fsEntry.isAbsolute()| yes Evaluation Count:192 | yes Evaluation Count:68 |
| 68-192 |
| 76 | suffixes.prepend(QString()); | - |
| 77 | prefixes.prepend(QString()); | - |
| 78 | } else { executed: }Execution Count:192 | 192 |
| 79 | suffixes.append(QString()); | - |
| 80 | prefixes.append(QString()); | - |
| 81 | } executed: }Execution Count:68 | 68 |
| 82 | | - |
| 83 | bool retry = true; | - |
| 84 | for(int prefix = 0; retry && !pHnd && prefix < prefixes.size(); prefix++) { evaluated: retry| yes Evaluation Count:534 | yes Evaluation Count:3 |
evaluated: !pHnd| yes Evaluation Count:281 | yes Evaluation Count:253 |
evaluated: prefix < prefixes.size()| yes Evaluation Count:277 | yes Evaluation Count:4 |
| 3-534 |
| 85 | for(int suffix = 0; retry && !pHnd && suffix < suffixes.size(); suffix++) { evaluated: retry| yes Evaluation Count:585 | yes Evaluation Count:3 |
evaluated: !pHnd| yes Evaluation Count:332 | yes Evaluation Count:253 |
evaluated: suffix < suffixes.size()| yes Evaluation Count:311 | yes Evaluation Count:21 |
| 3-585 |
| 86 | if (!prefixes.at(prefix).isEmpty() && name.startsWith(prefixes.at(prefix))) evaluated: !prefixes.at(prefix).isEmpty()| yes Evaluation Count:101 | yes Evaluation Count:210 |
partially evaluated: name.startsWith(prefixes.at(prefix))| no Evaluation Count:0 | yes Evaluation Count:101 |
| 0-210 |
| 87 | continue; never executed: continue; | 0 |
| 88 | if (!suffixes.at(suffix).isEmpty() && name.endsWith(suffixes.at(suffix))) evaluated: !suffixes.at(suffix).isEmpty()| yes Evaluation Count:101 | yes Evaluation Count:210 |
partially evaluated: name.endsWith(suffixes.at(suffix))| no Evaluation Count:0 | yes Evaluation Count:101 |
| 0-210 |
| 89 | continue; never executed: continue; | 0 |
| 90 | if (loadHints & QLibrary::LoadArchiveMemberHint) { partially evaluated: loadHints & QLibrary::LoadArchiveMemberHint| no Evaluation Count:0 | yes Evaluation Count:311 |
| 0-311 |
| 91 | attempt = name; | - |
| 92 | int lparen = attempt.indexOf(QLatin1Char('(')); | - |
| 93 | if (lparen == -1) never evaluated: lparen == -1 | 0 |
| 94 | lparen = attempt.count(); never executed: lparen = attempt.count(); | 0 |
| 95 | attempt = path + prefixes.at(prefix) + attempt.insert(lparen, suffixes.at(suffix)); | - |
| 96 | } else { | 0 |
| 97 | attempt = path + prefixes.at(prefix) + name + suffixes.at(suffix); | - |
| 98 | } executed: }Execution Count:311 | 311 |
| 99 | | - |
| 100 | | - |
| 101 | | - |
| 102 | pHnd = dlopen(QFile::encodeName(attempt), dlFlags); | - |
| 103 | | - |
| 104 | | - |
| 105 | if (!pHnd && fileName.startsWith(QLatin1Char('/')) && QFile::exists(attempt)) { evaluated: !pHnd| yes Evaluation Count:58 | yes Evaluation Count:253 |
evaluated: fileName.startsWith(QLatin1Char('/'))| yes Evaluation Count:54 | yes Evaluation Count:4 |
evaluated: QFile::exists(attempt)| yes Evaluation Count:3 | yes Evaluation Count:51 |
| 3-253 |
| 106 | | - |
| 107 | | - |
| 108 | | - |
| 109 | | - |
| 110 | retry = false; | - |
| 111 | } executed: }Execution Count:3 | 3 |
| 112 | } executed: }Execution Count:311 | 311 |
| 113 | } executed: }Execution Count:277 | 277 |
| 114 | if (!pHnd) { evaluated: !pHnd| yes Evaluation Count:7 | yes Evaluation Count:253 |
| 7-253 |
| 115 | errorString = QLibrary::tr("Cannot load library %1: %2").arg(fileName).arg(qdlerror()); | - |
| 116 | } executed: }Execution Count:7 | 7 |
| 117 | if (pHnd) { evaluated: pHnd| yes Evaluation Count:253 | yes Evaluation Count:7 |
| 7-253 |
| 118 | qualifiedFileName = attempt; | - |
| 119 | errorString.clear(); | - |
| 120 | } executed: }Execution Count:253 | 253 |
| 121 | return (pHnd != 0); executed: return (pHnd != 0);Execution Count:260 | 260 |
| 122 | } | - |
| 123 | | - |
| 124 | bool QLibraryPrivate::unload_sys() | - |
| 125 | { | - |
| 126 | | - |
| 127 | | - |
| 128 | | - |
| 129 | | - |
| 130 | if (dlclose(pHnd)) { partially evaluated: dlclose(pHnd)| no Evaluation Count:0 | yes Evaluation Count:943 |
| 0-943 |
| 131 | | - |
| 132 | errorString = QLibrary::tr("Cannot unload library %1: %2").arg(fileName).arg(qdlerror()); | - |
| 133 | return false; never executed: return false; | 0 |
| 134 | } | - |
| 135 | | - |
| 136 | errorString.clear(); | - |
| 137 | return true; executed: return true;Execution Count:943 | 943 |
| 138 | } | - |
| 139 | | - |
| 140 | | - |
| 141 | __attribute__((visibility("default"))) QFunctionPointer qt_linux_find_symbol_sys(const char *symbol) | - |
| 142 | { | - |
| 143 | return QFunctionPointer(dlsym(((void *) 0), symbol)); never executed: return QFunctionPointer(dlsym(((void *) 0), symbol)); | 0 |
| 144 | } | - |
| 145 | QFunctionPointer QLibraryPrivate::resolve_sys(const char* symbol) | - |
| 146 | { | - |
| 147 | QFunctionPointer address = QFunctionPointer(dlsym(pHnd, symbol)); | - |
| 148 | | - |
| 149 | if (!address) { evaluated: !address| yes Evaluation Count:48 | yes Evaluation Count:3427 |
| 48-3427 |
| 150 | errorString = QLibrary::tr("Cannot resolve symbol \"%1\" in %2: %3").arg( | - |
| 151 | QString::fromLatin1(symbol)).arg(fileName).arg(qdlerror()); | - |
| 152 | } else { executed: }Execution Count:48 | 48 |
| 153 | errorString.clear(); | - |
| 154 | } executed: }Execution Count:3427 | 3427 |
| 155 | return address; executed: return address;Execution Count:3475 | 3475 |
| 156 | } | - |
| 157 | | - |
| 158 | | - |
| 159 | | - |
| | |