Fix and enable libstd building
This commit is contained in:
parent
c68e76c33b
commit
223611dcb2
@ -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
9
example/std_example.rs
Normal 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();
|
||||
}
|
25
patches/0011-Workaround-for-libstd-crash.patch
Normal file
25
patches/0011-Workaround-for-libstd-crash.patch
Normal 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)
|
9
test.sh
9
test.sh
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user