diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libunwind')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libunwind/backtrace-only-with-glibc.patch | 45 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libunwind/default.nix | 45 |
2 files changed, 90 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libunwind/backtrace-only-with-glibc.patch b/nixpkgs/pkgs/development/libraries/libunwind/backtrace-only-with-glibc.patch new file mode 100644 index 000000000000..5fcaa72c0c01 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libunwind/backtrace-only-with-glibc.patch @@ -0,0 +1,45 @@ +From 04437142399662b576bd55a85485c6dcc14d0812 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem at gmail.com> +Date: Thu, 31 Dec 2015 06:44:07 +0000 +Subject: [PATCH] backtrace: Use only with glibc and uclibc + +backtrace API is glibc specific not linux specific +so make it behave so. + +Signed-off-by: Khem Raj <raj.khem at gmail.com> +--- +Upstream-Status: Pending + + tests/test-coredump-unwind.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/tests/test-coredump-unwind.c b/tests/test-coredump-unwind.c +index 5254708..8767b42 100644 +--- a/tests/test-coredump-unwind.c ++++ b/tests/test-coredump-unwind.c +@@ -57,7 +57,9 @@ + #include <grp.h> + + /* For SIGSEGV handler code */ ++#ifdef __GLIBC__ + #include <execinfo.h> ++#endif + #include <sys/ucontext.h> + + #include <libunwind-coredump.h> +@@ -238,11 +240,11 @@ void handle_sigsegv(int sig, siginfo_t *info, void *ucontext) + ip); + + { ++#ifdef __GLIBC__ + /* glibc extension */ + void *array[50]; + int size; + size = backtrace(array, 50); +-#ifdef __linux__ + backtrace_symbols_fd(array, size, 2); + #endif + } +-- +2.6.4 + diff --git a/nixpkgs/pkgs/development/libraries/libunwind/default.nix b/nixpkgs/pkgs/development/libraries/libunwind/default.nix new file mode 100644 index 000000000000..b2b5db2309c1 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libunwind/default.nix @@ -0,0 +1,45 @@ +{ stdenv, lib, fetchurl, autoreconfHook, xz, coreutils }: + +stdenv.mkDerivation rec { + pname = "libunwind"; + version = "1.4.0"; + + src = fetchurl { + url = "mirror://savannah/libunwind/${pname}-${version}.tar.gz"; + sha256 = "0dc46flppifrv2z0mrdqi60165ghxm1wk0g47vcbyzjdplqwjnfz"; + }; + + patches = [ ./backtrace-only-with-glibc.patch ]; + + postPatch = lib.optionalString stdenv.hostPlatform.isMusl '' + substituteInPlace configure.ac --replace "-lgcc_s" "-lgcc_eh" + ''; + + nativeBuildInputs = [ autoreconfHook ]; + + outputs = [ "out" "dev" "devman" ]; + + # Without latex2man, no man pages are installed despite being + # prebuilt in the source tarball. + configureFlags = [ "LATEX2MAN=${coreutils}/bin/true" ]; + + propagatedBuildInputs = [ xz ]; + + postInstall = '' + find $out -name \*.la | while read file; do + sed -i 's,-llzma,${xz.out}/lib/liblzma.la,' $file + done + ''; + + doCheck = false; # fails + + meta = with lib; { + homepage = "https://www.nongnu.org/libunwind"; + description = "A portable and efficient API to determine the call-chain of a program"; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + license = licenses.mit; + }; + + passthru.supportsHost = !stdenv.hostPlatform.isRiscV; +} |