Skip to content
Snippets Groups Projects
Commit d5b63a85 authored by no name's avatar no name Committed by Ahmed Abd El Mawgood
Browse files

Revert "Fix compilation on Redox by removing use of access in ld_so"

This reverts commit d9bacaec.
parent c3ae8022
No related branches found
No related tags found
1 merge request!279Ld library path
......@@ -26,6 +26,7 @@ use crate::{
};
use super::{
access,
debug::{RTLDDebug, RTLDState, _dl_debug_state, _r_debug},
tcb::{Master, Tcb},
PAGE_SIZE,
......@@ -163,7 +164,20 @@ impl Linker {
if self.verbose {
println!("check {}", path);
}
return Ok(Some(self.load_recursive(name, &path)?));
let access = unsafe {
let path_c = CString::new(path.as_bytes()).map_err(|err| {
Error::Malformed(format!("invalid path '{}': {}", path, err))
})?;
// TODO: Use R_OK | X_OK
// We cannot use unix stdlib because errno is thead local variable
// and fs:[0] is not set yet.
access(path_c.as_ptr(), unistd::F_OK) == 0
};
if access {
return Ok(Some(self.load_recursive(name, &path)?));
}
}
Err(Error::Malformed(format!("failed to locate '{}'", name)))
......
......@@ -79,6 +79,12 @@ pub fn static_init(sp: &'static Stack) {
}
}
// Wrapper over the systemcall, Do not use outside of ld_so
pub unsafe fn access(path: *const c_char, mode: c_int) -> c_int {
let path = CStr::from_ptr(path);
syscall!(ACCESS, (path).as_ptr(), mode) as c_int
}
#[cfg(target_os = "linux")]
pub unsafe fn init(sp: &'static Stack) {
let mut tp = 0usize;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment