mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Auto merge of #117336 - workingjubilee:rollup-6negquv, r=workingjubilee
Rollup of 4 pull requests Successful merges: - #117170 (Add support for i586-unknown-netbsd as target.) - #117259 (Declare rustc_target's dependency on object/macho) - #117322 (change default output mode of `BootstrapCommand`) - #117325 (Small ty::print cleanups) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
bbcc1691a4
@ -258,6 +258,12 @@ fn main() {
|
||||
{
|
||||
println!("cargo:rustc-link-lib=z");
|
||||
} else if target.contains("netbsd") {
|
||||
// On NetBSD/i386, gcc and g++ is built for i486 (to maximize backward compat)
|
||||
// However, LLVM insists on using 64-bit atomics.
|
||||
// This gives rise to a need to link rust itself with -latomic for these targets
|
||||
if target.starts_with("i586") || target.starts_with("i686") {
|
||||
println!("cargo:rustc-link-lib=atomic");
|
||||
}
|
||||
println!("cargo:rustc-link-lib=z");
|
||||
println!("cargo:rustc-link-lib=execinfo");
|
||||
}
|
||||
|
@ -12,8 +12,6 @@ pub use self::pretty::*;
|
||||
|
||||
pub type PrintError = std::fmt::Error;
|
||||
|
||||
// FIXME(eddyb) false positive, the lifetime parameters are used with `P: Printer<...>`.
|
||||
#[allow(unused_lifetimes)]
|
||||
pub trait Print<'tcx, P> {
|
||||
fn print(&self, cx: &mut P) -> Result<(), PrintError>;
|
||||
}
|
||||
|
@ -53,7 +53,6 @@ macro_rules! p {
|
||||
}
|
||||
macro_rules! define_scoped_cx {
|
||||
($cx:ident) => {
|
||||
#[allow(unused_macros)]
|
||||
macro_rules! scoped_cx {
|
||||
() => {
|
||||
$cx
|
||||
@ -408,8 +407,6 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
|
||||
def_id: DefId,
|
||||
callers: &mut Vec<DefId>,
|
||||
) -> Result<bool, PrintError> {
|
||||
define_scoped_cx!(self);
|
||||
|
||||
debug!("try_print_visible_def_path: def_id={:?}", def_id);
|
||||
|
||||
// If `def_id` is a direct or injected extern crate, return the
|
||||
@ -1868,8 +1865,6 @@ impl<'tcx> Printer<'tcx> for FmtPrinter<'_, 'tcx> {
|
||||
def_id: DefId,
|
||||
args: &'tcx [GenericArg<'tcx>],
|
||||
) -> Result<(), PrintError> {
|
||||
define_scoped_cx!(self);
|
||||
|
||||
if args.is_empty() {
|
||||
match self.try_print_trimmed_def_path(def_id)? {
|
||||
true => return Ok(()),
|
||||
@ -2401,8 +2396,6 @@ impl<'tcx> FmtPrinter<'_, 'tcx> {
|
||||
let _ = write!(cx, "{cont}");
|
||||
};
|
||||
|
||||
define_scoped_cx!(self);
|
||||
|
||||
let possible_names = ('a'..='z').rev().map(|s| Symbol::intern(&format!("'{s}")));
|
||||
|
||||
let mut available_names = possible_names
|
||||
@ -2630,46 +2623,6 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! forward_display_to_print {
|
||||
($($ty:ty),+) => {
|
||||
// Some of the $ty arguments may not actually use 'tcx
|
||||
$(#[allow(unused_lifetimes)] impl<'tcx> fmt::Display for $ty {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
ty::tls::with(|tcx| {
|
||||
let mut cx = FmtPrinter::new(tcx, Namespace::TypeNS);
|
||||
tcx.lift(*self)
|
||||
.expect("could not lift for printing")
|
||||
.print(&mut cx)?;
|
||||
f.write_str(&cx.into_buffer())?;
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
})+
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! define_print_and_forward_display {
|
||||
(($self:ident, $cx:ident): $($ty:ty $print:block)+) => {
|
||||
define_print!(($self, $cx): $($ty $print)*);
|
||||
forward_display_to_print!($($ty),+);
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! define_print {
|
||||
(($self:ident, $cx:ident): $($ty:ty $print:block)+) => {
|
||||
$(impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for $ty {
|
||||
fn print(&$self, $cx: &mut P) -> Result<(), PrintError> {
|
||||
#[allow(unused_mut)]
|
||||
let mut $cx = $cx;
|
||||
define_scoped_cx!($cx);
|
||||
let _: () = $print;
|
||||
#[allow(unreachable_code)]
|
||||
Ok(())
|
||||
}
|
||||
})+
|
||||
};
|
||||
}
|
||||
|
||||
/// Wrapper type for `ty::TraitRef` which opts-in to pretty printing only
|
||||
/// the trait path. That is, it will print `Trait<U>` instead of
|
||||
/// `<T as Trait<U>>`.
|
||||
@ -2744,6 +2697,43 @@ pub struct PrintClosureAsImpl<'tcx> {
|
||||
pub closure: ty::ClosureArgs<'tcx>,
|
||||
}
|
||||
|
||||
macro_rules! forward_display_to_print {
|
||||
($($ty:ty),+) => {
|
||||
// Some of the $ty arguments may not actually use 'tcx
|
||||
$(#[allow(unused_lifetimes)] impl<'tcx> fmt::Display for $ty {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
ty::tls::with(|tcx| {
|
||||
let mut cx = FmtPrinter::new(tcx, Namespace::TypeNS);
|
||||
tcx.lift(*self)
|
||||
.expect("could not lift for printing")
|
||||
.print(&mut cx)?;
|
||||
f.write_str(&cx.into_buffer())?;
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
})+
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! define_print {
|
||||
(($self:ident, $cx:ident): $($ty:ty $print:block)+) => {
|
||||
$(impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for $ty {
|
||||
fn print(&$self, $cx: &mut P) -> Result<(), PrintError> {
|
||||
define_scoped_cx!($cx);
|
||||
let _: () = $print;
|
||||
Ok(())
|
||||
}
|
||||
})+
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! define_print_and_forward_display {
|
||||
(($self:ident, $cx:ident): $($ty:ty $print:block)+) => {
|
||||
define_print!(($self, $cx): $($ty $print)*);
|
||||
forward_display_to_print!($($ty),+);
|
||||
};
|
||||
}
|
||||
|
||||
forward_display_to_print! {
|
||||
ty::Region<'tcx>,
|
||||
Ty<'tcx>,
|
||||
|
@ -19,4 +19,4 @@ rustc_index = { path = "../rustc_index" }
|
||||
[dependencies.object]
|
||||
version = "0.32.0"
|
||||
default-features = false
|
||||
features = ["elf"]
|
||||
features = ["elf", "macho"]
|
||||
|
18
compiler/rustc_target/src/spec/i586_unknown_netbsd.rs
Normal file
18
compiler/rustc_target/src/spec/i586_unknown_netbsd.rs
Normal file
@ -0,0 +1,18 @@
|
||||
use crate::spec::{StackProbeType, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::netbsd_base::opts();
|
||||
base.cpu = "pentium".into();
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Call;
|
||||
|
||||
Target {
|
||||
llvm_target: "i586-unknown-netbsdelf".into(),
|
||||
pointer_width: 32,
|
||||
data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-\
|
||||
f64:32:64-f80:32-n8:16:32-S128"
|
||||
.into(),
|
||||
arch: "x86".into(),
|
||||
options: TargetOptions { mcount: "__mcount".into(), ..base },
|
||||
}
|
||||
}
|
@ -1564,6 +1564,7 @@ supported_targets! {
|
||||
("aarch64_be-unknown-netbsd", aarch64_be_unknown_netbsd),
|
||||
("armv6-unknown-netbsd-eabihf", armv6_unknown_netbsd_eabihf),
|
||||
("armv7-unknown-netbsd-eabihf", armv7_unknown_netbsd_eabihf),
|
||||
("i586-unknown-netbsd", i586_unknown_netbsd),
|
||||
("i686-unknown-netbsd", i686_unknown_netbsd),
|
||||
("powerpc-unknown-netbsd", powerpc_unknown_netbsd),
|
||||
("riscv64gc-unknown-netbsd", riscv64gc_unknown_netbsd),
|
||||
|
@ -586,7 +586,11 @@ impl Build {
|
||||
.args(&["diff-index", "--quiet", "HEAD"])
|
||||
.current_dir(&absolute_path),
|
||||
)
|
||||
.allow_failure(),
|
||||
.allow_failure()
|
||||
.output_mode(match self.is_verbose() {
|
||||
true => OutputMode::PrintAll,
|
||||
false => OutputMode::PrintOutput,
|
||||
}),
|
||||
);
|
||||
if has_local_modifications {
|
||||
self.run(Command::new("git").args(&["stash", "push"]).current_dir(&absolute_path));
|
||||
|
@ -54,7 +54,7 @@ impl<'a> From<&'a mut Command> for BootstrapCommand<'a> {
|
||||
Self {
|
||||
command,
|
||||
failure_behavior: BehaviorOnFailure::Exit,
|
||||
output_mode: OutputMode::SuppressOnSuccess,
|
||||
output_mode: OutputMode::PrintAll,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -152,6 +152,7 @@ target | std | notes
|
||||
`i586-pc-windows-msvc` | * | 32-bit Windows w/o SSE [^x86_32-floats-x87]
|
||||
`i586-unknown-linux-gnu` | ✓ | 32-bit Linux w/o SSE (kernel 3.2, glibc 2.17) [^x86_32-floats-x87]
|
||||
`i586-unknown-linux-musl` | ✓ | 32-bit Linux w/o SSE, MUSL [^x86_32-floats-x87]
|
||||
[`i586-unknown-netbsd`](platform-support/netbsd.md) | ✓ | 32-bit x86, restricted to Pentium
|
||||
[`i686-linux-android`](platform-support/android.md) | ✓ | 32-bit x86 Android [^x86_32-floats-return-ABI]
|
||||
`i686-unknown-freebsd` | ✓ | 32-bit FreeBSD [^x86_32-floats-return-ABI]
|
||||
`i686-unknown-linux-musl` | ✓ | 32-bit Linux with MUSL [^x86_32-floats-return-ABI]
|
||||
|
Loading…
Reference in New Issue
Block a user