strace-6.5-static.patch (5425B)
1 --- a/configure.ac 2 +++ b/configure.ac 3 @@ -54,6 +54,15 @@ AC_SUBST([STRACE_MANPAGE_DATE], [strace_manpage_date]) 4 AC_DEFINE([SLM_MANPAGE_DATE], "[slm_manpage_date]", [Date]) 5 AC_SUBST([SLM_MANPAGE_DATE], [slm_manpage_date]) 6 7 +AC_ARG_ENABLE([static], 8 + [AS_HELP_STRING([--enable-static], 9 + [link strace statically])], 10 + [], [enable_static=no]) 11 +if test "$enable_static" = "yes"; then 12 + # Add -pthread since strace wants -lrt for timer_create, and -lrt uses -lpthread. 13 + LDFLAGS="$LDFLAGS -pthread -static" 14 +fi 15 + 16 AC_C_BIGENDIAN 17 18 dnl arch-specific default for --enable-gcc-Werror 19 --- a/m4/st_libdw.m4 20 +++ b/m4/st_libdw.m4 21 @@ -8,7 +8,6 @@ 22 AC_DEFUN([st_ARG_LIBDW], [dnl 23 24 : ${libdw_CPPFLAGS=} 25 -: ${libdw_CFLAGS=} 26 : ${libdw_LDFLAGS=} 27 : ${libdw_LIBS=} 28 29 @@ -34,48 +33,14 @@ AC_DEFUN([st_LIBDW], [dnl 30 have_libdw= 31 32 AS_IF([test "x$with_libdw" != xno && test "x$use_unwinder" = x], 33 - [saved_CPPFLAGS="$CPPFLAGS" 34 - saved_CFLAGS="$CFLAGS" 35 - CPPFLAGS="$CPPFLAGS $libdw_CPPFLAGS" 36 - CFLAGS="$CFLAGS $libdw_CFLAGS" 37 - 38 - AC_CHECK_HEADERS([elfutils/libdwfl.h], 39 - [AC_CHECK_LIB([dw], [dwfl_linux_proc_attach], 40 - [libdw_LIBS="-ldw $libdw_LIBS" 41 - AC_CACHE_CHECK([for elfutils version], 42 - [st_cv_ELFUTILS_VERSION], 43 - [[st_cv_ELFUTILS_VERSION="$(echo _ELFUTILS_VERSION | 44 - $CPP $CPPFLAGS -P -imacros elfutils/version.h - | 45 - grep '^[0-9]')" 46 - test -n "$st_cv_ELFUTILS_VERSION" || 47 - st_cv_ELFUTILS_VERSION=0 48 - ]] 49 - ) 50 - AS_IF([test "$st_cv_ELFUTILS_VERSION" -ge 164], 51 - [have_libdw=yes], 52 - [AS_IF([test "x$with_libdw" = xyes], 53 - [AC_MSG_ERROR([elfutils version >= 164 is required for stack tracing support])], 54 - [AC_MSG_WARN([elfutils version >= 164 is required for stack tracing support])] 55 - ) 56 - ] 57 - ) 58 - ], 59 - [AS_IF([test "x$with_libdw" = xyes], 60 - [AC_MSG_FAILURE([failed to find dwfl_linux_proc_attach in libdw])], 61 - ) 62 - ], 63 - [$libdw_LDFLAGS $libdw_LIBS] 64 - ) 65 - ], 66 - [AS_IF([test "x$with_libdw" = xyes], 67 - [AC_MSG_FAILURE([failed to find elfutils/libdwfl.h])] 68 - ) 69 - ] 70 - ) 71 - 72 - CFLAGS="$saved_CFLAGS" 73 - CPPFLAGS="$saved_CPPFLAGS" 74 - ] 75 + [if test "$enable_static" = "yes"; then 76 + PKG_CHECK_MODULES_STATIC([LIBDW], [libdw >= 0.164]) 77 + else 78 + PKG_CHECK_MODULES([LIBDW], [libdw >= 0.164]) 79 + fi 80 + have_libdw=yes 81 + libdw_CPPFLAGS="$LIBDW_CFLAGS" 82 + libdw_LIBS="$LIBDW_LIBS"] 83 ) 84 85 AS_IF([test "x$have_libdw" = xyes], 86 @@ -84,7 +49,6 @@ AS_IF([test "x$have_libdw" = xyes], 87 [Whether to use libdw for stack tracing] 88 ) 89 AC_SUBST(libdw_CPPFLAGS) 90 - AC_SUBST(libdw_CFLAGS) 91 AC_SUBST(libdw_LDFLAGS) 92 AC_SUBST(libdw_LIBS) 93 ] 94 --- a/m4/st_libunwind.m4 95 +++ b/m4/st_libunwind.m4 96 @@ -28,64 +28,14 @@ AC_ARG_WITH([libunwind], 97 AC_DEFUN([st_LIBUNWIND], [dnl 98 99 AS_IF([test "x$with_libunwind" != xno && test "x$use_unwinder" = x], 100 - [saved_CPPFLAGS="$CPPFLAGS" 101 - CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS" 102 - 103 - AC_CHECK_HEADERS([libunwind-ptrace.h], 104 - [saved_LDFLAGS="$LDFLAGS" 105 - LDFLAGS="$LDFLAGS $libunwind_LDFLAGS" 106 - 107 - AC_CHECK_LIB([unwind], [backtrace], 108 - [libunwind_LIBS="-lunwind $libunwind_LIBS" 109 - 110 - AC_MSG_CHECKING([for unw_create_addr_space in libunwind-generic]) 111 - saved_LIBS="$LIBS" 112 - LIBS="-lunwind-generic $libunwind_LIBS $LIBS" 113 - 114 - AC_LINK_IFELSE( 115 - [AC_LANG_PROGRAM([[#include <libunwind-ptrace.h>]], 116 - [[return !unw_create_addr_space(0, 0)]]) 117 - ], 118 - [AC_MSG_RESULT([yes]) 119 - libunwind_LIBS="-lunwind-generic $libunwind_LIBS" 120 - 121 - AC_CHECK_LIB([unwind-ptrace], [_UPT_create], 122 - [libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS" 123 - use_unwinder=libunwind 124 - ], 125 - [if test "x$with_libunwind" != xcheck; then 126 - AC_MSG_FAILURE([failed to find _UPT_create in libunwind-ptrace]) 127 - fi 128 - ], 129 - [$libunwind_LIBS] 130 - ) 131 - ], 132 - [AC_MSG_RESULT([no]) 133 - if test "x$with_libunwind" != xcheck; then 134 - AC_MSG_FAILURE([failed to find unw_create_addr_space in libunwind-generic]) 135 - fi 136 - ] 137 - ) 138 - 139 - LIBS="$saved_LIBS" 140 - ], 141 - [if test "x$with_libunwind" != xcheck; then 142 - AC_MSG_FAILURE([failed to find libunwind]) 143 - fi 144 - ], 145 - [$libunwind_LIBS] 146 - ) 147 - 148 - LDFLAGS="$saved_LDFLAGS" 149 - ], 150 - [if test "x$with_libunwind" != xcheck; then 151 - AC_MSG_FAILURE([failed to find libunwind-ptrace.h]) 152 - fi 153 - ] 154 - ) 155 - 156 - CPPFLAGS="$saved_CPPFLAGS" 157 - ] 158 + [if test "$enable_static" = "yes"; then 159 + PKG_CHECK_MODULES_STATIC([LIBUNWIND], [libunwind libunwind-generic libunwind-ptrace]) 160 + else 161 + PKG_CHECK_MODULES([LIBUNWIND], [libunwind libunwind-generic libunwind-ptrace]) 162 + fi 163 + use_unwinder="libunwind" 164 + libunwind_CPPFLAGS="$LIBUNWIND_CFLAGS" 165 + libunwind_LIBS="$LIBUNWIND_LIBS"] 166 ) 167 168 if test "x$use_unwinder" = xlibunwind; then 169 --- a/src/Makefile.am 170 +++ b/src/Makefile.am 171 @@ -417,7 +417,6 @@ libstrace_a_SOURCES += unwind.c unwind.h 172 if USE_LIBDW 173 libstrace_a_SOURCES += unwind-libdw.c 174 strace_CPPFLAGS += $(libdw_CPPFLAGS) 175 -strace_CFLAGS += $(libdw_CFLAGS) 176 strace_LDFLAGS += $(libdw_LDFLAGS) 177 strace_LDADD += $(libdw_LIBS) 178 endif