You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In version 0.1.25mimalloc_rust switched from cmake build to cc which caused multiple definition errors to start showing up when linker is invoked on dylib, before that change everything worked fine. Building directly with cargo works.
I'm unable to see how switching to cc caused this..
Steps to reproduce:
Cargo.toml
[package]
name = "test"
version = "1.0.0"
edition = "2018"
[dependencies]
mimalloc = { version = "0.1.25", default-features = false, features = ["local_dynamic_tls"] }
[lib]
name = "test"
crate-type = ["dylib"]
src/lib.rs
use mimalloc::MiMalloc;
#[global_allocator]
static GLOBAL: MiMalloc = MiMalloc;
Steps to reproduce:
$ ls
./Cargo.toml ./src ./src/lib.rs
$ cargo b
Updating crates.io index
Compiling cc v1.0.67
Compiling libmimalloc-sys v0.1.21
Compiling mimalloc v0.1.25
Compiling test v1.0.0 (/tmp/test)
Finished dev [unoptimized + debuginfo] target(s) in 3.26s
$ crate2nix generate
Generated ./Cargo.nix successfully.
$ nix-build Cargo.nix
....
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `_mi_clock_now':
(.text._mi_clock_now+0x0): multiple definition of `_mi_clock_now'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text._mi_clock_now+0x0): first defined here
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `_mi_clock_start':
(.text._mi_clock_start+0x0): multiple definition of `_mi_clock_start'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text._mi_clock_start+0x0): first defined here
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `mi_stats_reset':
(.text.mi_stats_reset+0x0): multiple definition of `mi_stats_reset'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text.mi_stats_reset+0x0): first defined here
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `_mi_clock_end':
(.text._mi_clock_end+0x0): multiple definition of `_mi_clock_end'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text._mi_clock_end+0x0): first defined here
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `mi_stats_print_out':
(.text.mi_stats_print_out+0x0): multiple definition of `mi_stats_print_out'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text.mi_stats_print_out+0x0): first defined here
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `mi_stats_print':
(.text.mi_stats_print+0x0): multiple definition of `mi_stats_print'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text.mi_stats_print+0x0): first defined here
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `mi_thread_stats_print_out':
(.text.mi_thread_stats_print_out+0x0): multiple definition of `mi_thread_stats_print_out'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text.mi_thread_stats_print_out+0x0): first defined here
/nix/store/rqfgki7ck1bxqhk3hd7wziqhahjadfbj-binutils-2.35.1/bin/ld: /build/rustcW9muz5/libmimalloc-4622a22cce.rlib(stats.o): in function `mi_process_info':
(.text.mi_process_info+0x0): multiple definition of `mi_process_info'; /nix/store/jxiaz4bvswyh3sncrp3g59mgailf9818-rust_libmimalloc-sys-0.1.21-lib/lib/libmimalloc-sys.out/libmimalloc.a(stats.o):(.text.mi_process_info+0x0): first defined here
collect2: error: ld returned 1 exit status
error: aborting due to previous error
builder for '/nix/store/qab9lrvvamv4is8ifsv78hyyqgxjiyil-rust_test-1.0.0.drv' failed with exit code 1
cannot build derivation '/nix/store/nnvpkcv16cgrsa69xxlamf4wraqq0rfp-all-workspace-members.drv': 1 dependencies couldn't be built
error: build of '/nix/store/nnvpkcv16cgrsa69xxlamf4wraqq0rfp-all-workspace-members.drv' failed
Thanks!
The text was updated successfully, but these errors were encountered:
In version
0.1.25
mimalloc_rust switched from cmake build to cc which causedmultiple definition
errors to start showing up when linker is invoked on dylib, before that change everything worked fine. Building directly with cargo works.I'm unable to see how switching to
cc
caused this..Steps to reproduce:
Cargo.toml
src/lib.rs
Steps to reproduce:
Thanks!
The text was updated successfully, but these errors were encountered: