From b9986d9dc4e7ca47b3d07ae9ca5870196c5f19b6 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Mon, 9 Mar 2020 07:59:51 +0900 Subject: [PATCH 1/4] Add `riscv64gc-unknown-linux-gnu` image --- ci/azure.yml | 2 ++ ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile diff --git a/ci/azure.yml b/ci/azure.yml index 52d1e479469f3..6a2f685320016 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 0000000000000..2ab35b317f96b --- /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 From 4984947eab8bc4ab26722f81a136da39a9b3d793 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Thu, 30 Apr 2020 13:21:43 +0900 Subject: [PATCH 2/4] Remove the re-definition of `timespec` --- src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs | 5 ----- 1 file changed, 5 deletions(-) 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 3fe18c026a87b..d3248e2150a7c 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, From bf5d83816f7895f385de20de17cefedadd2e41ff Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Thu, 30 Apr 2020 14:26:40 +0900 Subject: [PATCH 3/4] Make some fields private --- src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 d3248e2150a7c..9fa0f0a963d76 100644 --- a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs @@ -36,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 { @@ -58,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 { @@ -156,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 { @@ -172,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 { From b12c35f0cd70855ee0de93d20265110f9acd86cc Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Thu, 30 Apr 2020 14:27:44 +0900 Subject: [PATCH 4/4] Skip test for `mode` field of `ipc_perm` --- libc-test/build.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libc-test/build.rs b/libc-test/build.rs index dedd4b8301375..f4a2f156b2f95 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) ) });