[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