llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.94k stars 11.53k forks source link

`undefined reference due to --no-allow-shlib-undefined: operator new[](unsigned long)` in the ASan build #69684

Open petrhosek opened 11 months ago

petrhosek commented 11 months ago

We're seeing the following link error in the ASan build after #69295:

"../../prebuilt/third_party/clang/linux-x64/bin/lld" "-flavor" "gnu" "--build-id" "--hash-style=gnu" "-z" "max-page-size=4096" "-z" "now" "-z" "rodynamic" "-z" "separate-loadable-segments" "--pack-dyn-relocs=relr" "x64-asan-ubsan/gen/zircon/public/sysroot/cpp/lib/Scrt1.o" "/tmp/rustc9Y9zpL/symbols.o" "x64-asan-ubsan/exe.unstripped/openthread_lib_test.openthread_lib_test.7b20e9115c9ce23b-cgu.0.rcgu.o" "--as-needed" "-L" "x64-asan-ubsan/gen/zircon/public/sysroot/cpp/lib" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics_rust" "-L" "x64-asan-ubsan/obj/src/lib/fidl/rust/fidl" "-L" "x64-asan-ubsan/obj/src/lib/fuchsia-async" "-L" "host_x64/obj/src/lib/fuchsia-async-macro" "-L" "x64-asan-ubsan/obj/third_party/rust_crates" "-L" "host_x64/obj/third_party/rust_crates" "-L" "x64-asan-ubsan/obj/src/lib/zircon/rust" "-L" "x64-asan-ubsan/obj/zircon/vdso/zx_zither.rust_syscall" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.mem/fuchsia.mem_rust" "-L" "x64-asan-ubsan/obj/zircon/vdso/zx/zx_rust" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.lowpan.thread/fuchsia.lowpan.thread_rust" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.lowpan/fuchsia.lowpan_rust" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.net/fuchsia.net_rust" "-L" "x64-asan-ubsan/obj/src/connectivity/lowpan/lib/openthread_sys" "-L" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/hlcpp/fuchsia/diagnostics/stream/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/c" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/hlcpp/fuchsia/diagnostics/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/c" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/hlcpp/fuchsia/mem/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/c" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/zircon/vdso/zx/zx/c" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/hlcpp/fuchsia/logger/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/c" "-L" "x64-asan-ubsan/obj/sdk/lib/syslog/structured_backend/cpp" "-L" "user.libc_x64-asan-ubsan/obj/zircon/system/ulib/c" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/cli" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/core" "-L" "x64-asan-ubsan/obj/third_party/openthread/third_party/mbedtls" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/ncp" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/lib/spinel" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/lib/platform" "-L" "x64-asan-ubsan-shared/link_stub" "-L" "x64-asan-ubsan/obj/sdk/lib/fit-promise" "-L" "x64-asan-ubsan/obj/sdk/lib/fit" "-L" "x64-asan-ubsan/obj/sdk/lib/stdcompat" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/zx" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl_base" "-L" "x64-asan-ubsan/obj/sdk/lib/utf-utils" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/async" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/async-loop" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/sync" "-L" "x64-asan-ubsan/obj/build/config/sanitizers" "-L" "gen/src/zircon/lib/zircon/zircon.x86_64" "-L" "gen/zircon/system/ulib/c/c.x86_64" "-L" "../../build/config/zircon/libc-dummy" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-Bstatic" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.net/fuchsia.net_rust/libfidl_fuchsia_net.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libchrono-5f4599162f3bf073.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libserde-703d0860e891586d.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libtime-f3381b83c7164a8b.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libhex-67ad4b3000c63154.rlib" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-Bdynamic" "-ltest-6faa8927fb89bce3" "-Bstatic" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libanyhow-99a34437cafed13a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libassert_matches-568351bf14d9d02.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.lowpan.thread/fuchsia.lowpan.thread_rust/libfidl_fuchsia_lowpan_thread.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics_rust/libfidl_fuchsia_diagnostics.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.mem/fuchsia.mem_rust/libfidl_fuchsia_mem.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/fidl/rust/fidl/libfidl.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/fuchsia-async/libfuchsia_async.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libsocket2-eb52e051ac66cd02.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libthiserror-dcdc66d3bbb690d3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libtracing-5bf51f3eb026ae27.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libtracing_core-81bafb5c25495bc2.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libonce_cell-283c53dba5ff9f5a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libparking_lot_core-a7bb8576751f5ea9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libsmallvec-2ac5f197ec7958a6.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librustc_hash-d18fd5c05c7b0ca4.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam-8cfd474d0e0be27.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_channel-4f2cca7fb0f4b481.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_deque-6f0af594d373cabc.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_queue-14b2ad0739ad313f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_epoch-5332a575293037f6.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libmemoffset-4f8761547d1c3d9f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/liblazy_static-cdf593bd3fb3d68f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_utils-d51f793976478e1e.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/zircon/rust/libfuchsia_zircon.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/zircon/vdso/zx_zither.rust_syscall/libfuchsia_zircon_sys.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libparking_lot-6721767503fecbee.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libparking_lot_core-32ade8d5cf038200.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcfg_if-de3fee777d28505f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libsmallvec-17cff5ddbac2d3b4.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libmaybe_uninit-fb89acfa5fdd5d93.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/liblock_api-12f3d9bb96757377.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libscopeguard-6ef302a7f864fbb3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures-e6516813fcd2ea59.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_executor-5454b73f7d5eee50.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_util-fde13ada8c10d5f9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libmemchr-7c7563bbdbb1ab9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_io-13ea868f3a902971.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libslab-bf82e5c05d7edc0d.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_channel-bbc95929c179c5c3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libpin_project_lite-f819d22e1946203f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_sink-3c76929821bf0d.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_task-176189a99c38d371.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libpin_utils-f6d0191654b565d6.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_core-328f95cc9ee7790f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/zircon/rust/libfuchsia_zircon_status.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/zircon/rust/libfuchsia_zircon_types.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libzerocopy-ff9dd6de05140af4.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libbyteorder-eb0270683cf7e0fd.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libstatic_assertions-5fff9c36214c34b7.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libbitflags-d696f344bc6327ae.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum-bbbc48fd5d807e0a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_iter-a257411d06b07f30.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_rational-dcc88f7010610c33.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_complex-2c955e71eec8ce6e.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_bigint-362cd991252bf6d3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librand-3acdc77c21a3a508.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librand_chacha-fcec8b118d26a7b7.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libppv_lite86-e73b5df0490cc9a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librand_core-c72139d238b8db6b.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libgetrandom-a3378427d5ef87b9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/liblibc-219d623e972ed388.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcfg_if-5f200286e6ae9b7a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_integer-2a84ff8675296986.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_traits-eace97eec9f18ef0.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/connectivity/lowpan/lib/openthread_sys/libopenthread_sys.rlib" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-Bdynamic" "-lstd-20989b12d5b820fd" "-Bstatic" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib/libcompiler_builtins-79a8aefee474261f.rlib" "-Bdynamic" "-lfdio" "-lzircon" "-lzircon" "-lc" "-lfdio" "-lzircon" "-lfdio" "-lc" "-lfdio" "--dynamic-linker=ld.so.1" "--eh-frame-hdr" "-z" "noexecstack" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-o" "x64-asan-ubsan/exe.unstripped/openthread_lib_test" "--gc-sections" "-pie" "--Map=x64-asan-ubsan/exe.unstripped/openthread_lib_test.map" "--sysroot=x64-asan-ubsan/gen/zircon/public/sysroot/cpp" "-L../../prebuilt/third_party/clang/linux-x64/bin/../lib/x86_64-unknown-fuchsia" "-L../../prebuilt/third_party/clang/linux-x64/lib/clang/18/lib/x86_64-unknown-fuchsia" "--pack-dyn-relocs=relr" "-dynamic-linker=ld.so.1" "--icf=all" "-zrel" "--compress-debug-sections=zstd" "-zstack-size=0x200000" "../../prebuilt/third_party/clang/linux-x64/lib/clang/18/lib/x86_64-unknown-fuchsia/libclang_rt.asan.so" "-dynamic-linker=asan/ld.so.1" "-dynamic-linker=asan-ubsan/ld.so.1" "--push-state" "-Bstatic" "-lc++" "-Bdynamic" "-lm" "--pop-state" "-l:libunwind.a" "-Bdynamic" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/backend_fuchsia_lib.fx_log_api.cc.o" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/backend_fuchsia_lib.logging_backend_fuchsia.cc.o" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/cpp.log_settings.cc.o" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/cpp.macros.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/hlcpp/fuchsia/diagnostics/stream/cpp/fuchsia.diagnostics.stream_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/c/fuchsia.diagnostics.stream_tables.fuchsia.diagnostics.stream.fidl.tables.c.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/hlcpp/fuchsia/diagnostics/cpp/fuchsia.diagnostics_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/c/fuchsia.diagnostics_tables.fuchsia.diagnostics.fidl.tables.c.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/hlcpp/fuchsia/mem/cpp/fuchsia.mem_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/c/fuchsia.mem_tables.fuchsia.mem.fidl.tables.c.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/zircon/vdso/zx/zx/c/zx_tables.zx.fidl.tables.c.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.message_handler.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.message_reader.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.pending_response.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.proxy.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.proxy_controller.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.stub.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.stub_controller.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.unknown_interactions_table.c.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.weak_stub_controller.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp.unknown_interactions_hlcpp.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp_sync.logging.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp_sync.message_sender.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp_sync.synchronous_proxy.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.clone.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.decoder.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.encoder.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.message.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.message_buffer.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/hlcpp/fuchsia/logger/cpp/fuchsia.logger_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/c/fuchsia.logger_tables.fuchsia.logger.fidl.tables.c.o" "x64-asan-ubsan/obj/sdk/lib/syslog/structured_backend/cpp/structured_backend.fuchsia_syslog.cc.o" "user.libc_x64-asan-ubsan/obj/zircon/system/ulib/c/crt1.Scrt1.cc.o" "x64-asan-ubsan/obj/third_party/openthread/src/cli/libopenthread-cli-ftd.a" "x64-asan-ubsan/obj/third_party/openthread/src/core/libopenthread-ftd.a" "x64-asan-ubsan/obj/third_party/openthread/third_party/mbedtls/libmbedtls.a" "x64-asan-ubsan/obj/third_party/openthread/src/ncp/libopenthread-ncp-ftd.a" "x64-asan-ubsan/obj/third_party/openthread/src/lib/spinel/libopenthread-spinel-ncp.a" "x64-asan-ubsan/obj/third_party/openthread/src/lib/platform/libopenthread-platform.a" "x64-asan-ubsan-shared/link_stub/libbackend_fuchsia_globals.so" "x64-asan-ubsan/obj/sdk/lib/fit-promise/libfit-promise.a" "x64-asan-ubsan/obj/sdk/lib/fit/libfit.a" "x64-asan-ubsan/obj/sdk/lib/stdcompat/libstdcompat.a" "x64-asan-ubsan/obj/zircon/system/ulib/zx/libzx.a" "x64-asan-ubsan/obj/sdk/lib/fidl_base/libfidl_base.a" "x64-asan-ubsan/obj/sdk/lib/utf-utils/libutf-utils.a" "x64-asan-ubsan/obj/sdk/lib/fidl/libfidl.a" "x64-asan-ubsan/obj/zircon/system/ulib/async/libasync.a" "x64-asan-ubsan-shared/link_stub/libasync-default.so" "x64-asan-ubsan-shared/link_stub/libfdio.so" "x64-asan-ubsan/obj/zircon/system/ulib/async/libasync-cpp.a" "x64-asan-ubsan/obj/zircon/system/ulib/async-loop/libasync-loop-cpp.a" "x64-asan-ubsan/obj/zircon/system/ulib/async-loop/libasync-loop.a" "x64-asan-ubsan/obj/zircon/system/ulib/sync/libsync.a" "x64-asan-ubsan/obj/build/config/sanitizers/asan_default_options.a" "x64-asan-ubsan/obj/build/config/sanitizers/lsan_default_options.a" "x64-asan-ubsan/obj/build/config/sanitizers/ubsan_default_options.a" "gen/src/zircon/lib/zircon/zircon.x86_64/libzircon.so" "x64-asan-ubsan/obj/build/config/sanitizers/asan_default_options.sanitizer_default_options.c.o" "x64-asan-ubsan/obj/build/config/sanitizers/lsan_default_options.sanitizer_default_options.c.o" "x64-asan-ubsan/obj/build/config/sanitizers/ubsan_default_options.sanitizer_default_options.c.o" "gen/zircon/system/ulib/c/c.x86_64/libc.so"
  = note: lld: error: undefined reference due to --no-allow-shlib-undefined: operator new[](unsigned long)
          >>> referenced by x64-asan-ubsan-shared/link_stub/libfdio.so

