Browse Source

ltp: Fix build on rv32

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Khem Raj 4 years ago
parent
commit
5cc6fe3632

+ 1 - 0
conf/layer.conf

@@ -55,3 +55,4 @@ INSANE_SKIP_append_pn-gdb_riscv32 = " textrel"
 INSANE_SKIP_append_pn-capnproto_riscv32 = " textrel"
 INSANE_SKIP_append_pn-rdma-core_riscv32 = " textrel"
 INSANE_SKIP_append_pn-util-linux_riscv32 = " textrel"
+INSANE_SKIP_append_pn-ltp_riscv32 = " textrel"

+ 66 - 0
recipes-extended/ltp/ltp/0001-Define-__NR_futex-to-be-__NR_futex_time64-on-riscv32.patch

@@ -0,0 +1,66 @@
+From 39c985e3f03c9c7d361c2fa3dcbe8104a868d959 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 28 Apr 2020 20:30:56 -0700
+Subject: [PATCH] Define __NR_futex to be __NR_futex_time64 on riscv32
+
+RISCV glibc has decided to use 64bit time_t from get go unlike
+other 32bit architecture therefore aliasing __NR_futex to
+__NR_futex_time64 helps avoid the below errors on rv32
+
+tst_checkpoint.c:99:17: error: use of undeclared identifier 'SYS_futex'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/tst_checkpoint.c                        | 4 ++++
+ testcases/kernel/syscalls/clone/clone08.c   | 4 ++++
+ testcases/kernel/syscalls/futex/futextest.h | 4 ++++
+ 3 files changed, 12 insertions(+)
+
+diff --git a/lib/tst_checkpoint.c b/lib/tst_checkpoint.c
+index 5e5b11496c..0388e9db2f 100644
+--- a/lib/tst_checkpoint.c
++++ b/lib/tst_checkpoint.c
+@@ -21,6 +21,10 @@
+  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+  */
+ 
++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_futex __NR_futex_time64
++#endif
++
+ #include <stdint.h>
+ #include <limits.h>
+ #include <errno.h>
+diff --git a/testcases/kernel/syscalls/clone/clone08.c b/testcases/kernel/syscalls/clone/clone08.c
+index aace308068..85a2bd9246 100644
+--- a/testcases/kernel/syscalls/clone/clone08.c
++++ b/testcases/kernel/syscalls/clone/clone08.c
+@@ -5,6 +5,10 @@
+  * Author: Zeng Linggang <zenglg.jy@cn.fujitsu.com>
+  */
+ 
++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_futex __NR_futex_time64
++#endif
++
+ #define _GNU_SOURCE
+ #include <stdlib.h>
+ #include <stdio.h>
+diff --git a/testcases/kernel/syscalls/futex/futextest.h b/testcases/kernel/syscalls/futex/futextest.h
+index 5754d36dae..59d877e30f 100644
+--- a/testcases/kernel/syscalls/futex/futextest.h
++++ b/testcases/kernel/syscalls/futex/futextest.h
+@@ -34,6 +34,10 @@
+ #ifndef _FUTEXTEST_H
+ #define _FUTEXTEST_H
+ 
++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_futex __NR_futex_time64
++#endif
++
+ #include <unistd.h>
+ #include <sys/syscall.h>
+ #include <sys/types.h>
+-- 
+2.26.2
+

+ 3 - 0
recipes-extended/ltp/ltp_%.bbappend

@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_riscv32 = " file://0001-Define-__NR_futex-to-be-__NR_futex_time64-on-riscv32.patch"