aboutsummaryrefslogtreecommitdiff
path: root/pkgs/development/libraries/liboil
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2013-01-31 22:16:31 +0100
committerVladimír Čunát <vcunat@gmail.com>2013-01-31 22:17:14 +0100
commit00258a362d6d9571d1e16524c5ee17fe0ef824a2 (patch)
treea0ff201dce041c501400e15c44bc2a0909954656 /pkgs/development/libraries/liboil
parent5bd9baa141d246de8967e10d45b12015cce4ebd1 (diff)
liboil: update, incl. a patch from Gentoo
Diffstat (limited to 'pkgs/development/libraries/liboil')
-rw-r--r--pkgs/development/libraries/liboil/default.nix11
-rw-r--r--pkgs/development/libraries/liboil/x86_64-cpuid.patch38
2 files changed, 45 insertions, 4 deletions
diff --git a/pkgs/development/libraries/liboil/default.nix b/pkgs/development/libraries/liboil/default.nix
index 05cafecff279..45f75b4f8052 100644
--- a/pkgs/development/libraries/liboil/default.nix
+++ b/pkgs/development/libraries/liboil/default.nix
@@ -1,17 +1,20 @@
-{stdenv, fetchurl, pkgconfig, glib }:
+{stdenv, fetchurl, pkgconfig }:
stdenv.mkDerivation rec {
- name = "liboil-0.3.15";
+ name = "liboil-0.3.17";
src = fetchurl {
url = "${meta.homepage}/download/${name}.tar.gz";
- sha256 = "1m3zcl54sf21cf2ckzny16ihymz8whi60ymyrhmd3m1dlw1knpmf";
+ sha256 = "0sgwic99hxlb1av8cm0albzh8myb7r3lpcwxfm606l0bkc3h4pqh";
};
- buildInputs = [pkgconfig glib];
+ buildInputs = [ pkgconfig ];
+
+ patches = [ ./x86_64-cpuid.patch ];
meta = {
homepage = http://liboil.freedesktop.org;
description = "A library of simple functions that are optimized for various CPUs";
+ license = "BSD-2";
};
}
diff --git a/pkgs/development/libraries/liboil/x86_64-cpuid.patch b/pkgs/development/libraries/liboil/x86_64-cpuid.patch
new file mode 100644
index 000000000000..d86dd79c3bcb
--- /dev/null
+++ b/pkgs/development/libraries/liboil/x86_64-cpuid.patch
@@ -0,0 +1,38 @@
+From 705916007fba0a845229a02dc6474cb523eff150 Mon Sep 17 00:00:00 2001
+From: David Schleef <ds@schleef.org>
+Date: Tue, 20 Jul 2010 21:05:26 +0000
+Subject: x86: Fix cpuid function on x86-64
+
+Fixes: #28956.
+---
+diff --git a/liboil/liboilcpu-x86.c b/liboil/liboilcpu-x86.c
+index e7a1978..ef4d3f2 100644
+--- a/liboil/liboilcpu-x86.c
++++ b/liboil/liboilcpu-x86.c
+@@ -162,13 +162,10 @@ get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
+ static void
+ get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
+ {
++ *a = op;
+ __asm__ (
+- " pushq %%rbx\n"
+ " cpuid\n"
+- " mov %%ebx, %%esi\n"
+- " popq %%rbx\n"
+- : "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d)
+- : "0" (op));
++ : "+a" (*a), "=b" (*b), "=c" (*c), "=d" (*d));
+ }
+ #endif
+
+@@ -185,7 +182,7 @@ oil_cpu_detect_cpuid (void)
+ {
+ uint32_t eax, ebx, ecx, edx;
+ uint32_t level;
+- char vendor[13] = { 0 };
++ char vendor[13+4] = { 0 };
+ int ret;
+
+ oil_fault_check_enable ();
+--
+cgit v0.9.0.2-2-gbebe