cosmopolitan/libc/runtime
Trung Nguyen 8b33204f37
Add LLVM libcxxabi (#1063)
* third_party: Add libcxxabi

Added libcxxabi from LLVM 17.0.6
The library implements the Itanium C++ exception handling ABI.

* third_party/libcxxabi: Enable __cxa_thread_atexit

Enable `__cxa_thread_atexit` from libcxxabi.
`__cxa_thread_atexit_impl` is still implemented by the cosmo libc.
The original `__cxa_thread_atexit` has been removed.

* third_party/libcxx: Build with exceptions

Build libcxx with exceptions enabled.

- Removed `_LIBCPP_NO_EXCEPTIONS` from `__config`.
- Switched the exception implementation to `libcxxabi`. These two files
are taken from the same `libcxx` version as mentioned in `README.cosmo`.
- Removed `new_handler_fallback` in favor of `libcxxabi` implementation.
- Enable `-fexceptions` and `-frtti` for `libcxx`.
- Removed `THIRD_PARTY_LIBCXX` dependency from `libcxxabi` and
`libunwind`. These libraries do not use any runtime `libcxx` functions,
just headers.

* libc: Remove remaining redundant cxa functions

- `__cxa_pure_virtual` in `libcxxabi` is also a stub similar to the
existing one.
- `__cxa_guard_*` from `libcxxabi` is used instead of the ones from
Android.

Now there should be no more duplicate implementations.
`__cxa_thread_atexit_impl`, `__cxa_atexit`, and related supporting
functions, are still left to other libraries as in `libcxxabi`.

`libcxxabi` is also now added to `cosmopolitan.a` to make up for the
removed functions.

Affected in-tree libraries (`third_party/double-conversion`) have been
updated.
2024-01-08 08:45:10 -08:00
..
.cosmo Move zipos into runtime package 2023-08-11 23:14:02 -07:00
__sigsetjmp_tail.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
BUILD.mk more modeline errata (#1019) 2023-12-16 23:07:10 -05:00
clktck.h Reduce header complexity 2023-11-28 14:39:42 -08:00
clone-linux.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
clone-openbsd.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
clone-xnu.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
clone.c Make cosmo_dlopen() safer and faster 2024-01-05 20:42:19 -08:00
closesymboltable.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
cosmo.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
cosmo2.c Prepend getcwd to exename early in init (#1048) 2024-01-01 07:23:23 -08:00
dsohandle.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
e820.internal.h Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
efimain.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
efipostboot.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
enable_tls.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
exit.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
fenv.h Reduce header complexity 2023-11-28 14:39:42 -08:00
fesetround.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
findcombinary.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
fltrounds.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
fpathconf.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
fpreset.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
ftrace-hook.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
ftrace_install.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
ftrace_stackdigs.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
ftraceinit.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
ftracer.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getargmax.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getavphyspages.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getdosargv.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getdosenviron.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getinterpreterexecutablename.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getlogin.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getlogin_r.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getmemtracksize.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getpagesize.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getphyspages.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getresourcelimit.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getsymbol.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getsymbolbyaddr.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getsymbolname.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getsymboltable.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
getsysctl.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
grow.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
hook.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
inflate.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
init.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
interceptflag.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
internal.h Prepend getcwd to exename early in init (#1048) 2024-01-01 07:23:23 -08:00
isheap.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
ismemtracked.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
isstackoverflow.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
jit.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
login_tty.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
mapanon.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
mapshared.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
mapstack.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
memtrack.internal.h Exclude strace from MODE=tiny builds 2023-11-29 03:45:54 -08:00
memtrack64.txt Iterate more on recent changes 2023-11-11 00:28:22 -08:00
memtracknt.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
metalprintf.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
metalprintf.internal.h Reduce header complexity 2023-11-28 14:39:42 -08:00
mman.internal.h Reduce header complexity 2023-11-28 14:39:42 -08:00
mmap.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
morph.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
morph_tls.c Make cosmo_dlopen() safer and faster 2024-01-05 20:42:19 -08:00
mprotect-nt.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
mprotect.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
msync-nt.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
msync.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
munmap.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
openexecutable.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
opensymboltable.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
pathconf.h Reduce header complexity 2023-11-28 14:39:42 -08:00
pc.internal.h flip et / noet in modelines 2023-12-07 22:17:11 -05:00
printgarbage.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
printmaps.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
progname.S flip et / noet in modelines 2023-12-07 22:17:11 -05:00
runtime.h Loader path security (#1012) 2023-12-15 12:23:58 -05:00
set_tls.c Make cosmo_dlopen() safer and faster 2024-01-05 20:42:19 -08:00
sigsetjmp.S Fix more vi modelines (#1006) 2023-12-13 02:28:11 -05:00
stack.h Reduce header complexity 2023-11-28 14:39:42 -08:00
straceinit.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
symbols.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
symbols.internal.h Reduce header complexity 2023-11-28 14:39:42 -08:00
sysconf.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
sysconf.h Reduce header complexity 2023-11-28 14:39:42 -08:00
syslib.internal.h Reduce header complexity 2023-11-28 14:39:42 -08:00
untrackmemoryintervals.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
utmp.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
utmp.h Reduce header complexity 2023-11-28 14:39:42 -08:00
utmpx.h Reduce header complexity 2023-11-28 14:39:42 -08:00
valist.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
warnifpowersave.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
weakfree.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
winargs.internal.h Reduce header complexity 2023-11-28 14:39:42 -08:00
winmain.greg.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-access.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-close.c Rename __zipos_free -> __zipos_drop (#1043) 2023-12-26 12:08:57 -05:00
zipos-fcntl.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-find.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-fstat.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-get.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-inode.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-mmap.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-normpath.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-notat.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-open.c Rename __zipos_free -> __zipos_drop (#1043) 2023-12-26 12:08:57 -05:00
zipos-parseuri.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-read.c Save a redundant load in zipos read/seek (#1037) 2023-12-24 19:40:18 -05:00
zipos-seek.c Save a redundant load in zipos read/seek (#1037) 2023-12-24 19:40:18 -05:00
zipos-stat-impl.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos-stat.c flip et / noet in modelines 2023-12-07 22:17:11 -05:00
zipos.internal.h Rename __zipos_free -> __zipos_drop (#1043) 2023-12-26 12:08:57 -05:00
zipos.S Rename __zipos_free -> __zipos_drop (#1043) 2023-12-26 12:08:57 -05:00