Package: libi8x
Version: 0.0.2-2
Severity: important
Tags: sid + patch
Justification: FTBFS
User: debian-m...@lists.debian.org
Usertags: mips-patch

Hello,

Package libi8x_0.0.2-2 FTBFS on mips and other big endian architectures with 
following error:

>...
> FAIL: exec/test-deref
> =====================
> 
> exec/test-deref.c:168: <testnote>[0x2b]: Corrupt note
> FAIL exec/test-deref (exit status: 1)
> 
> FAIL: exec/test-factorial
> =========================
> 
> exec/test-factorial.c:92: 
> corpus/i8c/0.0.3/32be/test_loops/test_basic/0001-0001[0x39]: Corrupt note
> FAIL exec/test-factorial (exit status: 1)
> ...

Full build log:
https://buildd.debian.org/status/fetch.php?pkg=libi8x&arch=mips&ver=0.0.2-2&stamp=1486258076&raw=0

On upstream this issue is resolved with commit:
https://gitlab.com/gbenson/libi8x/commit/887eb70d63b460c0768a7103796cdd8a2dd5d771

I have attached the patch.

With this patch package builds successfully on mips and mipsel.


Regards,
Radovan
diff --git a/libi8x/chunk.c b/libi8x/chunk.c
index b54ef99..3a687aa 100644
--- a/libi8x/chunk.c
+++ b/libi8x/chunk.c
@@ -23,8 +23,8 @@ struct i8x_chunk
 {
   I8X_OBJECT_FIELDS;
 
-  uintmax_t type_id;
-  uintmax_t version;
+  uintptr_t type_id;
+  uintptr_t version;
 
   const char *type_id_ptr;	/* For i8x_chunk_unhandled_error.  */
   const char *version_ptr;	/* For i8x_chunk_version_error.  */
@@ -46,7 +46,7 @@ i8x_chunk_new (struct i8x_readbuf *rb, struct i8x_chunk **chunk)
 {
   struct i8x_note *note = i8x_rb_get_note (rb);
   struct i8x_ctx *ctx = i8x_note_get_ctx (note);
-  uintmax_t type_id, version;
+  uintptr_t type_id, version;
   const char *type_id_ptr;
   const char *version_ptr;
   size_t encoded_size;
@@ -98,13 +98,13 @@ i8x_chunk_get_note (struct i8x_chunk *chunk)
     i8x_ob_get_parent ((struct i8x_object *) chunk);
 }
 
-I8X_EXPORT uintmax_t
+I8X_EXPORT uintptr_t
 i8x_chunk_get_type_id (struct i8x_chunk *chunk)
 {
   return chunk->type_id;
 }
 
-I8X_EXPORT uintmax_t
+I8X_EXPORT uintptr_t
 i8x_chunk_get_version (struct i8x_chunk *chunk)
 {
   return chunk->version;
diff --git a/libi8x/code.c b/libi8x/code.c
index 572bbfd..9e929f0 100644
--- a/libi8x/code.c
+++ b/libi8x/code.c
@@ -147,7 +147,7 @@ static i8x_err_e
 i8x_code_read_opcode (struct i8x_readbuf *rb, i8x_opcode_t *opcode)
 {
   const char *location = i8x_rb_get_ptr (rb);
-  uintmax_t tmp;
+  uintptr_t tmp;
   uint8_t byte;
   i8x_opcode_t result;
   i8x_err_e err;
@@ -158,7 +158,7 @@ i8x_code_read_opcode (struct i8x_readbuf *rb, i8x_opcode_t *opcode)
 
   if (byte == DW_OP_GNU_wide_op)
     {
-      uintmax_t wide;
+      uintptr_t wide;
 
       err = i8x_rb_read_uleb128 (rb, &wide);
       if (err != I8X_OK)
@@ -186,8 +186,8 @@ i8x_code_read_operand (struct i8x_readbuf *rb,
 		       union i8x_value *operand)
 {
   const char *location = i8x_rb_get_ptr (rb);
-  intmax_t signed_result;
-  uintmax_t unsigned_result;
+  intptr_t signed_result;
+  uintptr_t unsigned_result;
   union i8x_value result;
   bool is_signed;
   i8x_err_e err;
diff --git a/libi8x/libi8x.h b/libi8x/libi8x.h
index 361fffe..1a238a5 100644
--- a/libi8x/libi8x.h
+++ b/libi8x/libi8x.h
@@ -184,8 +184,8 @@ I8X_COMMON_OBJECT_FUNCTIONS (chunk);
 I8X_LISTABLE_OBJECT_FUNCTIONS (chunk);
 
 struct i8x_note *i8x_chunk_get_note (struct i8x_chunk *chunk);
-uintmax_t i8x_chunk_get_type_id (struct i8x_chunk *chunk);
-uintmax_t i8x_chunk_get_version (struct i8x_chunk *chunk);
+uintptr_t i8x_chunk_get_type_id (struct i8x_chunk *chunk);
+uintptr_t i8x_chunk_get_version (struct i8x_chunk *chunk);
 size_t i8x_chunk_get_encoded_size (struct i8x_chunk *chunk);
 const char *i8x_chunk_get_encoded (struct i8x_chunk *chunk);
 
@@ -336,7 +336,7 @@ size_t i8x_note_get_encoded_size (struct i8x_note *note);
 const char *i8x_note_get_encoded (struct i8x_note *note);
 struct i8x_list *i8x_note_get_chunks (struct i8x_note *note);
 i8x_err_e i8x_note_get_unique_chunk (struct i8x_note *note,
-				     uintmax_t type_id, bool must_exist,
+				     uintptr_t type_id, bool must_exist,
 				     struct i8x_chunk **chunk);
 
 /*
@@ -363,8 +363,8 @@ i8x_err_e i8x_rb_read_int32_t (struct i8x_readbuf *rb, int32_t *result);
 i8x_err_e i8x_rb_read_uint32_t (struct i8x_readbuf *rb, uint32_t *result);
 i8x_err_e i8x_rb_read_int64_t (struct i8x_readbuf *rb, int64_t *result);
 i8x_err_e i8x_rb_read_uint64_t (struct i8x_readbuf *rb, uint64_t *result);
-i8x_err_e i8x_rb_read_sleb128 (struct i8x_readbuf *rb, intmax_t *result);
-i8x_err_e i8x_rb_read_uleb128 (struct i8x_readbuf *rb, uintmax_t *result);
+i8x_err_e i8x_rb_read_sleb128 (struct i8x_readbuf *rb, intptr_t *result);
+i8x_err_e i8x_rb_read_uleb128 (struct i8x_readbuf *rb, uintptr_t *result);
 i8x_err_e i8x_rb_read_bytes (struct i8x_readbuf *rb, size_t nbytes,
 			     const char **result);
 i8x_err_e i8x_rb_read_offset_string (struct i8x_readbuf *rb,
diff --git a/libi8x/note.c b/libi8x/note.c
index 9f818f3..7864175 100644
--- a/libi8x/note.c
+++ b/libi8x/note.c
@@ -191,7 +191,7 @@ i8x_note_get_chunks (struct i8x_note *note)
 }
 
 I8X_EXPORT i8x_err_e
-i8x_note_get_unique_chunk (struct i8x_note *note, uintmax_t type_id,
+i8x_note_get_unique_chunk (struct i8x_note *note, uintptr_t type_id,
 			   bool must_exist, struct i8x_chunk **chunkp)
 {
   struct i8x_chunk *found = NULL;
diff --git a/libi8x/readbuf.c b/libi8x/readbuf.c
index 51f6197..1f63d7c 100644
--- a/libi8x/readbuf.c
+++ b/libi8x/readbuf.c
@@ -158,9 +158,9 @@ I8X_RB_READ_FIXED_MULTI (32)
 I8X_RB_READ_FIXED_MULTI (64)
 
 I8X_EXPORT i8x_err_e
-i8x_rb_read_sleb128 (struct i8x_readbuf *rb, intmax_t *rp)
+i8x_rb_read_sleb128 (struct i8x_readbuf *rb, intptr_t *rp)
 {
-  intmax_t result = 0;
+  intptr_t result = 0;
   int shift = 0;
 
   while (1)
@@ -178,7 +178,7 @@ i8x_rb_read_sleb128 (struct i8x_readbuf *rb, intmax_t *rp)
 	{
 	  if (byte & 64)
 	    {
-	      intmax_t sign = 64 << shift;
+	      intptr_t sign = 64 << shift;
 
 	      result &= ~sign;
 	      result -= sign;
@@ -196,9 +196,9 @@ i8x_rb_read_sleb128 (struct i8x_readbuf *rb, intmax_t *rp)
 }
 
 I8X_EXPORT i8x_err_e
-i8x_rb_read_uleb128 (struct i8x_readbuf *rb, uintmax_t *rp)
+i8x_rb_read_uleb128 (struct i8x_readbuf *rb, uintptr_t *rp)
 {
-  uintmax_t result = 0;
+  uintptr_t result = 0;
   int shift = 0;
 
   while (1)

Reply via email to