I have uploaded the reproducer to https://storage.googleapis.com/fuchsia-build/undef-new-reference.tar.xz.

llvmbot commented 11 months ago

@llvm/issue-subscribers-lld-elf

Author: Petr Hosek (petrhosek)

We're seeing the following link error in the ASan build after #69295: ``` "../../prebuilt/third_party/clang/linux-x64/bin/lld" "-flavor" "gnu" "--build-id" "--hash-style=gnu" "-z" "max-page-size=4096" "-z" "now" "-z" "rodynamic" "-z" "separate-loadable-segments" "--pack-dyn-relocs=relr" "x64-asan-ubsan/gen/zircon/public/sysroot/cpp/lib/Scrt1.o" "/tmp/rustc9Y9zpL/symbols.o" "x64-asan-ubsan/exe.unstripped/openthread_lib_test.openthread_lib_test.7b20e9115c9ce23b-cgu.0.rcgu.o" "--as-needed" "-L" "x64-asan-ubsan/gen/zircon/public/sysroot/cpp/lib" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics_rust" "-L" "x64-asan-ubsan/obj/src/lib/fidl/rust/fidl" "-L" "x64-asan-ubsan/obj/src/lib/fuchsia-async" "-L" "host_x64/obj/src/lib/fuchsia-async-macro" "-L" "x64-asan-ubsan/obj/third_party/rust_crates" "-L" "host_x64/obj/third_party/rust_crates" "-L" "x64-asan-ubsan/obj/src/lib/zircon/rust" "-L" "x64-asan-ubsan/obj/zircon/vdso/zx_zither.rust_syscall" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.mem/fuchsia.mem_rust" "-L" "x64-asan-ubsan/obj/zircon/vdso/zx/zx_rust" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.lowpan.thread/fuchsia.lowpan.thread_rust" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.lowpan/fuchsia.lowpan_rust" "-L" "x64-asan-ubsan/obj/sdk/fidl/fuchsia.net/fuchsia.net_rust" "-L" "x64-asan-ubsan/obj/src/connectivity/lowpan/lib/openthread_sys" "-L" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/hlcpp/fuchsia/diagnostics/stream/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/c" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/hlcpp/fuchsia/diagnostics/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/c" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/hlcpp/fuchsia/mem/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/c" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/zircon/vdso/zx/zx/c" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/hlcpp/fuchsia/logger/cpp" "-L" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/c" "-L" "x64-asan-ubsan/obj/sdk/lib/syslog/structured_backend/cpp" "-L" "user.libc_x64-asan-ubsan/obj/zircon/system/ulib/c" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/cli" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/core" "-L" "x64-asan-ubsan/obj/third_party/openthread/third_party/mbedtls" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/ncp" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/lib/spinel" "-L" "x64-asan-ubsan/obj/third_party/openthread/src/lib/platform" "-L" "x64-asan-ubsan-shared/link_stub" "-L" "x64-asan-ubsan/obj/sdk/lib/fit-promise" "-L" "x64-asan-ubsan/obj/sdk/lib/fit" "-L" "x64-asan-ubsan/obj/sdk/lib/stdcompat" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/zx" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl_base" "-L" "x64-asan-ubsan/obj/sdk/lib/utf-utils" "-L" "x64-asan-ubsan/obj/sdk/lib/fidl" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/async" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/async-loop" "-L" "x64-asan-ubsan/obj/zircon/system/ulib/sync" "-L" "x64-asan-ubsan/obj/build/config/sanitizers" "-L" "gen/src/zircon/lib/zircon/zircon.x86_64" "-L" "gen/zircon/system/ulib/c/c.x86_64" "-L" "../../build/config/zircon/libc-dummy" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-Bstatic" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.net/fuchsia.net_rust/libfidl_fuchsia_net.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libchrono-5f4599162f3bf073.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libserde-703d0860e891586d.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libtime-f3381b83c7164a8b.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libhex-67ad4b3000c63154.rlib" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-Bdynamic" "-ltest-6faa8927fb89bce3" "-Bstatic" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libanyhow-99a34437cafed13a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libassert_matches-568351bf14d9d02.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.lowpan.thread/fuchsia.lowpan.thread_rust/libfidl_fuchsia_lowpan_thread.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics_rust/libfidl_fuchsia_diagnostics.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/sdk/fidl/fuchsia.mem/fuchsia.mem_rust/libfidl_fuchsia_mem.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/fidl/rust/fidl/libfidl.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/fuchsia-async/libfuchsia_async.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libsocket2-eb52e051ac66cd02.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libthiserror-dcdc66d3bbb690d3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libtracing-5bf51f3eb026ae27.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libtracing_core-81bafb5c25495bc2.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libonce_cell-283c53dba5ff9f5a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libparking_lot_core-a7bb8576751f5ea9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libsmallvec-2ac5f197ec7958a6.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librustc_hash-d18fd5c05c7b0ca4.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam-8cfd474d0e0be27.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_channel-4f2cca7fb0f4b481.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_deque-6f0af594d373cabc.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_queue-14b2ad0739ad313f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_epoch-5332a575293037f6.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libmemoffset-4f8761547d1c3d9f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/liblazy_static-cdf593bd3fb3d68f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcrossbeam_utils-d51f793976478e1e.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/zircon/rust/libfuchsia_zircon.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/zircon/vdso/zx_zither.rust_syscall/libfuchsia_zircon_sys.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libparking_lot-6721767503fecbee.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libparking_lot_core-32ade8d5cf038200.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcfg_if-de3fee777d28505f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libsmallvec-17cff5ddbac2d3b4.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libmaybe_uninit-fb89acfa5fdd5d93.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/liblock_api-12f3d9bb96757377.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libscopeguard-6ef302a7f864fbb3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures-e6516813fcd2ea59.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_executor-5454b73f7d5eee50.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_util-fde13ada8c10d5f9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libmemchr-7c7563bbdbb1ab9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_io-13ea868f3a902971.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libslab-bf82e5c05d7edc0d.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_channel-bbc95929c179c5c3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libpin_project_lite-f819d22e1946203f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_sink-3c76929821bf0d.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_task-176189a99c38d371.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libpin_utils-f6d0191654b565d6.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libfutures_core-328f95cc9ee7790f.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/zircon/rust/libfuchsia_zircon_status.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/lib/zircon/rust/libfuchsia_zircon_types.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libzerocopy-ff9dd6de05140af4.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libbyteorder-eb0270683cf7e0fd.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libstatic_assertions-5fff9c36214c34b7.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libbitflags-d696f344bc6327ae.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum-bbbc48fd5d807e0a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_iter-a257411d06b07f30.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_rational-dcc88f7010610c33.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_complex-2c955e71eec8ce6e.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_bigint-362cd991252bf6d3.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librand-3acdc77c21a3a508.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librand_chacha-fcec8b118d26a7b7.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libppv_lite86-e73b5df0490cc9a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/librand_core-c72139d238b8db6b.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libgetrandom-a3378427d5ef87b9.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/liblibc-219d623e972ed388.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libcfg_if-5f200286e6ae9b7a.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_integer-2a84ff8675296986.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/third_party/rust_crates/libnum_traits-eace97eec9f18ef0.rlib" "/b/f/w/out/not-default/x64-asan-ubsan/obj/src/connectivity/lowpan/lib/openthread_sys/libopenthread_sys.rlib" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-Bdynamic" "-lstd-20989b12d5b820fd" "-Bstatic" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib/libcompiler_builtins-79a8aefee474261f.rlib" "-Bdynamic" "-lfdio" "-lzircon" "-lzircon" "-lc" "-lfdio" "-lzircon" "-lfdio" "-lc" "-lfdio" "--dynamic-linker=ld.so.1" "--eh-frame-hdr" "-z" "noexecstack" "-L" "../../prebuilt/third_party/rust/linux-x64/lib/rustlib/x86_64-fuchsia/lib" "-o" "x64-asan-ubsan/exe.unstripped/openthread_lib_test" "--gc-sections" "-pie" "--Map=x64-asan-ubsan/exe.unstripped/openthread_lib_test.map" "--sysroot=x64-asan-ubsan/gen/zircon/public/sysroot/cpp" "-L../../prebuilt/third_party/clang/linux-x64/bin/../lib/x86_64-unknown-fuchsia" "-L../../prebuilt/third_party/clang/linux-x64/lib/clang/18/lib/x86_64-unknown-fuchsia" "--pack-dyn-relocs=relr" "-dynamic-linker=ld.so.1" "--icf=all" "-zrel" "--compress-debug-sections=zstd" "-zstack-size=0x200000" "../../prebuilt/third_party/clang/linux-x64/lib/clang/18/lib/x86_64-unknown-fuchsia/libclang_rt.asan.so" "-dynamic-linker=asan/ld.so.1" "-dynamic-linker=asan-ubsan/ld.so.1" "--push-state" "-Bstatic" "-lc++" "-Bdynamic" "-lm" "--pop-state" "-l:libunwind.a" "-Bdynamic" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/backend_fuchsia_lib.fx_log_api.cc.o" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/backend_fuchsia_lib.logging_backend_fuchsia.cc.o" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/cpp.log_settings.cc.o" "x64-asan-ubsan/obj/sdk/lib/syslog/cpp/cpp.macros.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/hlcpp/fuchsia/diagnostics/stream/cpp/fuchsia.diagnostics.stream_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics.stream/fuchsia.diagnostics.stream/c/fuchsia.diagnostics.stream_tables.fuchsia.diagnostics.stream.fidl.tables.c.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/hlcpp/fuchsia/diagnostics/cpp/fuchsia.diagnostics_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.diagnostics/fuchsia.diagnostics/c/fuchsia.diagnostics_tables.fuchsia.diagnostics.fidl.tables.c.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/hlcpp/fuchsia/mem/cpp/fuchsia.mem_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem/c/fuchsia.mem_tables.fuchsia.mem.fidl.tables.c.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/zircon/vdso/zx/zx/c/zx_tables.zx.fidl.tables.c.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.message_handler.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.message_reader.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.pending_response.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.proxy.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.proxy_controller.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.stub.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.stub_controller.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.unknown_interactions_table.c.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp.weak_stub_controller.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp.unknown_interactions_hlcpp.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp_sync.logging.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp_sync.message_sender.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/internal/cpp_sync.synchronous_proxy.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.clone.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.decoder.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.encoder.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.message.cc.o" "x64-asan-ubsan/obj/sdk/lib/fidl/cpp/cpp_base.message_buffer.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/hlcpp/fuchsia/logger/cpp/fuchsia.logger_hlcpp.fidl.cc.o" "x64-asan-ubsan/obj/BUILD_DIR/fidling/gen/sdk/fidl/fuchsia.logger/fuchsia.logger/c/fuchsia.logger_tables.fuchsia.logger.fidl.tables.c.o" "x64-asan-ubsan/obj/sdk/lib/syslog/structured_backend/cpp/structured_backend.fuchsia_syslog.cc.o" "user.libc_x64-asan-ubsan/obj/zircon/system/ulib/c/crt1.Scrt1.cc.o" "x64-asan-ubsan/obj/third_party/openthread/src/cli/libopenthread-cli-ftd.a" "x64-asan-ubsan/obj/third_party/openthread/src/core/libopenthread-ftd.a" "x64-asan-ubsan/obj/third_party/openthread/third_party/mbedtls/libmbedtls.a" "x64-asan-ubsan/obj/third_party/openthread/src/ncp/libopenthread-ncp-ftd.a" "x64-asan-ubsan/obj/third_party/openthread/src/lib/spinel/libopenthread-spinel-ncp.a" "x64-asan-ubsan/obj/third_party/openthread/src/lib/platform/libopenthread-platform.a" "x64-asan-ubsan-shared/link_stub/libbackend_fuchsia_globals.so" "x64-asan-ubsan/obj/sdk/lib/fit-promise/libfit-promise.a" "x64-asan-ubsan/obj/sdk/lib/fit/libfit.a" "x64-asan-ubsan/obj/sdk/lib/stdcompat/libstdcompat.a" "x64-asan-ubsan/obj/zircon/system/ulib/zx/libzx.a" "x64-asan-ubsan/obj/sdk/lib/fidl_base/libfidl_base.a" "x64-asan-ubsan/obj/sdk/lib/utf-utils/libutf-utils.a" "x64-asan-ubsan/obj/sdk/lib/fidl/libfidl.a" "x64-asan-ubsan/obj/zircon/system/ulib/async/libasync.a" "x64-asan-ubsan-shared/link_stub/libasync-default.so" "x64-asan-ubsan-shared/link_stub/libfdio.so" "x64-asan-ubsan/obj/zircon/system/ulib/async/libasync-cpp.a" "x64-asan-ubsan/obj/zircon/system/ulib/async-loop/libasync-loop-cpp.a" "x64-asan-ubsan/obj/zircon/system/ulib/async-loop/libasync-loop.a" "x64-asan-ubsan/obj/zircon/system/ulib/sync/libsync.a" "x64-asan-ubsan/obj/build/config/sanitizers/asan_default_options.a" "x64-asan-ubsan/obj/build/config/sanitizers/lsan_default_options.a" "x64-asan-ubsan/obj/build/config/sanitizers/ubsan_default_options.a" "gen/src/zircon/lib/zircon/zircon.x86_64/libzircon.so" "x64-asan-ubsan/obj/build/config/sanitizers/asan_default_options.sanitizer_default_options.c.o" "x64-asan-ubsan/obj/build/config/sanitizers/lsan_default_options.sanitizer_default_options.c.o" "x64-asan-ubsan/obj/build/config/sanitizers/ubsan_default_options.sanitizer_default_options.c.o" "gen/zircon/system/ulib/c/c.x86_64/libc.so" = note: lld: error: undefined reference due to --no-allow-shlib-undefined: operator new[](unsigned long) >>> referenced by x64-asan-ubsan-shared/link_stub/libfdio.so ``` I have uploaded the reproducer to https://storage.googleapis.com/fuchsia-build/undef-new-reference.tar.xz.
MaskRay commented 10 months ago

