Skip to content

multiple definition link error when using multiple codegen units #32518

Closed
@MagaTailor

Description

@MagaTailor

I wanted to use @dotdash's LLVM assertions patch but now my stage1 libstd fails to link. Probably unrelated but here it is:

rustc: arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/libstd
error: linking with `cc` failed: exit code: 1
note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-L" "/rust-master/arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib" "arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o" "arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.1.o" "arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.2.o" "arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.3.o" "-o" "arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/libstd-9026086f.so" "arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.metadata.o" "-Wl,-O1" "-nodefaultlibs" "-L" "arm-unknown-linux-gnueabihf/rt" "-L" "/rust-master/arm-unknown-linux-gnueabihf/llvm/Release+Asserts/lib" "-L" "/rust-master/arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib" "-Wl,-Bstatic" "-Wl,--whole-archive" "-l" "backtrace" "-Wl,--no-whole-archive" "-Wl,-Bdynamic" "-l" "dl" "-l" "pthread" "-l" "gcc_s" "-Wl,--whole-archive" "/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustc.FHfUQVlQsuoG/liballoc-9026086f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustc.FHfUQVlQsuoG/librustc_unicode-9026086f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustc.FHfUQVlQsuoG/liballoc_system-9026086f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustc.FHfUQVlQsuoG/liblibc-9026086f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustc.FHfUQVlQsuoG/librand-9026086f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustc.FHfUQVlQsuoG/libcore-9026086f.rlib" "-Wl,--no-whole-archive" "-l" "c" "-l" "m" "-l" "rt" "-shared" "-Wl,-rpath,/home/odroid/rust-nightly-sysalloc-assert/lib/rustlib/arm-unknown-linux-gnueabihf/lib" "-Wl,--enable-new-dtags" "-s" "-l" "compiler-rt"
note: /tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `_$LT$core..option..Option$LT$T$GT$$GT$::map::h58518f67af9bf04e':
collections.0.rs:(.text._ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17h58518f67af9bf04eE+0x0): multiple definition of `_$LT$core..option..Option$LT$T$GT$$GT$::map::h58518f67af9bf04e'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17h58518f67af9bf04eE+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$::new::h0c1cdac7fb2b416c':
collections.0.rs:(.text._ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$3new17h0c1cdac7fb2b416cE+0x0): multiple definition of `_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$::new::h0c1cdac7fb2b416c'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.3.o:std.3.rs:(.text._ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$3new17h0c1cdac7fb2b416cE+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$::ptr::h4e14ee1392d1411e':
collections.0.rs:(.text._ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$3ptr17h4e14ee1392d1411eE+0x0): multiple definition of `_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$::ptr::h4e14ee1392d1411e'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$3ptr17h4e14ee1392d1411eE+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$::double::heaf5b97a8495eb9e':
collections.0.rs:(.text._ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$6double17heaf5b97a8495eb9eE+0x0): multiple definition of `_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$::double::heaf5b97a8495eb9e'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.3.o:std.3.rs:(.text._ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$6double17heaf5b97a8495eb9eE+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::mem::uninitialized::he8ba150ad18eedcf':
collections.0.rs:(.text._ZN4core3mem13uninitialized17he8ba150ad18eedcfE+0x0): multiple definition of `core::mem::uninitialized::he8ba150ad18eedcf'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN4core3mem13uninitialized17he8ba150ad18eedcfE+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::mem::uninitialized::hfa1a47f766d26f10':
collections.0.rs:(.text._ZN4core3mem13uninitialized17hfa1a47f766d26f10E+0x0): multiple definition of `core::mem::uninitialized::hfa1a47f766d26f10'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.3.o:std.3.rs:(.text._ZN4core3mem13uninitialized17hfa1a47f766d26f10E+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::mem::transmute_copy::h5f22bd4094d00101':
collections.0.rs:(.text._ZN4core3mem14transmute_copy17h5f22bd4094d00101E+0x0): multiple definition of `core::mem::transmute_copy::h5f22bd4094d00101'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN4core3mem14transmute_copy17h5f22bd4094d00101E+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::mem::transmute_copy::h75f84324b8ee3166':
collections.0.rs:(.text._ZN4core3mem14transmute_copy17h75f84324b8ee3166E+0x0): multiple definition of `core::mem::transmute_copy::h75f84324b8ee3166'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.3.o:std.3.rs:(.text._ZN4core3mem14transmute_copy17h75f84324b8ee3166E+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::mem::forget::h502109c553961f51':
collections.0.rs:(.text._ZN4core3mem6forget17h502109c553961f51E+0x0): multiple definition of `core::mem::forget::h502109c553961f51'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN4core3mem6forget17h502109c553961f51E+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::mem::size_of::hfb509be3c362d215':
collections.0.rs:(.text._ZN4core3mem7size_of17hfb509be3c362d215E+0x0): multiple definition of `core::mem::size_of::hfb509be3c362d215'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN4core3mem7size_of17hfb509be3c362d215E+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::mem::align_of::h2a452ce69533a17c':
collections.0.rs:(.text._ZN4core3mem8align_of17h2a452ce69533a17cE+0x0): multiple definition of `core::mem::align_of::h2a452ce69533a17c'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN4core3mem8align_of17h2a452ce69533a17cE+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::is_null::h3fe8e4e4a8815d84':
collections.0.rs:(.text._ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h3fe8e4e4a8815d84E+0x0): multiple definition of `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::is_null::h3fe8e4e4a8815d84'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h3fe8e4e4a8815d84E+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::offset::he051aa5e5b8f8bfb':
collections.0.rs:(.text._ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$6offset17he051aa5e5b8f8bfbE+0x0): multiple definition of `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::offset::he051aa5e5b8f8bfb'
arm-unknown-linux-gnueabihf/stage1/lib/rustlib/arm-unknown-linux-gnueabihf/lib/std-9026086f.0.o:std.0.rs:(.text._ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$6offset17he051aa5e5b8f8bfbE+0x0): first defined here
/tmp/rustc.FHfUQVlQsuoG/libcollections-9026086f.rlib(collections-9026086f.0.o): In function `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::is_null::h630d425861f40502':
collections.0.rs:(.text._ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7is_null17h630d425861f40502E+0x0): multiple definition of `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::is_null::h630d425861f40502'

and so on. Configured with --enable-optimize --disable-jemalloc --enable-llvm-assertions and RUSTFLAGS='-C codegen-units=4 -C link-args=-s'

Are all these errors about memory management functions? (--disable-jemalloc broken again?)

Metadata

Metadata

Assignees

Labels

T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions