summaryrefslogtreecommitdiff
path: root/extra/libxi/XExtInt-align-classes-n32.diff
diff options
context:
space:
mode:
Diffstat (limited to 'extra/libxi/XExtInt-align-classes-n32.diff')
-rw-r--r--extra/libxi/XExtInt-align-classes-n32.diff31
1 files changed, 31 insertions, 0 deletions
diff --git a/extra/libxi/XExtInt-align-classes-n32.diff b/extra/libxi/XExtInt-align-classes-n32.diff
new file mode 100644
index 000000000..dc5cc4db3
--- /dev/null
+++ b/extra/libxi/XExtInt-align-classes-n32.diff
@@ -0,0 +1,31 @@
+--- 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;
+