diff options
| -rw-r--r-- | crates/proc-macro-api/src/version.rs | 4 | ||||
| -rw-r--r-- | crates/proc-macro-srv/src/abis/mod.rs | 5 | ||||
| -rw-r--r-- | crates/proc-macro-srv/src/dylib.rs | 5 |
3 files changed, 7 insertions, 7 deletions
diff --git a/crates/proc-macro-api/src/version.rs b/crates/proc-macro-api/src/version.rs index 8cef971f332..030531b80d7 100644 --- a/crates/proc-macro-api/src/version.rs +++ b/crates/proc-macro-api/src/version.rs @@ -16,6 +16,8 @@ pub struct RustCInfo { pub channel: String, pub commit: Option<String>, pub date: Option<String>, + // something like "rustc 1.58.1 (db9d1b20b 2022-01-20)" + pub version_string: String, } /// Read rustc dylib information @@ -68,7 +70,7 @@ pub fn read_dylib_info(dylib_path: &AbsPath) -> io::Result<RustCInfo> { } let version = (version_numbers[0], version_numbers[1], version_numbers[2]); - Ok(RustCInfo { version, channel, commit, date }) + Ok(RustCInfo { version, channel, commit, date, version_string: ver_str }) } /// This is used inside read_version() to locate the ".rustc" section diff --git a/crates/proc-macro-srv/src/abis/mod.rs b/crates/proc-macro-srv/src/abis/mod.rs index a59da0f6b10..bcf3f1184cf 100644 --- a/crates/proc-macro-srv/src/abis/mod.rs +++ b/crates/proc-macro-srv/src/abis/mod.rs @@ -77,14 +77,13 @@ impl Abi { lib: &Library, symbol_name: String, info: RustCInfo, - #[cfg_attr(not(feature = "sysroot-abi"), allow(unused_variables))] version_string: String, ) -> Result<Abi, LoadProcMacroDylibError> { // the sysroot ABI relies on `extern proc_macro` with unstable features, // instead of a snapshot of the proc macro bridge's source code. it's only // enabled if we have an exact version match. #[cfg(feature = "sysroot-abi")] { - if version_string == RUSTC_VERSION_STRING { + if info.version_string == RUSTC_VERSION_STRING { let inner = unsafe { Abi_Sysroot::from_lib(lib, symbol_name) }?; return Ok(Abi::AbiSysroot(inner)); } @@ -104,7 +103,7 @@ impl Abi { } else { panic!( "sysroot ABI mismatch: dylib rustc version (read from .rustc section): {:?} != proc-macro-srv version (read from 'rustc --version'): {:?}", - version_string, RUSTC_VERSION_STRING + info.version_string, RUSTC_VERSION_STRING ); } } diff --git a/crates/proc-macro-srv/src/dylib.rs b/crates/proc-macro-srv/src/dylib.rs index 6439fb2130b..2b6c070fece 100644 --- a/crates/proc-macro-srv/src/dylib.rs +++ b/crates/proc-macro-srv/src/dylib.rs @@ -12,7 +12,7 @@ use libloading::Library; use memmap2::Mmap; use object::Object; use paths::AbsPath; -use proc_macro_api::{read_dylib_info, read_version, ProcMacroKind}; +use proc_macro_api::{read_dylib_info, ProcMacroKind}; use super::abis::Abi; @@ -122,10 +122,9 @@ impl ProcMacroLibraryLibloading { invalid_data_err(format!("expected an absolute path, got {}", file.display())) })?; let version_info = read_dylib_info(abs_file)?; - let version_string = read_version(abs_file)?; let lib = load_library(file).map_err(invalid_data_err)?; - let abi = Abi::from_lib(&lib, symbol_name, version_info, version_string)?; + let abi = Abi::from_lib(&lib, symbol_name, version_info)?; Ok(ProcMacroLibraryLibloading { _lib: lib, abi }) } } |
