diff --git a/include/errno.h b/include/errno.h new file mode 100644 index 0000000000000000000000000000000000000000..f1761777c5bd1cdff39b0b42764baac82aee1c12 --- /dev/null +++ b/include/errno.h @@ -0,0 +1 @@ +extern int errno; diff --git a/src/platform/src/lib.rs b/src/platform/src/lib.rs index 63fc300c1c2eb97efe0cde33ed580685c1869ae7..0719f8b84307ba8e69946064d4bc8347a750dbcc 100644 --- a/src/platform/src/lib.rs +++ b/src/platform/src/lib.rs @@ -29,6 +29,7 @@ use core::fmt; use types::*; #[thread_local] +#[no_mangle] pub static mut errno: c_int = 0; pub unsafe fn c_str(s: *const c_char) -> &'static [u8] { diff --git a/tests/error.c b/tests/error.c new file mode 100644 index 0000000000000000000000000000000000000000..f904b7349bbaac12d1b6593f25ecd8860e909dab --- /dev/null +++ b/tests/error.c @@ -0,0 +1,8 @@ +#include <unistd.h> +#include <stdio.h> +#include <errno.h> + +int main(int argc, char** argv) { + chdir("nonexistent"); + printf("errno: %d\n", errno); +}