1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* vm_dump: FreeBSD ports' libexecinfo's backtrace(3) can't trace

beyond signal trampoline, and as described in r38342 it can't
  trace on -O because it see stack frame pointers.
  libunwind unw_backtrace see dwarf information in the binary
  and it works with -O (without frame pointers).

* configure.in: remove r38342's hack and check libunwind.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2013-02-18 21:21:02 +00:00
parent e233ca15e0
commit 0b261c379b
3 changed files with 16 additions and 13 deletions

View file

@ -1,3 +1,13 @@
Tue Feb 19 06:04:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
* vm_dump: FreeBSD ports' libexecinfo's backtrace(3) can't trace
beyond signal trampoline, and as described in r38342 it can't
trace on -O because it see stack frame pointers.
libunwind unw_backtrace see dwarf information in the binary
and it works with -O (without frame pointers).
* configure.in: remove r38342's hack and check libunwind.
Tue Feb 19 04:26:29 2013 NARUSE, Yui <naruse@ruby-lang.org>
* configure.in: check whether backtrace(3) works well or not.

View file

@ -2417,19 +2417,7 @@ AS_CASE(["$target_cpu-$target_os"],
AC_CHECK_HEADERS([execinfo.h])
if test "x$ac_cv_header_execinfo_h" = xyes; then
AC_CHECK_LIB([execinfo], [backtrace])
execinfo_frame_pointer=no
RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [execinfo_frame_pointer=yes])
if test "x$execinfo_frame_pointer" = xyes; then
# optflags must be manipulated very carefully. For the
# later cflagspat/cxxflagspat substitution to work, CFLAGS
# and CXXFLAGS must start exactly with the value of
# optflags.
CFLAGS="${CFLAGS# }"; CFLAGS="${CFLAGS#"$optflags "}"
CXXFLAGS="${CXXFLAGS# }"; CXXFLAGS="${CXXFLAGS#"$optflags "}"
RUBY_APPEND_OPTION(optflags, -fno-omit-frame-pointer)
CFLAGS=" $optflags $CFLAGS"
CXXFLAGS=" $optflags $CXXFLAGS"
fi
AC_CHECK_LIB([unwind], [unw_backtrace])
fi])
AC_CHECK_FUNCS(backtrace)

View file

@ -431,6 +431,11 @@ rb_vmdebug_thread_dump_state(VALUE self)
# undef HAVE_BACKTRACE
# define HAVE_BACKTRACE 0
#endif
#if HAVE_LIBUNWIND
# define HAVE_BACKTRACE 1
# undef backtrace
# define backtrace unw_backtrace
#endif
#if HAVE_BACKTRACE
# include <execinfo.h>
#elif defined(_WIN32)