Skip to content
Snippets Groups Projects
  1. Feb 13, 2019
  2. Feb 12, 2019
  3. Feb 11, 2019
    • Jason King's avatar
      Rename solaris dir to solarish to indicate it's including both Solaris · 9638d0de
      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>
      9638d0de
  4. Feb 09, 2019
  5. Feb 08, 2019
    • bors's avatar
      Auto merge of #1247 - gnzlbg:build_all_platforms, r=gnzlbg · ff97bdb0
      bors authored
      Build all platforms
      
      cc @alexcrichton this needs a more thorough review. It turns out libc failed to build on a lot of older Rust versions for various reasons and platforms, so it took a while to fix the build on all of them.
      ff97bdb0
  6. Feb 07, 2019
    • gnzlbg's avatar
      Align Rust-version support table of the README · 5c796c58
      gnzlbg authored
      5c796c58
    • gnzlbg's avatar
      Document platform support in the README · ca12725d
      gnzlbg authored
      ca12725d
    • gnzlbg's avatar
      Fix build on all platforms · a17a91cd
      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 .
      a17a91cd
    • gnzlbg's avatar
      Build all platforms in CI · 8f1acf46
      gnzlbg authored
      This commit adds a `ci/build.sh` script that checks that libc builds correctly
      for some common configurations (`--no-default-features`, `default`,
      `extra_traits`) on most targets supported by Rust since Rust 1.13.0 (the oldest
      Rust version that libc supports).
      
      The build matrix is refactored into two stages.
      
      The first stage is called `tools-and-build-and-tier1` and it aims to discover
      issues quickly by running the documentation and linter builds, as well as
      checking that the library builds correctly on all targets in all supported
      channels and "problematic" Rust versions; Rust versions adding major new
      features like `repr(align)`, `union`, etc. This first stage also runs
      libc-test for the tier-1 targets on linux and osx. These builds finish
      quickly because no emulation is necessary.
      
      The second stage is called `tier2` and it runs libc-test for all other targets
      for which we are currently able to do so.
      
      Closes #1229 .
      8f1acf46
    • bors's avatar
      Auto merge of #1246 - gnzlbg:rustfmt_style, r=gnzlbg · a2bf9f1d
      bors authored
      Check style using rustfmt and reformat
      
      A couple of recent PRs attempt to reformat the library using rustfmt and run into issues against libc's style checker because rustfmt default settings differ.
      
      This PR uses the rustfmt-preview from nightly to check that the library is appropriately formatted, adding a style as similar to libc's style as possible, so that both style checkers work properly simultaneously.
      a2bf9f1d
    • gnzlbg's avatar
      Check style using rustfmt and reformat · 0a5484ea
      gnzlbg authored
      0a5484ea
  7. Feb 05, 2019
    • bors's avatar
      Auto merge of #1235 - asomers:cmsg_osx, r=gnzlbg · f9b96ee6
      bors authored
      Fix cmsg(3) bugs for musl and OSX
      
      This PR fixes bugs in the cmsg(3) family of functions for Linux/musl and OSX, introduced by PR #1098 and PR #1212 .  It also adds an integration test which hopefully will validate these functions on every platform.
      f9b96ee6
    • Alan Somers's avatar
      Add an integration test for the cmsg(3) functions. · 38cf5b15
      Alan Somers authored
      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
      38cf5b15
    • Alan Somers's avatar
      eddc8d34
    • Alan Somers's avatar
      Fix Linux's CMSG_NXTHDR and CMSG_SPACE definitions. · 4300666b
      Alan Somers authored
      This is an error from PR #1098.  The wrong definitions coincidentally
      work on Linux/glibc, but fail on Linux/musl.
      4300666b
    • Alan Somers's avatar
      Fix CMSG_NXTHDR for OSX. · 73df81fc
      Alan Somers authored
      This was an oversight from PR #1212.  It's been revealed by the new cmsg
      test.
      73df81fc
    • bors's avatar
      Auto merge of #1234 - gnzlbg:android_runtest, r=gnzlbg · be1a8ded
      bors authored
      Update runtest-android
      
      Keep the implementation in sync with packed_simd and stdsimd.
      be1a8ded
    • bors's avatar
      Auto merge of #1217 - Susurrus:rfc_2235, r=gnzlbg · 942f6ae7
      bors authored
      RFC 2235 - Implement PartialEq,Eq,Hash,Debug for all types
      
      First pass at implementing [RFC2235](https://github.com/rust-lang/rfcs/blob/master/text/2235-libc-struct-traits.md). I just started with `PartialEq`/`Eq` and tested locally on my x64 Linux system. Definitely going to run into other types for other platforms that need this treatment, but thought I'd start small.
      
      Open question is whether this should also rely on the `align` feature, which should improve which types can be auto-derived versus manually implemented (as it removed a lot of odd-sized padding arrays). My first pass here doesn't do that, but I might test it out to see if it does simplify quite a few structs. I think it might also be nice to have as it makes it easier for contributors to add new structs.
      
      Part of rust-lang/rust#57715
      942f6ae7
  8. Feb 04, 2019
  9. Feb 03, 2019
  10. Feb 02, 2019
Loading