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

--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Jeff Law <l...@gcc.gnu.org>:

https://gcc.gnu.org/g:ab8fed849ab345974e5b83472749ac1393878f71

commit r13-7709-gab8fed849ab345974e5b83472749ac1393878f71
Author: Thomas Neumann <thomas.neum...@in.tum.de>
Date:   Fri Aug 11 09:20:27 2023 -0600

    preserve base pointer for __deregister_frame [PR110956]

    Original bug report: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110956
    Rainer Orth successfully tested the patch on Solaris with a full bootstrap.

    Some uncommon unwinding table encodings need to access the base pointer
    for address computations. We do not have that information in calls to
    __deregister_frame_info_bases, and previously simply used nullptr as
    base pointer. That is usually fine, but for some Solaris i386 shared
    libraries that results in wrong address computations.

    To fix this problem we now associate the unwinding object with
    the table pointer itself, which is always known, in addition to
    the PC range. When deregistering a frame, we first locate the object
    using the table pointer, and then use the base pointer stored within
    the object to compute the PC range.

    libgcc/ChangeLog:
            PR libgcc/110956
            * unwind-dw2-fde.c: Associate object with address of unwinding
            table.

Reply via email to