Update usages of 'OSX' (and other old names) to 'macOS'.
As of last year with version 'Sierra', the Mac operating system is now called 'macOS'.
This commit is contained in:
parent
f88b24b34c
commit
97a1b6a055
41 changed files with 63 additions and 63 deletions
|
@ -5056,7 +5056,7 @@ Version 0.1 (2012-01-20)
|
||||||
|
|
||||||
* Compiler works with the following configurations:
|
* Compiler works with the following configurations:
|
||||||
* Linux: x86 and x86_64 hosts and targets
|
* Linux: x86 and x86_64 hosts and targets
|
||||||
* MacOS: x86 and x86_64 hosts and targets
|
* macOS: x86 and x86_64 hosts and targets
|
||||||
* Windows: x86 hosts and targets
|
* Windows: x86 hosts and targets
|
||||||
|
|
||||||
* Cross compilation / multi-target configuration supported.
|
* Cross compilation / multi-target configuration supported.
|
||||||
|
|
|
@ -182,7 +182,7 @@ fn main() {
|
||||||
if env::var("RUSTC_RPATH") == Ok("true".to_string()) {
|
if env::var("RUSTC_RPATH") == Ok("true".to_string()) {
|
||||||
let rpath = if target.contains("apple") {
|
let rpath = if target.contains("apple") {
|
||||||
|
|
||||||
// Note that we need to take one extra step on OSX to also pass
|
// Note that we need to take one extra step on macOS to also pass
|
||||||
// `-Wl,-instal_name,@rpath/...` to get things to work right. To
|
// `-Wl,-instal_name,@rpath/...` to get things to work right. To
|
||||||
// do that we pass a weird flag to the compiler to get it to do
|
// do that we pass a weird flag to the compiler to get it to do
|
||||||
// so. Note that this is definitely a hack, and we should likely
|
// so. Note that this is definitely a hack, and we should likely
|
||||||
|
|
|
@ -176,7 +176,7 @@ pub fn compiletest(build: &Build,
|
||||||
cmd.arg("--docck-python").arg(build.python());
|
cmd.arg("--docck-python").arg(build.python());
|
||||||
|
|
||||||
if build.config.build.ends_with("apple-darwin") {
|
if build.config.build.ends_with("apple-darwin") {
|
||||||
// Force /usr/bin/python on OSX for LLDB tests because we're loading the
|
// Force /usr/bin/python on macOS for LLDB tests because we're loading the
|
||||||
// LLDB plugin's compiled module which only works with the system python
|
// LLDB plugin's compiled module which only works with the system python
|
||||||
// (namely not Homebrew-installed python)
|
// (namely not Homebrew-installed python)
|
||||||
cmd.arg("--lldb-python").arg("/usr/bin/python");
|
cmd.arg("--lldb-python").arg("/usr/bin/python");
|
||||||
|
|
|
@ -249,7 +249,7 @@ pub fn rustc(build: &Build, target: &str, compiler: &Compiler) {
|
||||||
cargo.env("CFG_LLVM_ROOT", s);
|
cargo.env("CFG_LLVM_ROOT", s);
|
||||||
}
|
}
|
||||||
// Building with a static libstdc++ is only supported on linux right now,
|
// Building with a static libstdc++ is only supported on linux right now,
|
||||||
// not for MSVC or OSX
|
// not for MSVC or macOS
|
||||||
if build.config.llvm_static_stdcpp &&
|
if build.config.llvm_static_stdcpp &&
|
||||||
!target.contains("windows") &&
|
!target.contains("windows") &&
|
||||||
!target.contains("apple") {
|
!target.contains("apple") {
|
||||||
|
|
|
@ -846,7 +846,7 @@ impl Build {
|
||||||
.filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
|
.filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
// If we're compiling on OSX then we add a few unconditional flags
|
// If we're compiling on macOS then we add a few unconditional flags
|
||||||
// indicating that we want libc++ (more filled out than libstdc++) and
|
// indicating that we want libc++ (more filled out than libstdc++) and
|
||||||
// we want to compile for 10.7. This way we can ensure that
|
// we want to compile for 10.7. This way we can ensure that
|
||||||
// LLVM/jemalloc/etc are all properly compiled.
|
// LLVM/jemalloc/etc are all properly compiled.
|
||||||
|
|
|
@ -151,10 +151,10 @@ pub fn check(build: &mut Build) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for target in build.config.target.iter() {
|
for target in build.config.target.iter() {
|
||||||
// Can't compile for iOS unless we're on OSX
|
// Can't compile for iOS unless we're on macOS
|
||||||
if target.contains("apple-ios") &&
|
if target.contains("apple-ios") &&
|
||||||
!build.config.build.contains("apple-darwin") {
|
!build.config.build.contains("apple-darwin") {
|
||||||
panic!("the iOS target is only supported on OSX");
|
panic!("the iOS target is only supported on macOS");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure musl-root is valid if specified
|
// Make sure musl-root is valid if specified
|
||||||
|
|
|
@ -147,7 +147,7 @@ And that's reflected in the summary line:
|
||||||
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured
|
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured
|
||||||
```
|
```
|
||||||
|
|
||||||
We also get a non-zero status code. We can use `$?` on OS X and Linux:
|
We also get a non-zero status code. We can use `$?` on macOS and Linux:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ echo $?
|
$ echo $?
|
||||||
|
|
|
@ -30,7 +30,7 @@ pub use imp::*;
|
||||||
mod imp {
|
mod imp {
|
||||||
use libc::{c_int, c_void, size_t};
|
use libc::{c_int, c_void, size_t};
|
||||||
|
|
||||||
// Note that the symbols here are prefixed by default on OSX and Windows (we
|
// Note that the symbols here are prefixed by default on macOS and Windows (we
|
||||||
// don't explicitly request it), and on Android and DragonFly we explicitly
|
// don't explicitly request it), and on Android and DragonFly we explicitly
|
||||||
// request it as unprefixing cause segfaults (mismatches in allocators).
|
// request it as unprefixing cause segfaults (mismatches in allocators).
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -123,7 +123,7 @@ pub enum LinkagePreference {
|
||||||
pub enum NativeLibraryKind {
|
pub enum NativeLibraryKind {
|
||||||
NativeStatic, // native static library (.a archive)
|
NativeStatic, // native static library (.a archive)
|
||||||
NativeStaticNobundle, // native static library, which doesn't get bundled into .rlibs
|
NativeStaticNobundle, // native static library, which doesn't get bundled into .rlibs
|
||||||
NativeFramework, // OSX-specific
|
NativeFramework, // macOS-specific
|
||||||
NativeUnknown, // default way to specify a dynamic library
|
NativeUnknown, // default way to specify a dynamic library
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -971,7 +971,7 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||||
always_encode_mir: bool = (false, parse_bool, [TRACKED],
|
always_encode_mir: bool = (false, parse_bool, [TRACKED],
|
||||||
"encode MIR of all functions into the crate metadata"),
|
"encode MIR of all functions into the crate metadata"),
|
||||||
osx_rpath_install_name: bool = (false, parse_bool, [TRACKED],
|
osx_rpath_install_name: bool = (false, parse_bool, [TRACKED],
|
||||||
"pass `-install_name @rpath/...` to the OSX linker"),
|
"pass `-install_name @rpath/...` to the macOS linker"),
|
||||||
sanitizer: Option<Sanitizer> = (None, parse_sanitizer, [TRACKED],
|
sanitizer: Option<Sanitizer> = (None, parse_sanitizer, [TRACKED],
|
||||||
"Use a sanitizer"),
|
"Use a sanitizer"),
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,12 +13,12 @@ use std::env;
|
||||||
use target::TargetOptions;
|
use target::TargetOptions;
|
||||||
|
|
||||||
pub fn opts() -> TargetOptions {
|
pub fn opts() -> TargetOptions {
|
||||||
// ELF TLS is only available in OSX 10.7+. If you try to compile for 10.6
|
// ELF TLS is only available in macOS 10.7+. If you try to compile for 10.6
|
||||||
// either the linker will complain if it is used or the binary will end up
|
// either the linker will complain if it is used or the binary will end up
|
||||||
// segfaulting at runtime when run on 10.6. Rust by default supports OSX
|
// segfaulting at runtime when run on 10.6. Rust by default supports macOS
|
||||||
// 10.7+, but there is a standard environment variable,
|
// 10.7+, but there is a standard environment variable,
|
||||||
// MACOSX_DEPLOYMENT_TARGET, which is used to signal targeting older
|
// MACOSX_DEPLOYMENT_TARGET, which is used to signal targeting older
|
||||||
// versions of OSX. For example compiling on 10.10 with
|
// versions of macOS. For example compiling on 10.10 with
|
||||||
// MACOSX_DEPLOYMENT_TARGET set to 10.6 will cause the linker to generate
|
// MACOSX_DEPLOYMENT_TARGET set to 10.6 will cause the linker to generate
|
||||||
// warnings about the usage of ELF TLS.
|
// warnings about the usage of ELF TLS.
|
||||||
//
|
//
|
||||||
|
@ -33,7 +33,7 @@ pub fn opts() -> TargetOptions {
|
||||||
}).unwrap_or((10, 7));
|
}).unwrap_or((10, 7));
|
||||||
|
|
||||||
TargetOptions {
|
TargetOptions {
|
||||||
// OSX has -dead_strip, which doesn't rely on function_sections
|
// macOS has -dead_strip, which doesn't rely on function_sections
|
||||||
function_sections: false,
|
function_sections: false,
|
||||||
dynamic_linking: true,
|
dynamic_linking: true,
|
||||||
executables: true,
|
executables: true,
|
||||||
|
|
|
@ -318,8 +318,8 @@ pub struct TargetOptions {
|
||||||
/// Whether the target toolchain is like OpenBSD's.
|
/// Whether the target toolchain is like OpenBSD's.
|
||||||
/// Only useful for compiling against OpenBSD, for configuring abi when returning a struct.
|
/// Only useful for compiling against OpenBSD, for configuring abi when returning a struct.
|
||||||
pub is_like_openbsd: bool,
|
pub is_like_openbsd: bool,
|
||||||
/// Whether the target toolchain is like OSX's. Only useful for compiling against iOS/OS X, in
|
/// Whether the target toolchain is like macOS's. Only useful for compiling against iOS/macOS,
|
||||||
/// particular running dsymutil and some other stuff like `-dead_strip`. Defaults to false.
|
/// in particular running dsymutil and some other stuff like `-dead_strip`. Defaults to false.
|
||||||
pub is_like_osx: bool,
|
pub is_like_osx: bool,
|
||||||
/// Whether the target toolchain is like Solaris's.
|
/// Whether the target toolchain is like Solaris's.
|
||||||
/// Only useful for compiling against Illumos/Solaris,
|
/// Only useful for compiling against Illumos/Solaris,
|
||||||
|
|
|
@ -99,7 +99,7 @@ fn register_native_lib(sess: &Session,
|
||||||
}
|
}
|
||||||
let is_osx = sess.target.target.options.is_like_osx;
|
let is_osx = sess.target.target.options.is_like_osx;
|
||||||
if lib.kind == cstore::NativeFramework && !is_osx {
|
if lib.kind == cstore::NativeFramework && !is_osx {
|
||||||
let msg = "native frameworks are only available on OSX targets";
|
let msg = "native frameworks are only available on macOS targets";
|
||||||
match span {
|
match span {
|
||||||
Some(span) => span_err!(sess, span, E0455, "{}", msg),
|
Some(span) => span_err!(sess, span, E0455, "{}", msg),
|
||||||
None => sess.err(msg),
|
None => sess.err(msg),
|
||||||
|
|
|
@ -27,7 +27,7 @@ name. Example:
|
||||||
"##,
|
"##,
|
||||||
|
|
||||||
E0455: r##"
|
E0455: r##"
|
||||||
Linking with `kind=framework` is only supported when targeting OS X,
|
Linking with `kind=framework` is only supported when targeting macOS,
|
||||||
as frameworks are specific to that operating system.
|
as frameworks are specific to that operating system.
|
||||||
|
|
||||||
Erroneous code example:
|
Erroneous code example:
|
||||||
|
|
|
@ -1404,7 +1404,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
|
||||||
//
|
//
|
||||||
// And here we run into yet another obscure archive bug: in which metadata
|
// And here we run into yet another obscure archive bug: in which metadata
|
||||||
// loaded from archives may have trailing garbage bytes. Awhile back one of
|
// loaded from archives may have trailing garbage bytes. Awhile back one of
|
||||||
// our tests was failing sporadically on the OSX 64-bit builders (both nopt
|
// our tests was failing sporadically on the macOS 64-bit builders (both nopt
|
||||||
// and opt) by having ebml generate an out-of-bounds panic when looking at
|
// and opt) by having ebml generate an out-of-bounds panic when looking at
|
||||||
// metadata.
|
// metadata.
|
||||||
//
|
//
|
||||||
|
|
|
@ -583,7 +583,7 @@ fn link_rlib<'a>(sess: &'a Session,
|
||||||
}
|
}
|
||||||
|
|
||||||
// After adding all files to the archive, we need to update the
|
// After adding all files to the archive, we need to update the
|
||||||
// symbol table of the archive. This currently dies on OSX (see
|
// symbol table of the archive. This currently dies on macOS (see
|
||||||
// #11162), and isn't necessary there anyway
|
// #11162), and isn't necessary there anyway
|
||||||
if !sess.target.target.options.is_like_osx {
|
if !sess.target.target.options.is_like_osx {
|
||||||
ab.update_symbols();
|
ab.update_symbols();
|
||||||
|
@ -764,7 +764,7 @@ fn link_natively(sess: &Session,
|
||||||
// pain to land PRs when they spuriously fail due to a segfault.
|
// pain to land PRs when they spuriously fail due to a segfault.
|
||||||
//
|
//
|
||||||
// The issue #38878 has some more debugging information on it as well, but
|
// The issue #38878 has some more debugging information on it as well, but
|
||||||
// this unfortunately looks like it's just a race condition in OSX's linker
|
// this unfortunately looks like it's just a race condition in macOS's linker
|
||||||
// with some thread pool working in the background. It seems that no one
|
// with some thread pool working in the background. It seems that no one
|
||||||
// currently knows a fix for this so in the meantime we're left with this...
|
// currently knows a fix for this so in the meantime we're left with this...
|
||||||
info!("{:?}", &cmd);
|
info!("{:?}", &cmd);
|
||||||
|
@ -841,7 +841,7 @@ fn link_natively(sess: &Session,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// On OSX, debuggers need this utility to get run to do some munging of
|
// On macOS, debuggers need this utility to get run to do some munging of
|
||||||
// the symbols
|
// the symbols
|
||||||
if sess.target.target.options.is_like_osx && sess.opts.debuginfo != NoDebugInfo {
|
if sess.target.target.options.is_like_osx && sess.opts.debuginfo != NoDebugInfo {
|
||||||
match Command::new("dsymutil").arg(out_filename).output() {
|
match Command::new("dsymutil").arg(out_filename).output() {
|
||||||
|
|
|
@ -139,7 +139,7 @@ impl<'a> Linker for GnuLinker<'a> {
|
||||||
.arg("-l").arg(lib)
|
.arg("-l").arg(lib)
|
||||||
.arg("-Wl,--no-whole-archive");
|
.arg("-Wl,--no-whole-archive");
|
||||||
} else {
|
} else {
|
||||||
// -force_load is the OSX equivalent of --whole-archive, but it
|
// -force_load is the macOS equivalent of --whole-archive, but it
|
||||||
// involves passing the full path to the library to link.
|
// involves passing the full path to the library to link.
|
||||||
let mut v = OsString::from("-Wl,-force_load,");
|
let mut v = OsString::from("-Wl,-force_load,");
|
||||||
v.push(&archive::find_library(lib, search_path, &self.sess));
|
v.push(&archive::find_library(lib, search_path, &self.sess));
|
||||||
|
|
|
@ -351,7 +351,7 @@ fn mangle<PI: Iterator<Item=InternedString>>(path: PI, hash: &str) -> String {
|
||||||
// Follow C++ namespace-mangling style, see
|
// Follow C++ namespace-mangling style, see
|
||||||
// http://en.wikipedia.org/wiki/Name_mangling for more info.
|
// http://en.wikipedia.org/wiki/Name_mangling for more info.
|
||||||
//
|
//
|
||||||
// It turns out that on OSX you can actually have arbitrary symbols in
|
// It turns out that on macOS you can actually have arbitrary symbols in
|
||||||
// function names (at least when given to LLVM), but this is not possible
|
// function names (at least when given to LLVM), but this is not possible
|
||||||
// when using unix's linker. Perhaps one day when we just use a linker from LLVM
|
// when using unix's linker. Perhaps one day when we just use a linker from LLVM
|
||||||
// we won't need to do this name mangling. The problem with name mangling is
|
// we won't need to do this name mangling. The problem with name mangling is
|
||||||
|
|
|
@ -164,9 +164,9 @@ pub fn finalize(cx: &CrateContext) {
|
||||||
llvm::LLVMRustDIBuilderFinalize(DIB(cx));
|
llvm::LLVMRustDIBuilderFinalize(DIB(cx));
|
||||||
llvm::LLVMRustDIBuilderDispose(DIB(cx));
|
llvm::LLVMRustDIBuilderDispose(DIB(cx));
|
||||||
// Debuginfo generation in LLVM by default uses a higher
|
// Debuginfo generation in LLVM by default uses a higher
|
||||||
// version of dwarf than OS X currently understands. We can
|
// version of dwarf than macOS currently understands. We can
|
||||||
// instruct LLVM to emit an older version of dwarf, however,
|
// instruct LLVM to emit an older version of dwarf, however,
|
||||||
// for OS X to understand. For more info see #11352
|
// for macOS to understand. For more info see #11352
|
||||||
// This can be overridden using --llvm-opts -dwarf-version,N.
|
// This can be overridden using --llvm-opts -dwarf-version,N.
|
||||||
// Android has the same issue (#22398)
|
// Android has the same issue (#22398)
|
||||||
if cx.sess().target.target.options.is_like_osx ||
|
if cx.sess().target.target.options.is_like_osx ||
|
||||||
|
|
|
@ -42,7 +42,7 @@ impl PluginManager {
|
||||||
/// Load a plugin with the given name.
|
/// Load a plugin with the given name.
|
||||||
///
|
///
|
||||||
/// Turns `name` into the proper dynamic library filename for the given
|
/// Turns `name` into the proper dynamic library filename for the given
|
||||||
/// platform. On windows, it turns into name.dll, on OS X, name.dylib, and
|
/// platform. On windows, it turns into name.dll, on macOS, name.dylib, and
|
||||||
/// elsewhere, libname.so.
|
/// elsewhere, libname.so.
|
||||||
pub fn load_plugin(&mut self, name: String) {
|
pub fn load_plugin(&mut self, name: String) {
|
||||||
let x = self.prefix.join(libname(name));
|
let x = self.prefix.join(libname(name));
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
//! MacOS-specific definitions
|
//! macOS-specific definitions
|
||||||
|
|
||||||
#![stable(feature = "raw_ext", since = "1.1.0")]
|
#![stable(feature = "raw_ext", since = "1.1.0")]
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
//! MacOS-specific raw type definitions
|
//! macOS-specific raw type definitions
|
||||||
|
|
||||||
#![stable(feature = "raw_ext", since = "1.1.0")]
|
#![stable(feature = "raw_ext", since = "1.1.0")]
|
||||||
#![rustc_deprecated(since = "1.8.0",
|
#![rustc_deprecated(since = "1.8.0",
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
//! If an application does not have `getrandom` and likely to be run soon after first booting,
|
//! If an application does not have `getrandom` and likely to be run soon after first booting,
|
||||||
//! or on a system with very few entropy sources, one should consider using `/dev/random` via
|
//! or on a system with very few entropy sources, one should consider using `/dev/random` via
|
||||||
//! `ReaderRng`.
|
//! `ReaderRng`.
|
||||||
//! - On some systems (e.g. FreeBSD, OpenBSD and Mac OS X) there is no difference
|
//! - On some systems (e.g. FreeBSD, OpenBSD and macOS) there is no difference
|
||||||
//! between the two sources. (Also note that, on some systems e.g. FreeBSD, both `/dev/random`
|
//! between the two sources. (Also note that, on some systems e.g. FreeBSD, both `/dev/random`
|
||||||
//! and `/dev/urandom` may block once if the CSPRNG has not seeded yet.)
|
//! and `/dev/urandom` may block once if the CSPRNG has not seeded yet.)
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ impl Rng for ThreadRng {
|
||||||
/// A random number generator that retrieves randomness straight from
|
/// A random number generator that retrieves randomness straight from
|
||||||
/// the operating system. Platform sources:
|
/// the operating system. Platform sources:
|
||||||
///
|
///
|
||||||
/// - Unix-like systems (Linux, Android, Mac OSX): read directly from
|
/// - Unix-like systems (Linux, Android, macOS): read directly from
|
||||||
/// `/dev/urandom`, or from `getrandom(2)` system call if available.
|
/// `/dev/urandom`, or from `getrandom(2)` system call if available.
|
||||||
/// - Windows: calls `CryptGenRandom`, using the default cryptographic
|
/// - Windows: calls `CryptGenRandom`, using the default cryptographic
|
||||||
/// service provider with the `PROV_RSA_FULL` type.
|
/// service provider with the `PROV_RSA_FULL` type.
|
||||||
|
|
|
@ -96,17 +96,17 @@ pub unsafe extern fn destroy_value<T>(ptr: *mut u8) {
|
||||||
// `None`.
|
// `None`.
|
||||||
(*ptr).dtor_running.set(true);
|
(*ptr).dtor_running.set(true);
|
||||||
|
|
||||||
// The OSX implementation of TLS apparently had an odd aspect to it
|
// The macOS implementation of TLS apparently had an odd aspect to it
|
||||||
// where the pointer we have may be overwritten while this destructor
|
// where the pointer we have may be overwritten while this destructor
|
||||||
// is running. Specifically if a TLS destructor re-accesses TLS it may
|
// is running. Specifically if a TLS destructor re-accesses TLS it may
|
||||||
// trigger a re-initialization of all TLS variables, paving over at
|
// trigger a re-initialization of all TLS variables, paving over at
|
||||||
// least some destroyed ones with initial values.
|
// least some destroyed ones with initial values.
|
||||||
//
|
//
|
||||||
// This means that if we drop a TLS value in place on OSX that we could
|
// This means that if we drop a TLS value in place on macOS that we could
|
||||||
// revert the value to its original state halfway through the
|
// revert the value to its original state halfway through the
|
||||||
// destructor, which would be bad!
|
// destructor, which would be bad!
|
||||||
//
|
//
|
||||||
// Hence, we use `ptr::read` on OSX (to move to a "safe" location)
|
// Hence, we use `ptr::read` on macOS (to move to a "safe" location)
|
||||||
// instead of drop_in_place.
|
// instead of drop_in_place.
|
||||||
if cfg!(target_os = "macos") {
|
if cfg!(target_os = "macos") {
|
||||||
ptr::read((*ptr).inner.get());
|
ptr::read((*ptr).inner.get());
|
||||||
|
|
|
@ -249,7 +249,7 @@ impl Command {
|
||||||
// mutex, and then after the fork they unlock it.
|
// mutex, and then after the fork they unlock it.
|
||||||
//
|
//
|
||||||
// Despite this information, libnative's spawn has been witnessed to
|
// Despite this information, libnative's spawn has been witnessed to
|
||||||
// deadlock on both OSX and FreeBSD. I'm not entirely sure why, but
|
// deadlock on both macOS and FreeBSD. I'm not entirely sure why, but
|
||||||
// all collected backtraces point at malloc/free traffic in the
|
// all collected backtraces point at malloc/free traffic in the
|
||||||
// child spawned process.
|
// child spawned process.
|
||||||
//
|
//
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
/// Some methods of getting a backtrace:
|
/// Some methods of getting a backtrace:
|
||||||
///
|
///
|
||||||
/// * The backtrace() functions on unix. It turns out this doesn't work very
|
/// * The backtrace() functions on unix. It turns out this doesn't work very
|
||||||
/// well for green threads on OSX, and the address to symbol portion of it
|
/// well for green threads on macOS, and the address to symbol portion of it
|
||||||
/// suffers problems that are described below.
|
/// suffers problems that are described below.
|
||||||
///
|
///
|
||||||
/// * Using libunwind. This is more difficult than it sounds because libunwind
|
/// * Using libunwind. This is more difficult than it sounds because libunwind
|
||||||
|
@ -51,9 +51,9 @@
|
||||||
///
|
///
|
||||||
/// * Use dladdr(). The original backtrace()-based idea actually uses dladdr()
|
/// * Use dladdr(). The original backtrace()-based idea actually uses dladdr()
|
||||||
/// behind the scenes to translate, and this is why backtrace() was not used.
|
/// behind the scenes to translate, and this is why backtrace() was not used.
|
||||||
/// Conveniently, this method works fantastically on OSX. It appears dladdr()
|
/// Conveniently, this method works fantastically on macOS. It appears dladdr()
|
||||||
/// uses magic to consult the local symbol table, or we're putting everything
|
/// uses magic to consult the local symbol table, or we're putting everything
|
||||||
/// in the dynamic symbol table anyway. Regardless, for OSX, this is the
|
/// in the dynamic symbol table anyway. Regardless, for macOS, this is the
|
||||||
/// method used for translation. It's provided by the system and easy to do.o
|
/// method used for translation. It's provided by the system and easy to do.o
|
||||||
///
|
///
|
||||||
/// Sadly, all other systems have a dladdr() implementation that does not
|
/// Sadly, all other systems have a dladdr() implementation that does not
|
||||||
|
@ -75,7 +75,7 @@
|
||||||
/// * Use `libbacktrace`. It turns out that this is a small library bundled in
|
/// * Use `libbacktrace`. It turns out that this is a small library bundled in
|
||||||
/// the gcc repository which provides backtrace and symbol translation
|
/// the gcc repository which provides backtrace and symbol translation
|
||||||
/// functionality. All we really need from it is the backtrace functionality,
|
/// functionality. All we really need from it is the backtrace functionality,
|
||||||
/// and we only really need this on everything that's not OSX, so this is the
|
/// and we only really need this on everything that's not macOS, so this is the
|
||||||
/// chosen route for now.
|
/// chosen route for now.
|
||||||
///
|
///
|
||||||
/// In summary, the current situation uses libgcc_s to get a trace of stack
|
/// In summary, the current situation uses libgcc_s to get a trace of stack
|
||||||
|
|
|
@ -204,7 +204,7 @@ impl SocketAddr {
|
||||||
let len = self.len as usize - sun_path_offset();
|
let len = self.len as usize - sun_path_offset();
|
||||||
let path = unsafe { mem::transmute::<&[libc::c_char], &[u8]>(&self.addr.sun_path) };
|
let path = unsafe { mem::transmute::<&[libc::c_char], &[u8]>(&self.addr.sun_path) };
|
||||||
|
|
||||||
// OSX seems to return a len of 16 and a zeroed sun_path for unnamed addresses
|
// macOS seems to return a len of 16 and a zeroed sun_path for unnamed addresses
|
||||||
if len == 0 || (cfg!(not(target_os = "linux")) && self.addr.sun_path[0] == 0) {
|
if len == 0 || (cfg!(not(target_os = "linux")) && self.addr.sun_path[0] == 0) {
|
||||||
AddressKind::Unnamed
|
AddressKind::Unnamed
|
||||||
} else if self.addr.sun_path[0] == 0 {
|
} else if self.addr.sun_path[0] == 0 {
|
||||||
|
|
|
@ -128,7 +128,7 @@ unsafe fn register_dtor(t: *mut u8, dtor: unsafe extern fn(*mut u8)) {
|
||||||
register_dtor_fallback(t, dtor);
|
register_dtor_fallback(t, dtor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// OSX's analog of the above linux function is this _tlv_atexit function.
|
// macOS's analog of the above linux function is this _tlv_atexit function.
|
||||||
// The disassembly of thread_local globals in C++ (at least produced by
|
// The disassembly of thread_local globals in C++ (at least produced by
|
||||||
// clang) will have this show up in the output.
|
// clang) will have this show up in the output.
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
|
@ -154,17 +154,17 @@ pub unsafe extern fn destroy_value<T>(ptr: *mut u8) {
|
||||||
// `None`.
|
// `None`.
|
||||||
(*ptr).dtor_running.set(true);
|
(*ptr).dtor_running.set(true);
|
||||||
|
|
||||||
// The OSX implementation of TLS apparently had an odd aspect to it
|
// The macOS implementation of TLS apparently had an odd aspect to it
|
||||||
// where the pointer we have may be overwritten while this destructor
|
// where the pointer we have may be overwritten while this destructor
|
||||||
// is running. Specifically if a TLS destructor re-accesses TLS it may
|
// is running. Specifically if a TLS destructor re-accesses TLS it may
|
||||||
// trigger a re-initialization of all TLS variables, paving over at
|
// trigger a re-initialization of all TLS variables, paving over at
|
||||||
// least some destroyed ones with initial values.
|
// least some destroyed ones with initial values.
|
||||||
//
|
//
|
||||||
// This means that if we drop a TLS value in place on OSX that we could
|
// This means that if we drop a TLS value in place on macOS that we could
|
||||||
// revert the value to its original state halfway through the
|
// revert the value to its original state halfway through the
|
||||||
// destructor, which would be bad!
|
// destructor, which would be bad!
|
||||||
//
|
//
|
||||||
// Hence, we use `ptr::read` on OSX (to move to a "safe" location)
|
// Hence, we use `ptr::read` on macOS (to move to a "safe" location)
|
||||||
// instead of drop_in_place.
|
// instead of drop_in_place.
|
||||||
if cfg!(target_os = "macos") {
|
if cfg!(target_os = "macos") {
|
||||||
ptr::read((*ptr).inner.get());
|
ptr::read((*ptr).inner.get());
|
||||||
|
|
|
@ -29,7 +29,7 @@ fn max_len() -> usize {
|
||||||
// with the man page quoting that if the count of bytes to read is
|
// with the man page quoting that if the count of bytes to read is
|
||||||
// greater than `SSIZE_MAX` the result is "unspecified".
|
// greater than `SSIZE_MAX` the result is "unspecified".
|
||||||
//
|
//
|
||||||
// On OSX, however, apparently the 64-bit libc is either buggy or
|
// On macOS, however, apparently the 64-bit libc is either buggy or
|
||||||
// intentionally showing odd behavior by rejecting any read with a size
|
// intentionally showing odd behavior by rejecting any read with a size
|
||||||
// larger than or equal to INT_MAX. To handle both of these the read
|
// larger than or equal to INT_MAX. To handle both of these the read
|
||||||
// size is capped on both platforms.
|
// size is capped on both platforms.
|
||||||
|
|
|
@ -439,7 +439,7 @@ impl File {
|
||||||
// Linux kernel then the flag is just ignored by the OS, so we continue
|
// Linux kernel then the flag is just ignored by the OS, so we continue
|
||||||
// to explicitly ask for a CLOEXEC fd here.
|
// to explicitly ask for a CLOEXEC fd here.
|
||||||
//
|
//
|
||||||
// The CLOEXEC flag, however, is supported on versions of OSX/BSD/etc
|
// The CLOEXEC flag, however, is supported on versions of macOS/BSD/etc
|
||||||
// that we support, so we only do this on Linux currently.
|
// that we support, so we only do this on Linux currently.
|
||||||
if cfg!(target_os = "linux") {
|
if cfg!(target_os = "linux") {
|
||||||
fd.set_cloexec()?;
|
fd.set_cloexec()?;
|
||||||
|
@ -573,7 +573,7 @@ impl fmt::Debug for File {
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
fn get_path(fd: c_int) -> Option<PathBuf> {
|
fn get_path(fd: c_int) -> Option<PathBuf> {
|
||||||
// FIXME: The use of PATH_MAX is generally not encouraged, but it
|
// FIXME: The use of PATH_MAX is generally not encouraged, but it
|
||||||
// is inevitable in this case because OS X defines `fcntl` with
|
// is inevitable in this case because macOS defines `fcntl` with
|
||||||
// `F_GETPATH` in terms of `MAXPATHLEN`, and there are no
|
// `F_GETPATH` in terms of `MAXPATHLEN`, and there are no
|
||||||
// alternatives. If a better method is invented, it should be used
|
// alternatives. If a better method is invented, it should be used
|
||||||
// instead.
|
// instead.
|
||||||
|
|
|
@ -434,8 +434,8 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
// See #14232 for more information, but it appears that signal delivery to a
|
// See #14232 for more information, but it appears that signal delivery to a
|
||||||
// newly spawned process may just be raced in the OSX, so to prevent this
|
// newly spawned process may just be raced in the macOS, so to prevent this
|
||||||
// test from being flaky we ignore it on OSX.
|
// test from being flaky we ignore it on macOS.
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_os = "macos", ignore)]
|
#[cfg_attr(target_os = "macos", ignore)]
|
||||||
#[cfg_attr(target_os = "nacl", ignore)] // no signals on NaCl.
|
#[cfg_attr(target_os = "nacl", ignore)] // no signals on NaCl.
|
||||||
|
|
|
@ -129,7 +129,7 @@ impl Command {
|
||||||
// mutex, and then after the fork they unlock it.
|
// mutex, and then after the fork they unlock it.
|
||||||
//
|
//
|
||||||
// Despite this information, libnative's spawn has been witnessed to
|
// Despite this information, libnative's spawn has been witnessed to
|
||||||
// deadlock on both OSX and FreeBSD. I'm not entirely sure why, but
|
// deadlock on both macOS and FreeBSD. I'm not entirely sure why, but
|
||||||
// all collected backtraces point at malloc/free traffic in the
|
// all collected backtraces point at malloc/free traffic in the
|
||||||
// child spawned process.
|
// child spawned process.
|
||||||
//
|
//
|
||||||
|
|
|
@ -187,7 +187,7 @@ mod imp {
|
||||||
let stack = libc::stack_t {
|
let stack = libc::stack_t {
|
||||||
ss_sp: ptr::null_mut(),
|
ss_sp: ptr::null_mut(),
|
||||||
ss_flags: SS_DISABLE,
|
ss_flags: SS_DISABLE,
|
||||||
// Workaround for bug in MacOS implementation of sigaltstack
|
// Workaround for bug in macOS implementation of sigaltstack
|
||||||
// UNIX2003 which returns ENOMEM when disabling a stack while
|
// UNIX2003 which returns ENOMEM when disabling a stack while
|
||||||
// passing ss_size smaller than MINSIGSTKSZ. According to POSIX
|
// passing ss_size smaller than MINSIGSTKSZ. According to POSIX
|
||||||
// both ss_sp and ss_size should be ignored in this case.
|
// both ss_sp and ss_size should be ignored in this case.
|
||||||
|
|
|
@ -74,7 +74,7 @@ use mem;
|
||||||
/// destroyed, but not all platforms have this guard. Those platforms that do
|
/// destroyed, but not all platforms have this guard. Those platforms that do
|
||||||
/// not guard typically have a synthetic limit after which point no more
|
/// not guard typically have a synthetic limit after which point no more
|
||||||
/// destructors are run.
|
/// destructors are run.
|
||||||
/// 3. On OSX, initializing TLS during destruction of other TLS slots can
|
/// 3. On macOS, initializing TLS during destruction of other TLS slots can
|
||||||
/// sometimes cancel *all* destructors for the current thread, whether or not
|
/// sometimes cancel *all* destructors for the current thread, whether or not
|
||||||
/// the slots have already had their destructors run or not.
|
/// the slots have already had their destructors run or not.
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
@ -524,9 +524,9 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note that this test will deadlock if TLS destructors aren't run (this
|
// Note that this test will deadlock if TLS destructors aren't run (this
|
||||||
// requires the destructor to be run to pass the test). OSX has a known bug
|
// requires the destructor to be run to pass the test). macOS has a known bug
|
||||||
// where dtors-in-dtors may cancel other destructors, so we just ignore this
|
// where dtors-in-dtors may cancel other destructors, so we just ignore this
|
||||||
// test on OSX.
|
// test on macOS.
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_os = "macos", ignore)]
|
#[cfg_attr(target_os = "macos", ignore)]
|
||||||
fn dtors_in_dtors_in_dtors() {
|
fn dtors_in_dtors_in_dtors() {
|
||||||
|
|
|
@ -67,7 +67,7 @@ pub fn get_dbpath_for_term(term: &str) -> Option<PathBuf> {
|
||||||
p.pop();
|
p.pop();
|
||||||
|
|
||||||
// on some installations the dir is named after the hex of the char
|
// on some installations the dir is named after the hex of the char
|
||||||
// (e.g. OS X)
|
// (e.g. macOS)
|
||||||
p.push(&format!("{:x}", first_char as usize));
|
p.push(&format!("{:x}", first_char as usize));
|
||||||
p.push(term);
|
p.push(term);
|
||||||
if fs::metadata(&p).is_ok() {
|
if fs::metadata(&p).is_ok() {
|
||||||
|
@ -82,7 +82,7 @@ pub fn get_dbpath_for_term(term: &str) -> Option<PathBuf> {
|
||||||
#[ignore(reason = "buildbots don't have ncurses installed and I can't mock everything I need")]
|
#[ignore(reason = "buildbots don't have ncurses installed and I can't mock everything I need")]
|
||||||
fn test_get_dbpath_for_term() {
|
fn test_get_dbpath_for_term() {
|
||||||
// woefully inadequate test coverage
|
// woefully inadequate test coverage
|
||||||
// note: current tests won't work with non-standard terminfo hierarchies (e.g. OS X's)
|
// note: current tests won't work with non-standard terminfo hierarchies (e.g. macOS's)
|
||||||
use std::env;
|
use std::env;
|
||||||
// FIXME (#9639): This needs to handle non-utf8 paths
|
// FIXME (#9639): This needs to handle non-utf8 paths
|
||||||
fn x(t: &str) -> String {
|
fn x(t: &str) -> String {
|
||||||
|
|
|
@ -30,7 +30,7 @@ extern crate allocator_dylib;
|
||||||
// that this just passes on those platforms we link in some other allocator to
|
// that this just passes on those platforms we link in some other allocator to
|
||||||
// ensure we get the same error.
|
// ensure we get the same error.
|
||||||
//
|
//
|
||||||
// So long as we CI linux/OSX we should be good.
|
// So long as we CI linux/macOS we should be good.
|
||||||
#[cfg(any(target_os = "linux", target_os = "macos"))]
|
#[cfg(any(target_os = "linux", target_os = "macos"))]
|
||||||
extern crate alloc_jemalloc;
|
extern crate alloc_jemalloc;
|
||||||
#[cfg(not(any(target_os = "linux", target_os = "macos")))]
|
#[cfg(not(any(target_os = "linux", target_os = "macos")))]
|
||||||
|
|
|
@ -28,7 +28,7 @@ extern crate allocator_dylib2;
|
||||||
// that this just passes on those platforms we link in some other allocator to
|
// that this just passes on those platforms we link in some other allocator to
|
||||||
// ensure we get the same error.
|
// ensure we get the same error.
|
||||||
//
|
//
|
||||||
// So long as we CI linux/OSX we should be good.
|
// So long as we CI linux/macOS we should be good.
|
||||||
#[cfg(any(all(target_os = "linux", any(target_arch = "x86", target_arch = "x86_64")),
|
#[cfg(any(all(target_os = "linux", any(target_arch = "x86", target_arch = "x86_64")),
|
||||||
target_os = "macos"))]
|
target_os = "macos"))]
|
||||||
extern crate alloc_system;
|
extern crate alloc_system;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
// ignore-macos
|
// ignore-macos
|
||||||
// ignore-ios
|
// ignore-ios
|
||||||
// compile-flags:-l framework=foo
|
// compile-flags:-l framework=foo
|
||||||
// error-pattern: native frameworks are only available on OSX targets
|
// error-pattern: native frameworks are only available on macOS targets
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
#[link(name = "foo", kind = "framework")]
|
#[link(name = "foo", kind = "framework")]
|
||||||
extern {}
|
extern {}
|
||||||
//~^^ ERROR: native frameworks are only available on OSX
|
//~^^ ERROR: native frameworks are only available on macOS
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ fn main() {
|
||||||
// (E.g. negative float to unsigned integer goes through a
|
// (E.g. negative float to unsigned integer goes through a
|
||||||
// library routine on the default i686 platforms, and the
|
// library routine on the default i686 platforms, and the
|
||||||
// implementation of that routine differs on e.g. Linux
|
// implementation of that routine differs on e.g. Linux
|
||||||
// vs. OSX, resulting in different answers.)
|
// vs. macOS, resulting in different answers.)
|
||||||
if $from::is_float() {
|
if $from::is_float() {
|
||||||
if !$to::in_range(A) { from.0 = 0 as $to; to.0 = 0 as $to; }
|
if !$to::in_range(A) { from.0 = 0 as $to; to.0 = 0 as $to; }
|
||||||
if !$to::in_range(B) { from.1 = 0 as $to; to.1 = 0 as $to; }
|
if !$to::in_range(B) { from.1 = 0 as $to; to.1 = 0 as $to; }
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
/// darwin_fd_limit exists to work around an issue where launchctl on Mac OS X
|
/// darwin_fd_limit exists to work around an issue where launchctl on macOS
|
||||||
/// defaults the rlimit maxfiles to 256/unlimited. The default soft limit of 256
|
/// defaults the rlimit maxfiles to 256/unlimited. The default soft limit of 256
|
||||||
/// ends up being far too low for our multithreaded scheduler testing, depending
|
/// ends up being far too low for our multithreaded scheduler testing, depending
|
||||||
/// on the number of cores available.
|
/// on the number of cores available.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue