V8 optimized build fails on linking "mksnapshot" unless "thin lto" is disabled

11 views
Skip to first unread message

anna borges

unread,
May 21, 2024, 4:37:16 AMMay 21
to v8-dev
V8 Builds consistently fails on all recent versions when using the following settings. I have tried numerous versions and arguments but it seems to be impossible to build with thin_lto and official_build enabled at the same time. Is intentional by the v8 team? If not, what can be done to resolve it?

We have tried building on both linux x64 and mac M1 devices. They both have the same issue at hand.

is_official_build = true
use_thin_lto = true
is_component_build = false
is_debug = false
symbol_level = 0
target_cpu ="arm64"
v8_target_cpu = "arm64"
v8_enable_webassembly = false
chrome_pgo_phase = 0
optimize_for_size = true
v8_enable_i18n_support = false
v8_enable_pointer_compression = false
v8_static_library = true
v8_use_external_startup_data = false
v8_monolithic = true

ninja -C out.gn/arm64 v8_monolith


2105/2160] LINK ./mksnapshot
FAILED: mksnapshot mksnapshot.dSYM/Contents/Info.plist mksnapshot.dSYM/Contents/Resources/DWARF/mksnapshot
TOOL_VERSION=1715788274 ../../build/toolchain/apple/linker_driver.py -Wcrl,driver,../../third_party/llvm-build/Release+Asserts/bin/clang++ -Wcrl,strippath,/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -Wcrl,installnametoolpath,../../third_party/llvm-build/Release+Asserts/bin/llvm-install-name-tool  -Wcrl,dsym,. -Wcrl,dsymutilpath,../../tools/clang/dsymutil/bin/dsymutil  -Werror -fuse-ld=lld -Wl,-fatal_warnings -Wl,--icf=all -Wl,--color-diagnostics -Wl,-mllvm,-instcombine-lower-dbg-declare=0 -Wl,-mllvm,-split-threshold-for-reg-with-hint=0 -Wl,-cache_path_lto,thinlto-cache -Wl,--thinlto-cache-policy=cache_size=10\%:cache_size_bytes=40g:cache_size_files=100000 -flto=thin -Wl,--thinlto-jobs=all -Wl,-mllvm,-import-instr-limit=30 -Wcrl,object_path_lto -Wl,-mllvm,-disable-auto-upgrade-debug-info -fwhole-program-vtables -Wl,--strict-auto-link -Wl,--no-call-graph-profile-sort --target=arm64-apple-macos -Wl,-mllvm,-enable-machine-outliner=never -no-canonical-prefixes -nostdlib++ -isysroot ../../../../../../../Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacos-version-min=10.15 -Wl,--lto-O0 -Wl,-ObjC -Wcrl,strip,-x,-S -Wl,-dead_strip -Wl,-no_data_in_code_info -Wl,-no_function_starts -Wl,--icf=none -o "./mksnapshot" "@./mksnapshot.rsp"
ld64.lld: error: undefined symbol: vtable for v8::internal::SimpleStringResource<char, v8::String::ExternalOneByteStringResource>
> referenced by tmpay1bx_7e/380.arm64.lto.o:(symbol v8::internal::ExternalizeStringExtension::Externalize(v8::FunctionCallbackInfo<v8::Value> const&)+0x17c)
> >>> referenced by tmpay1bx_7e/380.arm64.lto.o:(symbol v8::internal::ExternalizeStringExtension::Externalize(v8::FunctionCallbackInfo<v8::Value> const&)+0x178)
> >>> referenced by tmpay1bx_7e/380.arm64.lto.o:(symbol v8::internal::SimpleStringResource<char, v8::String::ExternalOneByteStringResource>::~SimpleStringResource()+0x14)
> >>> referenced 3 more times
>
> ld64.lld: error: undefined symbol: vtable for v8::internal::SimpleStringResource<unsigned short, v8::String::ExternalStringResource>
> >>> referenced by tmpay1bx_7e/380.arm64.lto.o:(symbol v8::internal::ExternalizeStringExtension::Externalize(v8::FunctionCallbackInfo<v8::Value> const&)+0xa8)
> >>> referenced by tmpay1bx_7e/380.arm64.lto.o:(symbol v8::internal::ExternalizeStringExtension::Externalize(v8::FunctionCallbackInfo<v8::Value> const&)+0xa4)
> clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Reply all
Reply to author
Forward
0 new messages