diff options
author | richard <richard> | 2014-08-15 18:07:41 +0000 |
---|---|---|
committer | richard <richard> | 2014-08-15 18:07:41 +0000 |
commit | 9fa0d13ab72fc81f19a973fb8ec88564608c233f (patch) | |
tree | bb71d83e951c0156e8ccfdbc56ae0736be5e6cc4 /graphics/openexr/patches | |
parent | 077c42305a5347fba3d32627fb3f3133e815fec7 (diff) | |
download | pkgsrc-9fa0d13ab72fc81f19a973fb8ec88564608c233f.tar.gz |
Rework cpuid function to use gnuc __get_cpuid (requiring at least gcc 4.3)
This get's over issues such as encountered with PIC builds.
Upstream issue : https://github.com/openexr/openexr/issues/128
Revbump due to new dependency on GCC_REQD+= 4.3
(additional patches available upon request for bmake test target)
Diffstat (limited to 'graphics/openexr/patches')
-rw-r--r-- | graphics/openexr/patches/patch-IlmImf_ImfSystemSpecific.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/graphics/openexr/patches/patch-IlmImf_ImfSystemSpecific.cpp b/graphics/openexr/patches/patch-IlmImf_ImfSystemSpecific.cpp new file mode 100644 index 00000000000..85d8bbb1f22 --- /dev/null +++ b/graphics/openexr/patches/patch-IlmImf_ImfSystemSpecific.cpp @@ -0,0 +1,65 @@ +$NetBSD: patch-IlmImf_ImfSystemSpecific.cpp,v 1.1 2014/08/15 18:07:41 richard Exp $ + +Rework cpuid function to use gnuc __get_cpuid (requiring at least gcc 4.3) +This get's over issues such as encountered with PIC builds. +Upstream issue : https://github.com/openexr/openexr/issues/128 + +--- IlmImf/ImfSystemSpecific.cpp.orig 2014-08-10 04:23:57.000000000 +0000 ++++ IlmImf/ImfSystemSpecific.cpp +@@ -40,21 +40,19 @@ OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EN + + namespace { + #if defined(IMF_HAVE_SSE2) && defined(__GNUC__) +- ++#include <cpuid.h> + // Helper functions for gcc + SSE enabled +- void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx) ++ void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx, ++ unsigned int &ecx, unsigned int &edx) + { +- __asm__ __volatile__ ( +- "cpuid" +- : /* Output */ "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) +- : /* Input */ "a"(n) +- : /* Clobber */); ++ __get_cpuid(n, &eax, &ebx, &ecx, &edx); + } + + #else // IMF_HAVE_SSE2 && __GNUC__ + + // Helper functions for generic compiler - all disabled +- void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx) ++ void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx, ++ unsigned int &ecx, unsigned int &edx) + { + eax = ebx = ecx = edx = 0; + } +@@ -64,7 +62,7 @@ namespace { + + #ifdef OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX + +- void xgetbv(int n, int &eax, int &edx) ++ void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx) + { + __asm__ __volatile__ ( + "xgetbv" +@@ -75,7 +73,7 @@ namespace { + + #else // OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX + +- void xgetbv(int n, int &eax, int &edx) ++ void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx) + { + eax = edx = 0; + } +@@ -94,8 +92,8 @@ CpuId::CpuId(): + f16c(false) + { + bool osxsave = false; +- int max = 0; +- int eax, ebx, ecx, edx; ++ unsigned int max = 0; ++ unsigned int eax, ebx, ecx, edx; + + cpuid(0, max, ebx, ecx, edx); + if (max > 0) |