Skip to content

Externally Implementable Items: error: undefined symbol with dynamic linking #151271

@Enselic

Description

@Enselic

Step-by-step:

  1. Apply this diff
diff --git a/tests/ui/eii/default/auxiliary/decl_with_default.rs b/tests/ui/eii/default/auxiliary/decl_with_default.rs
index 8d962c19c94..ba855cb854a 100644
--- a/tests/ui/eii/default/auxiliary/decl_with_default.rs
+++ b/tests/ui/eii/default/auxiliary/decl_with_default.rs
@@ -1,4 +1,3 @@
-//@ no-prefer-dynamic
 #![crate_type = "rlib"]
 #![feature(extern_item_impls)]

diff --git a/tests/ui/eii/default/call_default.rs b/tests/ui/eii/default/call_default.rs
index b479baa8044..b297434e4d6 100644
--- a/tests/ui/eii/default/call_default.rs
+++ b/tests/ui/eii/default/call_default.rs
@@ -1,4 +1,3 @@
-//@ no-prefer-dynamic
 //@ aux-build: decl_with_default.rs
 //@ run-pass
 //@ check-run-results
  1. Run the test:
./x test tests/ui/eii/default/call_default.rs

Expected:

Test pass.

Actual (shortened):

$ ./x test tests/ui/eii/default/call_default.rs
---- [ui] tests/ui/eii/default/call_default.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" "/home/martin/src/rust-eii-fixes/tests/ui/eii/default/call_default.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/home/martin/.cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/home/martin/src/rust-eii-fixes/vendor" "--sysroot" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/stage1" "--target=x86_64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "-O" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "-C" "prefer-dynamic" "-o" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/a" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/auxiliary"
stdout: none
--- stderr -------------------------------
error: linking with `cc` failed: exit status: 1
   |
   = note:  "cc" "-m64" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/rustc39rlVk/symbols.o" "<1 object files omitted>" "-Wl,--as-needed" "-Wl,-Bdynamic" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/auxiliary/libdecl_with_default.so" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-1d7f9f7131209cb3.so" "-Wl,-Bstatic" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-*.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/rustc39rlVk/raw-dylibs" "-B<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-B<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/auxiliary" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/a" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-Wl,--strip-debug" "-nodefaultlibs" "-Wl,-rpath,$ORIGIN/auxiliary,-rpath,$ORIGIN/../../../../../stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib,--enable-new-dtags,-z,origin"
   = note: some arguments are omitted. use `--verbose` to show all linker arguments
   = note: rust-lld: error: undefined symbol: decl_with_default::decl1
           >>> referenced by call_default.e65edcad8a79f346-cgu.0
           >>>               /home/martin/src/rust-eii-fixes/build/x86_64-unknown-linux-gnu/test/ui/eii/default/call_default/a.call_default.e65edcad8a79f346-cgu.0.rcgu.o:(call_default::main)
           collect2: error: ld returned 1 exit status

failures:
    [ui] tests/ui/eii/default/call_default.rs

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 20400 filtered out; finished in 167.15ms

Build completed unsuccessfully in 0:00:03

Tracking issue:

CC: @jdonszelmann

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linkersArea: linkers... you gotta love linkersC-bugCategory: This is a bug.F-extern_item_impls`#![feature(extern_item_impls)]`T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions