qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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



  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).