[all-commits] [llvm/llvm-project] b8f573: [libc++abi][AIX] add personality and helper functi...

xingxue-ibm via All-commits all-commits at lists.llvm.org
Tue May 31 06:23:23 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b8f5732634feaf7a9ce37d33f97f1fb490efeddd
      https://github.com/llvm/llvm-project/commit/b8f5732634feaf7a9ce37d33f97f1fb490efeddd
  Author: Xing Xue <xingxue at outlook.com>
  Date:   2022-05-31 (Tue, 31 May 2022)

  Changed paths:
    A libcxxabi/src/aix_state_tab_eh.inc
    M libcxxabi/src/cxa_personality.cpp

  Log Message:
  -----------
  [libc++abi][AIX] add personality and helper functions for the state table EH

Summary:
This patch adds the personality and helper functions for the state table based EH used by IBM legacy compilers xlC and xlclang++ on AIX.

 * A high level description of the state table based EH is provided in the code comments.

 * Function scan_state_tab() is added to scan the state table. It is invoked by the state table personality routine __xlcxx_personality_v0() and returns scan_results like scan_eh_tab() does.

 * A couple of EH helper functions used by xlC and xlclang++ generated code are also added, e.g., __xlc_catch_matchv2() which checks whether the thrown object matches the catch handler's exception type.

 * Debugging macros _LIBCXXABI_TRACE_STATETAB, _LIBCXXABI_TRACE_STATETAB0, and _LIBCXXABI_TRACING_STATETAB are added to dump state table scanning traces if environment variable LIBCXXABI_PRINT_STATTAB is set.

 * The state variable and state table data is the LSDA found from the traceback table of the function during unwinding.

Reviewed by: MaskRay, cebowleratibm, libc++abi

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




More information about the All-commits mailing list