[all-commits] [llvm/llvm-project] 2ef24e: [libunwind][AIX] Remove weak declaration "__xlcxx_...

Xing Xue via All-commits all-commits at lists.llvm.org
Thu Oct 17 10:07:40 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 2ef24e05defb6aa470fd4234853b2c11401cd660
      https://github.com/llvm/llvm-project/commit/2ef24e05defb6aa470fd4234853b2c11401cd660
  Author: Xing Xue <xingxue at outlook.com>
  Date:   2024-10-17 (Thu, 17 Oct 2024)

  Changed paths:
    M libunwind/src/UnwindCursor.hpp
    A libunwind/test/aix_runtime_link.pass.cpp

  Log Message:
  -----------
  [libunwind][AIX] Remove weak declaration "__xlcxx_personality_v0" (#112436)

`__xlcxx_personality_v0` is the personality routine in `libc++abi` for
the EH of applications generated by the legacy IBM C++ compiler. Since
the EH info generated by the legacy compiler does not provide the
location of the personality routine, this routine is hard-coded as the
handler for legacy EH in the unwinder. The symbol is resolved
dynamically using `dlopen()` to avoid a hard dependency of `libunwind`
on `libc++abi` for cases such as non-C++ applications. The weak
declaration of `__xlcxx_personality_v0` was originally intended to
bypass `dlopen()` if the C++ application generated by the legacy
compiler is statically linked with the new LLVM C++ compiler.
Unfortunately, this causes problems with runtime linking for
Clang-compiled code using the unwinder that does not link with
`libc++abi`.

On the other hand, the C++ runtime libraries shipped for AIX are
actually stripped and statically linking is not supported. So, we can
fix the problem by removing the `__xlcxx_personality_v0` weak
declaration. Besides, `dlopen()` would work as long as the libc++abi
shared library is available.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list