From 71435121983cba54f15aff819929faedbae1ac8a Mon Sep 17 00:00:00 2001 From: David Adam Date: Thu, 17 Dec 2015 20:35:34 +0800 Subject: [PATCH] detect and provide fallback for backtrace_symbols_fd Closes #2615 to fix includes on FreeBSD and provide fallback on Cygwin. --- configure.ac | 3 ++- src/fallback.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 5570b6f05..fe8b3a73c 100644 --- a/configure.ac +++ b/configure.ac @@ -362,6 +362,7 @@ AC_SEARCH_LIBS( shm_open, rt, , [AC_MSG_ERROR([Cannot find the rt library, neede AC_SEARCH_LIBS( pthread_create, pthread, , [AC_MSG_ERROR([Cannot find the pthread library, needed to build this package.] )] ) AC_SEARCH_LIBS( setupterm, [ncurses tinfo curses], , [AC_MSG_ERROR([Could not find a curses implementation, needed to build fish. If this is Linux, try running 'sudo apt-get install libncurses5-dev' or 'sudo yum install ncurses-devel'])] ) AC_SEARCH_LIBS( [nan], [m], [AC_DEFINE( [HAVE_NAN], [1], [Define to 1 if you have the nan function])] ) +AC_SEARCH_LIBS( [backtrace_symbols_fd], [execinfo] ) if test x$local_gettext != xno; then AC_SEARCH_LIBS( gettext, intl,,) @@ -524,7 +525,7 @@ AC_STRUCT_DIRENT_D_TYPE AC_CHECK_FUNCS( wcsdup wcsndup wcslen wcscasecmp wcsncasecmp fwprintf ) AC_CHECK_FUNCS( futimes wcwidth wcswidth wcstok fputwc fgetwc ) AC_CHECK_FUNCS( wcstol wcslcat wcslcpy lrand48_r killpg mkostemp ) -AC_CHECK_FUNCS( backtrace backtrace_symbols sysconf getifaddrs ) +AC_CHECK_FUNCS( backtrace backtrace_symbols_fd sysconf getifaddrs ) AC_CHECK_FUNCS( futimens clock_gettime ) if test x$local_gettext != xno; then diff --git a/src/fallback.cpp b/src/fallback.cpp index 0f53e1a8f..c94a55c76 100644 --- a/src/fallback.cpp +++ b/src/fallback.cpp @@ -1228,8 +1228,8 @@ int backtrace(void **buffer, int size) } #endif -#ifndef HAVE_BACKTRACE_SYMBOLS -char ** backtrace_symbols(void *const *buffer, int size) +#ifndef HAVE_BACKTRACE_SYMBOLS_FD +char ** backtrace_symbols_fd(void *const *buffer, int size, int fd) { return 0; }