gcc/libgcc/config
Christophe Lyon 5d727a4b20 [ARM/FDPIC v6 06/24] [ARM] FDPIC: Add support for c++ exceptions
The main difference with existing support is that function addresses
are function descriptor addresses instead. This means that all code
dealing with function pointers now has to cope with function
descriptors instead.

For the same reason, Linux kernel helpers can no longer be called by
dereferencing their address, so we implement wrappers that directly
call the kernel helpers.

When restoring a function address, we also have to restore the FDPIC
register value (r9).

2019-09-10  Christophe Lyon  <christophe.lyon@st.com>
	Mickaël Guêné <mickael.guene@st.com>

	gcc/
	* ginclude/unwind-arm-common.h (unwinder_cache): Add reserved5
	field.

	libgcc/
	* config/arm/linux-atomic.c (__kernel_cmpxchg): Add FDPIC support.
	(__kernel_dmb): Likewise.
	(__fdpic_cmpxchg): New function.
	(__fdpic_dmb): New function.
	* config/arm/unwind-arm.h (FDPIC_REGNUM): New define.
	(gnu_Unwind_Find_got): New function.
	(_Unwind_decode_typeinfo_ptr): Add FDPIC support.
	* unwind-arm-common.inc (UCB_PR_GOT): New.
	(funcdesc_t): New struct.
	(get_eit_entry): Add FDPIC support.
	(unwind_phase2): Likewise.
	(unwind_phase2_forced): Likewise.
	(__gnu_Unwind_RaiseException): Likewise.
	(__gnu_Unwind_Resume): Likewise.
	(__gnu_Unwind_Backtrace): Likewise.
	* unwind-pe.h (read_encoded_value_with_base): Likewise.

	libstdc++/
	* libsupc++/eh_personality.cc (get_ttype_entry): Add FDPIC
	support.


Co-Authored-By: Mickaël Guêné <mickael.guene@st.com>

