--- src/XExtInt.c.orig 2011-06-14 20:46:50.254164713 +0200 +++ src/XExtInt.c 2011-06-14 22:08:38.173047738 +0200 @@ -1419,6 +1419,13 @@ for (i = 0; i < nclasses; i++) { int l = 0; +#ifdef _ABIN32 + /* On MIPS n32 doubles must be 8 byte aligned, but longs take + 4 bytes, so next_block could make this structure + unaligned. */ + if(len % 8 != 0) + len += 8 - len % 8; +#endif any_wire = (xXIAnyInfo*)ptr_wire; switch(any_wire->type) { @@ -1467,6 +1474,14 @@ for (i = 0; i < nclasses; i++) { +#ifdef _ABIN32 + /* On MIPS n32 doubles must be 8 byte aligned, but longs take + 4 bytes, so next_block could make this structure + unaligned. */ + if(((size_t) ptr_lib) % 8 != 0) + ptr_lib += 8 - ((size_t) ptr_lib) % 8; +#endif + any_lib = (XIAnyClassInfo*)ptr_lib; any_wire = (xXIAnyInfo*)ptr_wire;