diff options
author | Xing Xue <xingxue@outlook.com> | 2024-10-17 13:07:18 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-17 13:07:18 -0400 |
commit | 2ef24e05defb6aa470fd4234853b2c11401cd660 (patch) | |
tree | f2664114fcd57fe9daa24d306d4099d7e6d86526 /llvm/lib/Transforms/Utils/InlineFunction.cpp | |
parent | 1a609052b65e7b8ca78159d5ad14eafbeb039eb2 (diff) | |
download | llvm-2ef24e05defb6aa470fd4234853b2c11401cd660.zip llvm-2ef24e05defb6aa470fd4234853b2c11401cd660.tar.gz llvm-2ef24e05defb6aa470fd4234853b2c11401cd660.tar.bz2 |
[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.
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
0 files changed, 0 insertions, 0 deletions