Minor fixes for CloudABI ARM support
In the initial set of fixes for CloudABI, it looks like support for 32-bit ARM was left out, even though it is supported for C/C++. While there, fix up `c_char` for ARM64, which currently has the wrong sign.
Add time_t for CloudABI.
Even though this data type is not used by libstd in any platform
independent code, one of the unit tests in src/libstd/time/mod.rs refers
to it. Instead of making that unit test more complicated, simply add
time_t, matching the type used by the C library.
Even though this data type is not used by libstd in any platform
independent code, one of the unit tests in src/libstd/time/mod.rs refers
to it. Instead of making that unit test more complicated, simply add
time_t, matching the type used by the C library.
Add _SC_NPROCESSORS_ONLN for CloudABI.
This constant is not used by the C library, which is why I didn't add it
initially. It is, however, used by libtest to determine the parallelism
for the execution of tests.
This constant is not used by the C library, which is why I didn't add it
initially. It is, however, used by libtest to determine the parallelism
for the execution of tests.
Add support for CloudABI.
CloudABI is a sandboxed UNIX-like runtime environment, based on the
principle of capability-based security. As CloudABI is intended to be
cross-platform, the system call layer is specified here:
https://github.com/NuxiNL/cloudabi/blob/master/cloudabi.txt
From these definitions, we automatically generate C and Rust bindings.
The latter is published on crates.io:
https://crates.io/crates/cloudabi
My goal is to implement libstd for CloudABI in such a way that it uses
the C library as little as possible; only in places where it would ease
interfacing with C code (e.g., thread creation). In places where
constants in the C library are directly based on the CloudABI
specification (e.g., errnos), use the constants provided by the cloudabi
crate.
CloudABI is a sandboxed UNIX-like runtime environment, based on the
principle of capability-based security. As CloudABI is intended to be
cross-platform, the system call layer is specified here:
https://github.com/NuxiNL/cloudabi/blob/master/cloudabi.txt
From these definitions, we automatically generate C and Rust bindings.
The latter is published on crates.io:
https://crates.io/crates/cloudabi
My goal is to implement libstd for CloudABI in such a way that it uses
the C library as little as possible; only in places where it would ease
interfacing with C code (e.g., thread creation). In places where
constants in the C library are directly based on the CloudABI
specification (e.g., errnos), use the constants provided by the cloudabi
crate.
Change deprecated constants into hidden constants
rustc, an important libc consumer, has a policy that they can't use any
crates with deprecated symbols. Replace libc's two deprecated symbols
with hidden symbols instead.
rustc, an important libc consumer, has a policy that they can't use any
crates with deprecated symbols. Replace libc's two deprecated symbols
with hidden symbols instead.
Add additional aarch64 linux syscalls
I've noticed some syscalls are missing for aarch64 linux, I've added those I needed. The numbers have been taken from a raspberry pi 3.
Adds:
- `SYS_fcntl`
- `SYS_lseek`
- `SYS_newfstatat`
- `SYS_fstat`
- `SYS_mmap`
- `SYS_open`
- `SYS_stat`
- `SYS_lstat`
- `SYS_pipe`
- `SYS_getdents`
- `SYS_poll`
Add `net/if_utun.h` and `linux/if_tun.h` constants for macos and linux platform
Add `net/if_utun.h` constants for macos platform.
Add `linux/if_tun.h` constants for linux platform.