qemu-rust
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] rust: Prefer link_with over link_whole


From: Paolo Bonzini
Subject: Re: [PATCH] rust: Prefer link_with over link_whole
Date: Tue, 18 Feb 2025 09:58:44 +0100
User-agent: Mozilla Thunderbird

On 2/18/25 09:37, Zhao Liu wrote:
The commit fccb744f41c6 ("gdbstub: Try unlinking the unix socket before
binding") causes the compilation of rust-qemu-api-integration to fail,
because rust-qemu-api-integration uses link_whole which meets the
duplicate symbol linker error.

Though it's not the issue of link_whole used by Rust side, there's no
need to use link_whole.

Use link_with, which may also bring some benefits, such as faster
linking or smaller output files.

link_with, if I remember correctly, drops the constructors. Using it in rust_devices_ss therefore prevents the devices from being registered with QOM.

The real issue is lack of support for "objects" in Meson for Rust executables. A patch to fix that is under review, after which it will be possible to build Rust executables using the same "dependency" objects as C code.

Paolo

  rust_devices_ss.add(when: 'CONFIG_X_PL011_RUST', if_true: [declare_dependency(
-  link_whole: [_libpl011_rs],
+  link_with: [_libpl011_rs],
    # Putting proc macro crates in `dependencies` is necessary for Meson to find
    # them when compiling the root per-target static rust lib.
    dependencies: [bilge_impl_dep, qemu_api_macros],
diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build
index c2d7c0532ca4..ce90cc4f021a 100644
--- a/rust/hw/timer/hpet/meson.build
+++ b/rust/hw/timer/hpet/meson.build
@@ -10,7 +10,7 @@ _libhpet_rs = static_library(
  )
rust_devices_ss.add(when: 'CONFIG_X_HPET_RUST', if_true: [declare_dependency(
-  link_whole: [_libhpet_rs],
+  link_with: [_libhpet_rs],
    # Putting proc macro crates in `dependencies` is necessary for Meson to find
    # them when compiling the root per-target static rust lib.
    dependencies: [qemu_api_macros],
diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build
index 2e9c1078b9b2..e825671b694b 100644
--- a/rust/qemu-api/meson.build
+++ b/rust/qemu-api/meson.build
@@ -63,7 +63,7 @@ test('rust-qemu-api-integration',
          rust_args: ['--test'],
          install: false,
          dependencies: [qemu_api, qemu_api_macros],
-        link_whole: [rust_qemu_api_objs, libqemuutil]),
+        link_with: [rust_qemu_api_objs, libqemuutil]),
      args: [
          '--test', '--test-threads', '1',
          '--format', 'pretty',




reply via email to

[Prev in Thread] Current Thread [Next in Thread]