The following commit has been merged in the master branch: commit 08cc68b4f09db35752a40d32d17f823e1f1487ea Author: Stephane Glondu <st...@glondu.net> Date: Wed Jul 13 23:02:57 2011 +0200
Fix endianness issues (e.g. mips) diff --git a/debian/patches/0004-Fix-endianness.patch b/debian/patches/0004-Fix-endianness.patch new file mode 100644 index 0000000..586cbd6 --- /dev/null +++ b/debian/patches/0004-Fix-endianness.patch @@ -0,0 +1,91 @@ +From: Stephane Glondu <st...@glondu.net> +Date: Wed, 13 Jul 2011 22:58:36 +0200 +Subject: Fix endianness + +Use functions from <endian.h> to cope with big-endiannes. Fixes FTBFS +on e.g. mips. + +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=631829 +--- + lib/read_stubs.c | 7 ++++++- + lib/write_stubs.c | 13 ++++++++----- + 2 files changed, 14 insertions(+), 6 deletions(-) + +diff --git a/lib/read_stubs.c b/lib/read_stubs.c +index c8dac01..2ac14cb 100644 +--- a/lib/read_stubs.c ++++ b/lib/read_stubs.c +@@ -22,6 +22,11 @@ + * * + ******************************************************************************/ + ++#define _BSD_SOURCE ++#include <endian.h> ++ ++#define le8toh(x) (x) ++ + /* Stubs for reading basic values in the binary protocol */ + + #include "common_stubs.h" +@@ -90,7 +95,7 @@ static inline void raise_Read_error(int loc, unsigned long pos) + TYPE n; \ + if (unlikely(next > eptr)) \ + caml_raise_constant(*v_bin_prot_exc_Buffer_short); \ +- n = *(TYPE *) *sptr_ptr; \ ++ n = le##SIZE##toh(*(TYPE *) *sptr_ptr); \ + CHECK \ + *sptr_ptr = next; \ + return n; \ +diff --git a/lib/write_stubs.c b/lib/write_stubs.c +index 1cd94c4..039e1b1 100644 +--- a/lib/write_stubs.c ++++ b/lib/write_stubs.c +@@ -22,6 +22,9 @@ + * * + ******************************************************************************/ + ++#define _BSD_SOURCE ++#include <endian.h> ++ + /* Stubs for writing basic values in the binary protocol */ + + #include "common_stubs.h" +@@ -73,7 +76,7 @@ static inline value write_neg_int8(char *sptr, char *eptr, char n) + static inline void do_write_int16(char *sptr, short n) + { + *sptr++ = CODE_INT16; +- *(short *) sptr = n; ++ *(short *) sptr = htole16(n); + } + + static inline value write_int16(char *sptr, char *eptr, short n) +@@ -87,7 +90,7 @@ static inline value write_int16(char *sptr, char *eptr, short n) + static inline void do_write_int32(char *sptr, int n) + { + *sptr++ = CODE_INT32; +- *(int *) sptr = n; ++ *(int *) sptr = htole32(n); + } + + static inline value write_int32(char *sptr, char *eptr, int n) +@@ -102,7 +105,7 @@ static inline value write_int32(char *sptr, char *eptr, int n) + static inline void do_write_int64(char *sptr, long n) + { + *sptr++ = CODE_INT64; +- *(long *) sptr = n; ++ *(long *) sptr = htole64(n); + } + + static inline value write_int64(char *sptr, char *eptr, long n) +@@ -190,8 +193,8 @@ static inline value write_int64_type(char *sptr, char *eptr, int64 n) + if (unlikely(next > eptr)) caml_raise_constant(*v_bin_prot_exc_Buffer_short); + *sptr++ = CODE_INT64; + isptr = (int *) sptr; +- *isptr++ = I64_to_int32(n); +- *isptr = I64_to_int32(I64_lsr(n, 32)); ++ *isptr++ = htole32(I64_to_int32(n)); ++ *isptr = htole32(I64_to_int32(I64_lsr(n, 32))); + return (value) next; + } + +-- diff --git a/debian/patches/series b/debian/patches/series index 4367494..7395b4e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,4 @@ 0001-Fix-bigstring-layout-bug.patch 0002-Use-cpp-as-default-preprocessor-on-unknown-OS.patch 0003-Fix-alignment.patch +0004-Fix-endianness.patch -- bin-prot packaging _______________________________________________ Pkg-ocaml-maint-commits mailing list Pkg-ocaml-maint-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits