From: Zhao Liu <zhao1.liu@intel.com>
To: "Alex Bennée" <alex.bennee@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, "Ilya Leoshkevich" <iii@linux.ibm.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: Re: [PULL 11/17] gdbstub: Try unlinking the unix socket before binding
Date: Mon, 17 Feb 2025 17:03:55 +0800 [thread overview]
Message-ID: <Z7L7ewnUi874VizQ@intel.com> (raw)
In-Reply-To: <20250210161451.3273284-12-alex.bennee@linaro.org>
Hi Alex and Paolo,
I hit an compiling error with "./configure --enable-rust" at this patch:
[69/124] Compiling Rust source ../rust/qemu-api/tests/tests.rs
FAILED: rust/qemu-api/rust-qemu-api-integration
rustc -C linker=cc -C link-arg=-m64 --color=auto -C debug-assertions=yes -C overflow-checks=no --crate-type bin -D warnings --edition=2021 -C opt-level=2 -g -D unexpected_cfgs -A unknown_lints -D unsafe_op_in_unsafe_fn --cfg MESON -C default-linker-libraries --crate-name rust_qemu_api_integration --emit dep-info=rust/qemu-api/rust-qemu-api-integration.d --emit link=rust/qemu-api/rust-qemu-api-integration --out-dir rust/qemu-api/rust-qemu-api-integration.p -C metadata=81e2432@@rust-qemu-api-integration@exe --test --extern qemu_api=rust/qemu-api/libqemu_api.rlib --extern qemu_api_macros=rust/qemu-api-macros/libqemu_api_macros.so -Clink-arg=-Wl,--whole-archive -Clink-arg=rust/qemu-api/librust_qemu_api_objs.a -Clink-arg=-Wl,--no-whole-archive -Clink-arg=-Wl,--whole-archive -Clink-arg=libqemuutil.a -Clink-arg=-Wl,--no-whole-archive -Clink-arg=subprojects/libvhost-user/libvhost-user-glib.a -Clink-arg=subprojects/libvhost-user/libvhost-user.a -Clink-arg=-lnuma -Clink-arg=/usr/lib/x86_64-linux-gnu/libgio-2.0.so -Clink-arg=/usr/lib/x86_64-linux-gnu/libgobject-2.0.so -Clink-arg=/usr/lib/x86_64-linux-gnu/libglib-2.0.so -Clink-arg=/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so -Clink-arg=-pthread -Clink-arg=-pthread -Clink-arg=-pthread -Clink-arg=-pthread -Lrust/qemu-api -Lrust/qemu-api-macros -L. -Lsubprojects/libvhost-user -C 'link-arg=-Wl,-rpath,$ORIGIN/../qemu-api-macros:/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib' -C link-arg=-Wl,-rpath-link,/media/liuzhao/data/qemu-cook/build/rust/qemu-api-macros:/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib ../rust/qemu-api/tests/tests.rs
error: linking with `cc` failed: exit status: 1
|
= note: "cc" "-m64" "/tmp/rustcRWVJWs/symbols.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.0.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.1.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.10.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.11.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.12.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.13.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.14.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.2.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.3.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.4.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.5.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.6.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.7.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.8.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.rust_qemu_api_integration.e9408ebc-cgu.9.rcgu.o" "rust/qemu-api/rust-qemu-api-integration.p/rust_qemu_api_integration.29ovwebebub0plh7.rcgu.o" "-Wl,--as-needed" "-L" "rust/qemu-api" "-L" "rust/qemu-api-macros" "-L" "." "-L" "subprojects/libvhost-user" "-L" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-50b9616eedb811b7.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-754da76e30d40e26.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunicode_width-abff7c50c58df25c.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_std-89f1a8c8e39f4a91.rlib" "/media/liuzhao/data/qemu-cook/build/rust/qemu-api/libqemu_api.rlib" "-Wl,--start-group" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-8f1929c73c3f8167.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e359d865975ccf21.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-b886fd10c5a7c7c0.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-9d7c322d48daa475.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-08ae1606a951cabe.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-682a81c4b2133b72.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-a73b3512c88de071.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-7b5ec4c918d9f957.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-65c63cf3af0af657.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-4a53f0a2785abc6a.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-868e2d515c28d027.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-394ad2d73aede76a.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-19c77e4dc3dcb87e.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-fb44a42088c9369a.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-61a7402e61a5b0e0.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-63f8356c87a0d0e8.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-a506e577d917828c.rlib" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-fc1fb63210fdafad.rlib" "-Wl,--end-group" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-c21be34a5cae8449.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "rust/qemu-api/rust-qemu-api-integration" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-Wl,-O1" "-m64" "-Wl,--whole-archive" "rust/qemu-api/librust_qemu_api_objs.a" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "libqemuutil.a" "-Wl,--no-whole-archive" "subprojects/libvhost-user/libvhost-user-glib.a" "subprojects/libvhost-user/libvhost-user.a" "-lnuma" "/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/libglib-2.0.so" "/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so" "-pthread" "-pthread" "-pthread" "-pthread" "-Wl,-rpath,$ORIGIN/../qemu-api-macros:/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib" "-Wl,-rpath-link,/media/liuzhao/data/qemu-cook/build/rust/qemu-api-macros:/home/liuzhao/.rustup/toolchains/1.63.0-x86_64-unknown-linux-gnu/lib"
= note: /usr/bin/ld: libqemuutil.a.p/stubs_monitor-fd.c.o: in function `monitor_get_fd':
/media/liuzhao/data/qemu-cook/build/../stubs/monitor-fd.c:7: multiple definition of `monitor_get_fd'; libqemuutil.a.p/stubs_monitor-internal.c.o:/media/liuzhao/data/qemu-cook/build/../stubs/monitor-internal.c:6: first defined here
collect2: error: ld returned 1 exit status
error: aborting due to previous error
---
I tried to analyze the reasons as follows:
* stubs/monitor-fd.c introduces the same monitor_get_fd() stub as the
stubs/monitor-internal.c did.
* rust-qemu-api-integration used the "link_whole" keyword instead of
"link_with".
Then the two duplicate monitor_get_fd() eventually meet in
rust-qemu-api-integration.
To fix this issue, dropping stubs/monitor-fd.c and only linking
stubs/monitor-internal.c could work! (And I don't think of the reason to
redefine monitor_get_fd() in another file.)
In addition, could we change the "link_whole" to "link_with" when
compile rust-qemu-api-integration?
Thanks,
Zhao
next prev parent reply other threads:[~2025-02-17 8:45 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-10 16:14 [PULL 00/17] testing and gdbstub updates Alex Bennée
2025-02-10 16:14 ` [PULL 01/17] tests/docker: replicate the check-rust-tools-nightly CI job Alex Bennée
2025-02-10 16:14 ` [PULL 02/17] tests/qtest: don't attempt to clock_step while waiting for virtio ISR Alex Bennée
2025-02-10 16:14 ` [PULL 03/17] tests/qtest: don't step clock at start of npcm7xx periodic IRQ test Alex Bennée
2025-02-10 16:14 ` [PULL 04/17] tests/qtest: simplify qtest_process_inbuf Alex Bennée
2025-02-10 16:14 ` [PULL 05/17] tests/qtest: rename qtest_send_prefix and roll-up into qtest_send Alex Bennée
2025-02-10 16:14 ` [PULL 06/17] tests/qtest: tighten up the checks on clock_step Alex Bennée
2025-02-10 16:14 ` [PULL 07/17] Revert "util/timer: avoid deadlock when shutting down" Alex Bennée
2025-02-10 16:14 ` [PULL 08/17] tests/qtest/migration: Add --full option Alex Bennée
2025-02-10 16:14 ` [PULL 09/17] tests/qtest/migration: Pick smoke tests Alex Bennée
2025-02-10 16:14 ` [PULL 10/17] gdbstub: Allow the %d placeholder in the socket path Alex Bennée
2025-02-10 16:14 ` [PULL 11/17] gdbstub: Try unlinking the unix socket before binding Alex Bennée
2025-02-17 9:03 ` Zhao Liu [this message]
2025-02-10 16:14 ` [PULL 12/17] user: Introduce user/signal.h Alex Bennée
2025-02-10 16:14 ` [PULL 13/17] user: Introduce host_interrupt_signal Alex Bennée
2025-02-10 16:14 ` [PULL 14/17] osdep: Introduce qemu_kill_thread() Alex Bennée
2025-02-10 16:14 ` [PULL 15/17] gdbstub: Allow late attachment Alex Bennée
2025-02-10 16:14 ` [PULL 16/17] docs/user: Document the %d placeholder and suspend=n QEMU_GDB features Alex Bennée
2025-02-10 16:14 ` [PULL 17/17] tests/tcg: Add late gdbstub attach test Alex Bennée
2025-02-11 2:37 ` [PULL 00/17] testing and gdbstub updates Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z7L7ewnUi874VizQ@intel.com \
--to=zhao1.liu@intel.com \
--cc=alex.bennee@linaro.org \
--cc=iii@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.