aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/InlineFunction.cpp
diff options
context:
space:
mode:
authorXing Xue <xingxue@outlook.com>2024-10-17 13:07:18 -0400
committerGitHub <noreply@github.com>2024-10-17 13:07:18 -0400
commit2ef24e05defb6aa470fd4234853b2c11401cd660 (patch)
treef2664114fcd57fe9daa24d306d4099d7e6d86526 /llvm/lib/Transforms/Utils/InlineFunction.cpp
parent1a609052b65e7b8ca78159d5ad14eafbeb039eb2 (diff)
downloadllvm-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