1. 13 Feb, 2023 1 commit
  2. 08 Feb, 2023 3 commits
  3. 01 Feb, 2023 1 commit
  4. 24 Jan, 2023 1 commit
  5. 07 Dec, 2022 3 commits
  6. 05 Dec, 2022 1 commit
  7. 01 Dec, 2022 3 commits
  8. 21 Nov, 2022 1 commit
  9. 07 Nov, 2022 1 commit
    • Martin Storsjö's avatar
      ntdll: Add ARM EHABI unwind instructions in assembly functions. · f7609768
      Martin Storsjö authored
      On most ELF platforms on ARM, ARM EHABI is the unwind info
      format normally used, instead of DWARF like on most other platforms.
      
      Currently, when unwinding through ELF objects with libunwind, the
      libraries don't have any .eh_frame section mapped at runtime (since
      DWARF isn't used for unwinding). Instead, what happens is that
      libunwind ends up loading .debug_frame from the libraries on disk
      instead.
      
      Therefore, currently, ELF unwinding relies on the .so files not being
      stripped.
      
      This patch adds the necessary EHABI unwinding instructions in the
      assembly functions that currently have DWARF CFI instructions.
      
      EHABI isn't signaled via any specific preprocessor macro, but
      is signaled by the absence of other unwind mechanisms (such
      as __ARM_DWARF_EH__ and __SEH__, or maybe SjLj).
      
      Mark the asm functions in the preloaders as .cantunwind, to avoid
      undefined references to __aeabi_unwind_cpp_pr* functions.
      
      Also mark other assembly functions as .cantunwind; for
      signal_exit_thread this is essential if the function is marked
      with .fnstart/.fnend - otherwise exiting threads does hang.
      (pthread_exit internally calls _Unwind_ForcedUnwind, which would
      hang if signal_exit_thread had .fnstart without any matching unwind
      info).
      
      This would, in principle, allow unwinding through these functions with
      libunwind, for versions of libunwind that can parse the EHABI unwind
      info - see e.g.
      https://github.com/libunwind/libunwind/commit/4d779f55c0d0a3814453517e54cd0f7bed69ca74.
      (This commit isn't yet in any current release AFAIK). Unwinding with
      EHABI via libunwind would require a few tweaks to the libunwind interface
      usage in unix/signal_arm.c though, since e.g. the unw_get_proc_info call
      fails if there's no .eh_frame or .debug_frame available.
      Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      f7609768
  10. 31 Oct, 2022 1 commit
  11. 25 Oct, 2022 1 commit
  12. 19 Jul, 2022 1 commit
  13. 04 Jul, 2022 1 commit
  14. 24 Jun, 2022 1 commit
  15. 28 Apr, 2022 1 commit
  16. 24 Mar, 2022 1 commit
  17. 21 Mar, 2022 1 commit
  18. 18 Mar, 2022 2 commits
  19. 02 Mar, 2022 1 commit
  20. 31 Jan, 2022 1 commit
  21. 28 Jan, 2022 1 commit
  22. 27 Jan, 2022 2 commits
  23. 21 Dec, 2021 1 commit
  24. 09 Dec, 2021 1 commit
  25. 04 Nov, 2021 1 commit
  26. 25 Oct, 2021 2 commits
  27. 20 Oct, 2021 1 commit
  28. 21 Sep, 2021 2 commits
  29. 17 Sep, 2021 2 commits