Open
Description
Version
Platform
Linux gentoo 6.6.43-x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jul 30 12:29:53 PDT 2024 x86_64 AMD Ryzen 9 7900X 12-Core Processor AuthenticAMD GNU/Linux
Subsystem
ngtcp2
What steps will reproduce the bug?
Compile node, some configurations may avoid this issue somehow?
How often does it reproduce? Is there a required condition?
Always on affected systems.
What is the expected behavior? Why is that the expected behavior?
The compile should succeed without undefined references.
What do you see instead?
The build fails with an undefined reference to sf_parser_dict
when compiling node_mksnapshot
.
ninja: job failed: clang++ -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed --rtlib=libgcc --unwindlib=libgcc -pthread -rdynamic -Wl,-z,noexecstack -Wl,--whole-archive obj/tools/v8_gypfiles/libv8_snapshot.a -Wl,--no-whole-archive -Wl,-z,relro -Wl,-z,now -Wl,--whole-archive,obj/deps/openssl/libopenssl.a -Wl,--no-whole-archive -m64 -o node_mksnapshot -Wl,--start-group obj/src/node_mksnapshot.node_snapshot_stub.o obj/tools/snapshot/node_mksnapshot.node_mksnapshot.o obj/libnode.a obj/deps/histogram/libhistogram.a obj/deps/sqlite/libsqlite.a obj/deps/ada/libada.a obj/deps/nbytes/libnbytes.a obj/deps/simdjson/libsimdjson.a obj/deps/simdutf/libsimdutf.a obj/deps/ncrypto/libncrypto.a obj/tools/v8_gypfiles/libv8_snapshot.a obj/tools/v8_gypfiles/libv8_libplatform.a obj/deps/llhttp/libllhttp.a obj/deps/uvwasi/libuvwasi.a obj/deps/openssl/libopenssl.a obj/deps/ngtcp2/libnghttp3.a obj/tools/v8_gypfiles/libv8_base_without_compiler.a obj/tools/v8_gypfiles/libv8_libbase.a obj/tools/v8_gypfiles/libv8_abseil.a obj/tools/v8_gypfiles/libv8_zlib.a obj/tools/v8_gypfiles/libv8_compiler.a obj/tools/v8_gypfiles/libv8_turboshaft.a obj/tools/v8_gypfiles/libv8_initializers.a obj/tools/v8_gypfiles/libv8_initializers_slow.a obj/deps/ngtcp2/libngtcp2.a -lz -luv -lsimdjson -lbrotlidec -lbrotlienc -lcares -lnghttp2 -lngtcp2 -lsqlite3 -licui18n -licuuc -licudata -latomic -ldl -Wl,--end-group
ld.lld: error: undefined symbol: sf_parser_init
>>> referenced by nghttp3_http.c
>>> nghttp3/lib/nghttp3.nghttp3_http.o:(nghttp3_http_parse_priority) in archive obj/deps/ngtcp2/libnghttp3.a
ld.lld: error: undefined symbol: sf_parser_dict
>>> referenced by nghttp3_http.c
>>> nghttp3/lib/nghttp3.nghttp3_http.o:(nghttp3_http_parse_priority) in archive obj/deps/ngtcp2/libnghttp3.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: subcommands failed
Additional information
The missing function is in deps/ngtcp2/nghttp3/lib/sfparse.c
node/deps/ngtcp2/nghttp3/lib/sfparse.c
Lines 1023 to 1032 in d172da8
This file is commented in deps/ngtcp2/ngtcp2.gyp
.
Lines 83 to 84 in d172da8
The simple solution would be to uncomment it.