https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103044

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Segher Boessenkool <seg...@gcc.gnu.org>:

https://gcc.gnu.org/g:8d71d3a317236ab4a69f441cf867a43aeb448150

commit r12-5160-g8d71d3a317236ab4a69f441cf867a43aeb448150
Author: Raphael Moreira Zinsly <rzin...@linux.ibm.com>
Date:   Thu Nov 11 11:40:10 2021 -0300

    libgcc: Fix backtrace fallback on PowerPC Big-endian

    At the end of the backtrace stream _Unwind_Find_FDE() may not be able
    to find the frame unwind info and will later call the backtrace fallback
    instead of finishing. This occurs when using an old libc on ppc64 due to
    dl_iterate_phdr() not being able to set the fde in the last trace.
    When this occurs the cfa of the trace will be behind of context's cfa.
    Also, libgoâs probestackmaps() calls the backtrace with a null pointer
    and can get to the backchain fallback with the same problem, in this case
    we are only interested in find a stack map, we don't need nor can do a
    backchain.
    _Unwind_ForcedUnwind_Phase2() can hit the same issue as it uses
    uw_frame_state_for(), so we need to treat _URC_NORMAL_STOP.

    libgcc/ChangeLog:
            PR libgcc/103044
            * config/rs6000/linux-unwind.h (ppc_backchain_fallback): Check if
it's
            called with a null argument or at the end of the backtrace and
return.
            * unwind.inc (_Unwind_ForcedUnwind_Phase2): Treat _URC_NORMAL_STOP.

Reply via email to