Package: gmp
Version: 4.1.4-10
Severity: wishlist
Tags: patch

The gmp package assumes that all arm platforms run the cpu in
little-endian mode, which is not true in general.  The attached patch
adds support for big-endian arm platforms.


-- System Information:
Debian Release: 3.1
Architecture: armeb (armv5teb)
Kernel: Linux 2.6.13
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
--- gmp-4.1.4/gmp-impl.h.orig	2005-08-07 22:38:22.000000000 +0200
+++ gmp-4.1.4/gmp-impl.h	2005-08-07 22:43:07.000000000 +0200
@@ -2476,7 +2476,7 @@
 
 /* Define ieee_double_extract and _GMP_IEEE_FLOATS.  */
 
-#if (defined (__arm__) && (defined (__ARMWEL__) || defined (__linux__)))
+#if (defined (__arm__) && !defined (__ARMEB__) && (defined (__ARMWEL__) || defined (__linux__)))
 /* Special case for little endian ARM since floats remain in big-endian.  */
 #define _GMP_IEEE_FLOATS 1
 union ieee_double_extract
@@ -2534,7 +2534,7 @@
 #else
 #if defined (_BIG_ENDIAN) || defined (__BIG_ENDIAN__)			\
  || defined (__a29k__) || defined (_AM29K)				\
- || defined (__arm__)							\
+ || (defined (__arm__) && defined (__ARMEB__))				\
  || (defined (__convex__) && defined (_IEEE_FLOAT_))			\
  || defined (_CRAYMPP) || defined (_CRAYIEEE)				\
  || defined (__i370__) || defined (__mvs__)				\
--- gmp-4.1.4/mpfr/mpfr-math.h.orig	2005-08-07 22:39:01.000000000 +0200
+++ gmp-4.1.4/mpfr/mpfr-math.h	2005-08-07 22:41:43.000000000 +0200
@@ -19,7 +19,7 @@
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#if (defined (__arm__) && (defined (__ARMWEL__) || defined (__linux__)))
+#if (defined (__arm__) && !defined (__ARMEB__) && (defined (__ARMWEL__) || defined (__linux__)))
 /* little endian ARM */
 #define _MPFR_NAN_BYTES  { 0, 0, 0xf8, 0x7f, 0, 0, 0, 0 }
 #define _MPFR_INFP_BYTES { 0, 0, 0x80, 0x7f }
@@ -28,7 +28,6 @@
 #else
 #if defined (_LITTLE_ENDIAN) || defined (__LITTLE_ENDIAN__)		\
  || defined (__alpha)							\
- || (defined (__arm__) && (defined (__ARMWEL__) || defined (__linux__)))\
  || defined (__clipper__)						\
  || defined (__cris)							\
  || defined (__i386__)							\
@@ -47,7 +46,7 @@
  || defined (__mc68000__) || defined (__mc68020__) || defined (__m68k__)\
  || defined (mc68020)                                                   \
  || defined (__a29k__) || defined (_AM29K)				\
- || defined (__arm__)							\
+ || (defined (__arm__) && defined (__ARMEB__))				\
  || (defined (__convex__) && defined (_IEEE_FLOAT_))			\
  || defined (_CRAYMPP) || defined (_CRAYIEEE)				\
  || defined (__i370__) || defined (__mvs__)				\

Reply via email to