about summary refs log tree commit diff
path: root/src/rt/arch
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-01-15 05:12:30 +0000
committerbors <bors@rust-lang.org>2015-01-15 05:12:30 +0000
commit0c96037ec1676b420002a06ea337865f95abbf2c (patch)
treecec4f5e86bd892800d343105da4332ad94b3f61a /src/rt/arch
parent451e134c180e88b06e3b747ed750e4901ca93721 (diff)
parent78278d0c76f3c868a4a4bcc47336c384968c6b3a (diff)
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 
Diffstat (limited to 'src/rt/arch')
-rw-r--r--src/rt/arch/powerpc/morestack.S18
-rw-r--r--src/rt/arch/powerpc/record_sp.S4
2 files changed, 22 insertions, 0 deletions
diff --git a/src/rt/arch/powerpc/morestack.S b/src/rt/arch/powerpc/morestack.S
new file mode 100644
index 00000000000..2502ac1eb48
--- /dev/null
+++ b/src/rt/arch/powerpc/morestack.S
@@ -0,0 +1,18 @@
+// Mark stack as non-executable
+#if defined(__linux__) && defined(__ELF__)
+.section       .note.GNU-stack, "", %progbits
+#endif
+
+/* See i386/morestack.S for the lengthy, general explanation. */
+
+.global rust_stack_exhausted
+
+.hidden __morestack
+
+// FIXME(POWERPC): this might not be perfectly right but works for now
+__morestack:
+       .cfi_startproc
+       bl rust_stack_exhausted
+       // the above function ensures that it never returns
+       .cfi_endproc
+.end  __morestack
diff --git a/src/rt/arch/powerpc/record_sp.S b/src/rt/arch/powerpc/record_sp.S
new file mode 100644
index 00000000000..e93a69a711b
--- /dev/null
+++ b/src/rt/arch/powerpc/record_sp.S
@@ -0,0 +1,4 @@
+// Mark stack as non-executable
+#if defined(__linux__) && defined(__ELF__)
+.section       .note.GNU-stack, "", %progbits
+#endif