diff --git a/pkgs/development/libraries/libsigsegv/2.5.nix b/pkgs/development/libraries/libsigsegv/2.5.nix index 0712ba92f60..fd453defe71 100644 --- a/pkgs/development/libraries/libsigsegv/2.5.nix +++ b/pkgs/development/libraries/libsigsegv/2.5.nix @@ -1,4 +1,6 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchurl +, enableSigbusFix ? false # required by kernels < 3.18.6 +}: stdenv.mkDerivation rec { name = "libsigsegv-2.5"; @@ -8,6 +10,8 @@ stdenv.mkDerivation rec { sha256 = "0fvcsq9msi63vrbpvks6mqkrnls5cfy6bzww063sqhk2h49vsyyg"; }; + patches = stdenv.lib.optional enableSigbusFix ./sigbus_fix.patch; + meta = { homepage = http://libsigsegv.sf.net; description = "A library for handling page faults in user mode"; diff --git a/pkgs/development/libraries/libsigsegv/default.nix b/pkgs/development/libraries/libsigsegv/default.nix index 961b3b2d883..8e1079bfbc8 100644 --- a/pkgs/development/libraries/libsigsegv/default.nix +++ b/pkgs/development/libraries/libsigsegv/default.nix @@ -1,5 +1,6 @@ { stdenv, fetchurl , buildPlatform, hostPlatform +, enableSigbusFix ? false # required by kernels < 3.18.6 }: stdenv.mkDerivation rec { @@ -10,6 +11,8 @@ stdenv.mkDerivation rec { sha256 = "063swdvq7mbmc1clv0rnh20grwln1zfc2qnm0sa1hivcxyr2wz6x"; }; + patches = if enableSigbusFix then [ ./sigbus_fix.patch ] else null; + doCheck = hostPlatform == buildPlatform; meta = { diff --git a/pkgs/development/libraries/libsigsegv/sigbus_fix.patch b/pkgs/development/libraries/libsigsegv/sigbus_fix.patch new file mode 100644 index 00000000000..6f1c399041d --- /dev/null +++ b/pkgs/development/libraries/libsigsegv/sigbus_fix.patch @@ -0,0 +1,8 @@ +--- a/src/signals.h 2017-08-23 14:07:05.000000000 +0100 ++++ b/src/signals.h 2017-08-23 14:06:53.000000000 +0100 +@@ -18,4 +18,4 @@ + /* List of signals that are sent when an invalid virtual memory address + is accessed, or when the stack overflows. */ + #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ +- { int var; var = SIGSEGV; { body } } ++ { int var; var = SIGSEGV; { body } var = SIGBUS; { body } }