[Bug 215709] Use of thread_local produces linking errors [now with gcc]

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Jan 7 16:06:14 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=215709

--- Comment #6 from commit-hook at freebsd.org ---
A commit references this bug:

Author: kib
Date: Sat Jan  7 16:05:19 UTC 2017
New revision: 311651
URL: https://svnweb.freebsd.org/changeset/base/311651

Log:
  Export __cxa_thread_atexit_impl as an alias for __cxa_thread_atexit.

  libstdc++ before gcc r244057 expected that libc provided
  __cxa_thread_atexit_impl, and libstdc++ implemented
  __cxa_thread_atexit, by forwarding the calls to _impl.  Mentioned gcc
  revision checks for __cxa_thread_atexit in libc and does not provide
  the symbol from libstdc++ if found.

  This change helps older gcc, in particular, all released versions
  which implement thread_local, by consolidating the implementation into
  libc.  For that versions, if configured with the current libc, the
  __cxa_thread_atexit is exported from libstdc++ as a trivial wrapper
  around libc::__cxa_thread_atexit_impl.

  The __cxa_thread_atexit implementation is put into separate source
  file to allow for static linking with older libstdc++.a.

  gcc bugzilla: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78968
  Reported by:  Hannes Hauswedell <h2+fbsdports at fsfe.org>
  PR:   215709
  Sponsored by: The FreeBSD Foundation
  MFC after:    2 weeks

Changes:
  head/lib/libc/include/libc_private.h
  head/lib/libc/stdlib/Makefile.inc
  head/lib/libc/stdlib/Symbol.map
  head/lib/libc/stdlib/cxa_thread_atexit.c
  head/lib/libc/stdlib/cxa_thread_atexit_impl.c

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-threads mailing list