When we cannot load libgccjit.so, show the paths that were tried
This commit is contained in:
parent
09c34cbac3
commit
f0418b3461
1 changed files with 22 additions and 3 deletions
25
src/lib.rs
25
src/lib.rs
|
|
@ -98,7 +98,6 @@ use rustc_middle::ty::TyCtxt;
|
|||
use rustc_middle::util::Providers;
|
||||
use rustc_session::Session;
|
||||
use rustc_session::config::{OptLevel, OutputFilenames};
|
||||
use rustc_session::filesearch::make_target_lib_path;
|
||||
use rustc_span::Symbol;
|
||||
use rustc_target::spec::{Arch, RelocModel};
|
||||
use tempfile::TempDir;
|
||||
|
|
@ -207,18 +206,38 @@ impl CodegenBackend for GccCodegenBackend {
|
|||
}
|
||||
|
||||
fn init(&self, sess: &Session) {
|
||||
fn file_path(sysroot_path: &Path, sess: &Session) -> PathBuf {
|
||||
let rustlib_path =
|
||||
rustc_target::relative_target_rustlib_path(sysroot_path, &sess.host.llvm_target);
|
||||
sysroot_path
|
||||
.join(rustlib_path)
|
||||
.join("codegen-backends")
|
||||
.join("lib")
|
||||
.join(sess.target.llvm_target.as_ref())
|
||||
.join("libgccjit.so")
|
||||
}
|
||||
|
||||
// We use all_paths() instead of only path() in case the path specified by --sysroot is
|
||||
// invalid.
|
||||
// This is the case for instance in Rust for Linux where they specify --sysroot=/dev/null.
|
||||
for path in sess.opts.sysroot.all_paths() {
|
||||
let libgccjit_target_lib_file =
|
||||
make_target_lib_path(path, &sess.target.llvm_target).join("libgccjit.so");
|
||||
let libgccjit_target_lib_file = file_path(path, sess);
|
||||
if let Ok(true) = fs::exists(&libgccjit_target_lib_file) {
|
||||
load_libgccjit_if_needed(&libgccjit_target_lib_file);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if !gccjit::is_loaded() {
|
||||
let mut paths = vec![];
|
||||
for path in sess.opts.sysroot.all_paths() {
|
||||
let libgccjit_target_lib_file = file_path(path, sess);
|
||||
paths.push(libgccjit_target_lib_file);
|
||||
}
|
||||
|
||||
panic!("Could not load libgccjit.so. Attempted paths: {:#?}", paths);
|
||||
}
|
||||
|
||||
#[cfg(feature = "master")]
|
||||
{
|
||||
let target_cpu = target_cpu(sess);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue