Bug 241002

Summary: [CMake][WPE] WebKitTestRunner shouldn't link object files of JavaScriptCore and WebCore
Product: WebKit Reporter: Fujii Hironori <Hironori.Fujii>
Component: CMakeAssignee: Fujii Hironori <Hironori.Fujii>
Status: REOPENED ---    
Severity: Normal CC: annulen, aperez, cgarcia, don.olmstead, ews-watchlist, gyuyoung.kim, keith_miller, mark.lam, mcatanzaro, msaboff, ryuan.choi, saam, sergio, tzagallo
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=240755
https://bugs.webkit.org/show_bug.cgi?id=249368
Bug Depends on: 242340    
Bug Blocks:    
Attachments:
Description Flags
WIP patch
none
Patch
none
Patch
none
Patch none

Description Fujii Hironori 2022-05-26 22:20:13 PDT
[CMake][WPE] WebKitTestRunner shouldn't link object files of JavaScriptCore and WebCore
Comment 1 Fujii Hironori 2022-05-26 22:26:30 PDT
In WPE builds, bin/WebKitTestRunner depends on a lot of object files of JSC and WebCore.

./Tools/Scripts/build-webkit --wpe --release |& tee build.log
ninja -C WebKitBuild/WPE/Release -t query bin/WebKitTestRunner

On the other hand, GTK doesn't.

./Tools/Scripts/build-webkit --gtk --release --generate-project-only
ninja -C WebKitBuild/GTK/Release -t query bin/WebKitTestRunner
Comment 2 Fujii Hironori 2022-05-26 23:14:15 PDT
Created attachment 459802 [details]
WIP patch

This WIP patch fixes the dependency by reverting the part of Bug 222860. But it can't compile.

