author | Drew Fisher <drew.fisher@oracle.com> |
Thu, 13 Oct 2016 12:49:00 -0700 | |
changeset 7108 | e30b3b76a5ab |
parent 6658 | 06a8b969738e |
permissions | -rw-r--r-- |
6658
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
1 |
Patch from upstream git repo to allow us to specify correct alignment to fix |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
2 |
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
3 |
|
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
4 |
From 51809bd437c159fda9a753959361d208ff47228b Mon Sep 17 00:00:00 2001 |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
5 |
From: Chris Liddell <[email protected]> |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
6 |
Date: Tue, 24 Mar 2015 09:03:55 +0000 |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
7 |
Subject: [PATCH] Allow ptr alignment to be set at build time |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
8 |
|
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
9 |
At least some configurations of gcc on UltraSPARC require 8 byte alignment of |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
10 |
memory pointers (even on 32 bit user space, where sizeof(void *) == 4). |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
11 |
|
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
12 |
Rather than contaminate the source, provide ability to set the ptr alignment |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
13 |
on the compiler command line (on Unix, using CFLAGS when calling configure). |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
14 |
--- |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
15 |
src/lcms2_internal.h | 10 +++++++++- |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
16 |
1 file changed, 9 insertions(+), 1 deletion(-) |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
17 |
|
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
18 |
diff --git a/src/lcms2_internal.h b/src/lcms2_internal.h |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
19 |
index 9fe91ad..1e46740 100644 |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
20 |
--- a/src/lcms2_internal.h |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
21 |
+++ b/src/lcms2_internal.h |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
22 |
@@ -57,7 +57,15 @@ |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
23 |
#define _cmsALIGNLONG(x) (((x)+(sizeof(cmsUInt32Number)-1)) & ~(sizeof(cmsUInt32Number)-1)) |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
24 |
|
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
25 |
// Alignment to memory pointer |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
26 |
-#define _cmsALIGNMEM(x) (((x)+(sizeof(void *) - 1)) & ~(sizeof(void *) - 1)) |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
27 |
+ |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
28 |
+// (Ultra)SPARC with gcc requires ptr alignment of 8 bytes |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
29 |
+// even though sizeof(void *) is only four: for greatest flexibility |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
30 |
+// allow the build to specify ptr alignment. |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
31 |
+#ifndef CMS_PTR_ALIGNMENT |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
32 |
+# define CMS_PTR_ALIGNMENT sizeof(void *) |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
33 |
+#endif |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
34 |
+ |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
35 |
+#define _cmsALIGNMEM(x) (((x)+(CMS_PTR_ALIGNMENT - 1)) & ~(CMS_PTR_ALIGNMENT - 1)) |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
36 |
|
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
37 |
// Maximum encodeable values in floating point |
06a8b969738e
24494517 lcms2 chunk allocator doesn't align properly for SPARC, causes bus errors
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
38 |
#define MAX_ENCODEABLE_XYZ (1.0 + 32767.0/32768.0) |