Skip to content
Snippets Groups Projects
  1. May 16, 2019
  2. Apr 19, 2019
  3. Apr 17, 2019
  4. 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
  5. Feb 20, 2019
  6. Feb 13, 2019
  7. Feb 12, 2019
  8. 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
  9. 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
  10. Feb 03, 2019
  11. 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
  12. Dec 15, 2018
  13. Dec 14, 2018
  14. Dec 05, 2018
  15. Nov 27, 2018
  16. Nov 21, 2018
  17. Nov 20, 2018
  18. Oct 17, 2018
  19. Aug 01, 2018
  20. Jul 31, 2018
  21. Jul 30, 2018
  22. Jul 29, 2018
  23. Jul 21, 2018
  24. Jul 12, 2018
  25. Jul 10, 2018
  26. Jul 08, 2018
  27. Jun 08, 2018
    • Scott Lamb's avatar
      add fdopendir on macOS · 322ba046
      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
      322ba046
  28. Jun 04, 2018
  29. Jun 01, 2018
Loading