Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 1d8d7b1

Browse files
committed
Auto merge of rust-lang#117285 - joboet:move_platforms_to_pal, r=ChrisDenton
Move platform modules into `sys::pal` This is the initial step of rust-lang#117276. `sys` just re-exports everything from the current `sys` for now, I'll move the implementations for the individual features one-by-one after this PR merges.
2 parents 284cb71 + 0cfc995 commit 1d8d7b1

File tree

280 files changed

+215
-209
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

280 files changed

+215
-209
lines changed

.reuse/dep5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Copyright: 2019 The Crossbeam Project Developers
5151
The Rust Project Developers (see https://thanks.rust-lang.org)
5252
License: MIT OR Apache-2.0
5353

54-
Files: library/std/src/sys/unix/locks/fuchsia_mutex.rs
54+
Files: library/std/src/sys/pal/unix/locks/fuchsia_mutex.rs
5555
Copyright: 2016 The Fuchsia Authors
5656
The Rust Project Developers (see https://thanks.rust-lang.org)
5757
License: BSD-2-Clause AND (MIT OR Apache-2.0)

compiler/rustc_session/src/config/sigpipe.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
//! NOTE: Keep these constants in sync with `library/std/src/sys/unix/mod.rs`!
1+
//! NOTE: Keep these constants in sync with `library/std/src/sys/pal/unix/mod.rs`!
22
33
/// The default value if `#[unix_sigpipe]` is not specified. This resolves
4-
/// to `SIG_IGN` in `library/std/src/sys/unix/mod.rs`.
4+
/// to `SIG_IGN` in `library/std/src/sys/pal/unix/mod.rs`.
55
///
66
/// Note that `SIG_IGN` has been the Rust default since 2014. See
77
/// <https://github.com/rust-lang/rust/issues/62569>.

compiler/rustc_target/src/spec/base/illumos.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub fn opts() -> TargetOptions {
3939
// While we support ELF TLS, rust requires a way to register
4040
// cleanup handlers (in C, this would be something along the lines of:
4141
// void register_callback(void (*fn)(void *), void *arg);
42-
// (see src/libstd/sys/unix/fast_thread_local.rs) that is currently
42+
// (see src/libstd/sys/pal/unix/fast_thread_local.rs) that is currently
4343
// missing in illumos. For now at least, we must fallback to using
4444
// pthread_{get,set}specific.
4545
//has_thread_local: true,

library/std/src/sys/mod.rs

Lines changed: 8 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,124 +1,8 @@
1-
//! Platform-dependent platform abstraction.
2-
//!
3-
//! The `std::sys` module is the abstracted interface through which
4-
//! `std` talks to the underlying operating system. It has different
5-
//! implementations for different operating system families, today
6-
//! just Unix and Windows, and initial support for Redox.
7-
//!
8-
//! The centralization of platform-specific code in this module is
9-
//! enforced by the "platform abstraction layer" tidy script in
10-
//! `tools/tidy/src/pal.rs`.
11-
//!
12-
//! This module is closely related to the platform-independent system
13-
//! integration code in `std::sys_common`. See that module's
14-
//! documentation for details.
15-
//!
16-
//! In the future it would be desirable for the independent
17-
//! implementations of this module to be extracted to their own crates
18-
//! that `std` can link to, thus enabling their implementation
19-
//! out-of-tree via crate replacement. Though due to the complex
20-
//! inter-dependencies within `std` that will be a challenging goal to
21-
//! achieve.
22-
23-
#![allow(missing_debug_implementations)]
24-
25-
pub mod common;
26-
mod personality;
27-
28-
cfg_if::cfg_if! {
29-
if #[cfg(unix)] {
30-
mod unix;
31-
pub use self::unix::*;
32-
} else if #[cfg(windows)] {
33-
mod windows;
34-
pub use self::windows::*;
35-
} else if #[cfg(target_os = "solid_asp3")] {
36-
mod solid;
37-
pub use self::solid::*;
38-
} else if #[cfg(target_os = "hermit")] {
39-
mod hermit;
40-
pub use self::hermit::*;
41-
} else if #[cfg(target_os = "wasi")] {
42-
mod wasi;
43-
pub use self::wasi::*;
44-
} else if #[cfg(target_family = "wasm")] {
45-
mod wasm;
46-
pub use self::wasm::*;
47-
} else if #[cfg(target_os = "xous")] {
48-
mod xous;
49-
pub use self::xous::*;
50-
} else if #[cfg(target_os = "uefi")] {
51-
mod uefi;
52-
pub use self::uefi::*;
53-
} else if #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] {
54-
mod sgx;
55-
pub use self::sgx::*;
56-
} else if #[cfg(target_os = "teeos")] {
57-
mod teeos;
58-
pub use self::teeos::*;
59-
} else {
60-
mod unsupported;
61-
pub use self::unsupported::*;
62-
}
63-
}
64-
65-
cfg_if::cfg_if! {
66-
// Fuchsia components default to full backtrace.
67-
if #[cfg(target_os = "fuchsia")] {
68-
pub const FULL_BACKTRACE_DEFAULT: bool = true;
69-
} else {
70-
pub const FULL_BACKTRACE_DEFAULT: bool = false;
71-
}
72-
}
73-
74-
#[cfg(not(test))]
75-
cfg_if::cfg_if! {
76-
if #[cfg(target_os = "android")] {
77-
pub use self::android::log2f32;
78-
pub use self::android::log2f64;
79-
} else {
80-
#[inline]
81-
pub fn log2f32(n: f32) -> f32 {
82-
unsafe { crate::intrinsics::log2f32(n) }
83-
}
84-
85-
#[inline]
86-
pub fn log2f64(n: f64) -> f64 {
87-
unsafe { crate::intrinsics::log2f64(n) }
88-
}
89-
}
90-
}
91-
92-
// Solaris/Illumos requires a wrapper around log, log2, and log10 functions
93-
// because of their non-standard behavior (e.g., log(-n) returns -Inf instead
94-
// of expected NaN).
95-
#[cfg(not(test))]
96-
#[cfg(any(target_os = "solaris", target_os = "illumos"))]
97-
#[inline]
98-
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
99-
if n.is_finite() {
100-
if n > 0.0 {
101-
log_fn(n)
102-
} else if n == 0.0 {
103-
f64::NEG_INFINITY // log(0) = -Inf
104-
} else {
105-
f64::NAN // log(-n) = NaN
106-
}
107-
} else if n.is_nan() {
108-
n // log(NaN) = NaN
109-
} else if n > 0.0 {
110-
n // log(Inf) = Inf
111-
} else {
112-
f64::NAN // log(-Inf) = NaN
113-
}
114-
}
115-
116-
#[cfg(not(test))]
117-
#[cfg(not(any(target_os = "solaris", target_os = "illumos")))]
118-
#[inline]
119-
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
120-
log_fn(n)
121-
}
122-
123-
#[cfg(not(target_os = "uefi"))]
124-
pub type RawOsError = i32;
1+
/// The PAL (platform abstraction layer) contains platform-specific abstractions
2+
/// for implementing the features in the other submodules, e.g. UNIX file
3+
/// descriptors.
4+
mod pal;
5+
6+
// FIXME(117276): remove this, move feature implementations into individual
7+
// submodules.
8+
pub use pal::*;

0 commit comments

Comments
 (0)