mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-01 12:24:29 +00:00
Merge pull request #18981 from Fabian-Gruenbichler/proc-macro-srv-portability
proc-macro-srv: make usage of RTLD_DEEPBIND portable
This commit is contained in:
commit
46e2d6ec01
3 changed files with 10 additions and 3 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
|
@ -1377,6 +1377,7 @@ version = "0.0.0"
|
|||
dependencies = [
|
||||
"expect-test",
|
||||
"intern",
|
||||
"libc",
|
||||
"libloading",
|
||||
"memmap2",
|
||||
"object 0.33.0",
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ doctest = false
|
|||
|
||||
[dependencies]
|
||||
object.workspace = true
|
||||
libc.workspace = true
|
||||
libloading.workspace = true
|
||||
memmap2.workspace = true
|
||||
|
||||
|
|
|
|||
|
|
@ -28,11 +28,16 @@ fn load_library(file: &Utf8Path) -> Result<Library, libloading::Error> {
|
|||
|
||||
#[cfg(unix)]
|
||||
fn load_library(file: &Utf8Path) -> Result<Library, libloading::Error> {
|
||||
// not defined by POSIX, different values on mips vs other targets
|
||||
#[cfg(target_env = "gnu")]
|
||||
use libc::RTLD_DEEPBIND;
|
||||
use libloading::os::unix::Library as UnixLibrary;
|
||||
use std::os::raw::c_int;
|
||||
// defined by POSIX
|
||||
use libloading::os::unix::RTLD_NOW;
|
||||
|
||||
const RTLD_NOW: c_int = 0x00002;
|
||||
const RTLD_DEEPBIND: c_int = 0x00008;
|
||||
// MUSL and bionic don't have it..
|
||||
#[cfg(not(target_env = "gnu"))]
|
||||
const RTLD_DEEPBIND: std::os::raw::c_int = 0x0;
|
||||
|
||||
unsafe { UnixLibrary::open(Some(file), RTLD_NOW | RTLD_DEEPBIND).map(|lib| lib.into()) }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue