diff --git a/add-riscv64-support.patch b/add-riscv64-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..14577feae87cd6615bf7847e35ee3811461e7af9 --- /dev/null +++ b/add-riscv64-support.patch @@ -0,0 +1,343 @@ +diff --git a/hdf/src/hconv.h b/hdf/src/hconv.h +index d6a8748..7c4c17a 100644 +--- a/hdf/src/hconv.h ++++ b/hdf/src/hconv.h +@@ -59,7 +59,7 @@ + /* CONSTANT DEFINITIONS */ + /*****************************************************************************/ + /* Generally Big-Endian machines */ +-#if !defined(INTEL86) && !defined(MIPSEL) && !defined(DEC_ALPHA) && !defined(I860) && !defined(SUN386) && !(defined(__ia64) && !(defined(hpux) || defined(__hpux))) && !defined(__x86_64__) && !defined(__arm__) && !defined(__AARCH64EL__) && !defined(__LITTLE_ENDIAN__) ++#if !defined(INTEL86) && !defined(MIPSEL) && !defined(DEC_ALPHA) && !defined(I860) && !defined(SUN386) && !(defined(__ia64) && !(defined(hpux) || defined(__hpux))) && !defined(__x86_64__) && !defined(__arm__) && !defined(__AARCH64EL__) && !defined(__riscv) && !defined(__LITTLE_ENDIAN__) + # define UI8_IN DFKnb1b /* Unsigned Integer, 8 bits */ + # define UI8_OUT DFKnb1b + # define SI16_IN DFKnb2b /* S = Signed */ +diff --git a/hdf/src/hdfi.h b/hdf/src/hdfi.h +index 42673a7..10b4933 100644 +--- a/hdf/src/hdfi.h ++++ b/hdf/src/hdfi.h +@@ -81,6 +81,7 @@ + #define DFMT_LINUX390 0x1111 + #define DFMT_LINUXARM 0x4441 + #define DFMT_LINUXAARCH64 0x4441 ++#define DFMT_LINUXRISCV64 0x4441 + + /* I/O library constants */ + #define UNIXUNBUFIO 1 +@@ -1384,6 +1385,57 @@ typedef long hdf_pint_t; /* an integer the same size as a pointer + #endif + #endif /* Linux AArch64 */ + ++/* Linux RISCV64 */ ++#if defined(__riscv) && __riscv_xlen == 64 ++ ++#ifdef GOT_MACHINE ++If you get an error on this line more than one machine type has been defined. ++Please check your Makefile. ++#endif ++#define GOT_MACHINE ++ ++#include /* for unbuffered i/o stuff */ ++#include ++#define DF_MT DFMT_LINUXRISCV64 ++typedef void VOID; ++typedef void *VOIDP; ++typedef char *_fcd; ++typedef char char8; ++typedef unsigned char uchar8; ++typedef char int8; ++typedef unsigned char uint8; ++typedef short int int16; ++typedef unsigned short int uint16; ++typedef int int32; ++typedef unsigned int uint32; ++typedef int intn; ++typedef unsigned int uintn; ++typedef int intf; /* size of INTEGERs in Fortran compiler */ ++typedef float float32; ++typedef double float64; ++typedef long hdf_pint_t; /* an integer the same size as a pointer */ ++#define FNAME_POST_UNDERSCORE ++#define _fcdtocp(desc) (desc) ++#ifdef HAVE_FMPOOL ++#define FILELIB PAGEBUFIO /* enable page buffering */ ++#else ++#define FILELIB UNIXBUFIO ++#endif ++ ++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */ ++ ++/* Determine the memory manager we are going to use. Valid values are: */ ++/* MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS. See the JPEG docs for details on */ ++/* what each does */ ++#define JMEMSYS MEM_ANSI ++ ++#ifdef __GNUC__ ++#define HAVE_STDC ++#define INCLUDES_ARE_ANSI ++#endif ++ ++#endif /* Linux RISCV64 */ ++ + #ifndef GOT_MACHINE + No machine type has been defined. Your Makefile needs to have someing like + -DSUN or -DUNICOS in order for the HDF internal structures to be defined +diff --git a/mfhdf/fortran/jackets.c.in b/mfhdf/fortran/jackets.c.in +index b2ade09..a89355d 100644 +--- a/mfhdf/fortran/jackets.c.in ++++ b/mfhdf/fortran/jackets.c.in +@@ -34,7 +34,7 @@ + + struct ncfils { /* This will be a common block from Fortran */ + double dd; +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + int ll; + #else + long ll; +@@ -65,7 +65,7 @@ struct ncfils { /* This will be a common block from Fortran */ + + struct ncfils { /* This will be a common block from Fortran */ + double dd; +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + int ll; + #else + long ll; +@@ -420,7 +420,7 @@ stoig(shorts, ints, dims, basis, ndims) + } + #endif /* FORTRAN_HAS_NO_SHORT */ + +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + /* + * Convert multi-dimensional array of NCLONGs stored in ints to packed + * array of longs, in malloc'ed space. Returns pointer to longs or NULL +@@ -908,7 +908,7 @@ nncvpt1(cdfid, varid, indices, value, rcode) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) { + long longs = *(int *)value; +@@ -1022,7 +1022,7 @@ nncvpt(cdfid, varid, start, count, value, rcode) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) { + long *longs = itol (value, ncount, ndims); +@@ -1133,7 +1133,7 @@ nncvptg(cdfid, varid, start, count, stride, basis, value, rcode) + tmpbasis = nctypelen(NC_LONG); + else + #endif +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + if (datatype == NC_LONG) + tmpbasis = sizeof(int); + else +@@ -1190,7 +1190,7 @@ nncvptg(cdfid, varid, start, count, stride, basis, value, rcode) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) { + long *longs = itolg (value, ncount, nbasis, ndims); +@@ -1326,7 +1326,7 @@ nncvgt1(cdfid, varid, indices, value, rcode) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) { + long longs; +@@ -1468,7 +1468,7 @@ nncvgt(cdfid, varid, start, count, value, rcode) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) { + long iocount = dimprod (ncount, ndims); /* product of dimensions */ +@@ -1606,7 +1606,7 @@ nncvgtg(cdfid, varid, start, count, stride, basis, value, rcode) + tmpbasis = nctypelen(NC_LONG); + else + #endif +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + if (datatype == NC_LONG) + tmpbasis = sizeof(int); + else +@@ -1677,7 +1677,7 @@ nncvgtg(cdfid, varid, start, count, stride, basis, value, rcode) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) { + long iocount = dimprod (ncount, ndims); /* product of dimensions */ +@@ -1843,7 +1843,7 @@ nncapt(cdfid, varid, attname, datatype, attlen, value, rcode, attnamelen) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) *datatype == NC_LONG && handle->file_type!=HDF_FILE) { + long *longs = itol (value, attlen, 1); +@@ -2008,7 +2008,7 @@ nncagt(cdfid, varid, attname, value, rcode, attnamelen) + return; + } /* else */ + #endif /* FORTRAN_HAS_NO_SHORT */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + #ifdef HDF + if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) { + /* EIP We need to use int buffer to read data in on the platforms where long is 8 bytes +diff --git a/mfhdf/libsrc/array.c b/mfhdf/libsrc/array.c +index 4e97578..ec311be 100644 +--- a/mfhdf/libsrc/array.c ++++ b/mfhdf/libsrc/array.c +@@ -625,7 +625,7 @@ xdr_NC_array(xdrs, app) + xdr_NC_fnct = xdr_shorts ; + goto func ; + case NC_LONG : +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + xdr_NC_fnct = xdr_int ; + #else + xdr_NC_fnct = xdr_long ; +diff --git a/mfhdf/libsrc/cdf.c b/mfhdf/libsrc/cdf.c +index bf6f7b3..847b32f 100644 +--- a/mfhdf/libsrc/cdf.c ++++ b/mfhdf/libsrc/cdf.c +@@ -3686,7 +3686,7 @@ NC_var *vp ; + break ; + case NC_LONG : + alen /= 4 ; +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + xdr_NC_fnct = xdr_int ; + #else + xdr_NC_fnct = xdr_long ; +diff --git a/mfhdf/libsrc/netcdf.h.in b/mfhdf/libsrc/netcdf.h.in +index 2e5fb48..66bf27d 100644 +--- a/mfhdf/libsrc/netcdf.h.in ++++ b/mfhdf/libsrc/netcdf.h.in +@@ -293,7 +293,7 @@ typedef double ncdouble; + /* + * Variables/attributes of type NC_LONG should use the C type 'nclong' + */ +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + /* + * LP64 (also known as 4/8/8) denotes long and pointer as 64 bit types. + * http://www.unix.org/version2/whatsnew/lp64_wp.html +diff --git a/mfhdf/libsrc/putget.c b/mfhdf/libsrc/putget.c +index 7e24686..b55eb61 100644 +--- a/mfhdf/libsrc/putget.c ++++ b/mfhdf/libsrc/putget.c +@@ -664,7 +664,7 @@ Void *values ; + case NC_SHORT : + return( xdr_NCvshort(xdrs, (unsigned)rem/2, (short *)values) ) ; + case NC_LONG : +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + return( xdr_int(xdrs, (nclong *)values) ) ; + #else + return( xdr_long(xdrs, (nclong *)values) ) ; +@@ -1975,7 +1975,7 @@ Void *values ; + } /* else */ + return(TRUE) ; + case NC_LONG : +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + xdr_NC_fnct = xdr_int ; + #else + xdr_NC_fnct = xdr_long ; +diff --git a/mfhdf/libsrc/xdrposix.c b/mfhdf/libsrc/xdrposix.c +index 91802c1..4cbb5b2 100644 +--- a/mfhdf/libsrc/xdrposix.c ++++ b/mfhdf/libsrc/xdrposix.c +@@ -254,7 +254,7 @@ int nbytes; + + static bool_t xdrposix_getlong(); + static bool_t xdrposix_putlong(); +-#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + static bool_t xdrposix_getint(); + static bool_t xdrposix_putint(); + #endif +@@ -268,7 +268,7 @@ static long * xdrposix_inline(); + #if (defined __sun && defined _LP64) + static rpc_inline_t * xdrposix_inline(); + #else +-#if ((defined __x86_64__ ) && !(defined __sun && defined _LP64)) || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if ((defined __x86_64__ ) && !(defined __sun && defined _LP64)) || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + static int32_t * xdrposix_inline(); + #else + #if (defined __alpha ) +@@ -298,9 +298,9 @@ static struct xdr_ops xdrposix_ops = { + xdrposix_getpos, /* get offset in the stream */ + xdrposix_setpos, /* set offset in the stream */ + xdrposix_inline, /* prime stream for inline macros */ +-#if (defined __sun && defined _LP64) || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if (defined __sun && defined _LP64) || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + xdrposix_destroy, /* destroy stream */ +-#if !(defined __aarch64__) && !(defined __s390x__) && !(defined __x86_64__) && !(defined __powerpc64__) || (defined __sun && defined _LP64) /* i.e. we are on SUN/Intel in 64-bit mode */ ++#if !(defined __riscv) && !(defined __aarch64__) && !(defined __s390x__) && !(defined __x86_64__) && !(defined __powerpc64__) || (defined __sun && defined _LP64) /* i.e. we are on SUN/Intel in 64-bit mode */ + NULL, /* no xdr_control function defined */ + #endif + /* Solaris 64-bit (arch=v9 and arch=amd64) has 64 bits long and 32 bits int. */ +@@ -556,7 +556,7 @@ static rpc_inline_t * + #if (defined __alpha) + static int* + #else +-#if ((defined __x86_64__) && !(defined __sun && defined _LP64)) || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if ((defined __x86_64__) && !(defined __sun && defined _LP64)) || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + static int32_t * + #else + static netlong * +@@ -584,7 +584,7 @@ int + return (NULL); + } + +-#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + + static bool_t + xdrposix_getint(xdrs, lp) +diff --git a/mfhdf/ncgen/ncgen.l b/mfhdf/ncgen/ncgen.l +index f23bdf6..00edee8 100644 +--- a/mfhdf/ncgen/ncgen.l ++++ b/mfhdf/ncgen/ncgen.l +@@ -113,7 +113,7 @@ FloatInf|Infinity|Inf { /* float missing values */ + yyerror(errstr); + } + +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || __powerpc64__ || defined __s390x__ || defined __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || __powerpc64__ || defined __s390x__ || defined __aarch64__ || (__riscv_xlen == 64) + if (dd < INT_MIN || dd > INT_MAX) + #else + if (dd < LONG_MIN || dd > LONG_MAX) +diff --git a/mfhdf/ncgen/ncgenyy.c b/mfhdf/ncgen/ncgenyy.c +index 22dcf2f..d4c52fc 100644 +--- a/mfhdf/ncgen/ncgenyy.c ++++ b/mfhdf/ncgen/ncgenyy.c +@@ -989,7 +989,7 @@ YY_RULE_SETUP + yyerror(errstr); + } + +-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || __powerpc64__ || __s390x__ || __aarch64__ ++#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || __powerpc64__ || __s390x__ || __aarch64__ || (__riscv_xlen == 64) + if (dd < INT_MIN || dd > INT_MAX) + #else + if (dd < LONG_MIN || dd > LONG_MAX) diff --git a/hdf.spec b/hdf.spec index 07ccbcf6d1d9d6f5b0e9c56eae6990d687755f07..dab63e3f617a99d3775f75b821320da27c5816b8 100644 --- a/hdf.spec +++ b/hdf.spec @@ -1,6 +1,6 @@ Name: hdf Version: 4.2.14 -Release: 2 +Release: 3 Summary: A general purpose library and file format for storing scientific data License: IJG URL: https://portal.hdfgroup.org/ @@ -20,6 +20,8 @@ Patch8: hdf-4.2.10-aarch64.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1134385 Patch9: hdf-ppc64le.patch +Patch10: add-riscv64-support.patch + # Fix syntax error on epel6 builds # Use only if java is disabled # Patch10: hdf-avoid_syntax_error_el6.patch @@ -62,6 +64,7 @@ HDF development headers and libraries. %patch6 -p1 -b .examplesdir %patch8 -p1 -b .aarch64 %patch9 -p1 -b .ppc64le +%patch10 -p1 -b .riscv64 find . -type f -name "*.h" -exec chmod 0644 '{}' \; find . -type f -name "*.c" -exec chmod 0644 '{}' \; @@ -134,6 +137,9 @@ make -j1 check %{_pkgdocdir}/examples/ %changelog +* Tue Sep 20 2022 misaka00251 - 4.2.14-3 +- Add riscv64 support (Derived from federa project, thanks to fedora team) + * Tue Aug 10 2021 wangyue - 4.2.14-2 - fix build error with gcc-10