[libcxx-commits] [PATCH] D106703: [libunwind] adds a way to synthesise libgcc
Christopher Di Bella via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Jul 23 19:34:48 PDT 2021
cjdb added a comment.
In D106703#2901851 <https://reviews.llvm.org/D106703#2901851>, @efriedma wrote:
> In D106703#2901842 <https://reviews.llvm.org/D106703#2901842>, @efriedma wrote:
>
>> Oh, wait, I am missing something: you're installing a symlink, and dlopen determines whether a shared library is the same based on inode, not the path. So I guess this works out in its current form.
>
> Err, no, that's not right; the CMake steps in the patch create a symlink in the build directory, then install() copies the whole library to the install directory, so it isn't symlinked anymore.
My Chrome OS build shows this.
$ ls -l /usr/lib64/libgcc_s*
lrwxrwxrwx. 1 root root 12 Jul 21 23:31 /usr/lib64/libgcc_s.so -> libunwind.so
lrwxrwxrwx. 1 root root 14 Jul 21 23:31 /usr/lib64/libgcc_s.so.1 -> libunwind.so.1
Those look like symlinks to me?
> In D106703#2901831 <https://reviews.llvm.org/D106703#2901831>, @cjdb wrote:
>
>> Having said that, processes needn't explicitly link with libunwind when their system vends using this setup because libgcc_s.so is libunwind.so, and so even if my understanding about how shared objects are loaded is wrong, the problem should be avoided nonetheless.
>
> If nothing actually links to the library named libunwind.so, why install a library with that name?
Two reasons:
1. It could possibly break projects that do opt into using libunwind and the library isn't present.
2. It'd be weird for libunwind to install libgcc* on its lonesome.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106703/new/
https://reviews.llvm.org/D106703
More information about the libcxx-commits
mailing list