ada: Expose expected_throw attribute
commit79cc2a75680ebcf8e9e200ddfbd61bd3ef08798a
authorAlexandre Oliva <oliva@adacore.com>
Wed, 28 Jun 2023 04:36:52 +0000 (28 01:36 -0300)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 18 Jul 2023 13:11:46 +0000 (18 15:11 +0200)
treecef1f106b3fbefb1f48ff10e9f070f0a5bf5edf2
parent22b13ca246cbef5c7ad5b9cd5eef5cb238494c5a
ada: Expose expected_throw attribute

Mark exception-raising subprograms with expected_throw attribute.

Document the use of the attribute in Control Flow Redundancy.

Enable marking subprograms as expected_throw with Machine_Attribute
pragmas.

gcc/ada/

* libgnat/a-except.ads (Raise_Exception): Mark expected_throw.
(Reraise_Occurrence): Likewise.
(Raise_Exception_Always): Likewise.
(Raise_From_Controlled_Operation): Likewise.
(Reraise_Occurrence_Always): Likewise.
(Reraise_Occurrence_No_Defer): Likewise.
* libgnat/a-except.adb
(Exception_Propagation.Propagate_Exception): Likewise.
(Complete_And_Propagate_Occurrence): Likewise.
(Raise_Exception_No_Defer): Likewise.
(Raise_From_Signal_Handler): Likewise.
(Raise_With_Msg): Likewise.
(Raise_With_Location_And_Msg): Likewise.
(Raise_Constraint_Error): Likewise.
(Raise_Constraint_Error_Msg): Likewise.
(Raise_Program_Error): Likewise.
(Raise_Program_Error_Msg): Likewise.
(Raise_Storage_Error): Likewise.
(Raise_Storage_Error_Msg): Likewise.
(Reraise, Rcheck_*): Likewise.
* doc/gnat_rm/security_hardening_features.rst (Control Flow
Hardening): Note the influence of expected_throw.
* gnat_rm.texi: Regenerate.
* gnat_ugn.texi: Regenerate.
* gcc-interface/utils.cc (handle_expected_throw_attribute): New.
(gnat_internal_attribute_table): Add expected_throw.
gcc/ada/doc/gnat_rm/security_hardening_features.rst
gcc/ada/gcc-interface/utils.cc
gcc/ada/gnat_rm.texi
gcc/ada/gnat_ugn.texi
gcc/ada/libgnat/a-except.adb
gcc/ada/libgnat/a-except.ads