Auto merge of #105741 - pietroalbini:pa-1.68-nightly, r=Mark-Simulacrum
Bump master bootstrap compiler This PR bumps the bootstrap compiler to the beta created earlier this week, cherry-picks the stabilization version number updates, and updates the `cfg(bootstrap)`s. r? `@Mark-Simulacrum`
This commit is contained in:
commit
b15ca6635f
39 changed files with 451 additions and 1073 deletions
|
@ -59,14 +59,12 @@ pub use core::prelude::v1::{RustcDecodable, RustcEncodable};
|
|||
|
||||
// Do not `doc(no_inline)` so that they become doc items on their own
|
||||
// (no public module for them to be re-exported from).
|
||||
#[cfg(not(bootstrap))]
|
||||
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
|
||||
pub use core::prelude::v1::alloc_error_handler;
|
||||
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
|
||||
pub use core::prelude::v1::{bench, derive, global_allocator, test, test_case};
|
||||
pub use core::prelude::v1::{
|
||||
alloc_error_handler, bench, derive, global_allocator, test, test_case,
|
||||
};
|
||||
|
||||
#[unstable(feature = "derive_const", issue = "none")]
|
||||
#[cfg(not(bootstrap))]
|
||||
pub use core::prelude::v1::derive_const;
|
||||
|
||||
// Do not `doc(no_inline)` either.
|
||||
|
@ -91,7 +89,6 @@ pub use core::prelude::v1::cfg_eval;
|
|||
issue = "23416",
|
||||
reason = "placeholder syntax for type ascription"
|
||||
)]
|
||||
#[cfg(not(bootstrap))]
|
||||
pub use core::prelude::v1::type_ascribe;
|
||||
|
||||
// The file so far is equivalent to src/libcore/prelude/v1.rs,
|
||||
|
|
|
@ -2164,18 +2164,11 @@ pub fn id() -> u32 {
|
|||
/// to provide similar functionality.
|
||||
#[cfg_attr(not(test), lang = "termination")]
|
||||
#[stable(feature = "termination_trait_lib", since = "1.61.0")]
|
||||
#[rustc_on_unimplemented(
|
||||
on(
|
||||
all(not(bootstrap), cause = "MainFunctionType"),
|
||||
message = "`main` has invalid return type `{Self}`",
|
||||
label = "`main` can only return types that implement `{Termination}`"
|
||||
),
|
||||
on(
|
||||
bootstrap,
|
||||
message = "`main` has invalid return type `{Self}`",
|
||||
label = "`main` can only return types that implement `{Termination}`"
|
||||
)
|
||||
)]
|
||||
#[rustc_on_unimplemented(on(
|
||||
cause = "MainFunctionType",
|
||||
message = "`main` has invalid return type `{Self}`",
|
||||
label = "`main` can only return types that implement `{Termination}`"
|
||||
))]
|
||||
pub trait Termination {
|
||||
/// Is called to get the representation of the value as status code.
|
||||
/// This status code is returned to the operating system.
|
||||
|
|
|
@ -184,12 +184,7 @@ pub unsafe fn init(argc: isize, argv: *const *const u8, sigpipe: u8) {
|
|||
sigpipe::SIG_DFL => (true, Some(libc::SIG_DFL)),
|
||||
_ => unreachable!(),
|
||||
};
|
||||
// The bootstrap compiler doesn't know about sigpipe::DEFAULT, and always passes in
|
||||
// SIG_IGN. This causes some tests to fail because they expect SIGPIPE to be reset to
|
||||
// default on process spawning (which doesn't happen if #[unix_sigpipe] is specified).
|
||||
// Since we can't differentiate between the cases here, treat SIG_IGN as DEFAULT
|
||||
// unconditionally.
|
||||
if sigpipe_attr_specified && !(cfg!(bootstrap) && sigpipe == sigpipe::SIG_IGN) {
|
||||
if sigpipe_attr_specified {
|
||||
UNIX_SIGPIPE_ATTR_SPECIFIED.store(true, crate::sync::atomic::Ordering::Relaxed);
|
||||
}
|
||||
if let Some(handler) = handler {
|
||||
|
|
|
@ -29,7 +29,7 @@ use crate::ptr;
|
|||
use crate::sync::atomic::{self, AtomicPtr, Ordering};
|
||||
|
||||
// We can use true weak linkage on ELF targets.
|
||||
#[cfg(all(not(any(target_os = "macos", target_os = "ios")), not(bootstrap)))]
|
||||
#[cfg(not(any(target_os = "macos", target_os = "ios")))]
|
||||
pub(crate) macro weak {
|
||||
(fn $name:ident($($t:ty),*) -> $ret:ty) => (
|
||||
let ref $name: ExternWeak<unsafe extern "C" fn($($t),*) -> $ret> = {
|
||||
|
@ -43,30 +43,14 @@ pub(crate) macro weak {
|
|||
)
|
||||
}
|
||||
|
||||
#[cfg(all(not(any(target_os = "macos", target_os = "ios")), bootstrap))]
|
||||
pub(crate) macro weak {
|
||||
(fn $name:ident($($t:ty),*) -> $ret:ty) => (
|
||||
let ref $name: ExternWeak<unsafe extern "C" fn($($t),*) -> $ret> = {
|
||||
extern "C" {
|
||||
#[linkage = "extern_weak"]
|
||||
static $name: *const libc::c_void;
|
||||
}
|
||||
#[allow(unused_unsafe)]
|
||||
ExternWeak::new(unsafe { $name })
|
||||
};
|
||||
)
|
||||
}
|
||||
|
||||
// On non-ELF targets, use the dlsym approximation of weak linkage.
|
||||
#[cfg(any(target_os = "macos", target_os = "ios"))]
|
||||
pub(crate) use self::dlsym as weak;
|
||||
|
||||
#[cfg(not(bootstrap))]
|
||||
pub(crate) struct ExternWeak<F: Copy> {
|
||||
weak_ptr: Option<F>,
|
||||
}
|
||||
|
||||
#[cfg(not(bootstrap))]
|
||||
impl<F: Copy> ExternWeak<F> {
|
||||
#[inline]
|
||||
pub(crate) fn new(weak_ptr: Option<F>) -> Self {
|
||||
|
@ -79,34 +63,6 @@ impl<F: Copy> ExternWeak<F> {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(bootstrap)]
|
||||
pub(crate) struct ExternWeak<F> {
|
||||
weak_ptr: *const libc::c_void,
|
||||
_marker: PhantomData<F>,
|
||||
}
|
||||
|
||||
#[cfg(bootstrap)]
|
||||
impl<F> ExternWeak<F> {
|
||||
#[inline]
|
||||
pub(crate) fn new(weak_ptr: *const libc::c_void) -> Self {
|
||||
ExternWeak { weak_ptr, _marker: PhantomData }
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(bootstrap)]
|
||||
impl<F> ExternWeak<F> {
|
||||
#[inline]
|
||||
pub(crate) fn get(&self) -> Option<F> {
|
||||
unsafe {
|
||||
if self.weak_ptr.is_null() {
|
||||
None
|
||||
} else {
|
||||
Some(mem::transmute_copy::<*const libc::c_void, F>(&self.weak_ptr))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) macro dlsym {
|
||||
(fn $name:ident($($t:ty),*) -> $ret:ty) => (
|
||||
dlsym!(fn $name($($t),*) -> $ret, stringify!($name));
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#![cfg_attr(
|
||||
any(
|
||||
all(target_arch = "arm", any(target_os = "linux", target_os = "android")),
|
||||
all(bootstrap, target_arch = "aarch64", any(target_os = "linux", target_os = "android")),
|
||||
all(target_arch = "powerpc", target_os = "linux"),
|
||||
all(target_arch = "powerpc64", target_os = "linux"),
|
||||
),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue