Skip to content
Snippets Groups Projects
  1. May 21, 2019
  2. May 16, 2019
  3. Feb 13, 2019
  4. 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
  5. Dec 25, 2018
  6. Nov 22, 2018
  7. Jul 29, 2018
  8. Apr 11, 2018
  9. Apr 10, 2018
    • Mike Hommey's avatar
      Add PTHREAD_*_MUTEX_INITIALIZER_NP for glibc · d9013273
      Mike Hommey authored
      `pthread_mutex_t` varies across architectures, in several ways:
      - endianness alters the ordering of bytes, since the contents of the
        struct are larger than 8-bit.
      - its length varies.
      - the location of the mutex kind (`PTHREAD_MUTEX_RECURSIVE`,
        `PTHREAD_MUTEX_ERRORCHECK` or `PTHREAD_MUTEX_ADAPTIVE_NP`) varies
        between 32-bit and 64-bit: On 32-bit architectures, it is preceded by
        three int/unsigned int, while on 64-bit architectures, it is preceded
        by four of them.
      
      These initializers are only available from <pthread.h> when _GNU_SOURCE
      is defined.
      
      Relax the cfg_if check in ci/style.rs to allow #[cfg(target_endian)]
      tests.
      d9013273
    • Mike Hommey's avatar
      Add PTHREAD_MUTEX_ADAPTIVE_NP for glibc · 4355dfcf
      Mike Hommey authored
      4355dfcf
  10. Feb 25, 2018
  11. Feb 24, 2018
  12. Feb 22, 2018
  13. Jan 30, 2018
  14. Nov 07, 2017
  15. Nov 05, 2017
  16. Oct 31, 2017
  17. Oct 27, 2017
  18. Oct 20, 2017
  19. Oct 19, 2017
  20. Oct 18, 2017
  21. Sep 25, 2017
  22. Sep 21, 2017
  23. Aug 27, 2017
  24. Aug 26, 2017
  25. Jul 20, 2017
  26. Jul 12, 2017
  27. Jul 10, 2017
  28. Jul 09, 2017
  29. Jul 03, 2017
  30. Jul 02, 2017
  31. Jun 28, 2017
  32. Jun 27, 2017
Loading