12add0d91Sopenharmony_ci//! libc - Raw FFI bindings to platforms' system libraries
22add0d91Sopenharmony_ci//!
32add0d91Sopenharmony_ci//! [Documentation for other platforms][pd].
42add0d91Sopenharmony_ci//!
52add0d91Sopenharmony_ci//! [pd]: https://rust-lang.github.io/libc/#platform-specific-documentation
62add0d91Sopenharmony_ci#![crate_name = "libc"]
72add0d91Sopenharmony_ci#![crate_type = "rlib"]
82add0d91Sopenharmony_ci#![allow(
92add0d91Sopenharmony_ci    renamed_and_removed_lints, // Keep this order.
102add0d91Sopenharmony_ci    unknown_lints, // Keep this order.
112add0d91Sopenharmony_ci    bad_style,
122add0d91Sopenharmony_ci    overflowing_literals,
132add0d91Sopenharmony_ci    improper_ctypes,
142add0d91Sopenharmony_ci    // This lint is renamed but we run CI for old stable rustc so should be here.
152add0d91Sopenharmony_ci    redundant_semicolon,
162add0d91Sopenharmony_ci    redundant_semicolons,
172add0d91Sopenharmony_ci    unused_macros,
182add0d91Sopenharmony_ci    unused_macro_rules,
192add0d91Sopenharmony_ci)]
202add0d91Sopenharmony_ci#![cfg_attr(libc_deny_warnings, deny(warnings))]
212add0d91Sopenharmony_ci// Attributes needed when building as part of the standard library
222add0d91Sopenharmony_ci#![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, no_core))]
232add0d91Sopenharmony_ci#![cfg_attr(libc_thread_local, feature(thread_local))]
242add0d91Sopenharmony_ci// Enable extra lints:
252add0d91Sopenharmony_ci#![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))]
262add0d91Sopenharmony_ci#![deny(missing_copy_implementations, safe_packed_borrows)]
272add0d91Sopenharmony_ci#![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)]
282add0d91Sopenharmony_ci#![cfg_attr(feature = "rustc-dep-of-std", no_core)]
292add0d91Sopenharmony_ci#![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))]
302add0d91Sopenharmony_ci
312add0d91Sopenharmony_ci#[macro_use]
322add0d91Sopenharmony_cimod macros;
332add0d91Sopenharmony_ci
342add0d91Sopenharmony_cicfg_if! {
352add0d91Sopenharmony_ci    if #[cfg(feature = "rustc-dep-of-std")] {
362add0d91Sopenharmony_ci        extern crate rustc_std_workspace_core as core;
372add0d91Sopenharmony_ci        #[allow(unused_imports)]
382add0d91Sopenharmony_ci        use core::iter;
392add0d91Sopenharmony_ci        #[allow(unused_imports)]
402add0d91Sopenharmony_ci        use core::ops;
412add0d91Sopenharmony_ci        #[allow(unused_imports)]
422add0d91Sopenharmony_ci        use core::option;
432add0d91Sopenharmony_ci    }
442add0d91Sopenharmony_ci}
452add0d91Sopenharmony_ci
462add0d91Sopenharmony_cicfg_if! {
472add0d91Sopenharmony_ci    if #[cfg(libc_priv_mod_use)] {
482add0d91Sopenharmony_ci        #[cfg(libc_core_cvoid)]
492add0d91Sopenharmony_ci        #[allow(unused_imports)]
502add0d91Sopenharmony_ci        use core::ffi;
512add0d91Sopenharmony_ci        #[allow(unused_imports)]
522add0d91Sopenharmony_ci        use core::fmt;
532add0d91Sopenharmony_ci        #[allow(unused_imports)]
542add0d91Sopenharmony_ci        use core::hash;
552add0d91Sopenharmony_ci        #[allow(unused_imports)]
562add0d91Sopenharmony_ci        use core::num;
572add0d91Sopenharmony_ci        #[allow(unused_imports)]
582add0d91Sopenharmony_ci        use core::mem;
592add0d91Sopenharmony_ci        #[doc(hidden)]
602add0d91Sopenharmony_ci        #[allow(unused_imports)]
612add0d91Sopenharmony_ci        use core::clone::Clone;
622add0d91Sopenharmony_ci        #[doc(hidden)]
632add0d91Sopenharmony_ci        #[allow(unused_imports)]
642add0d91Sopenharmony_ci        use core::marker::{Copy, Send, Sync};
652add0d91Sopenharmony_ci        #[doc(hidden)]
662add0d91Sopenharmony_ci        #[allow(unused_imports)]
672add0d91Sopenharmony_ci        use core::option::Option;
682add0d91Sopenharmony_ci    } else {
692add0d91Sopenharmony_ci        #[doc(hidden)]
702add0d91Sopenharmony_ci        #[allow(unused_imports)]
712add0d91Sopenharmony_ci        pub use core::fmt;
722add0d91Sopenharmony_ci        #[doc(hidden)]
732add0d91Sopenharmony_ci        #[allow(unused_imports)]
742add0d91Sopenharmony_ci        pub use core::hash;
752add0d91Sopenharmony_ci        #[doc(hidden)]
762add0d91Sopenharmony_ci        #[allow(unused_imports)]
772add0d91Sopenharmony_ci        pub use core::num;
782add0d91Sopenharmony_ci        #[doc(hidden)]
792add0d91Sopenharmony_ci        #[allow(unused_imports)]
802add0d91Sopenharmony_ci        pub use core::mem;
812add0d91Sopenharmony_ci        #[doc(hidden)]
822add0d91Sopenharmony_ci        #[allow(unused_imports)]
832add0d91Sopenharmony_ci        pub use core::clone::Clone;
842add0d91Sopenharmony_ci        #[doc(hidden)]
852add0d91Sopenharmony_ci        #[allow(unused_imports)]
862add0d91Sopenharmony_ci        pub use core::marker::{Copy, Send, Sync};
872add0d91Sopenharmony_ci        #[doc(hidden)]
882add0d91Sopenharmony_ci        #[allow(unused_imports)]
892add0d91Sopenharmony_ci        pub use core::option::Option;
902add0d91Sopenharmony_ci    }
912add0d91Sopenharmony_ci}
922add0d91Sopenharmony_ci
932add0d91Sopenharmony_cicfg_if! {
942add0d91Sopenharmony_ci    if #[cfg(windows)] {
952add0d91Sopenharmony_ci        mod fixed_width_ints;
962add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
972add0d91Sopenharmony_ci
982add0d91Sopenharmony_ci        mod windows;
992add0d91Sopenharmony_ci        pub use windows::*;
1002add0d91Sopenharmony_ci    } else if #[cfg(target_os = "fuchsia")] {
1012add0d91Sopenharmony_ci        mod fixed_width_ints;
1022add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1032add0d91Sopenharmony_ci
1042add0d91Sopenharmony_ci        mod fuchsia;
1052add0d91Sopenharmony_ci        pub use fuchsia::*;
1062add0d91Sopenharmony_ci    } else if #[cfg(target_os = "switch")] {
1072add0d91Sopenharmony_ci        mod fixed_width_ints;
1082add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1092add0d91Sopenharmony_ci
1102add0d91Sopenharmony_ci        mod switch;
1112add0d91Sopenharmony_ci        pub use switch::*;
1122add0d91Sopenharmony_ci    } else if #[cfg(target_os = "psp")] {
1132add0d91Sopenharmony_ci        mod fixed_width_ints;
1142add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1152add0d91Sopenharmony_ci
1162add0d91Sopenharmony_ci        mod psp;
1172add0d91Sopenharmony_ci        pub use psp::*;
1182add0d91Sopenharmony_ci    } else if #[cfg(target_os = "vxworks")] {
1192add0d91Sopenharmony_ci        mod fixed_width_ints;
1202add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1212add0d91Sopenharmony_ci
1222add0d91Sopenharmony_ci        mod vxworks;
1232add0d91Sopenharmony_ci        pub use vxworks::*;
1242add0d91Sopenharmony_ci    } else if #[cfg(target_os = "solid_asp3")] {
1252add0d91Sopenharmony_ci        mod fixed_width_ints;
1262add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1272add0d91Sopenharmony_ci
1282add0d91Sopenharmony_ci        mod solid;
1292add0d91Sopenharmony_ci        pub use solid::*;
1302add0d91Sopenharmony_ci    } else if #[cfg(unix)] {
1312add0d91Sopenharmony_ci        mod fixed_width_ints;
1322add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1332add0d91Sopenharmony_ci
1342add0d91Sopenharmony_ci        mod unix;
1352add0d91Sopenharmony_ci        pub use unix::*;
1362add0d91Sopenharmony_ci    } else if #[cfg(target_os = "hermit")] {
1372add0d91Sopenharmony_ci        mod fixed_width_ints;
1382add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1392add0d91Sopenharmony_ci
1402add0d91Sopenharmony_ci        mod hermit;
1412add0d91Sopenharmony_ci        pub use hermit::*;
1422add0d91Sopenharmony_ci    } else if #[cfg(all(target_env = "sgx", target_vendor = "fortanix"))] {
1432add0d91Sopenharmony_ci        mod fixed_width_ints;
1442add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1452add0d91Sopenharmony_ci
1462add0d91Sopenharmony_ci        mod sgx;
1472add0d91Sopenharmony_ci        pub use sgx::*;
1482add0d91Sopenharmony_ci    } else if #[cfg(any(target_env = "wasi", target_os = "wasi"))] {
1492add0d91Sopenharmony_ci        mod fixed_width_ints;
1502add0d91Sopenharmony_ci        pub use fixed_width_ints::*;
1512add0d91Sopenharmony_ci
1522add0d91Sopenharmony_ci        mod wasi;
1532add0d91Sopenharmony_ci        pub use wasi::*;
1542add0d91Sopenharmony_ci    } else {
1552add0d91Sopenharmony_ci        // non-supported targets: empty...
1562add0d91Sopenharmony_ci    }
1572add0d91Sopenharmony_ci}
158