Commits on Oct 1, 2015
Commits on Sep 4, 2015
  1. solaris port

    Alexander Esilevich committed Sep 4, 2015
  2. extract use of dl_iterate_phdr into separate function

    Alexander Esilevich committed Sep 3, 2015
Commits on Sep 1, 2015
  1. aarch64: restore x29 (FP).

    sgsoftware committed Sep 1, 2015
Commits on Aug 31, 2015
  1. powerpc64 implementation

    Alexander Esilevich committed Aug 31, 2015
Commits on Jun 20, 2015
Commits on Jun 7, 2015
  1. Update README to use

    milianw committed with Arun Sharma Jun 7, 2015
  2. arm: Validate memory before access

    Prevent SIGSEGV due to accessing addresses now mapped to current process
    Signed-off-by: Vyacheslav Barinov <>
    Vyacheslav Barinov committed with Arun Sharma Apr 15, 2015
Commits on Apr 2, 2015
  1. Stack-unwinding through signal frames on mips

    Detect if current frame is a signal frame by checking for preceeding
    syscall instruction. For signal frames, update the cursor correctly
    from user context before calling dwarf_step.
    Faraz Shahbazker committed with Arun Sharma Mar 16, 2015
Commits on Mar 22, 2015
  1. tests/Gtest-trace.c: show differing addresses

    Andreas Schwab committed with Arun Sharma Mar 19, 2015
Commits on Feb 21, 2015
  1. Mark run-ptrace-mapper and run-ptrace-misc as XFAIL on ARM

    This is similar to commit c90a2e0
    "Mark run-ptrace-mapper and run-ptrace-misc as XFAIL on MIPS".
    Starting with 2.6.39, ARM Linux returns -EIO for PTRACE_SINGLESTEP, so
    we need to mark this as XFAIL for ARM too.
    The Linux commit that changed this is
       commit 425fc47adb5bb69f76285be77a09a3341a30799e
       Author: Will Deacon <>
       Date:   Mon Feb 14 14:31:09 2011 +0100
           ARM: 6668/1: ptrace: remove single-step emulation code
    Signed-off-by: Gregory Fong <>
    cha5on committed with Arun Sharma Feb 18, 2015
Commits on Dec 6, 2014
  1. Check that the CIE is within the segment

    Due to a bug in the gold linker[1], the .eh_frame and .eh_frame_hdr
    sections contains garbage. When dwarf_extract_proc_info_from_fde tried
    to look up the begin of the CIE subsection, it would underflow the
    .eh_frame segment, resulting in a crash[2].
    This patch avoids that crash by checking whether the CIE pointer is
    located after the begin of the .eh_frame section. The variable "base"
    was misused in various places as a boolean (decode as .debug_frame or
    decode as .eh_frame). These instances have been renamed to
    is_debug_frame where applicable.
    Tested on Linux x86_64.
    Signed-off-by: Peter Wu <>
    Lekensteyn committed with Arun Sharma Nov 25, 2014
Commits on Dec 4, 2014
  1. [PATCH] Fix build from scratch

    - Add to bootstrap autotools generation
    - Make generation of man pages optional, and check for
      availibity of latex2man if documentation is requested.
    Signed-off-by: Olivier Fourdan <>
    Signed-off-by: Arun Sharma <>
    Olivier Fourdan committed with Arun Sharma Dec 2, 2014
  2. aarch64: fix wrong big_endian flag in aarch64_be case

    Set local_addr_space.big_endian flag according to current target
    endianness. Before it was set by memset to 0, which corresponds
    to little endian and it worked perfectly fine for aarch64.
    But it breaks aarch64_be because dwarf_readu16, dwarf_readu32,
    etc functions do not read values correctly since they operate
    with wrong idea about current target endianness.
    Signed-off-by: Victor Kamensky <>
    Victor Kamensky committed with Arun Sharma Dec 4, 2014
  3. aarch64: introduce build support for aarch64_be target

    Introduce support for aarch64_be, aarch64 big endian, target.
    We would like to reuse all code that was done for aarch64
    (little endian) target. So we do similar thing that is done
    for ARM v7 (arm) target for any aarch64* arch we set it
    just to aarch64.
    Signed-off-by: Victor Kamensky <>
    Victor Kamensky committed with Arun Sharma Dec 4, 2014
