Skip to content
Snippets Groups Projects
  1. May 01, 2020
  2. Mar 13, 2020
  3. Mar 08, 2020
  4. Mar 01, 2020
  5. Feb 21, 2020
  6. Feb 12, 2020
  7. Nov 19, 2019
  8. Sep 12, 2019
  9. Sep 02, 2019
    • Alan Somers's avatar
      Deprecate AIO_LISTIO_MAX · 1be630f8
      Alan Somers authored
      This value can vary at runtime.  Applications should instead use
      sysconf(3) with _SC_AIO_LISTIO_MAX.
      1be630f8
    • Alan Somers's avatar
      Deprecate RLIM_NLIMITS · ac1e1240
      Alan Somers authored
      This constant is not stable across OS versions, so it cannot be used in
      any backwards- or forwards- compatible way.  It's typically used to size
      arrays in the kernel and in debugging utilities that are closely tied to
      the OS version.  Since libc is ignorant about OS versions, we shouldn't
      even be defining it.
      ac1e1240
  10. Aug 18, 2019
  11. Aug 17, 2019
  12. Aug 16, 2019
  13. Jul 27, 2019
  14. Jul 09, 2019
  15. Jul 05, 2019
  16. Jun 10, 2019
    • Bryant Mairs's avatar
      Switch to manual trait impls for sigevent · 7c265919
      Bryant Mairs authored
      sigevent structs on most platforms have padding or unused fields. Rather
      than display those in the Debug impl by deriving it, manually implement
      all extra_traits instead ignoring those fields.
      7c265919
  17. Jun 07, 2019
  18. May 29, 2019
  19. May 24, 2019
    • gnzlbg's avatar
      Add a FreeBSD 12 build job and test FreeBSD12 APIs · 7437d0a6
      gnzlbg authored
      This commits adds a second FreeBSD 12 build job,
      and splits the implementation of the FreeBSD module
      into two modules, one for FreeBSD 11, and one for FreeBSD 12.
      
      The FreeBSD 11 module is compiled always by default, and is
      mostly forward compatible with FreeBSD 12 systems.
      
      The FreeBSD 12 module is only built for now in libc's CI,
      and uses FreeBSD 12 data types and APIs, linking to symbols
      that are only available in FreeBSD 12.
      
      Basically, when LIBC_CI env variable is defined, and the host
      system is a FreeBSD 12 system, then the FreeBSD 12 module is
      automatically built and tested. Conditional compilation is done
      using a `cfg(freebsd12)` flag.
      
      This commit also re-enables many tests, and documents why
      some remain disabled.
      7437d0a6
    • gnzlbg's avatar
      Deprecate mach APIs: users should use the `mach` crate instead. · 09454fa7
      gnzlbg authored
      Closes #981 .
      09454fa7
  20. May 22, 2019
  21. Apr 05, 2019
  22. Mar 04, 2019
  23. Mar 03, 2019
  24. Feb 23, 2019
  25. Feb 22, 2019
    • gnzlbg's avatar
      Clean libc-test for apple targets · f5cbdbc2
      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.
      f5cbdbc2
  26. Feb 13, 2019
  27. Feb 07, 2019
    • 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
  28. Feb 05, 2019
  29. Feb 03, 2019
  30. Feb 02, 2019
  31. Jan 16, 2019
    • Alan Somers's avatar
      Fix CMSG_DATA(3) and friends on BSD · 8067378d
      Alan Somers authored
      PR #1098 added the CMSG_DATA(3) family of functions into libc.  Because
      they're defined as macros in C, they had to be rewritten as Rust
      functions for libc.  Also, they can't be tested in CI for the same
      reason.  But that PR erroneously used the same definitions in BSD as in
      Linux.
      
      This commit corrects the definitions for OSX, FreeBSD, DragonflyBSD,
      OpenBSD, and NetBSD.  I renamed a few variables and collapsed a few
      macros in order to combine the definitions where possible.
      
      Fixes #1210
      8067378d
  32. Jan 03, 2019
    • Alan Somers's avatar
      Fix uname on FreeBSD · 36baf932
      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
      36baf932
  33. Dec 27, 2018
Loading