I think it is likely a bug in your environment. 1981b1b6b92f7579a30c9ed32dbdf3bc749c1b40 was to improve /DISCARD/, and unexpectedly but correctly improved --no-allow-shlib-undefined error checking.

You can see 3343d000a3511a4ea6fbd73bad86a3bbef8117e4 for some test cases.

MaskRay commented 10 months ago

In linkers' model, as a relocatable object file defines _Znam, other definitions from shared objects are ignored (e.g. libclang_rt.asan.so). libfdio.so has an empty DT_NEEDED list. lld thinks that the _Znam reference from libfdio.so will be resolved by the executable. However, the executable's definition is hidden, unable to satisfy a DSO's reference at run-time, therefore a --no-allow-shlib-undefined error is issued.

% fld.lld @response.txt -y _Znam
usr/local/google/home/phosek/fuchsia/out/core.x64-asan/x64-asan-ubsan-shared/link_stub/libfdio.so: reference to _Znam
usr/local/google/home/phosek/fuchsia/clang/lib/clang/18/lib/x86_64-unknown-fuchsia/libclang_rt.asan.so: shared definition of _Znam
usr/local/google/home/phosek/fuchsia/clang/lib/x86_64-unknown-fuchsia/libc++.a(stdlib_new_delete.cpp.obj): definition of _Znam
usr/local/google/home/phosek/fuchsia/clang/lib/x86_64-unknown-fuchsia/libc++.a(ios.instantiations.cpp.obj): reference to _Znam
usr/local/google/home/phosek/fuchsia/out/core.x64-asan/x64-asan-ubsan/obj/sdk/lib/syslog/cpp/backend_fuchsia_lib.logging_backend_fuchsia.cc.o: reference to _Znam
usr/local/google/home/phosek/fuchsia/clang/lib/x86_64-unknown-fuchsia/libc++.a(stdlib_new_delete.cpp.obj): reference to _Znam
ld.lld: error: undefined reference due to --no-allow-shlib-undefined: operator new[](unsigned long)
>>> referenced by usr/local/google/home/phosek/fuchsia/out/core.x64-asan/x64-asan-ubsan-shared/link_stub/libfdio.so
% readelf -Ws stdlib_new_delete.cpp.obj | grep -w _Znam
     7: 0000000000000000     0 SECTION LOCAL  DEFAULT   11 .text._Znam
    53: 0000000000000000     5 FUNC    WEAK   HIDDEN    11 _Znam

