rprichard added a comment.

For reference, I know of four ways that LLVM's libunwind is currently linked 
into programs:

- Fuchsia/Windows (i.e. Clang's default behavior): it's part of libc++, e.g.:
  - Fuchsia:
    - 
`fuchsia/prebuilt/third_party/clang/linux-x64/lib/x86_64-unknown-fuchsia/c++/libc++.so`
 is `INPUT(libc++.so.2 -lunwind -lc++abi)`.
    - 
`fuchsia/prebuilt/third_party/clang/linux-x64/lib/x86_64-unknown-fuchsia/c++/libc++.a`
 is an archive that contains the libunwind object files.
  - In https://github.com/mstorsjo/llvm-mingw/releases/tag/20201020:
    - `llvm-mingw\x86_64-w64-mingw32\bin\libc++.dll` uses `_Unwind_Resume` from 
libunwind.dll
    - `llvm-mingw\x86_64-w64-mingw32\lib\libc++.dll.a` also seems to import 
`_Unwind_Resume` from libunwind.dll
    - `llvm-mingw\x86_64-w64-mingw32\lib\libc++.a` has the libunwind object 
files in it
- FreeBSD: libclang_rt.builtins and libunwind are repackaged into libraries 
that look like libgcc, linked implicitly.
- Darwin: it's part of libSystem, linked implicitly.
- crosstool in google3: I think this build system is passing 
--unwindlib=libunwind to the driver.

The Android team's LLVM build is used to target several OS's: host/glibc Linux, 
Windows, Darwin, and Android. At some point, we'd also like Android NDK to rely 
on the unwinder exported from libc.so (when the API level is high enough), 
which prevents us from using Clang's `CLANG_DEFAULT_UNWINDLIB` config setting.

Even for C programs, the unwinder has at least a couple of uses I know of:

- `_Unwind_Backtrace`
- `__attribute__((cleanup))` with `-fexceptions`

I don't really know how important these use cases are, or whether there are 
other important use cases I'm not thinking of. I'd prefer to keep linking the 
unwinder implicitly.

See D57128 <https://reviews.llvm.org/D57128> and D59109 
<https://reviews.llvm.org/D59109>.

I think the Android team is happy with this driver change, though, so I expect 
I'll push it next week.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96403/new/

https://reviews.llvm.org/D96403

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to