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
}
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
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));
}
} 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
);
}
}
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;
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 })
}
}