The error will go away if libfdio.so does not reference _Znam.

petrhosek commented 10 months ago

libfdio doesn't have an empty DT_NEEDED list:

$ llvm-readelf -d usr/local/google/home/phosek/fuchsia/out/core.x64-asan/x64-asan-ubsan-shared/link_stub/libfdio.so
Dynamic section at offset 0x2fb0 contains 8 entries:
  Tag                Type     Name/Value
  0x0000000000000006 (SYMTAB) 0x40
  0x0000000000000005 (STRTAB) 0x1de0
  0x000000000000000a (STRSZ)  7584 (bytes)
  0x0000000000000001 (NEEDED) Shared library: [libzircon.so]
  0x0000000000000001 (NEEDED) Shared library: [libc.so]
  0x0000000000000001 (NEEDED) Shared library: [libclang_rt.asan.so]
  0x000000000000000e (SONAME) Library soname: [libfdio.so]
  0x0000000000000000 (NULL)   0x0

The reference to _Znam is expected and should be satisfied by libclang_rt.asan.so at runtime.

MaskRay commented 10 months ago

libfdio doesn't have an empty DT_NEEDED list:

$ llvm-readelf -d usr/local/google/home/phosek/fuchsia/out/core.x64-asan/x64-asan-ubsan-shared/link_stub/libfdio.so
Dynamic section at offset 0x2fb0 contains 8 entries:
  Tag                Type     Name/Value
  0x0000000000000006 (SYMTAB) 0x40
  0x0000000000000005 (STRTAB) 0x1de0
  0x000000000000000a (STRSZ)  7584 (bytes)
  0x0000000000000001 (NEEDED) Shared library: [libzircon.so]
  0x0000000000000001 (NEEDED) Shared library: [libc.so]
  0x0000000000000001 (NEEDED) Shared library: [libclang_rt.asan.so]
  0x000000000000000e (SONAME) Library soname: [libfdio.so]
  0x0000000000000000 (NULL)   0x0

Sorry for my typo. All of libfdio.so's DT_NEEDED entries are seen as input files, so --no-allow-shlib-undefined kicks in, just like if the DT_NEEDED list were empty.

The reference to _Znam is expected and should be satisfied by libclang_rt.asan.so at runtime.

Yes that the reference will be satisfied. With glibc, there will not be a runtime error symbol lookup error: ... undefined symbol:.

However, the detected problem is legitimate and the reference to _Znam may not be expected. As I commented,

In linkers' model, as a relocatable object file defines _Znam, other definitions from shared objects are ignored (e.g. libclang_rt.asan.so)

The reference to _Znam is due to "shared object overriding archive".