On Mon, Nov 20, 2017 at 10:07:33PM +0100, Mark Kettenis wrote: > > Date: Sun, 19 Nov 2017 23:13:05 +0100 > > From: Joerg Sonnenberger <[email protected]> > > > > On Sun, Nov 19, 2017 at 11:05:31PM +0100, Joerg Sonnenberger wrote: > > > On Sun, Nov 19, 2017 at 10:04:45PM +0100, Mark Kettenis wrote: > > > > Here is an update diff that implements __cxa_thread_atexit which is > > > > emitted by clang (and modern gcc) to implement certain aspects of > > > > C++11 thread_local. > > > > > > Note that without providing __cxa_thread_atexit, gcc will not detect it > > > and try to provide its own. > > > > __cxa_thread_atexit_impl I mean, sorry. > > GCC 7.2 also checks for __cxa_thread_atexit. > > GCC 6.4 and 4.9 only check for __cxa_thread_atexit_impl. The > consequence is that code compiled with ports GCC will indeed use GCC's > implementation instead of the one in libc. That means it doesn't > prevent the unloading of shared libraries. And with the current diff > static linking will fail if __cxa_thread_atexit is used. If ports > people deem fixing this is important, I can follow what FreeBSD did > and put the implementation in a separate file and/or provide an alias.
It has also a good chance of breaking static linkage. Providing an alias is likely the easiest solution. Taking from experience :) Joerg
