about summary refs log tree commit diff
path: root/src/liballoc_jemalloc
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-01-01 09:56:18 +0000
committerbors <bors@rust-lang.org>2017-01-01 09:56:18 +0000
commite1279a0b30a6a36822ecf7c7cc683953e1239745 (patch)
tree39c4f3349ee7128c7d9e546b1a93eb05326fa913 /src/liballoc_jemalloc
parente227433dc39ab13aa2368814169c049b8f876825 (diff)
parentb14785d3d0e3093983f6d6e266b754e1b536da10 (diff)
downloadrust-e1279a0b30a6a36822ecf7c7cc683953e1239745.tar.gz
rust-e1279a0b30a6a36822ecf7c7cc683953e1239745.zip
Auto merge of #38726 - japaric:sparc64, r=sanxiyn
sparc64-linux support

This is built on top of #38656 and depends on rust-lang/libc#483

Hello world works.

The libc-test test suite passes.

`panic!` doesn't fully work:

```
$ qemu-sparc64-static ./panic
thread 'main' panicked at 'explicit panic', panic.rs:1
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Illegal instruction (core dumped)
```

Backtraces don't work either, probably related to the previous point:

```
$ export RUST_BACKTRACE=1
$ qemu-sparc64-static ./panic
thread 'main' panicked at 'explicit panic', panic.rs:1
stack backtrace:
Illegal instruction (core dumped)
```

r? @alexcrichton

@jakllsch Does panicking / backtraces work on sparc64-netbsd?

cc @glaubitz
Diffstat (limited to 'src/liballoc_jemalloc')
-rw-r--r--src/liballoc_jemalloc/build.rs6
-rw-r--r--src/liballoc_jemalloc/lib.rs3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/liballoc_jemalloc/build.rs b/src/liballoc_jemalloc/build.rs
index 2bbec9e5fc2..1edcb0b1f24 100644
--- a/src/liballoc_jemalloc/build.rs
+++ b/src/liballoc_jemalloc/build.rs
@@ -151,6 +151,12 @@ fn main() {
     cmd.arg(format!("--host={}", build_helper::gnu_target(&target)));
     cmd.arg(format!("--build={}", build_helper::gnu_target(&host)));
 
+    // for some reason, jemalloc configure doesn't detect this value
+    // automatically for this target
+    if target == "sparc64-unknown-linux-gnu" {
+        cmd.arg("--with-lg-quantum=4");
+    }
+
     run(&mut cmd);
     let mut make = Command::new(build_helper::make(&host));
     make.current_dir(&build_dir)
diff --git a/src/liballoc_jemalloc/lib.rs b/src/liballoc_jemalloc/lib.rs
index 21e45f9c4b2..f2df393ad77 100644
--- a/src/liballoc_jemalloc/lib.rs
+++ b/src/liballoc_jemalloc/lib.rs
@@ -84,7 +84,8 @@ mod imp {
                   target_arch = "aarch64",
                   target_arch = "powerpc64",
                   target_arch = "mips64",
-                  target_arch = "s390x")))]
+                  target_arch = "s390x",
+                  target_arch = "sparc64")))]
     const MIN_ALIGN: usize = 16;
 
     // MALLOCX_ALIGN(a) macro