From 72bf51ab51d61cc83cea0716f30326c9cc5a7ac4 Mon Sep 17 00:00:00 2001 From: laokz Date: Thu, 28 Sep 2023 14:21:25 +0800 Subject: [PATCH] Backport upstream riscv64 support patch The patch is from 2.2.15. --- 0002-Add-riscv64-support.patch | 124 +++++++++++++++++++++++++++++++++ jnr-ffi.spec | 7 +- 2 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 0002-Add-riscv64-support.patch diff --git a/0002-Add-riscv64-support.patch b/0002-Add-riscv64-support.patch new file mode 100644 index 0000000..0f01681 --- /dev/null +++ b/0002-Add-riscv64-support.patch @@ -0,0 +1,124 @@ +From 153c25fb9df915880cbc5b1500bfed0f11ccb388 Mon Sep 17 00:00:00 2001 +From: Kai Zhang +Date: Thu, 16 Mar 2023 11:45:59 +0800 +Subject: [PATCH] Add riscv64 support + +Signed-off-by: Kai Zhang +--- + src/main/java/jnr/ffi/Platform.java | 6 ++ + .../platform/riscv64/linux/TypeAliases.java | 72 +++++++++++++++++++ + 2 files changed, 78 insertions(+) + create mode 100644 src/main/java/jnr/ffi/provider/jffi/platform/riscv64/linux/TypeAliases.java + +diff --git a/src/main/java/jnr/ffi/Platform.java b/src/main/java/jnr/ffi/Platform.java +index ce247abd..ebb6422e 100644 +--- a/src/main/java/jnr/ffi/Platform.java ++++ b/src/main/java/jnr/ffi/Platform.java +@@ -130,6 +130,9 @@ public abstract class Platform { + /** 64 bit LOONGARCH */ + LOONGARCH64, + ++ /** 64 bit RISC-V */ ++ RISCV64, ++ + /** + * Unknown CPU architecture. A best effort will be made to infer architecture + * specific values such as address and long size. +@@ -246,6 +249,8 @@ public abstract class Platform { + return CPU.MIPS64EL; + } else if (equalsIgnoreCase("loongarch64", archString)) { + return CPU.LOONGARCH64; ++ } else if (equalsIgnoreCase("riscv64", archString)) { ++ return CPU.RISCV64; + } + + // Try to find by lookup up in the CPU list +@@ -308,6 +313,7 @@ public abstract class Platform { + case AARCH64: + case MIPS64EL: + case LOONGARCH64: ++ case RISCV64: + dataModel = 64; + break; + default: +diff --git a/src/main/java/jnr/ffi/provider/jffi/platform/riscv64/linux/TypeAliases.java b/src/main/java/jnr/ffi/provider/jffi/platform/riscv64/linux/TypeAliases.java +new file mode 100644 +index 00000000..db837ca2 +--- /dev/null ++++ b/src/main/java/jnr/ffi/provider/jffi/platform/riscv64/linux/TypeAliases.java +@@ -0,0 +1,72 @@ ++/* ++ * Copyright (C) 2016 Wayne Meissner ++ * ++ * This file is part of the JNR project. ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package jnr.ffi.provider.jffi.platform.riscv64.linux; ++ ++import jnr.ffi.NativeType; ++import jnr.ffi.TypeAlias; ++ ++import java.util.EnumMap; ++import java.util.Map; ++ ++public final class TypeAliases { ++ public static final Map ALIASES = buildTypeMap(); ++ private static Map buildTypeMap() { ++ Map m = new EnumMap(TypeAlias.class); ++ m.put(TypeAlias.int8_t, NativeType.SCHAR); ++ m.put(TypeAlias.u_int8_t, NativeType.UCHAR); ++ m.put(TypeAlias.int16_t, NativeType.SSHORT); ++ m.put(TypeAlias.u_int16_t, NativeType.USHORT); ++ m.put(TypeAlias.int32_t, NativeType.SINT); ++ m.put(TypeAlias.u_int32_t, NativeType.UINT); ++ m.put(TypeAlias.int64_t, NativeType.SLONG); ++ m.put(TypeAlias.u_int64_t, NativeType.ULONG); ++ m.put(TypeAlias.intptr_t, NativeType.SLONG); ++ m.put(TypeAlias.uintptr_t, NativeType.ULONG); ++ m.put(TypeAlias.caddr_t, NativeType.ADDRESS); ++ m.put(TypeAlias.dev_t, NativeType.ULONG); ++ m.put(TypeAlias.blkcnt_t, NativeType.SLONG); ++ m.put(TypeAlias.blksize_t, NativeType.SINT); ++ m.put(TypeAlias.gid_t, NativeType.UINT); ++ m.put(TypeAlias.in_addr_t, NativeType.UINT); ++ m.put(TypeAlias.in_port_t, NativeType.USHORT); ++ m.put(TypeAlias.ino_t, NativeType.ULONG); ++ m.put(TypeAlias.ino64_t, NativeType.ULONG); ++ m.put(TypeAlias.key_t, NativeType.SINT); ++ m.put(TypeAlias.mode_t, NativeType.UINT); ++ m.put(TypeAlias.nlink_t, NativeType.UINT); ++ m.put(TypeAlias.id_t, NativeType.UINT); ++ m.put(TypeAlias.pid_t, NativeType.SINT); ++ m.put(TypeAlias.off_t, NativeType.SLONG); ++ m.put(TypeAlias.swblk_t, NativeType.SLONG); ++ m.put(TypeAlias.uid_t, NativeType.UINT); ++ m.put(TypeAlias.clock_t, NativeType.SLONG); ++ m.put(TypeAlias.size_t, NativeType.ULONG); ++ m.put(TypeAlias.ssize_t, NativeType.SLONG); ++ m.put(TypeAlias.time_t, NativeType.SLONG); ++ m.put(TypeAlias.fsblkcnt_t, NativeType.ULONG); ++ m.put(TypeAlias.fsfilcnt_t, NativeType.ULONG); ++ m.put(TypeAlias.sa_family_t, NativeType.USHORT); ++ m.put(TypeAlias.socklen_t, NativeType.UINT); ++ m.put(TypeAlias.rlim_t, NativeType.ULONG); ++ m.put(TypeAlias.cc_t, NativeType.UCHAR); ++ m.put(TypeAlias.speed_t, NativeType.UINT); ++ m.put(TypeAlias.tcflag_t, NativeType.UINT); ++ return m; ++ } ++} +-- +2.40.1 + diff --git a/jnr-ffi.spec b/jnr-ffi.spec index c09bd3d..7be6937 100644 --- a/jnr-ffi.spec +++ b/jnr-ffi.spec @@ -1,11 +1,12 @@ Name: jnr-ffi Version: 2.2.0 -Release: 1 +Release: 2 Summary: Java Abstracted Foreign Function Layer License: Apache-2.0 URL: http://github.com/jnr/%{name}/ Source0: https://github.com/jnr/jnr-ffi/archive/refs/tags/%{name}-%{version}.tar.gz Patch0: 0001-Support-for-LoongArch64.patch +Patch1: 0002-Add-riscv64-support.patch BuildRequires: fdupes gcc make maven-local mvn(com.github.jnr:jffi) BuildRequires: mvn(com.github.jnr:jffi::native:) mvn(com.github.jnr:jnr-x86asm) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) @@ -30,6 +31,7 @@ This package contains the API documentation for %{name}. %prep %setup -q -n %{name}-%{name}-%{version} %patch0 -p1 +%patch1 -p1 find -name '*.jar' -o -name '*.class' -exec rm -f '{}' \; %pom_remove_plugin ":maven-javadoc-plugin" sed -i 's|-Werror||' libtest/GNUmakefile @@ -51,6 +53,9 @@ sed -i '104,105d' .xmvn-reactor %license LICENSE %changelog +* Thu Sep 28 2023 laokz - 2.2.0-2 +- Backport riscv64 support patch from 2.2.15 + * Wed Sep 27 2023 Ge Wang - 2.2.0-1 - Update to version 2.2.0