gcc/libstdc++-v3/libsupc++
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
..
Makefile.am Update copyright years. 2019-01-01 13:31:55 +01:00
Makefile.in PR libstdc++/89466 avoid slow xsltproc command in configure 2019-02-27 11:25:44 +00:00
array_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
atexit_arm.cc Update copyright years. 2019-01-01 13:31:55 +01:00
atexit_thread.cc Update copyright years. 2019-01-01 13:31:55 +01:00
atomic_lockfree_defines.h P0482R5 char8_t: Standard library support 2019-02-19 02:54:42 +00:00
bad_alloc.cc Update copyright years. 2019-01-01 13:31:55 +01:00
bad_array_length.cc Update copyright years. 2019-01-01 13:31:55 +01:00
bad_array_new.cc Update copyright years. 2019-01-01 13:31:55 +01:00
bad_cast.cc Update copyright years. 2019-01-01 13:31:55 +01:00
bad_typeid.cc Update copyright years. 2019-01-01 13:31:55 +01:00
class_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
cxxabi.h PR libstdc++/51333 Define recursive_init_error constructor non-inline 2019-07-29 15:27:19 +01:00
cxxabi_forced.h Update copyright years. 2019-01-01 13:31:55 +01:00
cxxabi_init_exception.h Update copyright years. 2019-01-01 13:31:55 +01:00
del_op.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opa.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opant.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opnt.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_ops.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opsa.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opv.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opva.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opvant.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opvnt.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opvs.cc Update copyright years. 2019-01-01 13:31:55 +01:00
del_opvsa.cc Update copyright years. 2019-01-01 13:31:55 +01:00
dyncast.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_alloc.cc Fix after P0600. 2019-01-21 11:47:30 +00:00
eh_arm.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_atomics.h Update copyright years. 2019-01-01 13:31:55 +01:00
eh_aux_runtime.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_call.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_catch.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_exception.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_globals.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_personality.cc [ARM/FDPIC v6 06/24] [ARM] FDPIC: Add support for c++ exceptions 2019-09-10 09:47:49 +02:00
eh_ptr.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_term_handler.cc PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0) 2019-05-31 11:35:11 +01:00
eh_term_handler.h PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0) 2019-05-31 11:35:11 +01:00
eh_terminate.cc PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0) 2019-05-31 11:35:11 +01:00
eh_throw.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_tm.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_type.cc Update copyright years. 2019-01-01 13:31:55 +01:00
eh_unex_handler.cc Update copyright years. 2019-01-01 13:31:55 +01:00
enum_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
exception Improve API docs for <system_error> header 2019-05-04 15:35:29 +01:00
exception.h Update copyright years. 2019-01-01 13:31:55 +01:00
exception_defines.h Update copyright years. 2019-01-01 13:31:55 +01:00
exception_ptr.h Improve API docs for <system_error> header 2019-05-04 15:35:29 +01:00
function_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
fundamental_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
guard.cc Update copyright years. 2019-01-01 13:31:55 +01:00
guard_error.cc PR libstdc++/51333 Define recursive_init_error constructor non-inline 2019-07-29 15:27:19 +01:00
hash_bytes.cc PR libstdc++/89629 fix _Hash_bytes for lengths > INT_MAX 2019-03-11 13:46:05 +00:00
hash_bytes.h Update copyright years. 2019-01-01 13:31:55 +01:00
initializer_list Miscellaneous API doc improvements 2019-05-02 16:46:50 +01:00
nested_exception.cc Update copyright years. 2019-01-01 13:31:55 +01:00
nested_exception.h Improve API docs for <system_error> header 2019-05-04 15:35:29 +01:00
new Improve API docs for <memory> and <new> 2019-05-10 22:41:11 +01:00
new_handler.cc Update copyright years. 2019-01-01 13:31:55 +01:00
new_op.cc Update copyright years. 2019-01-01 13:31:55 +01:00
new_opa.cc Remove obsolete Solaris 10 support 2019-05-14 17:17:23 +00:00
new_opant.cc Update copyright years. 2019-01-01 13:31:55 +01:00
new_opnt.cc Update copyright years. 2019-01-01 13:31:55 +01:00
new_opv.cc Update copyright years. 2019-01-01 13:31:55 +01:00
new_opva.cc Update copyright years. 2019-01-01 13:31:55 +01:00
new_opvant.cc Update copyright years. 2019-01-01 13:31:55 +01:00
new_opvnt.cc Update copyright years. 2019-01-01 13:31:55 +01:00
pbase_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
pmem_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
pointer_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
pure.cc Update copyright years. 2019-01-01 13:31:55 +01:00
si_class_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
tinfo.cc Update copyright years. 2019-01-01 13:31:55 +01:00
tinfo.h Update copyright years. 2019-01-01 13:31:55 +01:00
tinfo2.cc Update copyright years. 2019-01-01 13:31:55 +01:00
typeinfo Update copyright years. 2019-01-01 13:31:55 +01:00
unwind-cxx.h Update copyright years. 2019-01-01 13:31:55 +01:00
vec.cc Update copyright years. 2019-01-01 13:31:55 +01:00
vmi_class_type_info.cc Update copyright years. 2019-01-01 13:31:55 +01:00
vterminate.cc Update copyright years. 2019-01-01 13:31:55 +01:00
vtv_stubs.cc Update copyright years. 2019-01-01 13:31:55 +01:00