FAILED: bin/WebKitTestRunner 
: && /usr/bin/c++ -fdiagnostics-color=always -Wextra -Wall -pipe -Wno-odr -Wno-stringop-overread -Wno-stringop-overflow -Wno-nonnull -Wno-array-bounds -Wno-expansion-to-defined -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-maybe-uninitialized -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wcast-align -Wno-tautological-compare  -fno-strict-aliasing -fno-exceptions -fno-rtti -O3 -DNDEBUG -fuse-ld=lld -Wl,--disable-new-dtags Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/CyclicRedundancyCheck.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/GeolocationProviderMock.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/Options.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/PixelDumpSupport.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/TestController.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/TestInvocation.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/TestOptions.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/UIScriptControllerCommon.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/WebNotificationProvider.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/WorkQueueManager.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/cairo/TestInvocationCairo.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/libwpe/EventSenderProxyLibWPE.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/libwpe/PlatformWebViewLibWPE.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/wpe/TestControllerWPE.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/wpe/UIScriptControllerWPE.cpp.o Tools/WebKitTestRunner/CMakeFiles/WebKitTestRunner.dir/wpe/main.cpp.o -o bin/WebKitTestRunner  -Wl,-rpath,/app/webkit/WebKitBuild/Release/lib  Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/./llint/LowLevelInterpreter.cpp.o  lib/libTestRunnerShared.a  /usr/lib/x86_64-linux-gnu/libglib-2.0.so  -lxkbcommon  /usr/lib/x86_64-linux-gnu/libWPEBackend-fdo-1.0.so  /usr/lib/x86_64-linux-gnu/libcairo.so  lib/libWebCoreTestSupport.a  lib/libPAL.a  lib/libWPEWebKit-1.1.so.0.2.0  /usr/lib/x86_64-linux-gnu/libseccomp.so  -latomic  /usr/lib/x86_64-linux-gnu/libicudata.so  /usr/lib/x86_64-linux-gnu/libicui18n.so  /usr/lib/x86_64-linux-gnu/libicuuc.so  -lpthread  /usr/lib/x86_64-linux-gnu/libsystemd.so  /usr/lib/x86_64-linux-gnu/libxml2.so  /usr/lib/x86_64-linux-gnu/libsqlite3.so  /usr/lib/x86_64-linux-gnu/libxslt.so  lib/libANGLE.a  -ldl  /usr/lib/x86_64-linux-gnu/liblcms2.so  /usr/lib/x86_64-linux-gnu/libwoff2dec.so  lib/libxdgmime.a  /usr/lib/x86_64-linux-gnu/libfontconfig.so  /usr/lib/x86_64-linux-gnu/libfreetype.so  /usr/lib/x86_64-linux-gnu/libharfbuzz.so  /usr/lib/x86_64-linux-gnu/libharfbuzz-icu.so  /usr/lib/x86_64-linux-gnu/libgcrypt.so  /usr/lib/x86_64-linux-gnu/libgpg-error.so  /usr/lib/x86_64-linux-gnu/libgstallocators-1.0.so  /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so  /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so  /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so  /usr/lib/x86_64-linux-gnu/libgstpbutils-1.0.so  /usr/lib/x86_64-linux-gnu/libgstaudio-1.0.so  /usr/lib/x86_64-linux-gnu/libgsttranscoder-1.0.so  /usr/lib/x86_64-linux-gnu/libgsttag-1.0.so  /usr/lib/x86_64-linux-gnu/libgstvideo-1.0.so  /usr/lib/x86_64-linux-gnu/libgstgl-1.0.so  /usr/lib/x86_64-linux-gnu/libgstrtp-1.0.so  /usr/lib/x86_64-linux-gnu/libgstsdp-1.0.so  /usr/lib/x86_64-linux-gnu/libgstwebrtc-1.0.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  /usr/lib/x86_64-linux-gnu/libgstfft-1.0.so  /usr/lib/x86_64-linux-gnu/libocdm.so  /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so  /usr/lib/x86_64-linux-gnu/libgio-2.0.so  /usr/lib/x86_64-linux-gnu/libgobject-2.0.so  /usr/lib/x86_64-linux-gnu/libjpeg.so  /usr/lib/x86_64-linux-gnu/libpng.so  /usr/lib/x86_64-linux-gnu/libz.so  /usr/lib/x86_64-linux-gnu/libopenjp2.so  /usr/lib/x86_64-linux-gnu/libwebpdemux.so  /usr/lib/x86_64-linux-gnu/libwebp.so  /usr/lib/x86_64-linux-gnu/libjxl.so  /usr/lib/x86_64-linux-gnu/libavif.so  /usr/lib/x86_64-linux-gnu/libsoup-3.0.so  /usr/lib/x86_64-linux-gnu/libtasn1.so  /usr/lib/x86_64-linux-gnu/libopenxr_loader.so  /usr/lib/x86_64-linux-gnu/libgbm.so  /usr/lib/x86_64-linux-gnu/libdrm.so  lib/libWPEToolingBackends.a  -lxkbcommon  /usr/lib/x86_64-linux-gnu/libcairo.so  /usr/lib/x86_64-linux-gnu/libepoxy.so  /usr/lib/x86_64-linux-gnu/libwpe-1.0.so  /usr/lib/x86_64-linux-gnu/libatk-1.0.so  /usr/lib/x86_64-linux-gnu/libglib-2.0.so  -lwayland-server  -lwayland-egl  -lwayland-client  /usr/lib/x86_64-linux-gnu/libWPEBackend-fdo-1.0.so  /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so && :
ld.lld: error: undefined symbol: llint_throw_stack_overflow_error
>>> referenced by LowLevelInterpreter.cpp
>>>               Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/./llint/LowLevelInterpreter.cpp.o:(vmEntryToJavaScript)
>>> referenced by LowLevelInterpreter.cpp
>>>               Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/./llint/LowLevelInterpreter.cpp.o:(vmEntryToNative)
Comment 3 Fujii Hironori 2022-05-29 22:37:43 PDT
Created attachment 459849 [details]
Patch
Comment 4 Fujii Hironori 2022-05-29 22:39:41 PDT
Created attachment 459850 [details]
Patch
Comment 5 Fujii Hironori 2022-05-30 01:06:54 PDT
Created attachment 459852 [details]
Patch
Comment 6 EWS 2022-05-30 06:32:44 PDT
Found 3 new test failures: webgl/2.0.0/conformance/textures/image_bitmap_from_image_bitmap/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html, webgl/2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rg16f-rg-half_float.html, webgl/2.0.0/conformance2/textures/image_bitmap_from_image_bitmap/tex-2d-rgb32f-rgb-float.html
Comment 7 EWS 2022-05-30 15:03:42 PDT
Committed r295034 (251129@main): <https://commits.webkit.org/251129@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 459852 [details].
Comment 8 Michael Catanzaro 2022-07-05 06:50:32 PDT
This broke builds with LTO enabled.

