summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-05-03 14:41:25 +0900
committerGitHub <noreply@github.com>2020-05-03 14:41:25 +0900
commit2020fddd382fa0908bf6d83eb903e5731f774352 (patch)
tree31797100861b16d7beefb7a1f520257fede9b217
parent9352a2fac6af2d8b0404c93ddc07f1f33ee4be43 (diff)
parentb12c35f0cd70855ee0de93d20265110f9acd86cc (diff)
downloadrust-libc-2020fddd382fa0908bf6d83eb903e5731f774352.tar.gz
Merge pull request #1684 from JohnTitor/riscv64
Add `riscv64gc-unknown-linux-gnu` image
-rw-r--r--ci/azure.yml2
-rw-r--r--ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile12
-rw-r--r--libc-test/build.rs3
-rw-r--r--src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs21
4 files changed, 24 insertions, 14 deletions
diff --git a/ci/azure.yml b/ci/azure.yml
index 52d1e47946..6a2f685320 100644
--- a/ci/azure.yml
+++ b/ci/azure.yml
@@ -72,6 +72,8 @@ jobs:
TARGET: powerpc64le-unknown-linux-gnu
s390x-unknown-linux-gnu:
TARGET: s390x-unknown-linux-gnu
+ riscv64gc-unknown-linux-gnu:
+ TARGET: riscv64gc-unknown-linux-gnu
#wasm32-wasi
# TARGET: wasm32-wasi
sparc64-unknown-linux-gnu:
diff --git a/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile b/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile
new file mode 100644
index 0000000000..2ab35b317f
--- /dev/null
+++ b/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile
@@ -0,0 +1,12 @@
+FROM ubuntu:20.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ gcc libc6-dev qemu-user ca-certificates \
+ gcc-riscv64-linux-gnu libc6-dev-riscv64-cross \
+ qemu-system-riscv64 linux-headers-generic
+
+ENV CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=riscv64-linux-gnu-gcc \
+ CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_RUNNER="qemu-riscv64 -L /usr/riscv64-linux-gnu" \
+ CC_riscv64gc_unknown_linux_gnu=riscv64-linux-gnu-gcc \
+ CFLAGS_riscv64gc_unknown_linux_gnu="-mabi=lp64d -fPIC" \
+ PATH=$PATH:/rust/bin
diff --git a/libc-test/build.rs b/libc-test/build.rs
index dedd4b8301..f4a2f156b2 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -2231,6 +2231,7 @@ fn test_linux(target: &str) {
let aarch64_musl = target.contains("aarch64") && musl;
let gnuabihf = target.contains("gnueabihf");
let x86_64_gnux32 = target.contains("gnux32") && x86_64;
+ let riscv64 = target.contains("riscv64");
let mut cfg = ctest_cfg();
cfg.define("_GNU_SOURCE", None);
@@ -2657,7 +2658,7 @@ fn test_linux(target: &str) {
(struct_ == "timex" && field.starts_with("__unused")) ||
// FIXME: It now takes mode_t since glibc 2.31 on some targets.
(struct_ == "ipc_perm" && field == "mode"
- && ((x86_64 || i686 || arm) && gnu || x86_64_gnux32)
+ && ((x86_64 || i686 || arm || riscv64) && gnu || x86_64_gnux32)
)
});
diff --git a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
index 3fe18c026a..9fa0f0a963 100644
--- a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
+++ b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
@@ -17,11 +17,6 @@ s! {
__size: [::c_ulong; 7],
}
- pub struct timespec {
- pub tv_sec: ::time_t,
- pub tv_nsec: ::c_long,
- }
-
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
@@ -41,7 +36,7 @@ s! {
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
- pub __unused: [::c_int; 2usize],
+ __unused: [::c_int; 2usize],
}
pub struct stat64 {
@@ -63,7 +58,7 @@ s! {
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
- pub __unused: [::c_int; 2],
+ __unused: [::c_int; 2],
}
pub struct statfs {
@@ -161,11 +156,11 @@ s! {
pub cuid: ::uid_t,
pub cgid: ::gid_t,
pub mode: ::c_ushort,
- pub __pad1: ::c_ushort,
+ __pad1: ::c_ushort,
pub __seq: ::c_ushort,
- pub __pad2: ::c_ushort,
- pub __unused1: ::c_ulong,
- pub __unused2: ::c_ulong,
+ __pad2: ::c_ushort,
+ __unused1: ::c_ulong,
+ __unused2: ::c_ulong,
}
pub struct shmid_ds {
@@ -177,8 +172,8 @@ s! {
pub shm_cpid: ::pid_t,
pub shm_lpid: ::pid_t,
pub shm_nattch: ::shmatt_t,
- pub __unused5: ::c_ulong,
- pub __unused6: ::c_ulong,
+ __unused5: ::c_ulong,
+ __unused6: ::c_ulong,
}
pub struct flock {