New issue
Advanced search Search tips

Issue 779455 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Nov 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug

Blocking:
issue 724628



Sign in to add a comment

rust does not build with libc++ default in clang

Project Member Reported by manojgupta@chromium.org, Oct 30 2017

Issue description

Rust failed to build when I tried to make libc++ as default in clang.
Root cause seems to be using cc for linking instead of $CC. Since cc is gcc, it will not be able to use libc++ libraries.

https://uberchromegw.corp.google.com/i/chromiumos.tryserver/builders/chromiumos-sdk/builds/2652

rust-1.21.0-r3: error: linking with `cc` failed: exit code: 1
rust-1.21.0-r3:   |
rust-1.21.0-r3:   = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.0.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.1.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.10.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.11.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.12.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.13.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.14.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.15.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.16.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.17.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.18.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.19.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.2.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.20.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.21.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.22.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.23.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.24.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.25.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.26.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.27.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.28.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.29.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.3.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.30.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.31.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.32.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.33.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.34.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.35.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.36.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.37.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.38.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.39.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.4.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.5.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.6.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.7.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.8.o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.9.o" "-o" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc-d6af06475aa14af5.crate.allocator.o" "-Wl,--gc-sections" "-pie" "-Wl,-O1" "-nodefaultlibs" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/release/deps" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/build/miniz-sys-62af5d953ffb2cd4/out" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/build/rustc_llvm-ed91e068fc25c5c8/out" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/llvm/lib" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_driver-b1ea7f3396f7c460" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_lint-415e2a392a93717b" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_passes-843ea62fb630a9ab" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_privacy-76f677c5595535ce" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_borrowck-eb4c3bff7e44af96" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_mir-811d6854bd8ddf62" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_const_eval-f5291544f057d1a0" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_save_analysis-ff38b2b2e4b77e03" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_typeck-15a06b8451c3bb22" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_trans-46fb7dc38ffea756" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_trans_utils-52110d4f0eb74a55" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_platform_intrinsics-228a428b1705bf41" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_llvm-684bce363959664b" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_incremental-ec156fd863085f3f" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_allocator-e8c0f0ca891350b8" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_plugin-f2b239ec002f5b5f" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_metadata-5c9d9b125e74a53e" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "syntax_ext-8e3a1452151f48f9" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "proc_macro-9d53d92af12c3f3b" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_resolve-9f9c9ad2700eca93" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc-4696be0220f537f5" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-l" "test-8aa1885f42c5f6a0" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_const_math-26d8a8722d637859" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_back-4ee0563d8afd177d" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "graphviz-056ec35d00d387a1" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "fmt_macros-d99937eb16562928" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "arena-9ab61d14f608d534" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "syntax-f48cc13a0772c56e" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_errors-2484841871e56516" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "syntax_pos-81c4fa3fcb4f5a44" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "rustc_data_structures-e3678ebda9a4c89c" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-l" "term-09fcb0cebc7e32cb" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-l" "serialize-2875d5e8ad7eb126" "-L" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-l" "std-d042d7e60b1ba1e6" "-Wl,-Bstatic" "/var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-382cb75c24aecbde.rlib" "-Wl,-Bdynamic" "-l" "rt" "-l" "dl" "-l" "pthread" "-l" "m" "-l" "stdc++" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util" "-Wl,-rpath,$ORIGIN/../lib:/usr/lib64/rust/rustlib/x86_64-unknown-linux-gnu/lib"
rust-1.21.0-r3:   = note: /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_llvm-684bce363959664b.so: undefined reference to `std::__1::__shared_weak_count::lock()'
rust-1.21.0-r3:           /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_llvm-684bce363959664b.so: undefined reference to `std::__1::ios_base::getloc() const'
rust-1.21.0-r3:           /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_llvm-684bce363959664b.so: undefined reference to `std::__1::__thread_struct::~__thread_struct()'


To repro: 
1. USE="default-libcxx" sudo emerge llvm
2. sudo emerge rust
 
Don't forget to build llvm again without libcxx USE flags i.e. sudo emerge llvm so that llvm does not default to libc++ otherwise local builds may start failing with similar symbol issues.
 
Description: Show this description
Cc: cmt...@chromium.org
 Issue 779465  has been merged into this issue.
Owner: za...@chromium.org
Status: Assigned (was: Untriaged)

Comment 4 by za...@chromium.org, Oct 31 2017

Status: Started (was: Assigned)

Comment 5 by za...@chromium.org, Oct 31 2017

Would it be acceptable to still link against libstdc++ even when the default is libc++ or is this bug specifically requesting that rust build properly with libc++?
I think rust should not default to libstdc++ (or even libc++) unless  there is a strong reason to do so. Preference should be to compiler pick its preferred c++ library.
Switching call from cc to $CHOST-clang++ for linking should do the trick here. Ebuild env already sets CXX to $CHOST-clang++ so its more of a question of passing this value to rust build.

Comment 7 by za...@chromium.org, Oct 31 2017

I did backport a patch that allowed us to specify the linker as clang++, and it does solve the errors you were seeing but it brings about new errors. Specifically, rust assumes on x86 linux targets that it will have access to certain gcc_s symbols for exception handling and stacktrace printing. This is what I fail with after forcing libc++:

  = note: /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_driver-b1ea7f3396f7c460.so: error: undefined reference to '_Unwind_Resume'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_llvm-684bce363959664b.so: error: undefined reference to '__deregister_frame'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_llvm-684bce363959664b.so: error: undefined reference to '__register_frame'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_llvm-684bce363959664b.so: error: undefined reference to '_Unwind_Backtrace'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_llvm-684bce363959664b.so: error: undefined reference to '_Unwind_GetIP'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_FindEnclosingFunction'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_GetIPInfo'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_DeleteException'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_GetDataRelBase'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_GetLanguageSpecificData'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_GetRegionStart'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_GetTextRelBase'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_RaiseException'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_SetGR'
          /var/tmp/portage/dev-lang/rust-1.21.0-r3/work/rustc-1.21.0-src/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d042d7e60b1ba1e6.so: error: undefined reference to '_Unwind_SetIP'

I'm reaching out to the upstream rust team for advice.
These symbols are in libgcc/libgcc_s. Can you add -lgcc or -lgcc_s to command line and see if it fixes the problem you see?
Blockedon: 724628
Labels: libcxx OS-Chrome
Zach, It's not super urgent  since we libc++ roll won't happen before Decemeber.
Blockedon: -724628
Blocking: 724628
Status: Verified (was: Started)
Thanks a lot for fixing this!!

Sign in to add a comment