[all-commits] [llvm/llvm-project] b6420e: Reland "[ARM] __cxa_end_cleanup should be called i...

Dani via All-commits all-commits at lists.llvm.org
Thu Oct 28 07:50:00 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b6420e575f3bbb6b6df848c0284d6b60eeb07350
      https://github.com/llvm/llvm-project/commit/b6420e575f3bbb6b6df848c0284d6b60eeb07350
  Author: Daniel Kiss <daniel.kiss at arm.com>
  Date:   2021-10-28 (Thu, 28 Oct 2021)

  Changed paths:
    M libcxxabi/src/cxa_exception.cpp
    M llvm/include/llvm/ADT/Triple.h
    M llvm/include/llvm/IR/RuntimeLibcalls.def
    M llvm/lib/CodeGen/DwarfEHPrepare.cpp
    M llvm/lib/Target/ARM/ARMSubtarget.h
    M llvm/test/CodeGen/ARM/debug-frame.ll
    R llvm/test/CodeGen/ARM/eh-resume-darwin.ll
    A llvm/test/CodeGen/ARM/eh-resume.ll
    A llvm/test/CodeGen/ARM/eh-resume2.ll
    M llvm/test/CodeGen/ARM/ehabi.ll

  Log Message:
  -----------
  Reland "[ARM] __cxa_end_cleanup should be called instead of _UnwindResume."

This is relanding commit da1d1a08694bbfe0ea7a23ea094612436e8a2dd0 .
This patch additionally addresses failures found in buildbots & post review comments.

ARM EHABI[1] specifies the __cxa_end_cleanup to be called after cleanup.
It will call the UnwindResume.
__cxa_begin_cleanup will be called from libcxxabi while __cxa_end_cleanup is never called.
This will trigger a termination when a foreign exception is processed while UnwindResume is called
because the global state will be wrong due to the missing __cxa_end_cleanup call.

Additional test here: D109856
[1] https://github.com/ARM-software/abi-aa/blob/main/ehabi32/ehabi32.rst#941compiler-helper-functions

Reviewed By: logan

Differential Revision: https://reviews.llvm.org/D111703




More information about the All-commits mailing list