• Martin Storsjö's avatar
    ntdll: Implement ARM EHABI unwinding. · a27b202a
    Martin Storsjö authored
    This avoids relying on libunwind, which isn't always available,
    and which can be brittle (e.g. current git master of libunwind fails, see
    https://github.com/libunwind/libunwind/pull/203#issuecomment-984126066).
    
    This allows unwinding with the EXIDX/EXTBL info which is used
    normally for C++ exception handling/unwinding. This avoids needing
    to keep the .so files unstripped and avoids needing libunwind to
    load .debug_frame from disk instead of the already mapped
    EXIDX/EXTBL.
    
    This patch uses the dl_iterate_phdr function for finding the EXIDX
    section; keeping this call within #ifdef linux to avoid breaking
    someone's build, even though it probably is available on most unix
    (or ELF) platforms.
    
    Alternatively, we could add configure checks for this function.
    
    This passes all my unwinding tests, for full ELF builds of Wine,
    built with both GCC and Clang. (It also works for PE builds, where
    only very few ELF bits need to be unwound.)
    Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
    a27b202a
Name
Last commit
Last update
dlls Loading commit data...
documentation Loading commit data...
fonts Loading commit data...
include Loading commit data...
libs Loading commit data...
loader Loading commit data...
nls Loading commit data...
po Loading commit data...
programs Loading commit data...
server Loading commit data...
tools Loading commit data...
.editorconfig Loading commit data...
.gitlab-ci.yml Loading commit data...
.mailmap Loading commit data...
ANNOUNCE Loading commit data...
AUTHORS Loading commit data...
COPYING.LIB Loading commit data...
LICENSE Loading commit data...
LICENSE.OLD Loading commit data...
MAINTAINERS Loading commit data...
README Loading commit data...
VERSION Loading commit data...
aclocal.m4 Loading commit data...
configure Loading commit data...
configure.ac Loading commit data...