Add CMake option for backtrace in kdesktop_lock exception handler

(cherry picked from commit 936d3cec49)
v3.5.13-sru
Slávek Banko 11 years ago
parent 3b35643726
commit 631b41f9a4

@ -22,6 +22,7 @@ set( VERSION "3.5.13" )
include( FindPkgConfig )
include( CheckIncludeFile )
include( CheckIncludeFiles )
include( CheckCSourceRuns )
include( CheckCXXSourceCompiles )
include( CheckLibraryExists )
@ -79,6 +80,7 @@ option( WITH_XINERAMA "Enable xinerama extension support" OFF )
option( WITH_ARTS "Enable aRts support" OFF )
option( WITH_I8K "Enable Dell laptop support (ksysguard)" OFF )
option( WITH_HAL "Enable HAL support" OFF )
option( WITH_KDESKTOP_LOCK_BACKTRACE "Enable backtrace in kdesktop_lock exception handler" OFF )
##### user requested modules ####################

@ -110,6 +110,7 @@
// kdesktop
#cmakedefine KSCREENSAVER_PAM_SERVICE "@KSCREENSAVER_PAM_SERVICE@"
#cmakedefine WITH_KDESKTOP_LOCK_BACKTRACE 1
// kdm
#cmakedefine XBINDIR "@XBINDIR@"

@ -14,3 +14,10 @@
if( WITH_PAM AND (NOT DEFINED KSCREENSAVER_PAM_SERVICE) )
set( KSCREENSAVER_PAM_SERVICE "kde" CACHE INTERNAL "" )
endif( )
if( WITH_KDESKTOP_LOCK_BACKTRACE )
check_include_files( "bfd.h;demangle.h;libiberty.h" HAVE_BINUTILS_DEV )
if( NOT HAVE_BINUTILS_DEV )
tde_message_fatal( "binutils-dev are required, but not found on your system" )
endif( )
endif( )

@ -32,11 +32,16 @@ set( target kdesktop_lock )
set( ${target}_SRCS
lockprocess.cc lockdlg.cc infodlg.cc querydlg.cc sakdlg.cc
securedlg.cc autologout.cc main.cc backtrace_symbols.c
securedlg.cc autologout.cc main.cc
)
if( WITH_KDESKTOP_LOCK_BACKTRACE )
list( APPEND ${target}_SRCS backtrace_symbols.c )
set( BACKTRACE_LIBRARY bfd )
endif( )
tde_add_executable( ${target} AUTOMOC
SOURCES ${${target}_SRCS}
LINK kdesktopsettings-static dmctl-static kio-shared Xext bfd ${GL_LIBRARY} "${LINKER_IMMEDIATE_BINDING_FLAGS}"
LINK kdesktopsettings-static dmctl-static kio-shared Xext ${BACKTRACE_LIBRARY} ${GL_LIBRARY} "${LINKER_IMMEDIATE_BINDING_FLAGS}"
DESTINATION ${BIN_INSTALL_DIR}
)

@ -137,6 +137,7 @@ static Atom gXA_SCREENSAVER_VERSION;
void print_trace()
{
#ifdef WITH_KDESKTOP_LOCK_BACKTRACE
void *array[10];
size_t size;
char **strings;
@ -152,6 +153,7 @@ void print_trace()
}
free (strings);
#endif
}
static void segv_handler(int)

Loading…
Cancel
Save