[gnumeric] win32: patch pixman.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] win32: patch pixman.
- Date: Sun, 20 Oct 2013 18:00:25 +0000 (UTC)
commit 13436a4c9f45d4a6573d1004e7cbd609d215cba2
Author: Morten Welinder <terra gnome org>
Date: Sat Oct 19 13:22:11 2013 -0400
win32: patch pixman.
tools/win32/moduleset.in | 4 ++-
tools/win32/patches/pixman-crash.patch | 45 ++++++++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 1 deletions(-)
---
diff --git a/tools/win32/moduleset.in b/tools/win32/moduleset.in
index cdbf70c..de2298a 100644
--- a/tools/win32/moduleset.in
+++ b/tools/win32/moduleset.in
@@ -141,7 +141,9 @@
<autotools id="pixman">
<branch repo="cairographics"
module="pixman-0.30.0.tar.gz"
- version="0.30.0"/>
+ version="0.30.0">
+ <patch file="&patch_dir;pixman-crash.patch" strip="1"/>
+ </branch>
</autotools>
<autotools id="cairo">
<branch repo="cairographics"
diff --git a/tools/win32/patches/pixman-crash.patch b/tools/win32/patches/pixman-crash.patch
new file mode 100644
index 0000000..159d538
--- /dev/null
+++ b/tools/win32/patches/pixman-crash.patch
@@ -0,0 +1,45 @@
+commit 4978392c6d6d6e69bef3bb66ea53f41a58e8eafc
+Author: Søren Sandmann Pedersen <ssp redhat com>
+Date: Fri Oct 11 00:49:44 2013 -0400
+
+ pixman-glyph.c: Add __force_align_arg_pointer to composite functions
+
+ The functions pixman_composite_glyphs_no_mask() and
+ pixman_composite_glyphs() can call into code compiled with -msse2,
+ which requires the stack to be aligned to 16 bytes. Since the ABIs on
+ Windows and Linux for x86-32 don't provide this guarantee, we need to
+ use this attribute to make GCC generate a prologue that realigns the
+ stack.
+
+ This fixes the crash introduced in the previous commit and also
+
+ https://bugs.freedesktop.org/show_bug.cgi?id=70348
+
+ and
+
+ https://bugs.freedesktop.org/show_bug.cgi?id=68300
+
+diff --git a/pixman/pixman-glyph.c b/pixman/pixman-glyph.c
+index 5a271b6..96a349a 100644
+--- a/pixman/pixman-glyph.c
++++ b/pixman/pixman-glyph.c
+@@ -391,6 +391,9 @@ box32_intersect (pixman_box32_t *dest,
+ return dest->x2 > dest->x1 && dest->y2 > dest->y1;
+ }
+
++#if defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__)
++__attribute__((__force_align_arg_pointer__))
++#endif
+ PIXMAN_EXPORT void
+ pixman_composite_glyphs_no_mask (pixman_op_t op,
+ pixman_image_t *src,
+@@ -630,6 +633,9 @@ out:
+ * - Trim the mask to the destination clip/image?
+ * - Trim composite region based on sources, when the op ignores 0s.
+ */
++#if defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__)
++__attribute__((__force_align_arg_pointer__))
++#endif
+ PIXMAN_EXPORT void
+ pixman_composite_glyphs (pixman_op_t op,
+ pixman_image_t *src,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]