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)