diff --git a/src/stdlib/src/lib.rs b/src/stdlib/src/lib.rs
index ade51a973a3d1d6d0927c00d867181b2dcd92089..49b3bfd434a6a048a4e2ea3410078501b267dd4c 100644
--- a/src/stdlib/src/lib.rs
+++ b/src/stdlib/src/lib.rs
@@ -39,7 +39,7 @@ pub extern "C" fn abs(i: c_int) -> c_int {
 }
 
 #[no_mangle]
-pub unsafe extern "C" fn atexit(func: extern "C" fn()) -> c_int {
+pub unsafe extern "C" fn atexit(func: Option<extern "C" fn()>) -> c_int {
     for i in 0..ATEXIT_FUNCS.len() {
         if ATEXIT_FUNCS[i] == 0 {
             ATEXIT_FUNCS[i] = func as usize;
@@ -66,7 +66,7 @@ pub extern "C" fn atol(s: *const c_char) -> c_long {
 }
 
 #[no_mangle]
-pub extern "C" fn bsearch(key: *const c_void, base: *const c_void, nel: size_t, width: size_t, compar: extern "C" fn(*const c_void, *const c_void) -> c_int) -> *mut c_void {
+pub extern "C" fn bsearch(key: *const c_void, base: *const c_void, nel: size_t, width: size_t, compar: Option<extern "C" fn(*const c_void, *const c_void)> -> c_int) -> *mut c_void {
     unimplemented!();
 }
 
@@ -265,7 +265,7 @@ pub extern "C" fn putenv(s: *mut c_char) -> c_int {
 }
 
 #[no_mangle]
-pub extern "C" fn qsort(base: *mut c_void, nel: size_t, width: size_t, compar: extern "C" fn(*const c_void, *const c_void) -> c_int) {
+pub extern "C" fn qsort(base: *mut c_void, nel: size_t, width: size_t, compar: Option<extern "C" fn(*const c_void, *const c_void)> -> c_int) {
     unimplemented!();
 }
 
diff --git a/src/todo/pthread/lib.rs b/src/todo/pthread/lib.rs
index d616ab9008a66fe02ba9559487c38e50602b4046..8ed6301e471f65e73ce62457b6302c5722a94003 100644
--- a/src/todo/pthread/lib.rs
+++ b/src/todo/pthread/lib.rs
@@ -215,7 +215,7 @@ pub extern "C" fn pthread_condattr_setpshared(
 pub extern "C" fn pthread_create(
     thread: *mut pthread_t,
     attr: *const pthread_attr_t,
-    start_routine: ::std::option::Option<unsafe extern "C" fn(arg1: *mut libc::c_void) -> *mut libc::c_void>,
+    start_routine: Option<unsafe extern "C" fn(arg1: *mut libc::c_void) -> *mut libc::c_void>,
     arg: *mut libc::c_void,
 ) -> libc::c_int {
     unimplemented!();
@@ -263,7 +263,7 @@ pub extern "C" fn pthread_join(thread: pthread_t, value_ptr: *mut *mut libc::c_v
 #[no_mangle]
 pub extern "C" fn pthread_key_create(
     key: *mut pthread_key_t,
-    destructor: ::std::option::Option<unsafe extern "C" fn(arg1: *mut libc::c_void)>,
+    destructor: Option<unsafe extern "C" fn(arg1: *mut libc::c_void)>,
 ) -> libc::c_int {
     unimplemented!();
 }
@@ -395,7 +395,7 @@ pub extern "C" fn pthread_mutexattr_settype(
 #[no_mangle]
 pub extern "C" fn pthread_once(
     once_control: *mut pthread_once_t,
-    init_routine: ::std::option::Option<unsafe extern "C" fn()>,
+    init_routine: Option<unsafe extern "C" fn()>,
 ) -> libc::c_int {
     unimplemented!();
 }
diff --git a/src/unistd/src/lib.rs b/src/unistd/src/lib.rs
index 66905beae6564fe1b05b95b962c00fa201242396..cf911b4f6cd020306c7a225fa28fa17a08c0e18c 100644
--- a/src/unistd/src/lib.rs
+++ b/src/unistd/src/lib.rs
@@ -310,7 +310,7 @@ pub extern "C" fn pread(fildes: c_int, buf: *mut c_void, nbyte: size_t, offset:
 }
 
 #[no_mangle]
-pub extern "C" fn pthread_atfork(prepare: extern "C" fn(), parent: extern "C" fn(), child: extern "C" fn()) -> c_int {
+pub extern "C" fn pthread_atfork(prepare: Option<extern "C" fn()>, parent: Option<extern "C" fn()>, child: Option<extern "C" fn()>) -> c_int {
     unimplemented!();
 }