rust does not build with libc++ default in clang |
|||||
Issue descriptionRust 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.
,
Oct 30 2017
,
Oct 30 2017
,
Oct 31 2017
,
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++?
,
Oct 31 2017
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.
,
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.
,
Oct 31 2017
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?
,
Nov 1 2017
Zach, It's not super urgent since we libc++ roll won't happen before Decemeber.
,
Nov 4 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/bf955974fe474d8e2a15c7f1bd3bbd07b04dd5d5 commit bf955974fe474d8e2a15c7f1bd3bbd07b04dd5d5 Author: Zach Reizner <zachr@google.com> Date: Sat Nov 04 02:17:49 2017 dev-lang/rust: build rustc with default std c++ library BUG= chromium:779455 TEST=USE="default-libcxx" sudo emerge llvm && sudo emerge rust Change-Id: Id103e0a7b6325e06e65f2131c4b926beb249efc0 Reviewed-on: https://chromium-review.googlesource.com/748827 Commit-Ready: Zach Reizner <zachr@chromium.org> Tested-by: Zach Reizner <zachr@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> [add] https://crrev.com/bf955974fe474d8e2a15c7f1bd3bbd07b04dd5d5/dev-lang/rust/files/0006-rustbuild-Support-specifying-archiver-and-linker-exp.patch [rename] https://crrev.com/bf955974fe474d8e2a15c7f1bd3bbd07b04dd5d5/dev-lang/rust/rust-1.21.0-r4.ebuild [add] https://crrev.com/bf955974fe474d8e2a15c7f1bd3bbd07b04dd5d5/dev-lang/rust/files/0007-Don-t-use-target-s-linker-when-linking-build-scripts.patch
,
Nov 5 2017
Thanks a lot for fixing this!! |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by manojgupta@chromium.org
, Oct 30 2017