Skip to content
Snippets Groups Projects
  1. Feb 20, 2019
  2. Feb 13, 2019
  3. 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
    • gnzlbg's avatar
      Check style using rustfmt and reformat · 0a5484ea
      gnzlbg authored
      0a5484ea
  4. Feb 03, 2019
  5. Nov 22, 2018
  6. Nov 21, 2018
    • Alex Crichton's avatar
      Prepare for being included via crates.io into std · 91bd079e
      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.
      91bd079e
    • gnzlbg's avatar
  7. Nov 20, 2018
  8. Nov 19, 2018
  9. Oct 04, 2018
  10. Sep 18, 2018
  11. Aug 02, 2018
  12. Jul 03, 2018
  13. Jun 08, 2018
  14. Jun 01, 2018
  15. Apr 21, 2018
  16. Apr 15, 2018
  17. Mar 18, 2018
    • Francis Gagné's avatar
      Rename the dox configuration option to cross_platform_docs · 18341fd2
      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.
      18341fd2
  18. Mar 10, 2018
    • bgermann's avatar
      Edit documentation · cf701686
      bgermann authored
      Add sparc64-unknown-linux-gnu and x86_64-sun-solaris.
      Remove aarch64-unknown-linux-musl.
      cf701686
  19. Feb 25, 2018
  20. Jan 12, 2018
  21. Jan 11, 2018
  22. Dec 27, 2017
    • Ed Schouten's avatar
      Add support for CloudABI. · 510cb2f7
      Ed Schouten authored
      CloudABI is a sandboxed UNIX-like runtime environment, based on the
      principle of capability-based security. As CloudABI is intended to be
      cross-platform, the system call layer is specified here:
      
          https://github.com/NuxiNL/cloudabi/blob/master/cloudabi.txt
      
      From these definitions, we automatically generate C and Rust bindings.
      The latter is published on crates.io:
      
          https://crates.io/crates/cloudabi
      
      My goal is to implement libstd for CloudABI in such a way that it uses
      the C library as little as possible; only in places where it would ease
      interfacing with C code (e.g., thread creation). In places where
      constants in the C library are directly based on the CloudABI
      specification (e.g., errnos), use the constants provided by the cloudabi
      crate.
      510cb2f7
  23. Nov 21, 2017
  24. Nov 15, 2017
  25. Nov 02, 2017
    • Alex Crichton's avatar
      Compile an empty library on wasm32 non-Emscripten · d9933b77
      Alex Crichton authored
      In preparation for eventually having a non-Emscripten based wasm32 target, this
      commit makes `libc` the crate an empty library on wasm32 targets that are not
      with `target_os = "emscripten"`. This may eventually get filled out over time,
      but for now it's all empty!
      d9933b77
  26. Sep 17, 2017
  27. Sep 12, 2017
Loading