Bug 260210

Summary: [GTK] webkitgtk 2.41.90 fails to build on riscv64 JSC/wasm/WasmB3IRGenerator.cpp
Product: WebKit Reporter: Jeremy Bicha <jbicha>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: berto, bugs-noreply, cgarcia
Priority: P3 Keywords: Gtk
Version: WebKit Nightly Build   
Hardware: PC   
OS: Linux   
See Also: https://launchpad.net/bugs/2031433

Description Jeremy Bicha 2023-08-15 11:12:01 PDT
- webkitgtk 2.41.90
- Ubuntu 23.10
- https://salsa.debian.org/webkit-team/webkit/-/blob/wk2/experimental/debian/rules
- https://salsa.debian.org/webkit-team/webkit/-/blob/wk2/experimental/debian/control

webkitgtk 2.41.90 fails to build on riscv64 but seems to build ok on our other architectures.

Full build log
---------------
https://launchpad.net/ubuntu/+source/webkit2gtk/2.41.90-1ubuntu1

Build log excerpt
------------------

In file included from JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-15db4ad9-1.cpp:1:
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp: In member function
 ‘JSC::Wasm::B3IRGenerator::PartialResult JSC::Wasm::B3IRGenerator::addI32Popcnt(ExpressionType, JSC::B3::Variable*&)’:
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:5214:25:
 error: ‘supportsCountPopulation’ is not a member of ‘JSC::MacroAssembler’
 5214 |     if (MacroAssembler::supportsCountPopulation()) {
      |                         ^~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp: In lambda function:
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:5224:17:
 error: ‘class JSC::CCallHelpers’ has no member named ‘countPopulation32’
 5224 |             jit.countPopulation32(params[1].gpr(), params[0].gpr(), params.fpScratch(0));
      |                 ^~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp: In member function
 ‘JSC::Wasm::B3IRGenerator::PartialResult JSC::Wasm::B3IRGenerator::addI64Popcnt(ExpressionType, JSC::B3::Variable*&)’:
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:5241:25:
 error: ‘supportsCountPopulation’ is not a member of ‘JSC::MacroAssembler’
 5241 |     if (MacroAssembler::supportsCountPopulation()) {
      |                         ^~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp: In lambda function:
/<<PKGBUILDDIR>>/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:5251:17:
 error: ‘class JSC::CCallHelpers’ has no member named ‘countPopulation64’
 5251 |             jit.countPopulation64(params[1].gpr(), params[0].gpr(), params.fpScratch(0));
      |                 ^~~~~~~~~~~~~~~~~
Comment 1 Jeremy Bicha 2023-08-15 11:14:32 PDT
Debian is in the process of rebootstrapping their riscv64 architecture in preparation for it to become an official "release" architecture so the latest webkitgtk isn't yet buildable there.

But it had the same error in 2.41.4, 2.41.5, and 2.41.6
https://buildd.debian.org/status/logs.php?pkg=webkit2gtk&arch=riscv64
Comment 2 Alberto Garcia 2023-09-01 05:45:04 PDT
So ENABLE_FTL_DEFAULT is on in riscv64, that enables WEBASSEMBLY_B3JIT, which is what results in WasmB3IRGenerator.cpp being built.

However supportsCountPopulation() is not defined in Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h

I don't know what's the best way to proceed here, but I suppose that disabling FTL in riscv64 would work around the problem.