summaryrefslogtreecommitdiffstats
path: root/tests/auto/kallsyms/tst_kallsyms.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/kallsyms/tst_kallsyms.cpp')
-rw-r--r--tests/auto/kallsyms/tst_kallsyms.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/kallsyms/tst_kallsyms.cpp b/tests/auto/kallsyms/tst_kallsyms.cpp
index 6d9e31c..416390e 100644
--- a/tests/auto/kallsyms/tst_kallsyms.cpp
+++ b/tests/auto/kallsyms/tst_kallsyms.cpp
@@ -115,6 +115,25 @@ private slots:
if (!QFile::exists(path))
QSKIP("/proc/kallsysms not available");
+ auto checkSysCtl = [](const QString &knob, int expectedValue) -> bool {
+ QFile file(QLatin1String("/proc/sys/kernel/") + knob);
+ if (!file.open(QIODevice::ReadOnly)) {
+ qWarning() << "failed to open sysctl file for" << knob;
+ return false;
+ }
+ const auto contents = file.readAll().trimmed();
+ bool ok = false;
+ const auto value = contents.toInt(&ok);
+ if (!ok)
+ qWarning() << "Failed to parse sysctl file contents for" << knob << contents;
+ return ok && value == expectedValue;
+ };
+ if (!checkSysCtl(QStringLiteral("kptr_restrict"), 0)) {
+ QEXPECT_FAIL("", "sysctl kernel.kptr_restrict != 0, cannot parse /proc/kallsyms", Abort);
+ } else if (!checkSysCtl(QStringLiteral("perf_event_paranoid"), -1)) {
+ QEXPECT_FAIL("", "sysctl kernel.perf_event_paranoid != -1, cannot parse /proc/kallsyms", Abort);
+ }
+
PerfKallsyms kallsyms;
QVERIFY(kallsyms.parseMapping(path));
QVERIFY(kallsyms.errorString().isEmpty());