Bug 314199

Summary: [GTK] [2.53.2] x86: error: no class named 'LLIntOffsetsExtractor' in namespace 'JSC'
Product: WebKit Reporter: Alberto Garcia <berto>
Component: JavaScriptCoreAssignee: Alberto Garcia <berto>
Status: RESOLVED FIXED    
Severity: Normal CC: bugs-noreply, jmichaud, mcatanzaro, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Other   
Hardware: PC   
OS: Linux   
Attachments:
Description Flags
Partial patch
none
Patch none

Alberto Garcia
Reported 2026-05-06 07:56:09 PDT
This only happens in i386: FAILED: [code=1] Source/JavaScriptCore/CMakeFiles/LLIntOffsetsExtractor.dir/llint/LLIntOffsetsExtractor.cpp.o In file included from /tmp/webkit2gtk-2.53.2/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:28: /tmp/webkit2gtk-2.53.2/build-gtk3/JavaScriptCore/PrivateHeaders/JavaScriptCore/ArithProfile.h:262:23: error: no class named 'LLIntOffsetsExtractor' in namespace 'JSC' 262 | friend class JSC::LLIntOffsetsExtractor; | ~~~~~^ /tmp/webkit2gtk-2.53.2/build-gtk3/JavaScriptCore/PrivateHeaders/JavaScriptCore/ArithProfile.h:387:23: error: no class named 'LLIntOffsetsExtractor' in namespace 'JSC' 387 | friend class JSC::LLIntOffsetsExtractor; | ~~~~~^ In file included from /tmp/webkit2gtk-2.53.2/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:117: /tmp/webkit2gtk-2.53.2/build-gtk3/JavaScriptCore/DerivedSources/LLIntDesiredOffsets.h:708:42: error: 'm_bits' is a protected member of 'JSC::ArithProfile<unsigned short>' 708 | OFFLINE_ASM_OFFSETOF(BinaryArithProfile, m_bits), | ^ /tmp/webkit2gtk-2.53.2/build-gtk3/JavaScriptCore/PrivateHeaders/JavaScriptCore/ArithProfile.h:181:18: note: declared protected here 181 | BitfieldType m_bits { 0 }; // We take care to update m_bits only in a single operation. We don't ever store an inconsistent bit representation to it. | ^ In file included from /tmp/webkit2gtk-2.53.2/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:117: /tmp/webkit2gtk-2.53.2/build-gtk3/JavaScriptCore/DerivedSources/LLIntDesiredOffsets.h:1344:41: error: 'm_bits' is a protected member of 'JSC::ArithProfile<unsigned short>' 1344 | OFFLINE_ASM_OFFSETOF(UnaryArithProfile, m_bits), | ^ /tmp/webkit2gtk-2.53.2/build-gtk3/JavaScriptCore/PrivateHeaders/JavaScriptCore/ArithProfile.h:181:18: note: declared protected here 181 | BitfieldType m_bits { 0 }; // We take care to update m_bits only in a single operation. We don't ever store an inconsistent bit representation to it. | ^
Attachments
Partial patch (2.06 KB, patch)
2026-05-07 02:29 PDT, Alberto Garcia
no flags
Patch (5.64 KB, patch)
2026-05-07 05:58 PDT, Alberto Garcia
no flags
Michael Catanzaro
Comment 1 2026-05-06 17:33:48 PDT
Also on ppc64le! It's probably broken when JIT is disabled.
Michael Catanzaro
Comment 2 2026-05-06 17:34:46 PDT
(I'll look closer tomorrow. Don't let this discourage anybody else from beating me to it. Sometimes these JSC build failures are easy, and sometimes they are quite hard.)
Alberto Garcia
Comment 3 2026-05-07 01:50:34 PDT
For this particular error this change is enough, but there's more, I'll attach soon a patch with what I got: - friend class JSC::LLIntOffsetsExtractor; + friend class LLIntOffsetsExtractor;
Alberto Garcia
Comment 4 2026-05-07 02:29:07 PDT
Created attachment 479516 [details] Partial patch There are a few more build errors, with the attached patch I managed to get here: [2/24] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o FAILED: [code=1] Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o error: __OPTIMIZE__ predefined macro was enabled in precompiled file '/tmp/webkit2gtk-2.53.2/build-gtk3/Source/WebKit/CMakeFiles/WebKit.dir/cmake_pch.hxx.pch' but is currently disabled 1 error generated.
Alberto Garcia
Comment 5 2026-05-07 02:32:18 PDT
Notably the clang line ends like this: [...] -g1 -O2 -ffile-prefix-map=/tmp/webkit2gtk-2.53.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -DNDEBUG -DG_DISABLE_CAST_CHECKS -fno-strict-aliasing -fno-exceptions -fno-rtti -fcoroutines -ffunction-sections -fdata-sections -std=c++23 -fPIC -fvisibility=hidden -Wunsafe-buffer-usage -Wunsafe-buffer-usage-in-libc-call -fsafe-buffer-usage-suggestions -Wno-unused-parameter -I/usr/include/gio-unix-2.0 -I/usr/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/sysprof-6 -pthread -DHWY_SHARED_DEFINE -DAVIF_DLL -DEB_DLL -DRTC_BUILD=0 -DHAVE_HB_FEATURES_H -O0 -DRELEASE_WITHOUT_OPTIMIZATIONS=ON -Winvalid-pch -Xclang -include-pch -Xclang /tmp/webkit2gtk-2.53.2/build-gtk3/Source/WebKit/CMakeFiles/WebKit.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /tmp/webkit2gtk-2.53.2/build-gtk3/Source/WebKit/CMakeFiles/WebKit.dir/cmake_pch.hxx -MD -MT Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o -MF Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o.d -o Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o -c /tmp/webkit2gtk-2.53.2/build-gtk3/DerivedSources/WebKit/GeneratedSerializers.cpp That line includes both -O2 and -O0 -DRELEASE_WITHOUT_OPTIMIZATIONS=ON
Alberto Garcia
Comment 6 2026-05-07 02:46:25 PDT
So there are two things here: - After commit 310778@main , WTF_CPU_ARM is always set if FORCE_32BIT is set, regardless of the actual CPU. I use FORCE_32BIT in Debian because I'm compiling on an x86_64 host and WebKit thinks (or used to think) that I'm making a 64-bit build. - With 310466@main, if WTF_CPU_ARM is set we have set(GeneratedSerializers_COMPILE_OPTIONS -O0 -DRELEASE_WITHOUT_OPTIMIZATIONS=ON), resulting in the error message that I just pasted.
Alberto Garcia
Comment 7 2026-05-07 03:46:22 PDT
> set(GeneratedSerializers_COMPILE_OPTIONS -O0 -DRELEASE_WITHOUT_OPTIMIZATIONS=ON) I think these also need SKIP_PRECOMPILE_HEADERS ON, I'm currently testing a new build.
Alberto Garcia
Comment 8 2026-05-07 05:58:18 PDT
Created attachment 479517 [details] Patch Ok, with this I can build on i386 and armhf successfully. This was tested with 2.53.2, in main it needs some tweaks, and maybe we would want to divide into smaller patches.
Michael Catanzaro
Comment 9 2026-05-07 13:51:08 PDT
Good job! Thank you. This all looks good to land. I'd say you can decide whether you want to do it in one commit with explanations of each change, or as separate commits.
Alberto Garcia
Comment 10 2026-05-08 10:27:45 PDT
EWS
Comment 11 2026-05-08 11:49:37 PDT
Committed 312907@main (b1f134baa5c8): <https://commits.webkit.org/312907@main> Reviewed commits have been landed. Closing PR #64558 and removing active labels.
Radar WebKit Bug Importer
Comment 12 2026-05-08 11:50:16 PDT
Note You need to log in before you can comment on or make changes to this bug.