gcc/libgcc/config/rs6000
Iain Sandoe d4943ce939 Darwin: Rework handling for unwinder code in libgcc_s and specs [PR80556].
This addresses a long-standing problem where a work-around for an unwinder
issue (also a regression) regresses other functionality.  The patch replaces
several work-arounds with a fix for PR80556 and a work-around for PR88590.

* The fix for PR80556 requires a bump to the SO name for libgcc_s, since we
need to remove the unwinder symbols from it.  This would trigger PR88590
hence the work-around for that.

* We weaken the symbols for emulated TLS support so that it is possible
for a DSO linked with static-libgcc to interoperate with a DSO linked with
libgcc_s.  Likewise main exes.

* We remove all the gcc-4.2.1 era stubs machinery and workarounds.

* libgcc is always now linked ahead of libc, which avoids fails where the
libc (libSystem) builtins implementations are not up to date.

* The unwinder now always comes from the system
 - for Darwin9 from /usr/lib/libgcc_s.1.dylib
 - for Darwin10 from /usr/lib/libSystem.dylib
 - for Darwin11+ from /usr/lib/system/libunwind.dylib.

 We still insert a shim on Darwin10 to fix an omitted unwind function, but
 the underlying unwinder remains the system one.

* The work-around for PR88590 has two parts (1) we always link libgcc from
its convenience lib on affected system versions (avoiding the need to find
the DSO path); (2) we add and export the emutls functions from DSOs - this
makes a relatively small (20k) addition to a DSO.  These can be backed out
when a proper fix for PR88590 is committed.

For distributions that wish to install a libgcc_s.1.dylib to satisfy linkage
from exes that linked against the stubs can use a reexported libgcc_s.1.1
(since that contains all the symbols that were previously exported via the
 stubs).

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/ChangeLog:

	PR target/80556
	* config/darwin-driver.c (darwin_driver_init): Handle exported
	symbols and symbol lists (suppress automatic export of the TLS
	symbols).
	* config/darwin.c (darwin_rename_builtins): Remove workaround.
	* config/darwin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
	(REAL_LIBGCC_SPEC): Handle revised library uses.
	* config/darwin.opt (nodefaultexport): New.
	* config/i386/darwin.h (PR80556_WORKAROUND): Remove.
	* config/i386/darwin32-biarch.h (PR80556_WORKAROUND): Likewise.
	* config/i386/darwin64-biarch.h (PR80556_WORKAROUND): Likewise.

libgcc/ChangeLog:

	* config.host: Add weak emutls crt to the extra_parts.
	* config/i386/darwin-lib.h (DECLARE_LIBRARY_RENAMES): Remove
	workaround.
	* config/libgcc-libsystem.ver: Add exclude list for the system-
	provided unwinder.
	* config/t-slibgcc-darwin: Bump SO version, remove stubs code.
	* config/i386/libgcc-darwin.10.4.ver: Removed.
	* config/i386/libgcc-darwin.10.5.ver: Removed.
	* config/rs6000/libgcc-darwin.10.4.ver: Removed.
	* config/rs6000/libgcc-darwin.10.5.ver: Removed.
	* config/t-darwin-noeh: New file.

gcc/testsuite/ChangeLog:

	* gcc.dg/torture/fp-int-convert-timode-3.c: Remove XFAIL.
	* gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.
