diff --git a/src/crt0/src/lib.rs b/src/crt0/src/lib.rs index ce61529cc46384e66b4b31c83874e5f21c5ffa5f..ceb003f96d6d443504f8dba12f29901da6807768 100644 --- a/src/crt0/src/lib.rs +++ b/src/crt0/src/lib.rs @@ -41,7 +41,7 @@ pub unsafe extern "C" fn _start() { #[repr(C)] pub struct Stack { argc: isize, - argv0: *const u8, + argv0: *const c_char, } impl Stack { @@ -49,12 +49,12 @@ impl Stack { self.argc } - fn argv(&self) -> *const *const u8 { - &self.argv0 as *const *const u8 + fn argv(&self) -> *const *const c_char { + &self.argv0 as *const _ } - fn envp(&self) -> *const *const u8 { - unsafe { self.argv().offset(self.argc()) } + fn envp(&self) -> *const *const c_char { + unsafe { self.argv().offset(self.argc() + 1) } } } @@ -83,7 +83,7 @@ pub unsafe extern "C" fn _start_rust(sp: &'static Stack) -> ! { let buf = platform::alloc(len as usize + 1) as *mut c_char; for i in 0..=len { - *buf.offset(i) = *item.offset(i) as c_char; + *buf.offset(i) = *item.offset(i); } platform::inner_environ.push(buf); } @@ -97,8 +97,8 @@ pub unsafe extern "C" fn _start_rust(sp: &'static Stack) -> ! { platform::exit(main( argc, - argv as *const *const c_char, - envp as *const *const c_char, + argv, + envp )); } diff --git a/src/platform/src/redox/mod.rs b/src/platform/src/redox/mod.rs index 24637c02ab1c09b99fcab3890221486d7112be5c..19c02b306b518e8d0472e39ba4a4571e0b2f97d0 100644 --- a/src/platform/src/redox/mod.rs +++ b/src/platform/src/redox/mod.rs @@ -201,7 +201,7 @@ pub unsafe extern "C" fn execve( ) -> c_int { use alloc::Vec; - let fd = match RawFile::open(path, 0, 0) { + let fd = match RawFile::open(path, O_RDONLY as c_int, 0) { Ok(fd) => fd, Err(_) => return -1 };