Dear Boyuan Yang and Debian FTP Masters,
Thank you for filing this report. I investigated the ppc64el build
failure and found the root cause.
The failure happens in the test testDetectBranches() in
tests/modeltests/tst_disassemblyoutput.cpp.
There are two issues.
1) The regex used to parse the readelf -s output does not match the
format produced on ppc64el.
Replacing the restrictive character class with [^\n]+ fixes this.
2) The test assumes that every disassembly line contains branch
visualisation output.
This assumption is not always true on ppc64el. Wrapping the check
with if (!line.branchVisualisation.isEmpty())
fixes the problem.
I tested this fix on a Debian ppc64el machine and all 8 tests in the
tst_disassemblyoutput suite now pass.
I also tested it on an amd64 machine and it works fine there as well.
I have attached a patch implementing these changes. Could you please
review it and let me know if this approach looks acceptable?
Best regards,
Trupti
On 2026-03-04 07:24, Boyuan Yang wrote:
Package: ftp.debian.org
Control: affects -1 + src:hotspot
X-Debbugs-Cc: [email protected]
[email protected]
User: [email protected]
Usertags: remove
User: [email protected]
Usertags: ppc64el
Dear Debian FTP Masters,
With the new upload of src:hotspot, the package currently fails to
build on
ppc64el architecture while the previous version in oldstable(!) does.
Since its
upstream did not provide explicit architecture support on ppc64el, I
am requesting
to remove the old built binaries of hotspot on ppc64el for now before
porters
may have a chance to look deeper into it. This would help solving some
longstanding
RC bugs of hotspot package itself as well as help having it migrate to
Debian Testing.
Many thanks and please feel free to let me know if you have any
questions.
Best Regards,
Boyuan Yang
Description: <short summary of the patch>
--- hotspot-1.6.0.orig/tests/modeltests/tst_disassemblyoutput.cpp
+++ hotspot-1.6.0/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(),
+ // not every architecture emits branch visualisation for every line
+ 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:
};
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());