diff options
Diffstat (limited to 'debian/patches/0001-libshouldbeinlibc-add-assert.h-variant-that-prints-b.patch')
-rw-r--r-- | debian/patches/0001-libshouldbeinlibc-add-assert.h-variant-that-prints-b.patch | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/debian/patches/0001-libshouldbeinlibc-add-assert.h-variant-that-prints-b.patch b/debian/patches/0001-libshouldbeinlibc-add-assert.h-variant-that-prints-b.patch new file mode 100644 index 00000000..1c23b384 --- /dev/null +++ b/debian/patches/0001-libshouldbeinlibc-add-assert.h-variant-that-prints-b.patch @@ -0,0 +1,108 @@ +From 7b40b0208f3ee9af379b83720ff624dd99fdf823 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Fri, 20 Jun 2014 15:50:53 +0200 +Subject: [PATCH hurd 1/3] libshouldbeinlibc: add assert.h variant that prints + backtraces + +* libshouldbeinlibc/assert-backtrace.h: New file. +* libshouldbeinlibc/Makefile (installhdrs): Add assert-backtrace.h. +--- + libshouldbeinlibc/Makefile | 4 ++- + libshouldbeinlibc/assert-backtrace.h | 70 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 73 insertions(+), 1 deletion(-) + create mode 100644 libshouldbeinlibc/assert-backtrace.h + +diff --git a/libshouldbeinlibc/Makefile b/libshouldbeinlibc/Makefile +index 14a7939..b32e1bd 100644 +--- a/libshouldbeinlibc/Makefile ++++ b/libshouldbeinlibc/Makefile +@@ -29,7 +29,9 @@ SRCS = termsize.c timefmt.c exec-reauth.c maptime-funcs.c \ + ugids-auth.c ugids-xinl.c ugids-merge.c ugids-imply.c ugids-posix.c \ + ugids-verify-auth.c nullauth.c + installhdrs = idvec.h timefmt.h maptime.h \ +- wire.h portinfo.h portxlate.h cacheq.h ugids.h nullauth.h ++ wire.h portinfo.h portxlate.h cacheq.h ugids.h nullauth.h \ ++ assert-backtrace.h \ ++ + installhdrsubdir = . + + OBJS = $(SRCS:.c=.o) +diff --git a/libshouldbeinlibc/assert-backtrace.h b/libshouldbeinlibc/assert-backtrace.h +new file mode 100644 +index 0000000..099a112 +--- /dev/null ++++ b/libshouldbeinlibc/assert-backtrace.h +@@ -0,0 +1,70 @@ ++/* Augment failing assertions with backtraces. ++ ++ Copyright (C) 2014 Free Software Foundation, Inc. ++ ++ This file is part of the GNU Hurd. ++ ++ The GNU Hurd is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2, or (at ++ your option) any later version. ++ ++ The GNU Hurd is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with the GNU Hurd. If not, see <http://www.gnu.org/licenses/>. */ ++ ++#ifndef __ASSERT_BACKTRACE__ ++#define __ASSERT_BACKTRACE__ ++ ++#ifndef NDEBUG ++ ++#include <assert.h> ++#include <errno.h> ++#include <execinfo.h> ++#include <stdio.h> ++#include <unistd.h> ++ ++/* This prints an "Assertion failed" message and aborts. */ ++static void __assert_fail_backtrace (const char *__assertion, ++ const char *__file, ++ unsigned int __line, ++ const char *__function) ++ __attribute__ ((noreturn, unused)); ++ ++#undef assert ++#define assert(expr) \ ++ ((expr) \ ++ ? __ASSERT_VOID_CAST (0) \ ++ : __assert_fail_backtrace (__STRING(expr), __FILE__, __LINE__, __ASSERT_FUNCTION)) ++ ++static inline void ++__assert_fail_backtrace (const char *__assertion, const char *__file, ++ unsigned int __line, const char *__function) ++{ ++#define SIZE 128 ++#define SKIP 1 ++#define MY_errno (*__errno_location ()) ++ int nptrs; ++ void *buffer[SIZE]; ++ ++ error (0, 0, "%s:%d: %s: Assertion `%s' failed.", ++ __file, __line, __function, __assertion); ++ ++ nptrs = backtrace(buffer, SIZE); ++ if (nptrs == 0) ++ error (1, MY_errno, "backtrace"); ++ ++ backtrace_symbols_fd (&buffer[SKIP], nptrs - SKIP, STDERR_FILENO); ++ fflush (stderr); ++ exit (EXIT_FAILURE); ++#undef MY_errno ++#undef SKIP ++#undef SIZE ++} ++ ++#endif /* NDEBUG */ ++#endif /* __ASSERT_BACKTRACE__ */ +-- +2.1.1 + |