Changes:
* Add kqueue1 to NetBSD
* Add Android items from "sys/system_properties.h"
* Add new header to the android header files list
* Add dl_iterate_phdr to Android
* Update dl_phdr_info definition to more closely match header files
* linux: add syncfs(2)
* Add macos clonefile functions
* Add RLIM_NLIMITS constant as alias of RLIMIT_NLIMITS on linux_like
* Add RLIM_NLIMITS on android
* Unified Linux TCP socket options
Add regression test infrastructure
Please the commit messages for details.
I still need to add lists for the following targets, but I got the major ones I think.
TODO:
* aarch64-unknown-hermit
* x86_64-unknown-hermit
* x86_64-pc-solaris
* x86_64-sun-solaris
* sparcv9-sun-solaris
* x86_64-fortanix-unknown-sgx
* x86_64-unknown-illumos
* asmjs-unknown-emscripten
* wasm32-unknown-emscripten
* wasm32-unknown-unknown
* wasm32-wasi
* Check symbols added after commit ed45c2649b.
TODO: add a bit to the contributing guide about adding to these lists.
Closes#2104.
This first step add the infrastructure to test if libc follows semantic
versioning.
In the build step it creates a test file which imports all functions,
constants, etc. that are expected to be public. This file is generated
from the files in the (not yet included) semver directory. These files
include the function and constants expected to be public per target
family, vendor, OS, etc.
See the do_semver function in the build file of libc-test for the
details.
Since these are defined in C as macros, they must be reimplemented in
libc as Rust functions. They're hard to get exactly right, and they
vary from platform to platform. The test builds custom C code that uses
the real macros, and compares its output to the Rust versions' output
for various inputs.
Skip the CMSG_NXTHDR test on sparc64 linux because it hits a Bus Error.
Issue #1239
Skip the entire cmsg test program on s390x because it dumps core
seemingly before the kernel finishes booting.
Issue #1240
Rebase of #610 and also move emscripten up much higher in the hierarchy to
ensure that it doesn't have too much of a ripple effect on other platforms.
This involved moving down a good number of definitions, but hopefully was done
with care to not break anything!
We now create an additional binary `linux_fcntl` for testing this
since there are header conflicts when including all necessary headers.
This binary is run on all platforms even though it's empty on all non-
Android/non-Linux platforms.
Testing has been switched from a custom binary to using a runner-less
test (or pair of tests). This means that for local development a simple
`cd libc-test && cargo test` will run all the tests. CI has also been
updated here to reflect that.