1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-11-24 07:40:52 +00:00
freebsd/lib
Dimitry Andric 33c39ab688 In r308100, an explicit -fexceptions flag was added for the C sources
from LLVM's libunwind, which end up in libgcc_eh.a and libgcc_s.so.
This is because the unwinder needs the unwinder data for its own
functions.

However, for the C++ sources in libunwind, -fexceptions is already the
default, and this can have the side effect of generating a reference to
__gxx_personality_v0, the so-called personality function, which is
normally provided by the C++ ABI library (libcxxrt or libsupc++).

If the reference ends up in the eventual libgcc_s.so, linking any
non-C++ programs against it will fail with "undefined reference to
`__gxx_personality_v0'".

Note that at high optimization levels, the reference is usually
optimized away, which is why we have never noticed this problem before.

With clang 7.0.0 though, higher optimization levels don't help anymore,
since the addition of address-significance tables [1] in
<https://reviews.llvm.org/rL337339>.  Effectively, this always causes a
reference to __gxx_personality_v0.

After discussion with the upstream author of that change, it turns out
that we should compile libunwind sources with the -fno-exceptions
-funwind-tables flags instead.  This ensures unwind tables are
generated, but no references to any personality functions are emitted.

[1] https://lists.llvm.org/pipermail/llvm-dev/2018-May/123514.html

Reported by:	jbeich
PR:		230399
MFC after:	1 week
2018-08-10 19:57:55 +00:00
..
atf
clang Add optional LLVM BPF target support 2018-08-09 21:28:31 +00:00
csu
geom
lib80211
libalias
libarchive
libauditd
libbegemot
libblacklist
libblocksruntime
libbluetooth
libbsdstat
libbsm
libbsnmp
libbz2
libc Update man page to include FreeBSD-specific details. 2018-08-10 15:16:41 +00:00
libc_nonshared
libc++
libc++experimental
libcalendar
libcam
libcapsicum
libcasper
libclang_rt Install the 32-bit compat sanitizer libraries. 2018-08-03 18:52:51 +00:00
libcom_err
libcompat
libcompiler_rt
libcrypt
libcuse
libcxxrt
libdevctl
libdevdctl
libdevinfo
libdevstat
libdl
libdpv
libdwarf
libedit
libefivar
libelf
libelftc
libevent
libexecinfo
libexpat
libfetch
libfigpar
libgcc_eh In r308100, an explicit -fexceptions flag was added for the C sources 2018-08-10 19:57:55 +00:00
libgcc_s
libgeom
libgpio
libgssapi
libiconv_modules
libifconfig
libipsec
libipt
libjail
libkiconv
libkvm
libldns
liblzma
libmagic
libmd
libmemstat
libmilter
libmp
libmt
libnandfs
libnetbsd
libnetgraph
libngatm
libnv libnv: Remove -I${SRCTOP}/sys 2018-08-09 20:29:44 +00:00
libopenbsd
libopencsd
libopie
libpam
libpathconv
libpcap
libpe
libpjdlog
libpmc
libpmcstat
libproc
libprocstat Do not blindly include illumos kernel headers instead of user-space. 2018-08-02 18:55:55 +00:00
libradius
libregex
librpcsec_gss
librpcsvc
librss
librt
librtld_db
libsbuf
libsdp
libsm
libsmb
libsmdb
libsmutil
libsqlite3
libstdbuf
libstdthreads
libsysdecode
libtacplus
libtelnet
libthr
libthread_db
libucl
libufs
libugidfw
libulog
libunbound
libusb
libusbhid
libutil
libveriexec
libvgl
libvmmapi
libwrap
libxo
liby
libypclnt
libz
libzstd
msun
ncurses
ofed
tests
Makefile
Makefile.inc