about summary refs log tree commit diff
path: root/src/test/run-pass
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-07-17 20:27:20 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-07-25 19:23:17 -0700
commit09e49a8e6c11e57142a0f628745142d94fc87444 (patch)
tree45fa9ffad1f5f8d87718fecec6f63675dd194841 /src/test/run-pass
parent0012b5008b32543cf61a2beba36160c42f36d704 (diff)
Allow linking against crates with #[no_std]
Previously having optional lang_items caused an assertion failure at
compile-time, and then once that was fixed there was a segfault at runtime of
using a NULL crate-map (crates with no_std)
Diffstat (limited to 'src/test/run-pass')
-rw-r--r--src/test/run-pass/no-std-xcrate.rs21
-rw-r--r--src/test/run-pass/no-std-xcrate2.rs35
2 files changed, 56 insertions, 0 deletions
diff --git a/src/test/run-pass/no-std-xcrate.rs b/src/test/run-pass/no-std-xcrate.rs
new file mode 100644
index 00000000000..104e33b7488
--- /dev/null
+++ b/src/test/run-pass/no-std-xcrate.rs
@@ -0,0 +1,21 @@
+// Copyright 2013 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.
+
+// xfail-fast
+// aux-build:no_std_crate.rs
+
+// This tests that crates which link to std can also be linked to crates with
+// #[no_std] that have no lang items.
+
+extern mod no_std_crate;
+
+fn main() {
+    no_std_crate::foo();
+}
diff --git a/src/test/run-pass/no-std-xcrate2.rs b/src/test/run-pass/no-std-xcrate2.rs
new file mode 100644
index 00000000000..e393eb3a5c9
--- /dev/null
+++ b/src/test/run-pass/no-std-xcrate2.rs
@@ -0,0 +1,35 @@
+// Copyright 2013 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.
+
+// xfail-test: this has weird linking problems on linux, and it probably needs a
+//             solution along the lines of disabling segmented stacks and/or the
+//             stack checks.
+// aux-build:no_std_crate.rs
+
+// This tests that libraries built with #[no_std] can be linked to crates with
+// #[no_std] and actually run.
+
+#[no_std];
+
+extern mod no_std_crate;
+
+// This is an unfortunate thing to have to do on linux :(
+#[cfg(target_os = "linux")]
+#[doc(hidden)]
+pub mod linkhack {
+    #[link_args="-lrustrt -lrt"]
+    extern {}
+}
+
+#[start]
+fn main(_: int, _: **u8, _: *u8) -> int {
+    no_std_crate::foo();
+    0
+}