[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#895257: firebird3.0: Please add support for new architecture "riscv64" (RISC-V 64 bits little-endian)



Source: firebird3.0
Version: 3.0.3.32900.ds4-2
Severity: normal
Tags: patch upstream fixed-upstream
User: debian-riscv@lists.debian.org
Usertags: riscv64

Hello,

We need support in this package for the riscv64 architecture.

There is a patch from upstream:

  https://github.com/FirebirdSQL/firebird/commit/1e8e7858db84750a77006d307bf28e9686f9414e

It needs some modifications (file attached) to be applied in the current version
of this package in unstable:

  + removed hunk fixing typo in "encyption", fixed separately (in another
    patch of the series applied to the package in Debian)
  + removed extra tab in the second line after "backEndianess" (there are
    only two tabs before the last character, a '1' in the line; in the
    patch from upstream there are 3, so lines don't match)
  + fixed whitespace in the hunk for configure.ac
  + refresh

The build didn't finish yet, we will confirm later when it works, or will send
further fixes.

It would be great if, upon confirmation that it works, you could include it as a
patch and release a new version for unstable as soon as possible, since there
are very important packages depending on this package (php7, graphviz on php7,
and many packages needing graphviz for their documentation).

If you need any assistance, please let me/us know.


Thanks and cheers.
--
Manuel A. Fernandez Montecelo <mafm@debian.org>
>From 1e8e7858db84750a77006d307bf28e9686f9414e Mon Sep 17 00:00:00 2001
From: AlexPeshkoff <alexander.peshkoff@gmail.com>
Date: Wed, 21 Mar 2018 15:19:20 +0300
Subject: [PATCH] Patch for CORE-5779: support for riscv64, also some code
 fixes related with prior ports

---
 configure.ac                            | 12 ++++++++++++
 src/common/classes/DbImplementation.cpp | 29 ++++++++++++++++-------------
 src/common/common.h                     |  4 ++++
 src/include/gen/msgs.h                  |  2 +-
 src/jrd/inf_pub.h                       |  2 +-
 5 files changed, 34 insertions(+), 15 deletions(-)

--- a/configure.ac
+++ b/configure.ac
@@ -251,6 +251,18 @@
     libdir=/usr/lib64
     ;;
 
+  riscv64*-*-linux*)
+    MAKEFILE_PREFIX=linux_riscv64
+    INSTALL_PREFIX=linux
+    PLATFORM=LINUX
+    AC_DEFINE(LINUX, 1, [Define this if OS is Linux])
+    EDITLINE_FLG=Y
+    SHRLIB_EXT=so
+    STD_EDITLINE=true
+    STD_ICU=true
+    libdir=/usr/lib64
+    ;;
+
   powerpc64le-*-linux*)                           
     MAKEFILE_PREFIX=linux_powerpc64el
     INSTALL_PREFIX=linux
--- a/src/common/classes/DbImplementation.cpp
+++ b/src/common/classes/DbImplementation.cpp
@@ -49,6 +49,7 @@
 static const UCHAR CpuArm64 = 15;
 static const UCHAR CpuPowerPc64el = 16;
 static const UCHAR CpuM68k = 17;
+static const UCHAR CpuRiscV64 = 18;
 
 static const UCHAR OsWindows = 0;
 static const UCHAR OsLinux = 1;
@@ -89,7 +90,8 @@
 	"Alpha",
 	"ARM64",
 	"PowerPC64el",
-	"M68k"
+	"M68k",
+	"RiscV64"
 };
 
 const char* operatingSystem[] = {
@@ -116,22 +118,23 @@
 // This table lists pre-fb3 implementation codes
 const UCHAR backwardTable[FB_NELEM(hardware) * FB_NELEM(operatingSystem)] =
 {
-//				Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PowerPC64el
-/* Windows */	50,		68,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* Linux */		60,		66,		65,		69,		86,		71,		72,		75, 	76,		79, 	78,		80,		81,		82,		83,		84,		85,
-/* Darwin */	70,		73,		0,		63,		77,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* Solaris */	0,		0,		30,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* HPUX */		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		31,		0,		0,		0,
-/* AIX */			0,		0,		0,		35,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* MVS */			0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* FreeBSD */	61,		67,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* NetBSD */	62,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0
+//				Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PPC64el	M68k	RiscV64
+/* Windows */	50,		68,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* Linux */		60,		66,		65,		69,		86,		71,		72,		75, 	76,		79, 	78,		80,		81,		82,		83,		84,		85,		87,		88,
+/* Darwin */	70,		73,		0,		63,		77,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* Solaris */	0,		0,		30,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* HPUX */		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		31,		0,		0,		0,		0,		0,
+/* AIX */		0,		0,		0,		35,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* MVS */		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* FreeBSD */	61,		67,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* NetBSD */	62,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0
 };
 
+
 const UCHAR backEndianess[FB_NELEM(hardware)] =
 {
-//	Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PowerPC64el	M68k
-	0,		0,		1,		1,		1,		0,		1,		0,		0,		1,		1,		0,		1,		1,		0,		0,		0,		1
+//	Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PPC64el	M68k	RiscV64
+	0,		0,		1,		1,		1,		0,		1,		0,		0,		1,		1,		0,		1,		1,		0,		0,		0,		1,		0,
 };
 
 } // anonymous namespace
--- a/src/common/common.h
+++ b/src/common/common.h
@@ -135,6 +135,10 @@
 #define FB_CPU CpuArm64
 #endif /* ARM64 */
 
+#ifdef RISCV64
+#define FB_CPU CpuRiscV64
+#endif /* RISCV64 */
+
 #ifdef sparc
 #define FB_CPU CpuUltraSparc
 #define RISC_ALIGNMENT
--- a/src/jrd/inf_pub.h
+++ b/src/jrd/inf_pub.h
@@ -245,7 +245,7 @@
 	isc_info_db_impl_linux_ppc64el = 85,
 	isc_info_db_impl_linux_ppc64 = 86,
 	isc_info_db_impl_linux_m68k = 87,
-
+	isc_info_db_impl_linux_riscv64 = 88,
 
 	isc_info_db_impl_last_value   // Leave this LAST!
 };

Reply to: