Fixes for building libstd (real)

This commit is contained in:
Jeremy Soller 2016-11-10 19:59:59 -07:00
parent d9f263728d
commit da3f9558d9
10 changed files with 51 additions and 30 deletions

View file

@ -10,7 +10,8 @@ path = "../rust/src/libstd/lib.rs"
[dependencies]
alloc_system = { path = "alloc_system" }
compiler_builtins = { path = "compiler_builtins" }
panic_unwind = { path = "panic_unwind" }
panic_abort = { path = "panic_abort" }
#panic_unwind = { path = "panic_unwind" }
libc = { path = "libc" }
unwind = { path = "unwind" }

View file

@ -2,6 +2,7 @@
name = "libc"
version = "0.1.0"
authors = ["Jeremy Soller <jackpot51@gmail.com>"]
build = "build.rs"
[dependencies]
redox_syscall = { path = "../../syscall/" }

18
libstd_real/libc/build.rs Normal file
View file

@ -0,0 +1,18 @@
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![deny(warnings)]
// See comments in Cargo.toml for why this exists
fn main() {
println!("cargo:rustc-cfg=stdbuild");
println!("cargo:rerun-if-changed=build.rs");
}

View file

@ -3,6 +3,14 @@
#![feature(asm)]
#![feature(naked_functions)]
#![cfg_attr(stdbuild, feature(no_std, core, core_slice_ext, staged_api, custom_attribute, cfg_target_vendor))]
#![cfg_attr(stdbuild, no_std)]
#![cfg_attr(stdbuild, staged_api)]
#![cfg_attr(stdbuild, allow(warnings))]
#![cfg_attr(stdbuild, unstable(feature = "libc",
reason = "use `libc` from crates.io",
issue = "27783"))]
pub use types::*;
pub use funcs::*;
pub use start::*;

View file

@ -0,0 +1,10 @@
[package]
name = "panic_abort"
version = "0.0.0"
authors = ["Jeremy Soller <jackpot51@gmail.com>"]
[lib]
path = "../../rust/src/libpanic_abort/lib.rs"
[dependencies]
redox_syscall = { path = "../../syscall/" }

View file

@ -3,5 +3,10 @@ name = "panic_unwind"
version = "0.0.0"
authors = ["Jeremy Soller <jackpot51@gmail.com>"]
[lib]
path = "../../rust/src/libpanic_unwind/lib.rs"
[dependencies]
libc = { path = "../libc/" }
redox_syscall = { path = "../../syscall/" }
unwind = { path = "../unwind/" }

View file

@ -1,27 +0,0 @@
#![no_std]
#![feature(core_intrinsics)]
#![feature(lang_items)]
#![feature(panic_runtime)]
#![panic_runtime]
#[no_mangle]
pub unsafe extern fn __rust_maybe_catch_panic(f: fn(*mut u8), data: *mut u8,
_data_ptr: *mut usize, _vtable_ptr: *mut usize) -> u32 {
f(data);
0
}
#[no_mangle]
pub unsafe extern fn __rust_start_panic(_data: usize, _vtable: usize) -> u32 {
core::intrinsics::abort();
}
#[lang = "eh_personality"]
pub extern fn eh_personality() {}
#[allow(non_snake_case)]
#[no_mangle]
/// Required to handle panics
pub unsafe extern "C" fn _Unwind_Resume() -> ! {
core::intrinsics::abort();
}

View file

@ -2,3 +2,9 @@
name = "unwind"
version = "0.0.0"
authors = ["Jeremy Soller <jackpot51@gmail.com>"]
[lib]
path = "../../rust/src/libunwind/lib.rs"
[dependencies]
libc = { path = "../libc/" }

View file

@ -1 +0,0 @@
#![no_std]

2
rust

@ -1 +1 @@
Subproject commit ced32a08f3bf7325bf3fe6488e21b108f996abc5
Subproject commit 79a8c272fb8ad09600ef58ff223c73eb44343040