I will try to get the linker error message to paste here.
Comment 9 Michael Catanzaro 2022-07-05 09:17:53 PDT
/usr/bin/ld: /tmp/cc7qCcvm.ltrans29.ltrans.o: in function `WTF::SharedTaskFunctor<void (JSC::LinkBuffer&), JSC::AccessCase::generateImpl(JSC::AccessGenerationState&)::{lambda(JSC::LinkBuffer&)#3}>::run(JSC::LinkBuffer&)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/assembler/X86Assembler.h:4055: undefined reference to `vmEntryCustomSetter'
/usr/bin/ld: /builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/assembler/X86Assembler.h:4055: undefined reference to `vmEntryCustomGetter'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans29.ltrans.o: in function `WTF::SharedTaskFunctor<void (JSC::LinkBuffer&), JSC::AccessCase::generateImpl(JSC::AccessGenerationState&)::{lambda(JSC::LinkBuffer&)#3}>::run(JSC::LinkBuffer&)':
/usr/include/bits/string_fortified.h:29: undefined reference to `vmEntryCustomGetter'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `vmEntryCustomSetter'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans50.ltrans.o: in function `JSC::DFG::SpeculativeJIT::compileCallDOMGetter(JSC::DFG::Node*)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/dfg/DFGJITCompiler.h:71: undefined reference to `vmEntryCustomGetter'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans61.ltrans.o: in function `JSC::FTL::(anonymous namespace)::LowerDFGToB3::compileCallDOMGetter() [clone .lto_priv.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15719: undefined reference to `vmEntryCustomGetter'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans71.ltrans.o: in function `JSC::CallFrame::callerFrame(JSC::EntryFrame*&) const':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/CallFrame.cpp:189: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans71.ltrans.o: in function `JSC::CallFrame::convertToStackOverflowFrame(JSC::VM&, JSC::CodeBlock*)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/CallFrame.cpp:350: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans71.ltrans.o: in function `JSC::isFromJSCode(void*)':
/usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeStart'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeEnd'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans71.ltrans.o: in function `JSC::AssemblyHelpers::restoreCalleeSavesFromVMEntryFrameCalleeSavesBufferImpl(JSC::X86Registers::RegisterID, JSC::RegisterSet const&)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/EntryFrame.h:38: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans71.ltrans.o: in function `JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBufferImpl(JSC::X86Registers::RegisterID)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/EntryFrame.h:38: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans71.ltrans.o: in function `JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer(JSC::EntryFrame*&, JSC::TempRegisterSet const&)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/EntryFrame.h:38: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans74.ltrans.o: in function `operationOptimize':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/dfg/DFGOSREntry.cpp:302: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans74.ltrans.o:/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/dfg/DFGOSREntry.cpp:302: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans80.ltrans.o: in function `WTF::SharedTaskFunctor<void (JSC::LinkBuffer&), JSC::nativeForGenerator(JSC::VM&, JSC::ThunkFunctionType, JSC::CodeSpecializationKind, JSC::ThunkEntryType)::{lambda(JSC::LinkBuffer&)#2}>::run(JSC::LinkBuffer&) [clone .lto_priv.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/assembler/X86Assembler.h:4055: undefined reference to `vmEntryHostFunction'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans80.ltrans.o: in function `WTF::SharedTaskFunctor<void (JSC::LinkBuffer&), JSC::nativeForGenerator(JSC::VM&, JSC::ThunkFunctionType, JSC::CodeSpecializationKind, JSC::ThunkEntryType)::{lambda(JSC::LinkBuffer&)#2}>::run(JSC::LinkBuffer&) [clone .lto_priv.0]':
/usr/include/bits/string_fortified.h:29: undefined reference to `vmEntryHostFunction'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans80.ltrans.o: in function `WTF::SharedTaskFunctor<void (JSC::LinkBuffer&), JSC::nativeForGenerator(JSC::VM&, JSC::ThunkFunctionType, JSC::CodeSpecializationKind, JSC::ThunkEntryType)::{lambda(JSC::LinkBuffer&)#1}>::run(JSC::LinkBuffer&) [clone .lto_priv.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/assembler/X86Assembler.h:4055: undefined reference to `vmEntryHostFunction'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans80.ltrans.o: in function `WTF::SharedTaskFunctor<void (JSC::LinkBuffer&), JSC::nativeForGenerator(JSC::VM&, JSC::ThunkFunctionType, JSC::CodeSpecializationKind, JSC::ThunkEntryType)::{lambda(JSC::LinkBuffer&)#1}>::run(JSC::LinkBuffer&) [clone .lto_priv.0]':
/usr/include/bits/string_fortified.h:29: undefined reference to `vmEntryHostFunction'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans85.ltrans.o: in function `JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/Interpreter.cpp:1022: undefined reference to `vmEntryToNative'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans85.ltrans.o: in function `JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans86.ltrans.o: in function `JSC::construct(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&, JSC::ArgList const&, JSC::JSValue)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/Interpreter.cpp:1101: undefined reference to `vmEntryToNative'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans86.ltrans.o: in function `JSC::construct(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&, JSC::ArgList const&, JSC::JSValue)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans87.ltrans.o: in function `std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<JSC::initialize()::{lambda()#1}>(std::once_flag&, JSC::initialize()::{lambda()#1}&&)::{lambda()#1}>(JSC::initialize()::{lambda()#1}&)::{lambda()#1}::_FUN()':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/llint/LLIntData.cpp:78: undefined reference to `llint_entry'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans87.ltrans.o:/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/llint/LLIntData.cpp:81: undefined reference to `wasm_entry'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans92.ltrans.o: in function `JSC::JSModuleRecord::evaluate(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValue)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans97.ltrans.o: in function `operationStringProtoFuncReplaceRegExpEmptyStr':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans98.ltrans.o: in function `operationStringProtoFuncReplaceRegExpString':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans98.ltrans.o: in function `JSC::stringProtoFuncReplaceUsingRegExp(JSC::JSGlobalObject*, JSC::CallFrame*) [clone .lto_priv.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans98.ltrans.o: in function `JSC::stringProtoFuncReplaceUsingStringSearch(JSC::JSGlobalObject*, JSC::CallFrame*) [clone .lto_priv.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans98.ltrans.o:/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: more undefined references to `vmEntryToJavaScript' follow
/usr/bin/ld: /tmp/cc7qCcvm.ltrans99.ltrans.o: in function `JSC::sanitizeStackForVM(JSC::VM&)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/runtime/VM.cpp:1302: undefined reference to `sanitizeStackForVMImpl'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans100.ltrans.o: in function `WTF::ScopedLambdaRefFunctor<void (WTF::PlatformRegisters&), JSC::VMTraps::SignalSender::work()::{lambda(WTF::PlatformRegisters&)#1}>::implFunction(void*, WTF::PlatformRegisters&)':
/usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeStart'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeEnd'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans104.ltrans.o: in function `WTF::Detail::CallableWrapper<JSC::Wasm::prepareFastMemory()::{lambda()#1}::operator()() const::{lambda(WTF::Signal, WTF::SigInfo&, WTF::PlatformRegisters&)#1}, WTF::SignalAction, WTF::Signal, WTF::SigInfo&, WTF::PlatformRegisters&>::call(WTF::Signal, WTF::SigInfo&, WTF::PlatformRegisters&)':
/usr/include/bits/string_fortified.h:29: undefined reference to `wasmLLIntPCRangeStart'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `wasmLLIntPCRangeEnd'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `wasmLLIntPCRangeStart'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `wasmLLIntPCRangeEnd'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans107.ltrans.o: in function `JSC::callWebAssemblyFunction(JSC::JSGlobalObject*, JSC::CallFrame*)':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/llint/LLIntThunks.h:64: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans115.ltrans.o: in function `JSC::SamplingProfiler::takeSample(WTF::Seconds&) [clone .part.0] [clone .constprop.0]':
/usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeStart'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeEnd'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeStart'
/usr/bin/ld: /usr/include/bits/string_fortified.h:29: undefined reference to `llintPCRangeEnd'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans115.ltrans.o: in function `JSC::SamplingProfiler::takeSample(WTF::Seconds&) [clone .part.0] [clone .constprop.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/CallFrame.cpp:199: undefined reference to `vmEntryRecord'
/usr/bin/ld: /builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/CallFrame.cpp:199: undefined reference to `vmEntryRecord'
/usr/bin/ld: /builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/CallFrame.cpp:199: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans115.ltrans.o: in function `JSC::Interpreter::executeProgram(JSC::SourceCode const&, JSC::JSGlobalObject*, JSC::JSObject*) [clone .constprop.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans115.ltrans.o: in function `JSC::Interpreter::unwind(JSC::VM&, JSC::CallFrame*&, JSC::Exception*) [clone .constprop.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/Interpreter.cpp:645: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans115.ltrans.o:/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/interpreter/Interpreter.cpp:645: undefined reference to `vmEntryRecord'
/usr/bin/ld: /tmp/cc7qCcvm.ltrans121.ltrans.o: in function `JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::JSGlobalObject*, JSC::JSValue, JSC::JSScope*) [clone .constprop.0]':
/builddir/build/BUILD/webkitgtk-2.36.4/Source/JavaScriptCore/jit/JITCodeInlines.h:42: undefined reference to `vmEntryToJavaScript'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Comment 10 Fujii Hironori 2022-07-06 00:23:11 PDT
I haven't tried LTO build. How did you build? Which port? 
Can I use build-webkit for LTO build, like "build-webkit --gtk --release --lto-mode=full"?
Comment 11 Adrian Perez 2022-07-06 00:54:17 PDT
(In reply to Fujii Hironori from comment #10)
> I haven't tried LTO build. How did you build? Which port? 
> Can I use build-webkit for LTO build, like "build-webkit --gtk --release
> --lto-mode=full"?

AFAIR the “--lto-mode=” flag does not work well with the CMake ports.
This is the easiest way to reproduce:

  CFLAGS=-flto CXXFLAGS=-flto LDFLAGS=-flto \
      build-webkit --gtk [--release | --debug]
Comment 12 Fujii Hironori 2022-07-06 10:54:40 PDT
Thank you. Unfortunately, My PC doesn't have enough RAM to finish the LTO linking. 😥
Comment 13 Michael Catanzaro 2022-07-06 12:48:15 PDT
It looks like something is wrong specifically with inline assembler after this change? The functions generated from inline assembler are missing at link time?

(In reply to Fujii Hironori from comment #12)
> Thank you. Unfortunately, My PC doesn't have enough RAM to finish the LTO
> linking. 😥

Would you be interested in investigating further if we find a way to get you remote access to beefier hardware?
Comment 14 Fujii Hironori 2022-07-06 14:16:25 PDT
This issue isn't urgent. I'll revisit it after buying a new machine.
Comment 15 Fujii Hironori 2022-12-15 17:21:26 PST
See bug#249368 for another LTO problem.