diff options
Diffstat (limited to 'meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch')
-rw-r--r-- | meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch | 728 |
1 files changed, 0 insertions, 728 deletions
diff --git a/meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch b/meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch deleted file mode 100644 index 2fd22b1aa2..0000000000 --- a/meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch +++ /dev/null @@ -1,728 +0,0 @@ -From e99b00a78acaf80236cba8b3fabaebdb3ef1987b Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Tue, 8 Jun 2021 19:45:34 -0700 -Subject: [PATCH 1/4] arch: Add riscv32 architecture support - -Support for rv32 was upstreamed into 5.4+ kernel -Upstream-Status: Submitted [https://github.com/seccomp/libseccomp/pull/327] - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - CREDITS | 1 + - README.md | 1 + - doc/man/man1/scmp_sys_resolver.1 | 2 +- - doc/man/man3/seccomp_arch_add.3 | 1 + - include/seccomp-syscalls.h | 32 +++++++++++++++++++ - include/seccomp.h.in | 9 ++++++ - src/Makefile.am | 1 + - src/arch-riscv32.c | 31 ++++++++++++++++++ - src/arch-riscv32.h | 22 +++++++++++++ - src/arch-syscall-dump.c | 4 +++ - src/arch-syscall-validate | 51 +++++++++++++++++++++++++++++- - src/arch.c | 11 ++++++- - src/gen_pfc.c | 2 ++ - src/python/libseccomp.pxd | 1 + - src/python/seccomp.pyx | 2 ++ - src/syscalls.c | 1 + - src/syscalls.h | 2 ++ - src/system.c | 1 + - tests/15-basic-resolver.c | 1 + - tests/16-sim-arch_basic.c | 6 ++++ - tests/16-sim-arch_basic.py | 1 + - tests/23-sim-arch_all_le_basic.c | 3 ++ - tests/23-sim-arch_all_le_basic.py | 1 + - tests/56-basic-iterate_syscalls.c | 1 + - tests/56-basic-iterate_syscalls.py | 1 + - tests/regression | 5 +-- - tools/scmp_arch_detect.c | 3 ++ - tools/scmp_bpf_disasm.c | 2 ++ - tools/scmp_bpf_sim.c | 2 ++ - tools/util.c | 6 +++- - tools/util.h | 7 ++++ - 31 files changed, 208 insertions(+), 6 deletions(-) - create mode 100644 src/arch-riscv32.c - create mode 100644 src/arch-riscv32.h - -diff --git a/CREDITS b/CREDITS -index b685712..c1ffdb3 100644 ---- a/CREDITS -+++ b/CREDITS -@@ -33,6 +33,7 @@ John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> - Jonah Petri <jonah@petri.us> - Justin Cormack <justin.cormack@docker.com> - Kees Cook <keescook@chromium.org> -+Khem Raj <raj.khem@gmail.com> - Kyle R. Conway <kyle.r.conway@gmail.com> - Kenta Tada <Kenta.Tada@sony.com> - Kir Kolyshkin <kolyshkin@gmail.com> -diff --git a/README.md b/README.md -index 579f226..8199a71 100644 ---- a/README.md -+++ b/README.md -@@ -54,6 +54,7 @@ The libseccomp library currently supports the architectures listed below: - * 32-bit s390 (s390) - * 64-bit s390x (s390x) - * 64-bit RISC-V (riscv64) -+* 32-bit RISC-V (riscv32) - * 32-bit SuperH big endian (sheb) - * 32-bit SuperH (sh) - -diff --git a/doc/man/man1/scmp_sys_resolver.1 b/doc/man/man1/scmp_sys_resolver.1 -index 267187b..fc68d18 100644 ---- a/doc/man/man1/scmp_sys_resolver.1 -+++ b/doc/man/man1/scmp_sys_resolver.1 -@@ -36,7 +36,7 @@ The architecture to use for resolving the system call. Valid - .I ARCH - values are "x86", "x86_64", "x32", "arm", "aarch64", "mips", "mipsel", "mips64", - "mipsel64", "mips64n32", "mipsel64n32", "parisc", "parisc64", "ppc", "ppc64", --"ppc64le", "s390", "s390x", "sheb" and "sh". -+"ppc64le", "riscv32", "s390", "s390x", "sheb" and "sh". - .TP - .B \-t - If necessary, translate the system call name to the proper system call number, -diff --git a/doc/man/man3/seccomp_arch_add.3 b/doc/man/man3/seccomp_arch_add.3 -index 7baa21e..8966b3a 100644 ---- a/doc/man/man3/seccomp_arch_add.3 -+++ b/doc/man/man3/seccomp_arch_add.3 -@@ -30,6 +30,7 @@ seccomp_arch_add, seccomp_arch_remove, seccomp_arch_exist, seccomp_arch_native \ - .B #define SCMP_ARCH_S390X - .B #define SCMP_ARCH_PARISC - .B #define SCMP_ARCH_PARISC64 -+.B #define SCMP_ARCH_RISCV32 - .B #define SCMP_ARCH_RISCV64 - .sp - .BI "uint32_t seccomp_arch_resolve_name(const char *" arch_name ");" -diff --git a/include/seccomp-syscalls.h b/include/seccomp-syscalls.h -index 476f953..4ff814c 100644 ---- a/include/seccomp-syscalls.h -+++ b/include/seccomp-syscalls.h -@@ -276,6 +276,14 @@ - #define __PNR_renameat -10242 - #define __PNR_riscv_flush_icache -10243 - #define __PNR_memfd_secret -10244 -+#define __PNR_fstat -10245 -+#define __PNR_futex -10246 -+#define __PNR_nanosleep -10247 -+#define __PNR_lseek -10248 -+#define __PNR_clock_gettime -10249 -+#define __PNR_clock_nanosleep -10250 -+#define __PNR_gettimeofday -10251 -+#define __PNR_fcntl -10252 - - /* - * libseccomp syscall definitions -@@ -443,7 +451,11 @@ - #define __SNR_clock_getres_time64 __PNR_clock_getres_time64 - #endif - -+#ifdef __NR_clock_gettime - #define __SNR_clock_gettime __NR_clock_gettime -+#else -+#define __SNR_clock_gettime __PNR_clock_gettime -+#endif - - #ifdef __NR_clock_gettime64 - #define __SNR_clock_gettime64 __NR_clock_gettime64 -@@ -451,7 +463,11 @@ - #define __SNR_clock_gettime64 __PNR_clock_gettime64 - #endif - -+#ifdef __NR_clock_nanosleep - #define __SNR_clock_nanosleep __NR_clock_nanosleep -+#else -+#define __SNR_clock_nanosleep __PNR_clock_nanosleep -+#endif - - #ifdef __NR_clock_nanosleep_time64 - #define __SNR_clock_nanosleep_time64 __NR_clock_nanosleep_time64 -@@ -713,7 +729,11 @@ - #define __SNR_ftruncate64 __PNR_ftruncate64 - #endif - -+#ifdef __NR_futex - #define __SNR_futex __NR_futex -+#else -+#define __SNR_futex __PNR_futex -+#endif - - #ifdef __NR_futex_time64 - #define __SNR_futex_time64 __NR_futex_time64 -@@ -899,7 +919,11 @@ - - #define __SNR_gettid __NR_gettid - -+#ifdef __NR_gettimeofday - #define __SNR_gettimeofday __NR_gettimeofday -+#else -+#define __SNR_gettimeofday __PNR_gettimeofday -+#endif - - #ifdef __NR_getuid - #define __SNR_getuid __NR_getuid -@@ -1049,7 +1073,11 @@ - - #define __SNR_lremovexattr __NR_lremovexattr - -+#ifdef __NR_lseek - #define __SNR_lseek __NR_lseek -+#else -+#define __SNR_lseek __PNR_lseek -+#endif - - #define __SNR_lsetxattr __NR_lsetxattr - -@@ -1227,7 +1255,11 @@ - - #define __SNR_name_to_handle_at __NR_name_to_handle_at - -+#ifdef __NR_nanosleep - #define __SNR_nanosleep __NR_nanosleep -+#else -+#define __SNR_nanosleep __PNR_nanosleep -+#endif - - #ifdef __NR_newfstatat - #define __SNR_newfstatat __NR_newfstatat -diff --git a/include/seccomp.h.in b/include/seccomp.h.in -index 333a89c..2e911db 100644 ---- a/include/seccomp.h.in -+++ b/include/seccomp.h.in -@@ -214,7 +214,16 @@ struct scmp_arg_cmp { - #endif /* EM_RISCV */ - #define AUDIT_ARCH_RISCV64 (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) - #endif /* AUDIT_ARCH_RISCV64 */ -+ -+#ifndef AUDIT_ARCH_RISCV32 -+#ifndef EM_RISCV -+#define EM_RISCV 243 -+#endif /* EM_RISCV */ -+#define AUDIT_ARCH_RISCV32 (EM_RISCV|__AUDIT_ARCH_LE) -+#endif /* AUDIT_ARCH_RISCV32 */ -+ - #define SCMP_ARCH_RISCV64 AUDIT_ARCH_RISCV64 -+#define SCMP_ARCH_RISCV32 AUDIT_ARCH_RISCV32 - - /** - * The SuperH architecture tokens -diff --git a/src/Makefile.am b/src/Makefile.am -index 04e7ba5..a30bbc0 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -40,6 +40,7 @@ SOURCES_ALL = \ - arch-ppc.h arch-ppc.c \ - arch-ppc64.h arch-ppc64.c \ - arch-riscv64.h arch-riscv64.c \ -+ arch-riscv32.h arch-riscv32.c \ - arch-s390.h arch-s390.c \ - arch-s390x.h arch-s390x.c \ - arch-sh.h arch-sh.c \ -diff --git a/src/arch-riscv32.c b/src/arch-riscv32.c -new file mode 100644 -index 0000000..10418f4 ---- /dev/null -+++ b/src/arch-riscv32.c -@@ -0,0 +1,31 @@ -+/* -+ * This library is free software; you can redistribute it and/or modify it -+ * under the terms of version 2.1 of the GNU Lesser General Public License as -+ * published by the Free Software Foundation. -+ * -+ * This library is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License -+ * for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with this library; if not, see <http://www.gnu.org/licenses>. -+ */ -+ -+#include <stdlib.h> -+#include <errno.h> -+#include <linux/audit.h> -+ -+#include "arch.h" -+#include "arch-riscv32.h" -+ -+const struct arch_def arch_def_riscv32 = { -+ .token = SCMP_ARCH_RISCV32, -+ .token_bpf = AUDIT_ARCH_RISCV32, -+ .size = ARCH_SIZE_32, -+ .endian = ARCH_ENDIAN_LITTLE, -+ .syscall_resolve_name_raw = riscv32_syscall_resolve_name, -+ .syscall_resolve_num_raw = riscv32_syscall_resolve_num, -+ .syscall_rewrite = NULL, -+ .rule_add = NULL, -+}; -diff --git a/src/arch-riscv32.h b/src/arch-riscv32.h -new file mode 100644 -index 0000000..082a77d ---- /dev/null -+++ b/src/arch-riscv32.h -@@ -0,0 +1,22 @@ -+/* -+ * This library is free software; you can redistribute it and/or modify it -+ * under the terms of version 2.1 of the GNU Lesser General Public License as -+ * published by the Free Software Foundation. -+ * -+ * This library is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License -+ * for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with this library; if not, see <http://www.gnu.org/licenses>. -+ */ -+ -+#ifndef _ARCH_RISCV32_H -+#define _ARCH_RISCV32_H -+ -+#include "arch.h" -+ -+ARCH_DECL(riscv32) -+ -+#endif -diff --git a/src/arch-syscall-dump.c b/src/arch-syscall-dump.c -index 843483b..c6ab57d 100644 ---- a/src/arch-syscall-dump.c -+++ b/src/arch-syscall-dump.c -@@ -43,6 +43,7 @@ - #include "arch-ppc.h" - #include "arch-ppc64.h" - #include "arch-riscv64.h" -+#include "arch-riscv32.h" - #include "arch-s390.h" - #include "arch-s390x.h" - #include "arch-sh.h" -@@ -135,6 +136,9 @@ int main(int argc, char *argv[]) - case SCMP_ARCH_RISCV64: - sys = riscv64_syscall_iterate(iter); - break; -+ case SCMP_ARCH_RISCV32: -+ sys = riscv32_syscall_iterate(iter); -+ break; - case SCMP_ARCH_S390: - sys = s390_syscall_iterate(iter); - break; -diff --git a/src/arch-syscall-validate b/src/arch-syscall-validate -index 68bebef..85c7f3d 100755 ---- a/src/arch-syscall-validate -+++ b/src/arch-syscall-validate -@@ -519,6 +519,49 @@ function dump_lib_riscv64() { - dump_lib_arch riscv64 | mangle_lib_syscall riscv64 - } - -+# -+# Dump the riscv32 system syscall table -+# -+# Arguments: -+# 1 path to the kernel source -+# -+# Dump the architecture's syscall table to stdout. -+# -+function dump_sys_riscv32() { -+ local sed_filter="" -+ -+ sed_filter+='s/__NR3264_fadvise64/223/;' -+ sed_filter+='s/__NR3264_fcntl/25/;' -+ sed_filter+='s/__NR3264_fstatat/79/;' -+ sed_filter+='s/__NR3264_fstatfs/44/;' -+ sed_filter+='s/__NR3264_ftruncate/46/;' -+ sed_filter+='s/__NR3264_lseek/62/;' -+ sed_filter+='s/__NR3264_mmap/222/;' -+ sed_filter+='s/__NR3264_sendfile/71/;' -+ sed_filter+='s/__NR3264_statfs/43/;' -+ sed_filter+='s/__NR3264_truncate/45/;' -+ sed_filter+='s/__NR3264_fstat/80/;' -+ -+ gcc -E -dM -I$1/include/uapi \ -+ -D__BITS_PER_LONG=32 \ -+ $1/arch/riscv/include/uapi/asm/unistd.h | \ -+ grep "^#define __NR_" | \ -+ sed '/__NR_syscalls/d' | \ -+ sed 's/(__NR_arch_specific_syscall + 15)/259/' | \ -+ sed '/__NR_arch_specific_syscall/d' | \ -+ sed 's/#define[ \t]\+__NR_\([^ \t]\+\)[ \t]\+\(.*\)/\1,\2/' | \ -+ sed $sed_filter | sort -+} -+ -+# -+# Dump the riscv32 library syscall table -+# -+# Dump the library's syscall table to stdout. -+# -+function dump_lib_riscv32() { -+ dump_lib_arch riscv32 | mangle_lib_syscall riscv32 -+} -+ - # - # Dump the s390 system syscall table - # -@@ -639,6 +682,9 @@ function dump_sys() { - ppc64) - dump_sys_ppc64 "$2" - ;; -+ riscv32) -+ dump_sys_riscv32 "$2" -+ ;; - riscv64) - dump_sys_riscv64 "$2" - ;; -@@ -706,6 +752,9 @@ function dump_lib() { - ppc64) - dump_lib_ppc64 - ;; -+ riscv32) -+ dump_lib_riscv32 -+ ;; - riscv64) - dump_lib_riscv64 - ;; -@@ -751,7 +800,7 @@ function gen_csv() { - abi_list+=" mips mips64 mips64n32" - abi_list+=" parisc parisc64" - abi_list+=" ppc ppc64" -- abi_list+=" riscv64" -+ abi_list+=" riscv32 riscv64" - abi_list+=" s390 s390x" - abi_list+=" sh" - -diff --git a/src/arch.c b/src/arch.c -index 921e455..07935a9 100644 ---- a/src/arch.c -+++ b/src/arch.c -@@ -43,6 +43,7 @@ - #include "arch-ppc.h" - #include "arch-ppc64.h" - #include "arch-riscv64.h" -+#include "arch-riscv32.h" - #include "arch-s390.h" - #include "arch-s390x.h" - #include "arch-sh.h" -@@ -97,8 +98,12 @@ const struct arch_def *arch_def_native = &arch_def_ppc; - const struct arch_def *arch_def_native = &arch_def_s390x; - #elif __s390__ - const struct arch_def *arch_def_native = &arch_def_s390; --#elif __riscv && __riscv_xlen == 64 -+#elif __riscv -+#if __riscv_xlen == 64 - const struct arch_def *arch_def_native = &arch_def_riscv64; -+#elif __riscv_xlen == 32 -+const struct arch_def *arch_def_native = &arch_def_riscv32; -+#endif - #elif __sh__ - #ifdef __BIG_ENDIAN__ - const struct arch_def *arch_def_native = &arch_def_sheb; -@@ -167,6 +172,8 @@ const struct arch_def *arch_def_lookup(uint32_t token) - return &arch_def_s390; - case SCMP_ARCH_S390X: - return &arch_def_s390x; -+ case SCMP_ARCH_RISCV32: -+ return &arch_def_riscv32; - case SCMP_ARCH_RISCV64: - return &arch_def_riscv64; - case SCMP_ARCH_SHEB: -@@ -223,6 +230,8 @@ const struct arch_def *arch_def_lookup_name(const char *arch_name) - return &arch_def_s390; - else if (strcmp(arch_name, "s390x") == 0) - return &arch_def_s390x; -+ else if (strcmp(arch_name, "riscv32") == 0) -+ return &arch_def_riscv32; - else if (strcmp(arch_name, "riscv64") == 0) - return &arch_def_riscv64; - else if (strcmp(arch_name, "sheb") == 0) -diff --git a/src/gen_pfc.c b/src/gen_pfc.c -index c7fb536..d45e181 100644 ---- a/src/gen_pfc.c -+++ b/src/gen_pfc.c -@@ -87,6 +87,8 @@ static const char *_pfc_arch(const struct arch_def *arch) - return "s390x"; - case SCMP_ARCH_S390: - return "s390"; -+ case SCMP_ARCH_RISCV32: -+ return "riscv32"; - case SCMP_ARCH_RISCV64: - return "riscv64"; - case SCMP_ARCH_SHEB: -diff --git a/src/python/libseccomp.pxd b/src/python/libseccomp.pxd -index 0629bf1..000d503 100644 ---- a/src/python/libseccomp.pxd -+++ b/src/python/libseccomp.pxd -@@ -51,6 +51,7 @@ cdef extern from "seccomp.h": - SCMP_ARCH_PPC64LE - SCMP_ARCH_S390 - SCMP_ARCH_S390X -+ SCMP_ARCH_RISCV32 - SCMP_ARCH_RISCV64 - - cdef enum scmp_filter_attr: -diff --git a/src/python/seccomp.pyx b/src/python/seccomp.pyx -index 2eeabc1..2895d78 100644 ---- a/src/python/seccomp.pyx -+++ b/src/python/seccomp.pyx -@@ -214,6 +214,7 @@ cdef class Arch: - PARISC64 - 64-bit PA-RISC - PPC64 - 64-bit PowerPC - PPC - 32-bit PowerPC -+ RISCV32 - 32-bit RISC-V - RISCV64 - 64-bit RISC-V - """ - -@@ -238,6 +239,7 @@ cdef class Arch: - PPC64LE = libseccomp.SCMP_ARCH_PPC64LE - S390 = libseccomp.SCMP_ARCH_S390 - S390X = libseccomp.SCMP_ARCH_S390X -+ RISCV32 = libseccomp.SCMP_ARCH_RISCV32 - RISCV64 = libseccomp.SCMP_ARCH_RISCV64 - - def __cinit__(self, arch=libseccomp.SCMP_ARCH_NATIVE): -diff --git a/src/syscalls.c b/src/syscalls.c -index faddff0..15952ce 100644 ---- a/src/syscalls.c -+++ b/src/syscalls.c -@@ -59,6 +59,7 @@ ARCH_DEF(sh) - ARCH_DEF(x32) - ARCH_DEF(x86) - ARCH_DEF(riscv64) -+ARCH_DEF(riscv32) - - /** - * Resolve a syscall name to a number -diff --git a/src/syscalls.h b/src/syscalls.h -index 58a788c..c6b5db5 100644 ---- a/src/syscalls.h -+++ b/src/syscalls.h -@@ -28,6 +28,7 @@ - #include "arch-x86.h" - #include "arch-x86.h" - #include "arch-riscv64.h" -+#include "arch-riscv32.h" - - /* NOTE: changes to the arch_syscall_table layout may require changes to the - * generate_syscalls_perf.sh and arch-syscall-validate scripts */ -@@ -49,6 +50,7 @@ struct arch_syscall_table { - int parisc64; - int ppc; - int ppc64; -+ int riscv32; - int riscv64; - int s390; - int s390x; -diff --git a/src/system.c b/src/system.c -index ae445bf..063e6be 100644 ---- a/src/system.c -+++ b/src/system.c -@@ -130,6 +130,7 @@ int sys_chk_seccomp_syscall(void) - case SCMP_ARCH_PPC64LE: - case SCMP_ARCH_S390: - case SCMP_ARCH_S390X: -+ case SCMP_ARCH_RISCV32: - case SCMP_ARCH_RISCV64: - break; - default: -diff --git a/tests/15-basic-resolver.c b/tests/15-basic-resolver.c -index c759dd1..fd94dbf 100644 ---- a/tests/15-basic-resolver.c -+++ b/tests/15-basic-resolver.c -@@ -45,6 +45,7 @@ unsigned int arch_list[] = { - SCMP_ARCH_S390X, - SCMP_ARCH_PARISC, - SCMP_ARCH_PARISC64, -+ SCMP_ARCH_RISCV32, - SCMP_ARCH_RISCV64, - SCMP_ARCH_SH, - -1 -diff --git a/tests/16-sim-arch_basic.c b/tests/16-sim-arch_basic.c -index 4fcbb5c..662e081 100644 ---- a/tests/16-sim-arch_basic.c -+++ b/tests/16-sim-arch_basic.c -@@ -90,6 +90,9 @@ int main(int argc, char *argv[]) - if (rc != 0) - goto out; - rc = seccomp_arch_add(ctx, SCMP_ARCH_PPC64LE); -+ if (rc != 0) -+ goto out; -+ rc = seccomp_arch_add(ctx, SCMP_ARCH_RISCV32); - if (rc != 0) - goto out; - rc = seccomp_arch_add(ctx, SCMP_ARCH_RISCV64); -@@ -160,6 +163,9 @@ int main(int argc, char *argv[]) - if (rc != 0) - goto out; - rc = seccomp_arch_remove(ctx, SCMP_ARCH_PPC64LE); -+ if (rc != 0) -+ goto out; -+ rc = seccomp_arch_remove(ctx, SCMP_ARCH_RISCV32); - if (rc != 0) - goto out; - rc = seccomp_arch_remove(ctx, SCMP_ARCH_RISCV64); -diff --git a/tests/16-sim-arch_basic.py b/tests/16-sim-arch_basic.py -index f22c985..d5e93a2 100755 ---- a/tests/16-sim-arch_basic.py -+++ b/tests/16-sim-arch_basic.py -@@ -44,6 +44,7 @@ def test(args): - f.add_arch(Arch("mipsel64")) - f.add_arch(Arch("mipsel64n32")) - f.add_arch(Arch("ppc64le")) -+ f.add_arch(Arch("riscv32")) - f.add_arch(Arch("riscv64")) - f.add_arch(Arch("sh")) - f.add_rule(ALLOW, "read", Arg(0, EQ, sys.stdin.fileno())) -diff --git a/tests/23-sim-arch_all_le_basic.c b/tests/23-sim-arch_all_le_basic.c -index 08f030c..ec73224 100644 ---- a/tests/23-sim-arch_all_le_basic.c -+++ b/tests/23-sim-arch_all_le_basic.c -@@ -75,6 +75,9 @@ int main(int argc, char *argv[]) - if (rc != 0) - goto out; - rc = seccomp_arch_add(ctx, seccomp_arch_resolve_name("sh")); -+ if (rc != 0) -+ goto out; -+ rc = seccomp_arch_add(ctx, seccomp_arch_resolve_name("riscv32")); - if (rc != 0) - goto out; - -diff --git a/tests/23-sim-arch_all_le_basic.py b/tests/23-sim-arch_all_le_basic.py -index 12bb243..1eebc20 100755 ---- a/tests/23-sim-arch_all_le_basic.py -+++ b/tests/23-sim-arch_all_le_basic.py -@@ -40,6 +40,7 @@ def test(args): - f.add_arch(Arch("mipsel64")) - f.add_arch(Arch("mipsel64n32")) - f.add_arch(Arch("ppc64le")) -+ f.add_arch(Arch("riscv32")) - f.add_arch(Arch("riscv64")) - f.add_arch(Arch("sh")) - f.add_rule(ALLOW, "read", Arg(0, EQ, sys.stdin.fileno())) -diff --git a/tests/56-basic-iterate_syscalls.c b/tests/56-basic-iterate_syscalls.c -index 5e7ab67..c11ca8c 100644 ---- a/tests/56-basic-iterate_syscalls.c -+++ b/tests/56-basic-iterate_syscalls.c -@@ -46,6 +46,7 @@ unsigned int arch_list[] = { - SCMP_ARCH_S390X, - SCMP_ARCH_PARISC, - SCMP_ARCH_PARISC64, -+ SCMP_ARCH_RISCV32, - SCMP_ARCH_RISCV64, - -1 - }; -diff --git a/tests/56-basic-iterate_syscalls.py b/tests/56-basic-iterate_syscalls.py -index 77a5b89..2e860bf 100755 ---- a/tests/56-basic-iterate_syscalls.py -+++ b/tests/56-basic-iterate_syscalls.py -@@ -37,6 +37,7 @@ arch_list = ["x86", - "mipsel64", - "mipsel64n32", - "ppc64le", -+ "riscv32", - "riscv64"] - - def test_arch(arch, init): -diff --git a/tests/regression b/tests/regression -index d28b848..057ff67 100755 ---- a/tests/regression -+++ b/tests/regression -@@ -26,7 +26,7 @@ GLBL_ARCH_LE_SUPPORT=" \ - arm aarch64 \ - mipsel mipsel64 mipsel64n32 \ - ppc64le \ -- riscv64 \ -+ riscv32 riscv64 \ - sh" - GLBL_ARCH_BE_SUPPORT=" \ - mips mips64 mips64n32 \ -@@ -41,6 +41,7 @@ GLBL_ARCH_32B_SUPPORT=" \ - mips mipsel mips64n32 mipsel64n32 \ - parisc \ - ppc \ -+ riscv32 \ - s390 \ - sheb sh" - -@@ -801,7 +802,7 @@ function run_test_live() { - - # setup the arch specific return values - case "$arch" in -- x86|x86_64|x32|arm|aarch64|parisc|parisc64|ppc|ppc64|ppc64le|ppc|s390|s390x|riscv64|sh|sheb) -+ x86|x86_64|x32|arm|aarch64|parisc|parisc64|ppc|ppc64|ppc64le|ppc|s390|s390x|riscv32|riscv64|sh|sheb) - rc_kill_process=159 - rc_kill=159 - rc_allow=160 -diff --git a/tools/scmp_arch_detect.c b/tools/scmp_arch_detect.c -index b6bd2bb..7789970 100644 ---- a/tools/scmp_arch_detect.c -+++ b/tools/scmp_arch_detect.c -@@ -129,6 +129,9 @@ int main(int argc, char *argv[]) - case SCMP_ARCH_SH: - printf("sh\n"); - break; -+ case SCMP_ARCH_RISCV32: -+ printf("riscv32\n"); -+ break; - default: - printf("unknown\n"); - } -diff --git a/tools/scmp_bpf_disasm.c b/tools/scmp_bpf_disasm.c -index b682de7..4f759fc 100644 ---- a/tools/scmp_bpf_disasm.c -+++ b/tools/scmp_bpf_disasm.c -@@ -508,6 +508,8 @@ int main(int argc, char *argv[]) - arch = AUDIT_ARCH_S390X; - else if (strcmp(optarg, "riscv64") == 0) - arch = AUDIT_ARCH_RISCV64; -+ else if (strcmp(optarg, "riscv32") == 0) -+ arch = AUDIT_ARCH_RISCV32; - else - exit_usage(argv[0]); - break; -diff --git a/tools/scmp_bpf_sim.c b/tools/scmp_bpf_sim.c -index 04edfbc..53e6575 100644 ---- a/tools/scmp_bpf_sim.c -+++ b/tools/scmp_bpf_sim.c -@@ -285,6 +285,8 @@ int main(int argc, char *argv[]) - arch = AUDIT_ARCH_S390; - else if (strcmp(optarg, "s390x") == 0) - arch = AUDIT_ARCH_S390X; -+ else if (strcmp(optarg, "riscv32") == 0) -+ arch = AUDIT_ARCH_RISCV32; - else if (strcmp(optarg, "riscv64") == 0) - arch = AUDIT_ARCH_RISCV64; - else if (strcmp(optarg, "sheb") == 0) -diff --git a/tools/util.c b/tools/util.c -index afea6c9..1fc1f62 100644 ---- a/tools/util.c -+++ b/tools/util.c -@@ -78,8 +78,12 @@ - #define ARCH_NATIVE AUDIT_ARCH_S390X - #elif __s390__ - #define ARCH_NATIVE AUDIT_ARCH_S390 --#elif __riscv && __riscv_xlen == 64 -+#elif __riscv -+#if __riscv_xlen == 64 - #define ARCH_NATIVE AUDIT_ARCH_RISCV64 -+#elif __riscv_xlen == 32 -+#define ARCH_NATIVE AUDIT_ARCH_RISCV32 -+#endif - #elif __sh__ - #ifdef __BIG_ENDIAN__ - #define ARCH_NATIVE AUDIT_ARCH_SH -diff --git a/tools/util.h b/tools/util.h -index 6c2ca33..4d16e38 100644 ---- a/tools/util.h -+++ b/tools/util.h -@@ -79,6 +79,13 @@ - #define AUDIT_ARCH_RISCV64 (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) - #endif /* AUDIT_ARCH_RISCV64 */ - -+#ifndef AUDIT_ARCH_RISCV32 -+#ifndef EM_RISCV -+#define EM_RISCV 243 -+#endif /* EM_RISCV */ -+#define AUDIT_ARCH_RISCV32 (EM_RISCV|__AUDIT_ARCH_LE) -+#endif /* AUDIT_ARCH_RISCV32 */ -+ - extern uint32_t arch; - - uint16_t ttoh16(uint32_t arch, uint16_t val); --- -2.33.0 - |