mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 16:54:01 +00:00
rustc_codegen_ssa: fix get_rpath_relative_to_output panic when lib only contains file name
This commit is contained in:
parent
05965ae238
commit
5e802f07ba
@ -85,6 +85,11 @@ fn get_rpath_relative_to_output(config: &RPathConfig<'_>, lib: &Path) -> OsStrin
|
|||||||
// Strip filenames
|
// Strip filenames
|
||||||
let lib = lib.parent().unwrap();
|
let lib = lib.parent().unwrap();
|
||||||
let output = config.out_filename.parent().unwrap();
|
let output = config.out_filename.parent().unwrap();
|
||||||
|
|
||||||
|
// If output or lib is empty, just assume it locates in current path
|
||||||
|
let lib = if lib == Path::new("") { Path::new(".") } else { lib };
|
||||||
|
let output = if output == Path::new("") { Path::new(".") } else { output };
|
||||||
|
|
||||||
let lib = try_canonicalize(lib).unwrap();
|
let lib = try_canonicalize(lib).unwrap();
|
||||||
let output = try_canonicalize(output).unwrap();
|
let output = try_canonicalize(output).unwrap();
|
||||||
let relative = path_relative_from(&lib, &output)
|
let relative = path_relative_from(&lib, &output)
|
||||||
|
@ -57,6 +57,22 @@ fn test_rpath_relative() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_rpath_relative_issue_119571() {
|
||||||
|
let config = &mut RPathConfig {
|
||||||
|
libs: &[],
|
||||||
|
out_filename: PathBuf::from("rustc"),
|
||||||
|
has_rpath: true,
|
||||||
|
is_like_osx: false,
|
||||||
|
linker_is_gnu: true,
|
||||||
|
};
|
||||||
|
// Should not panic when out_filename only contains filename.
|
||||||
|
// Issue 119571
|
||||||
|
let _ = get_rpath_relative_to_output(config, Path::new("lib/libstd.so"));
|
||||||
|
// Should not panic when lib only contains filename.
|
||||||
|
let _ = get_rpath_relative_to_output(config, Path::new("libstd.so"));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_xlinker() {
|
fn test_xlinker() {
|
||||||
let args = rpaths_to_flags(vec!["a/normal/path".into(), "a,comma,path".into()]);
|
let args = rpaths_to_flags(vec!["a/normal/path".into(), "a,comma,path".into()]);
|
||||||
|
Loading…
Reference in New Issue
Block a user