Fix and enable libstd building

This commit is contained in:
bjorn3 2019-02-11 19:40:07 +01:00
parent c68e76c33b
commit 223611dcb2
4 changed files with 42 additions and 2 deletions

View File

@ -7,6 +7,7 @@ version = "0.0.0"
core = { path = "./sysroot_src/src/libcore" }
compiler_builtins = "0.1"
alloc = { path = "./sysroot_src/src/liballoc" }
std = { path = "./sysroot_src/src/libstd" }
alloc_system = { path = "./alloc_system" }

9
example/std_example.rs Normal file
View File

@ -0,0 +1,9 @@
use std::io::Write;
fn main() {
let _ = ::std::iter::repeat('a' as u8).take(10).collect::<Vec<_>>();
let stderr = ::std::io::stderr();
let mut stderr = stderr.lock();
writeln!(stderr, "some {} text", "<unknown>").unwrap();
}

View File

@ -0,0 +1,25 @@
From 2bc2ef06e118c6fba0626c0e9bf24fed873405b2 Mon Sep 17 00:00:00 2001
From: bjorn3 <bjorn3@users.noreply.github.com>
Date: Sat, 29 Dec 2018 12:37:34 +0100
Subject: [PATCH] Workaround for libstd crash
I think this is related to the use of TLS inside those functions
---
src/libstd/rt.rs | 2 +-
1 file changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/libstd/rt.rs b/src/libstd/rt.rs
index 5ddb66b..6a0d0b5 100644
--- a/src/libstd/rt.rs
+++ b/src/libstd/rt.rs
@@ -51,7 +51,7 @@ fn lang_start_internal(main: &(dyn Fn() -> i32 + Sync + ::panic::RefUnwindSafe),
#[cfg(not(feature = "backtrace"))]
let exit_code = panic::catch_unwind(move || main());
- sys_common::cleanup();
+ //sys_common::cleanup();
exit_code.unwrap_or(101) as isize
}
}
--
2.17.2 (Apple Git-113)

View File

@ -24,11 +24,16 @@ echo "[BUILD+RUN] alloc_example"
$RUSTC --sysroot ./build_sysroot/sysroot example/alloc_example.rs --crate-type bin
./target/out/alloc_example
echo "[BUILD+RUN] std_example"
$RUSTC --sysroot ./build_sysroot/sysroot example/std_example.rs --crate-type bin
./target/out/std_example
echo "[BUILD] mod_bench"
$RUSTC --sysroot ./build_sysroot/sysroot example/mod_bench.rs --crate-type bin
echo "[BUILD] sysroot in release mode"
./build_sysroot/build_sysroot.sh --release
# FIXME linker gives multiple definitions error on Linux
#echo "[BUILD] sysroot in release mode"
#./build_sysroot/build_sysroot.sh --release
COMPILE_MOD_BENCH_INLINE="$RUSTC --sysroot ./build_sysroot/sysroot example/mod_bench.rs --crate-type bin -Zmir-opt-level=3 -O --crate-name mod_bench_inline"
COMPILE_MOD_BENCH_LLVM_0="rustc example/mod_bench.rs --crate-type bin -Copt-level=0 -o target/out/mod_bench_llvm_0 -Cpanic=abort"