Closed
Description
I tried this code:
#![feature(thread_local)]
#[thread_local]
static FOO: usize = 0;
fn generic_fn<T>() {
println!("{}", FOO);
}
fn main() {
generic_fn::<u32>();
}
I expected to see this happen: the code compiles and runs
Instead, this happened: the linker fails with "undefined reference to `bug_thread_local::FOO'"
Meta
rustc --version --verbose
:
rustc 1.46.0-nightly (118b50524 2020-06-06)
binary: rustc
commit-hash: 118b50524b79e565f017e08bce9b90a16c63634f
commit-date: 2020-06-06
host: x86_64-unknown-linux-gnu
release: 1.46.0-nightly
LLVM version: 10.0
backtrace
Compiling bug_thread_local v0.1.0 (/coding/rust/bugs/bug_thread_local)
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.15r157f46nq5mrlc.rcgu.o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.1bura74fpes4wgex.rcgu.o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.1wbud65q9h6ajgnf.rcgu.o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.46em5a1xf4kr89y6.rcgu.o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.4gwkhmnlmutobbpo.rcgu.o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.4ibtg096vtr9owgz.rcgu.o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.4ohtqtdpema17ct9.rcgu.o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.56dvc5ml437kyb48.rcgu.o" "-o" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698" "/coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.2zba00a95gi8ssj6.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/coding/rust/bugs/bug_thread_local/target/debug/deps" "-L" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-e57211332ec73a2f.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-419d4801030b1e5f.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-cfc1286528e69dbf.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-bb34cb18a72ef92e.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-06bd58cc4eea83a6.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-a5f6d70e9e31f670.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-9d8ebec41dc1a913.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-d4969954aa8384d6.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-f0a7e8cab2b30e63.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-95ea48ddc44a311b.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-7932c3ccaf0b0992.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-68f423c59dc48a40.rlib" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-54580c7798bf2225.rlib" "-Wl,--end-group" "/home/freax13/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-b5efcd4dc107fc39.rlib" "-Wl,-Bdynamic" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-ldl" "-lutil"
= note: /usr/bin/ld: /coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698.4gwkhmnlmutobbpo.rcgu.o: in function `bug_thread_local::generic_fn':
/coding/rust/bugs/bug_thread_local/src/main.rs:7: undefined reference to `bug_thread_local::FOO'
/usr/bin/ld: /coding/rust/bugs/bug_thread_local/target/debug/deps/bug_thread_local-c8ea200706a99698: hidden symbol `_ZN16bug_thread_local3FOO17h1facba36a04dea80E' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: could not compile `bug_thread_local`.
To learn more, run the command again with --verbose.