commit 4028eefe6190551c8be96cd451337dea2808742b
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Mon Feb 25 17:37:06 2019 +0100
Make callstack printing useful and optional
When callback printing is enabled, link lyx with -rdynamic, so that
stacks have LyX symbols available.
Add option --disable-callstack-printing to configure.
Running "size" on binary:
* with callstack printing support
text data bss dec hex filename
20891684 34680 107796 21034160 140f4b0 src/lyx
* without callstack printing support
text data bss dec hex filename
17953640 34648 107796 18096084 1141fd4 src/lyx
---
config/lyxinclude.m4 | 33 ++++++++++++++++++++-------------
src/Makefile.am | 5 +++--
2 files changed, 23 insertions(+), 15 deletions(-)
diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4
index cf49495..8e1d279 100644
--- a/config/lyxinclude.m4
+++ b/config/lyxinclude.m4
@@ -609,22 +609,29 @@ dnl prevent clash with system zlib that might be dragged
in by other libs
dnl Usage: LYX_CHECK_CALLSTACK_PRINTING: define LYX_CALLSTACK_PRINTING if the
dnl necessary APIs are available to print callstacks.
AC_DEFUN([LYX_CHECK_CALLSTACK_PRINTING],
-[AC_CACHE_CHECK([whether printing callstack is possible],
- [lyx_cv_callstack_printing],
-[AC_TRY_COMPILE([
-#include <execinfo.h>
-#include <cxxabi.h>
-], [
- void* array[200];
- size_t size = backtrace(array, 200);
- backtrace_symbols(array, size);
- int status = 0;
- abi::__cxa_demangle("abcd", 0, 0, &status);
-],
-[lyx_cv_callstack_printing=yes], [lyx_cv_callstack_printing=no])])
+[AC_ARG_ENABLE([callstack-printing],
+ [AC_HELP_STRING([--disable-callstack-printing],[do not print a
callstack when crashing])],
+ lyx_cv_callstack_printing=$enableval,
lyx_cv_callstack_printing=yes)
+
+if test x"$lyx_cv_callstack_printing" = xyes; then
+ AC_CACHE_CHECK([whether printing callstack is possible],
+ [lyx_cv_callstack_printing],
+ [AC_TRY_COMPILE([
+ #include <execinfo.h>
+ #include <cxxabi.h>
+ ], [
+ void* array[200];
+ size_t size = backtrace(array, 200);
+ backtrace_symbols(array, size);
+ int status = 0;
+ abi::__cxa_demangle("abcd", 0, 0, &status);
+ ],, [lyx_cv_callstack_printing=no])])
+fi
if test x"$lyx_cv_callstack_printing" = xyes; then
AC_DEFINE([LYX_CALLSTACK_PRINTING], 1,
[Define if callstack can be printed])
+ lyx_flags="$lyx_flags callback-printing"
+ AM_LDFLAGS="${AM_LDFLAGS} -rdynamic"
fi
])
diff --git a/src/Makefile.am b/src/Makefile.am
index d924a5e..ef18959 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -27,6 +27,8 @@ OTHERLIBS = $(BOOST_LIBS) $(MYTHES_LIBS) $(ENCHANT_LIBS)
$(HUNSPELL_LIBS) \
noinst_LIBRARIES = liblyxcore.a
bin_PROGRAMS = lyx
+lyx_LDFLAGS = $(AM_LDFLAGS) $(QT_LDFLAGS)
+
lyx_LDADD = \
liblyxcore.a \
liblyxmathed.a \
@@ -36,7 +38,6 @@ lyx_LDADD = \
liblyxgraphics.a \
support/liblyxsupport.a \
$(OTHERLIBS) \
- $(QT_LDFLAGS) \
$(QT_LIB)
if LYX_WIN_RESOURCE
@@ -46,7 +47,7 @@ if LYX_WIN_RESOURCE
endif
if INSTALL_MACOSX
-lyx_LDFLAGS = -framework AppKit -framework ApplicationServices \
+lyx_LDFLAGS += -framework AppKit -framework ApplicationServices \
-Wl,-rpath,@loader_path/../Frameworks \
-Wl,-rpath,@executable_path/../Frameworks \
-Wl,-headerpad_max_install_names