- Apr 17, 2019
-
-
Jason King authored
defined for 32-bit Solarish targets. Since rust doesn't currently support 32-bit Solarish targets, the line is both unnecessary and wrong.
-
- Feb 22, 2019
-
-
gnzlbg authored
This cleans up the build.rs of `libc-test` for apple targets. I wanted to update the docker containers of some targets so that we can start testing newer currently-skipped APIs properly, but it is impossible to figure out which headers and APIs are skipped for each target. This PR separates the testing of apple targets into its own self-contained function. This allows seeing exactly which headers are included, and which items are skipped. A lot of work will be required to separate the testing of all major platforms and make the script reasonable. During the clean up, I discovered that, at least for apple targets, deprecated but not removed APIs are not tested. I re-enabled testing for those, and fixed `daemon`, which was not properly linking its symbol. I also added the `#[deprecated]` attribute to the `#[deprecated]` APIs of the apple targets. The attribute is available since Rust 1.9.0 and the min. Rust version we support is Rust 1.13.0. Many other APIs are also currently not tested "because they are weird" which I interpret as "the test failed for an unknown reason", as a consequence: * the signatures of execv, execve, and execvp are incorrect (see https://github.com/rust-lang/libc/issues/1272) * the `sig_t` type is called `sighandler_t` in libc for some reason: https://github.com/rust-lang/libc/issues/1273 This probably explains why some other things, like the `sa_handler`/`sa_sigaction` fields of `sigaction` were skipped. The field is actually a union, which can be either a `sig_t` for the `sa_handler` field, or some other type for the `sa_sigaction` field, but because the distinction was not made, the field was not checked. The latest ctest version can check volatile pointers, so a couple of skipped tests are now tested using this feature.
-
- Feb 20, 2019
-
-
gnzlbg authored
-
- Feb 13, 2019
-
-
gnzlbg authored
-
- Feb 12, 2019
-
-
Jason King authored
-
- Feb 11, 2019
-
-
Jason King authored
and Solaris-derived distributions (i.e. illumos). In addition, a number of missing definitions (and compatability functions) that have been found necessary to run a number of rust binaries on illumos have been added. Portions were contributed by Mike Zeller <mike@mikezeller.net>
-
- Feb 07, 2019
-
-
gnzlbg authored
This PR fixes the build on all platforms and all Rust version down to the minimum Rust version supported by libc: Rust 1.13.0. The `build.rs` is extended with logic to detect the newer Rust features used by `libc` since Rust 1.13.0: * Rust 1.19.0: `untagged_unions`. APIs using untagged unions are gated on `cfg(libc_unions)` and not available on older Rust versions. * Rust 1.25.0: `repr(align)`. Because `repr(align)` cannot be parsed by older Rust versions, all uses of `repr(align)` are split into `align.rs` and `no_align.rs` modules, which are gated on the `cfg(libc_align)` at the top level. These modules sometimes contain macros that are expanded at the top level to avoid privacy issues (`pub(crate)` is not available in older Rust versions). Closes #1242 . * Rust : `const` `mem::size_of`. These uses are worked around with hardcoded constants on older Rust versions. Also, `repr(packed)` structs cannot automatically `derive()` some traits like `Debug`. These have been moved into `s_no_extra_traits!` and the lint of missing `Debug` implementations on public items is silenced for these. We can manually implement the `extra_traits` for these in a follow up PR. This is tracked in #1243. Also, `extra_traits` does not enable `align` manually anymore. Since `f64::to_bits` is not available in older Rust versions, its usage has been replaced with a `transmute` to an `u64` which is what that method does under the hood. Closes #1232 .
-
- Feb 03, 2019
-
-
Bryant Mairs authored
-
Bryant Mairs authored
This was not compile-tested on all platforms, but instead all `pub enum` types had a `Debug` impl derived for them.
-
- Jan 03, 2019
-
-
Alan Somers authored
On FreeBSD, uname is an inline function. The uname that is present in libc.so is for FreeBSD 1.0 compatibility. It expects a buffer of a different size. Fixes #1190 Reported-by: Alex Zepeda
-
- Dec 15, 2018
-
-
Benjamin Saunders authored
-
Benjamin Saunders authored
-
- Dec 14, 2018
-
-
Benjamin Saunders authored
-
- Dec 05, 2018
-
-
xd009642 authored
-
- Nov 27, 2018
-
-
gnzlbg authored
-
- Nov 21, 2018
-
-
Tom Parker-Shemilt authored
-
Alex Crichton authored
This commit prepares the `libc` crate to be included directly into the standard library via crates.io. More details about this can be found on rust-lang/rust#56092, but the main idea is that this crate now depends on core/compiler-builtins explicitly (but off-by-default). The main caveat here is that this activates `no_core` when building as part of libstd, which means that it needs to explicitly have an `iter` and `option` module for the expansion of `for` loops to work.
-
gnzlbg authored
-
Tom Parker-Shemilt authored
-
Tom Parker-Shemilt authored
-
- Nov 20, 2018
-
-
Tom Parker-Shemilt authored
-
Tom Parker-Shemilt authored
-
- Oct 17, 2018
-
-
Julio Merino authored
-
- Aug 01, 2018
-
-
Alex Crichton authored
Looks like Travis has moved on from our old images, so we're forced to update.
-
- Jul 31, 2018
-
-
Colin Finck authored
-
- Jul 30, 2018
-
-
https://hermitcore.orgColin Finck authored
HermitCore is based on lwIP, newlib, and pthread-embedded.
-
- Jul 29, 2018
-
-
Linus Färnstrand authored
-
- Jul 21, 2018
-
-
Amanieu d'Antras authored
This reverts commit 920cfeac.
-
- Jul 12, 2018
-
-
Amanieu d'Antras authored
-
- Jul 10, 2018
-
-
Alex Crichton authored
It looks like this was a mistake of #930 but should be easy to fix!
-
- Jul 08, 2018
-
-
Amanieu d'Antras authored
-
- Jun 08, 2018
-
-
Scott Lamb authored
Fixes #1017 I moved it up to src/unix/mod.rs, as it's specified in POSIX.1-2008 and appears to be implemented on every Unix-like system. The symbol names on macOS appear similar to those for opendir; I found them via the commands below. I tested the x86_64 version; fdopendir$INODE64 worked as expected. $ nm -arch x86_64 /usr/lib/system/libsystem_c.dylib | grep fdopendir 000000000007ea6d T _fdopendir 000000000002ba97 T _fdopendir$INODE64 $ nm -arch i386 /usr/lib/system/libsystem_c.dylib | grep fdopendir 00082d1e T _fdopendir 0002b528 T _fdopendir$INODE64$UNIX2003 00082d1e T _fdopendir$UNIX2003
-
- Jun 04, 2018
-
-
Andrew Cann authored
-
- Jun 01, 2018
-
-
Andrew Cann authored
-
Andrew Cann authored
-
- Mar 18, 2018
-
-
Francis Gagné authored
The libc crate is used as a dependency of the Rust compiler. Its build system passes `--cfg dox` to all crates when generating their documentation. libc's documentation is generated when the build system is asked to generate the compiler documentation because `cargo doc` automatically documents all dependencies. When the dox configuration option is enabled, libc disables its dependency on the core crate and provides the necessary definitions itself. The dox configuration option is meant for generating documentation for a multitude of targets even if the core crate for that target is not installed. However, when documenting the compiler, it's not necessary to do that; we can just use core or std as usual. This change is motivated by the changes made to the compiler in rust-lang/rust#48171. With these changes, it's necessary to provide implementations of the Clone and Copy traits for some primitive types in the library that defines these traits (previously, these implementations were provided by the compiler). Normally, these traits (and thus the implementations) are provided by core, so any crate that uses `#![no_core]` must now provide its own copy of the implementations. Because libc doesn't provide its own copy of the implementations yet, and because the compiler's build system passes `--cfg dox` to libc, generating the documentation for the compiler fails when generating documentation for libc. By renaming the configuration option, libc will use core or std and will thus have the necessary definitions for the documentation to be generated successfully.
-
- Mar 01, 2018
-
-
Bryan Drewery authored
This follows the same method as other platforms like OSX and NetBSD. This will fix rustup and building from git (once libc is updated for bootstrap) on FreeBSD12 post-ino64 in https://github.com/freebsd/freebsd/commit/f713b08c027de35b0b8ed9990eabc32e100bee7a. It also avoids having to hotpatch the stage0 compiler, and HOME/.cargo libc files on FreeBSD12 to build rust. The only real pitfall is that this will prevent interaction with inodes that have an ino_t above the 32-bit limit due to truncation. On the other hand Rust won't work at all on 12 without doing this currently. In general it should not be a problem for users and if they need 64-bit ino_t they can use a patched libc, rather than the current state of affairs in requiring a patched libc to use Rust on 12. A better, or complementary, approach would be something like proposed in https://github.com/rust-lang/rfcs/pull/2048 to allow targetting a specific version of FreeBSD. This would allow Rust to default to this compatibility mode by targetting FreeBSD10 and still allow targetting FreeBSD12 for 64-bit ino_t. The symbol versions used were taken from the old version in https://github.com/freebsd/freebsd/commit/f713b08c027de35b0b8ed9990eabc32e100bee7a#diff-61a32fcfb7ecd4517665fed591813c57 and https://github.com/freebsd/freebsd/commit/f713b08c027de35b0b8ed9990eabc32e100bee7a#diff-7f67ccf8b5f44ff2f54eaab0207abb8d. The scope of functions versioned here differs from other platforms as not all structs were modified that were on others, such as DIR for `opendir`, `telldir`, etc. Only functions using dirent, stat, glob_t, and dev_t need the changes. Fixes https://github.com/rust-lang/rust/issues/42681
-
- Feb 28, 2018