Commits on Oct 25, 2014
  1. aarch64: Restore x0, x1, x2 and x3

    These registers contain the exception pointer and selector.
    cbergstrom committed with Arun Sharma Oct 25, 2014
  2. Mark run-ptrace-mapper and run-ptrace-misc as XFAIL on MIPS

    Though PTRACE_SINGLESTEP is defined on MIPS Linux, the kernel does
    not support that kind of request. The ptrace call failed and sets
    errno to EIO and paused process is not resumed. In case of
    run-ptrace-mapper and run-ptrace-misc this leads to hanged execution
    because next call to wait4 never returns.
    This change adds run-ptrace-mapper and run-ptrace-misc to the list
    of 'expected failed' tests on MIPS targets.
    Signed-off-by: Simon Atanasyan <>
    atanasyan committed with Arun Sharma Oct 21, 2014
  3. Remove unnecessary calls to labs()

    We've just traced a large memory increase to that patch (Google ref:
    It appears that labs() was there for a good reason.
    Sorry about that :-(
    For the curious:
      unsigned long u1 = ~0UL;
      unsigned long u2 = labs(u1);
      assert(u1 != u2);  // labs on unsigned *may* have an effect, despite
    what Clang says.
    Attached patch suppresses the Clang warning, while still keeping the
    original behavior (which I believe to be correct).
    Paul Pluzhnikov
    Paul Pluzhnikov committed with Arun Sharma Oct 22, 2014
  4. Fix intermittent failures of Lrs-race test case

    After the following change the Lrs-race test case starts to intermittently
    eac65dc Add basic support for the QNX operating system
    When we include "config.h" into the "libunwind_i.h" we undefine
    the HAVE___THREAD macro in a few lines below in #include "config.h"
    pragma. The change eac65dc includes "config.h" into the "dwarf.h"
    but forgets to undefine HAVE___THREAD. So now this macro has inconsistent
    state among the code. Somewhere it is defined, somewhere not. In particular
    it becomes defined in the mi/Gset_caching_policy.c and we do not replace
    UNW_CACHE_PER_THREAD caching policy by the UNW_CACHE_GLOBAL.
    The fix is rather dirty. It adds the code to undefine HAVE___THREAD in
    the "dwarf.h" like we do that in the "libunwind_i.h". Probably the ideal
    solution should fix per-thread caching implementation or turned it off
    at all on platforms where it is not completely and correctly supported.
    Signed-off-by: Simon Atanasyan <>
    atanasyan committed with Arun Sharma Oct 23, 2014
Commits on Oct 4, 2014
  1. Store location type in local unwinding mode for x86_64

    Helps support DW_CFA_val_expression
    Arun Sharma committed Oct 4, 2014
Commits on Sep 27, 2014
  1. One time whitespace fixup.

    for f in $(find src include -name '*.[ch]'); do
      expand -t 8 $f > $tmp; mv $tmp $f;
    Arun Sharma committed Sep 20, 2014
Commits on Sep 20, 2014
  1. Merge

    Arun Sharma committed Sep 20, 2014
Commits on Sep 8, 2014
  1. Add TileGx platform support to libunwind.

    "make check" passed.
    All 34 tests behaved as expected (2 expected failures)
    Zhi-Gang Liu @ Tilera
    zliu2014 committed Sep 2, 2014
Commits on Sep 7, 2014
  1. Stop unwinding on undefined return address

    Milian Wolff <> reported that this greatly
    improved unwinding perf on some his apps.
    Arun Sharma committed Sep 7, 2014
Commits on Aug 19, 2014
  1. Fix compiler warnings when UNW_DEBUG is enabled

    Newer versions of gcc complain when ALWAYS_INLINE is used without
    Arun Sharma committed Aug 19, 2014
  2. Fix empty structs in libunwind-x86_64.h

    there is a compilation issue with Clang and latest libunwind - It's
    about "typedef struct unw_tdep_save_loc" and one more struct:
    include/libunwind-x86_64.h:111:9: error: empty struct has size 0 in C,
    size 1 in C++ [-Werror,-Wextern-c-compat]
    The solution is very simple:
    abyss7 committed with Arun Sharma Aug 19, 2014
Commits on Aug 15, 2014
  1. Remove unnecessary calls to labs()

    Roman reports that Clang warns on unnecessary calls to labs():
      taking the absolute value of unsigned type 'unw_word_t' (aka
    'unsigned long') has no effect [-Werror,-Wabsolute-value]
    Since rs->reg[...].val is unw_word_t and unsigned on all platforms,
    this patch removes the unnecessary calls to labs().
    Tested on Linux x86_64, no regressions.
    Paul Pluzhnikov
    Paul Pluzhnikov committed with Arun Sharma Jul 29, 2014
  2. Correct name returned by get_proc_name() for some frames.

    Fix returning the name of the function containing the frame PC,
    for the non-interrupted frames.  The symbol lookup code should
    take use_prev_instr value into account, otherwise it could return
    the name of the function adjacent to the caller.
    kostikbel committed with Arun Sharma Jun 28, 2014
  3. Adjust use_prev_instr for syscall and frame-chain frames.

    Mark frames which are unwound with the frame-chain walker or
    syscall frame code, as non-interrupted.  The return PC in the frame
    points to the instruction after the call.
    kostikbel committed with Arun Sharma Jun 28, 2014
  4. Use helper to walk past the syscall frames on FreeBSD/x86, similar to…

    … FreeBSD/x86_64.
    The syscall trampolines in FreeBSD libc do not have unwind annotations.
    kostikbel committed with Arun Sharma Jun 28, 2014
  5. Link libunwind to libgcc_s rather than libgcc

    For some architectures, -lgcc and -lgcc_s are not equivalent. On ARM for
    example, contains some symbols needed by libunwind which
    are not present in libgcc.
    This causes the following link error when building the X.Org X server
    with libunwind support:
    	  CCLD     Xorg
    	/usr/lib/ undefined reference to `__aeabi_unwind_cpp_pr0'
    	/usr/lib/ undefined reference to `__aeabi_unwind_cpp_pr1'
    Linking against libgcc_s explicitly solves this problem.
    Signed-off-by: Thierry Reding <>
    Thierry Reding committed with Arun Sharma Jun 27, 2014
Commits on Jul 30, 2014
  1. Add fast stack trace on AArch64.

    Port of the fast stack trace feature to AArch64.
    Filip Nyback committed Jul 30, 2014
  2. Add fast stack trace on ARM.

    Port of the fast stack trace feature to ARM.
    Filip Nyback committed Jun 27, 2014