From-SVN: r275568
2019-09-10 09:47:49 +02:00
..
aarch64 [PATCH 3/3][GCC][AARCH64] Add support for pointer authentication B key 2019-05-29 09:22:17 +00:00
alpha linux-unwind.h (alpha_fallback_frame_state): Cast 'mcontext_t *' &rt_->uc.uc_mcontext to 'struct sigcontext *'. 2019-02-20 22:37:21 +01:00
arc Update copyright years. 2019-01-01 13:31:55 +01:00
arm [ARM/FDPIC v6 06/24] [ARM] FDPIC: Add support for c++ exceptions 2019-09-10 09:47:49 +02:00
avr Update copyright years. 2019-01-01 13:31:55 +01:00
bfin Update copyright years. 2019-01-01 13:31:55 +01:00
bpf GCC port for eBPF 2019-09-09 12:13:23 +02:00
c6x PR other/16615 [1/5] 2019-01-09 16:37:45 -05:00
cr16 Update copyright years. 2019-01-01 13:31:55 +01:00
cris Update copyright years. 2019-01-01 13:31:55 +01:00
csky Update copyright years. 2019-01-01 13:31:55 +01:00
epiphany Update copyright years. 2019-01-01 13:31:55 +01:00
fr30 Update copyright years. 2019-01-01 13:31:55 +01:00
frv Update copyright years. 2019-01-01 13:31:55 +01:00
ft32 Update copyright years. 2019-01-01 13:31:55 +01:00
gcn Stub implementation of unwinding for AMD GCN. 2019-06-25 11:41:33 +00:00
h8300 Update copyright years. 2019-01-01 13:31:55 +01:00
i386 Add TIGERLAKE and COOPERLAKE to GCC. 2019-08-20 07:06:03 +00:00
ia64 crtbegin.S (__dso_handle): Put in .sdata/.sbss rather than .data/.bss so it can be accessed via... 2019-06-05 16:27:37 -06:00
iq2000 Update copyright years. 2019-01-01 13:31:55 +01:00
libbid Update copyright years. 2019-01-01 13:31:55 +01:00
lm32 Update copyright years. 2019-01-01 13:31:55 +01:00
m32c Update copyright years. 2019-01-01 13:31:55 +01:00
m32r Update copyright years. 2019-01-01 13:31:55 +01:00
m68k Update copyright years. 2019-01-01 13:31:55 +01:00
mcore Update copyright years. 2019-01-01 13:31:55 +01:00
microblaze Update copyright years. 2019-01-01 13:31:55 +01:00
mips Update copyright years. 2019-01-01 13:31:55 +01:00
mmix Update copyright years. 2019-01-01 13:31:55 +01:00
moxie Update copyright years. 2019-01-01 13:31:55 +01:00
msp430 MSP430: Implement 64-bit shifts in assembly code 2019-06-16 21:24:56 +00:00
nds32 [NDS32] Refine force unwind. Linux kernel only uses RT_SIGRETURN. 2019-04-15 08:19:23 +00:00
nios2 Update copyright years. 2019-01-01 13:31:55 +01:00
nvptx [nvptx] Fix __main missing prototype warning in crt0.c 2019-06-18 09:19:28 +00:00
or1k or1k: Fix issues with msoft-div 2019-07-21 20:59:50 +00:00
pa config.gcc (hppa*-*-netbsd*): New target. 2019-07-31 14:11:16 +00:00
pdp11 t-pdp11 (LIB2ADD): Add divmod.c. 2018-11-01 14:36:52 -04:00
pru Initial TI PRU libgcc port 2019-06-12 19:28:51 +00:00
riscv Update copyright years. 2019-01-01 13:31:55 +01:00
rl78 Update copyright years. 2019-01-01 13:31:55 +01:00
rs6000 [Darwin] Some TLC for older Darwin versions. 2019-07-03 18:36:28 +00:00
rx config.host (rx-*-linux*): Add t-fdpbit to tmake_file Add appropriate tm_file clause as well. 2019-06-05 17:20:27 -06:00
s390 Update copyright years. 2019-01-01 13:31:55 +01:00
score Update copyright years. 2019-01-01 13:31:55 +01:00
sh Update copyright years. 2019-01-01 13:31:55 +01:00
sol2 Update copyright years. 2019-01-01 13:31:55 +01:00
sparc Remove pre-Solaris 11/SPARC unwinding support 2019-05-28 17:27:51 +00:00
stormy16 Update copyright years. 2019-01-01 13:31:55 +01:00
tilegx
tilepro PR other/16615 [1/5] 2019-01-09 16:37:45 -05:00
v850 Update copyright years. 2019-01-01 13:31:55 +01:00
vax Update copyright years. 2019-01-01 13:31:55 +01:00
visium lib2funcs.c (__set_trampoline_parity): Replace TRAMPOLINE_SIZE with __LIBGCC_TRAMPOLINE_SIZE__. 2019-02-15 10:40:34 +00:00
vms Update copyright years. 2019-01-01 13:31:55 +01:00
xtensa Update copyright years. 2019-01-01 13:31:55 +01:00
darwin10-unwind-find-enc-func.c Move Darwin10 unwinder fix to a crt shim. 2018-08-22 11:58:43 +00:00
darwin-64.c Update copyright years. 2019-01-01 13:31:55 +01:00
darwin-crt3.c Update copyright years. 2019-01-01 13:31:55 +01:00
darwin-crt-tm.c Update copyright years. 2019-01-01 13:31:55 +01:00
gthr-lynx.h Update copyright years. 2019-01-01 13:31:55 +01:00
gthr-rtems.h Update copyright years. 2019-01-01 13:31:55 +01:00
gthr-vxworks.h Update copyright years. 2019-01-01 13:31:55 +01:00
hardfp.c Update copyright years. 2019-01-01 13:31:55 +01:00
libgcc-glibc.ver Update copyright years. 2019-01-01 13:31:55 +01:00
libgcc-libsystem.ver
no-sfp-machine.h
no-unwind.h
t-crtfm
t-crtstuff-pic
t-darwin [Darwin] Some TLC for older Darwin versions. 2019-07-03 18:36:28 +00:00
t-dfprules
t-eh-dw2-dip
t-fdpbit
t-fixedpoint-gnu-prefix
t-fpbit
t-freebsd-thread
t-gnu-prefix
t-hardfp Update copyright years. 2019-01-01 13:31:55 +01:00
t-hardfp-sfdf Update copyright years. 2019-01-01 13:31:55 +01:00
t-libgcc-pic
t-libunwind
t-libunwind-elf Update copyright years. 2019-01-01 13:31:55 +01:00
t-linux
t-openbsd-thread
t-rtems
t-slibgcc Update copyright years. 2019-01-01 13:31:55 +01:00
t-slibgcc-darwin
t-slibgcc-elf-ver
t-slibgcc-fuchsia Update copyright years. 2019-01-01 13:31:55 +01:00
t-slibgcc-gld
t-slibgcc-gld-nover
t-slibgcc-hpux
t-slibgcc-libgcc Update copyright years. 2019-01-01 13:31:55 +01:00
t-slibgcc-nolc-override
t-slibgcc-sld Use v2 map syntax in libgcc-unwind.map if Solaris ld supports it 2018-09-18 07:04:15 +00:00
t-slibgcc-vms
t-softfp Update copyright years. 2019-01-01 13:31:55 +01:00
t-softfp-compat
t-softfp-excl
t-softfp-sfdf
t-softfp-sfdftf
t-softfp-tf
t-stack
t-tls
t-vxworks Leverage cacheTextUpdate for __clear_cache on VxWorks 2018-09-21 13:09:51 +00:00
t-vxworks7 Leverage cacheTextUpdate for __clear_cache on VxWorks 2018-09-21 13:09:51 +00:00
unwind-dw2-fde-darwin.c Update copyright years. 2019-01-01 13:31:55 +01:00
vxcache.c Update copyright years. 2019-01-01 13:31:55 +01:00
vxlib-tls.c PR other/16615 [1/5] 2019-01-09 16:37:45 -05:00
vxlib.c Update copyright years. 2019-01-01 13:31:55 +01:00