auto merge of #20980 : richo/rust/final-power, r=alexcrichton

Originally, this was going to be discussed and revisted, however I've been working on this for months, and a rebase on top of master was about 1 flight's worth of work so I just went ahead and did it.

This gets you as far as being able to target powerpc with, eg:

    LD_LIBRARY_PATH=./x86_64-unknown-linux-gnu/stage2/lib/ x86_64-unknown-linux-gnu/stage2/bin/rustc -C linker=powerpc-linux-gnu-gcc --target powerpc-unknown-linux-gnu hello.rs

Would really love to get this out before 1.0. r? @alexcrichton
This commit is contained in:
bors
2015-01-15 05:12:30 +00:00
26 changed files with 364 additions and 42 deletions

View File

@@ -231,6 +231,12 @@ pub unsafe fn record_sp_limit(limit: uint) {
unsafe fn target_record_sp_limit(_: uint) {
}
// powerpc - FIXME(POWERPC): missing...
#[cfg(target_arch = "powerpc")]
unsafe fn target_record_sp_limit(_: uint) {
}
// iOS segmented stack is disabled for now, see related notes
#[cfg(all(target_arch = "arm", target_os = "ios"))] #[inline(always)]
unsafe fn target_record_sp_limit(_: uint) {
@@ -326,6 +332,12 @@ pub unsafe fn get_sp_limit() -> uint {
1024
}
// powepc - FIXME(POWERPC): missing...
#[cfg(target_arch = "powerpc")]
unsafe fn target_get_sp_limit() -> uint {
1024
}
// iOS doesn't support segmented stacks yet. This function might
// be called by runtime though so it is unsafe to mark it as
// unreachable, let's return a fixed constant.

View File

@@ -33,7 +33,9 @@ pub const FIONBIO: libc::c_ulong = 0x8004667e;
target_os = "android"))]
pub const FIONBIO: libc::c_ulong = 0x5421;
#[cfg(all(target_os = "linux",
any(target_arch = "mips", target_arch = "mipsel")))]
any(target_arch = "mips",
target_arch = "mipsel",
target_arch = "powerpc")))]
pub const FIONBIO: libc::c_ulong = 0x667e;
#[cfg(any(target_os = "macos",
@@ -49,7 +51,9 @@ pub const FIOCLEX: libc::c_ulong = 0x20006601;
target_os = "android"))]
pub const FIOCLEX: libc::c_ulong = 0x5451;
#[cfg(all(target_os = "linux",
any(target_arch = "mips", target_arch = "mipsel")))]
any(target_arch = "mips",
target_arch = "mipsel",
target_arch = "powerpc")))]
pub const FIOCLEX: libc::c_ulong = 0x6601;
#[cfg(any(target_os = "macos",
@@ -182,7 +186,9 @@ mod signal {
}
#[cfg(all(target_os = "linux",
any(target_arch = "mips", target_arch = "mipsel")))]
any(target_arch = "mips",
target_arch = "mipsel",
target_arch = "powerpc")))]
mod signal {
use libc;

View File

@@ -150,6 +150,7 @@ mod imp {
all(target_os = "linux", target_arch = "aarch64"),
all(target_os = "linux", target_arch = "mips"), // may not match
all(target_os = "linux", target_arch = "mipsel"), // may not match
all(target_os = "linux", target_arch = "powerpc"), // may not match
target_os = "android"))] // may not match
mod signal {
use libc;

View File

@@ -126,7 +126,8 @@ mod os {
#[cfg(any(target_arch = "x86",
target_arch = "arm",
target_arch = "mips",
target_arch = "mipsel"))]
target_arch = "mipsel",
target_arch = "powerpc"))]
const __SIZEOF_PTHREAD_MUTEX_T: uint = 24 - 8;
#[cfg(target_arch = "aarch64")]
const __SIZEOF_PTHREAD_MUTEX_T: uint = 48 - 8;
@@ -136,7 +137,8 @@ mod os {
target_arch = "arm",
target_arch = "aarch64",
target_arch = "mips",
target_arch = "mipsel"))]
target_arch = "mipsel",
target_arch = "powerpc"))]
const __SIZEOF_PTHREAD_COND_T: uint = 48 - 8;
#[cfg(any(target_arch = "x86_64",
@@ -146,7 +148,8 @@ mod os {
#[cfg(any(target_arch = "x86",
target_arch = "arm",
target_arch = "mips",
target_arch = "mipsel"))]
target_arch = "mipsel",
target_arch = "powerpc"))]
const __SIZEOF_PTHREAD_RWLOCK_T: uint = 32 - 8;
#[repr(C)]