2021-11-19 19:58:11 +00:00
..
_dd_to_kf.c Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
_divkc3.c Practical improvement to libgcc complex divide 2021-04-28 21:54:44 +02:00
_kf_to_dd.c Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
_kf_to_sd.c Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
_kf_to_td.c Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
_mulkc3.c Update copyright years. 2021-01-04 10:26:59 +01:00
_powikf2.c Update copyright years. 2021-01-04 10:26:59 +01:00
_sd_to_kf.c Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
_td_to_kf.c Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
aix-unwind.h Update copyright years. 2021-01-04 10:26:59 +01:00
aixinitfini.c
atexit.c Update copyright years. 2021-01-04 10:26:59 +01:00
crtcxa.c Update copyright years. 2021-01-04 10:26:59 +01:00
crtdbase.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtresfpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtresgpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtrestvr.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtresxfpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtresxgpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtsavevr.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtsavfpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
crtsavgpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
cxa_atexit.c Update copyright years. 2021-01-04 10:26:59 +01:00
cxa_finalize.c Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-asm.h Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-crt2.c Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-fallback.c Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-fpsave.S Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-gpsave.S Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-tramp.S Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-unwind.h Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-vecsave.S Update copyright years. 2021-01-04 10:26:59 +01:00
darwin-world.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtres32gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtres64gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtres64gprctr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtrest32gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtrest64gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtresx32gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtresx64gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtsav32gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtsav64gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtsav64gprctr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtsavg32gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtsavg64gpr.S Update copyright years. 2021-01-04 10:26:59 +01:00
e500crtsavg64gprctr.S Update copyright years. 2021-01-04 10:26:59 +01:00
eabi-ci.S Update copyright years. 2021-01-04 10:26:59 +01:00
eabi-cn.S Update copyright years. 2021-01-04 10:26:59 +01:00
eabi.S Update copyright years. 2021-01-04 10:26:59 +01:00
exit.h Update copyright years. 2021-01-04 10:26:59 +01:00
extendkftf2-sw.c Update copyright years. 2021-01-04 10:26:59 +01:00
fixkfti-sw.c Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
fixunskfti-sw.c Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
float128-hw.c Update copyright years. 2021-01-04 10:26:59 +01:00
float128-ifunc.c rs6000: Fix typos in float128 ISA3.1 support 2021-06-22 23:09:30 -05:00
float128-p10.c Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
float128-sed Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
float128-sed-hw Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
floattikf-sw.c Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
floatuntikf-sw.c Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
freebsd-unwind.h Update copyright years. 2021-01-04 10:26:59 +01:00
gthr-aix.h Update copyright years. 2021-01-04 10:26:59 +01:00
ibm-ldouble-format Update copyright years. 2021-01-04 10:26:59 +01:00
ibm-ldouble.c rs6000: inline ldouble __gcc_qsub 2021-08-26 19:13:39 -04:00
libgcc-aix-cxa.ver
libgcc-glibc.ver Update copyright years. 2021-01-04 10:26:59 +01:00
libgcc-ibm-ldouble.ver
linux-unwind.h libgcc: Fix backtrace fallback on PowerPC Big-endian 2021-11-11 15:29:25 +00:00
morestack.S libgcc: use .init_stack for constructors if available 2021-10-07 20:24:43 -07:00
on_exit.c Update copyright years. 2021-01-04 10:26:59 +01:00
quad-float128.h rs6000: Fix *TItype_ppc 2021-06-10 15:20:09 +00:00
sfp-exceptions.c Update copyright years. 2021-01-04 10:26:59 +01:00
sfp-machine.h
sol-ci.S Update copyright years. 2021-01-04 10:26:59 +01:00
sol-cn.S Update copyright years. 2021-01-04 10:26:59 +01:00
t-aix-cxa
t-crtstuff
t-darwin
t-darwin64
t-e500v1-fp Update copyright years. 2021-01-04 10:26:59 +01:00
t-e500v2-fp Update copyright years. 2021-01-04 10:26:59 +01:00
t-float128 Conversions between 128-bit integer and floating point values. 2021-06-09 11:20:07 -05:00
t-float128-hw rs6000: Fix typos in float128 ISA3.1 support 2021-06-22 23:09:30 -05:00
t-float128-p10-hw rs6000: Fix typos in float128 ISA3.1 support 2021-06-22 23:09:30 -05:00
t-freebsd Update copyright years. 2021-01-04 10:26:59 +01:00
t-freebsd64
t-ibm-ldouble
t-linux rs6000: Fix up libgcc ABI when built with --with-long-double-format=ieee [PR97653] 2021-04-03 10:05:32 +02:00
t-lynx
t-netbsd
t-ppc64-fp
t-ppccomm
t-savresfgpr
t-slibgcc-aix Update copyright years. 2021-01-04 10:26:59 +01:00
t-stack-rs6000
tramp.S Fix logic error in 32-bit trampolines. 2021-04-23 18:16:03 -04:00
trunctfkf2-sw.c Update copyright years. 2021-01-04 10:26:59 +01:00