From 7d5b84e61d702290af9b574e5092882efcf28b5f Mon Sep 17 00:00:00 2001 From: Scott Boudreaux <121303252+Scottcjn@users.noreply.github.com> Date: Wed, 18 Mar 2026 17:25:40 -0500 Subject: [PATCH] fix: ppc64el test failures in tst_disassemblyoutput MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two fixes for ppc64el (powerpc64le) test failures: 1. readelf -s output format differs on ppc64el — the regex character class [0-9 a-zA-Z]+ is too restrictive. Changed to [^\n]+ which matches any format while still stopping at the newline. 2. Not every architecture emits branch visualisation for every disassembly line. On ppc64el some lines have empty visualisation. Wrapped the QVERIFY with an isEmpty() check so the character validation only runs when visualisation is present. Both fixes from the Debian PowerPC porters analysis in https://bugs.debian.org/1129621#17 Fixes #766 --- tests/modeltests/tst_disassemblyoutput.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/modeltests/tst_disassemblyoutput.cpp b/tests/modeltests/tst_disassemblyoutput.cpp index ebfb4139..a1b13450 100644 --- a/tests/modeltests/tst_disassemblyoutput.cpp +++ b/tests/modeltests/tst_disassemblyoutput.cpp @@ -263,11 +263,12 @@ private slots: }; for (const auto& line : result.disassemblyLines) { - QVERIFY(!line.branchVisualisation.isEmpty()); - - // check that we only captures valid visualisation characters - QVERIFY(std::all_of(line.branchVisualisation.cbegin(), line.branchVisualisation.cend(), - isValidVisualisationCharacter)); + // not every architecture emits branch visualisation for every line (e.g. ppc64el) + if (!line.branchVisualisation.isEmpty()) { + // check that we only capture valid visualisation characters + QVERIFY(std::all_of(line.branchVisualisation.cbegin(), line.branchVisualisation.cend(), + isValidVisualisationCharacter)); + } QVERIFY(std::all_of(line.hexdump.cbegin(), line.hexdump.cend(), isValidHexdumpCharacter)); @@ -392,8 +393,7 @@ private slots: }; static FunctionData findAddressAndSizeOfFunc(const QString& library, const QString& name) { - QRegularExpression regex(QStringLiteral("[ ]+[0-9]+: ([0-9a-f]+)[ ]+([0-9]+)[0-9 a-zA-Z]+%1\\n").arg(name)); - + QRegularExpression regex(QStringLiteral("[ ]+[0-9]+: ([0-9a-f]+)[ ]+([0-9]+)[^\\n]+%1").arg(name)); const auto readelfBinary = QStandardPaths::findExecutable(QStringLiteral("readelf")); VERIFY_OR_THROW(!readelfBinary.isEmpty());