Project

General

Profile

« Previous | Next » 

Revision 6c08032d

Added by naruse (Yui NARUSE) over 11 years ago

  • addr2line.c (fill_lines): fetch symbol names from ELF binary's
    symbol table if it is built with cc -g and not stripped.
    Now ruby can show static symbols on Linux though glibc's
    backtrace_symbols(3) don't show them.

  • addr2line.c (rb_dump_backtrace_with_lines): use dladdr(3) to
    detect what object file declares the symbol because
    dl_iterate_phdr can't detect the main executable file
    and codes on the stack.
    NOTE: signal trampolines sometimes on the user stack. (FreeBSD)

  • addr2line.c (rb_dump_backtrace_with_lines): stop showing
    backtrace if the function's name is main.
    NOTE: FreeBSD's backtrace (libexecinfo) shows _start and
    an additional address. Why it doesn't remove them on dladdr phase
    is, dladdr may fail to detect the main function but detect
    as _start function. Therefore it must be after scanning
    the symbol table and getting correct name.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e