]> git.ipfire.org Git - thirdparty/gcc.git/commit
ada: hardcfr docs: add optional checkpoints
authorAlexandre Oliva <oliva@adacore.com>
Thu, 6 Oct 2022 05:23:48 +0000 (02:23 -0300)
committerMarc Poulhiès <poulhies@adacore.com>
Mon, 14 Nov 2022 13:46:51 +0000 (14:46 +0100)
commitf3597ba6c5ea9c0eb2c3dac7271f8a8bf9fbb220
treee173356435df8c2c9e2846dd9d694d1c0f78a675
parent90b9052e0b5df49d6c298c4706978135d2af2a86
ada: hardcfr docs: add optional checkpoints

Previously, control flow redundancy only checked the visited bitmap
against the control flow graph at return points and before mandatory
tail calls, missing various other possibilities of exiting a
subprogram, such as by raising or propagating exceptions, and calling
noreturn functions.  The checks inserted before returns also prevented
potential tail-call optimizations.

This incremental change introduces options to control checking at each
of these previously-missed checkpoints.  Unless disabled, a cleanup is
introduced to check when an exceptions escapes a subprogram.  To avoid
disrupting sibcall optimizations, when they are enabled, checks are
introduced before calls whose results are immediately returned,
whether or not they are ultimately optimized.  If enabled, checks are
introduced before noreturn calls and exception raises, or only before
nothrow noreturn calls.

Add examples of code transformations to the GNAT RM.

gcc/ada/

* doc/gnat_rm/security_hardening_features.rst: Document optional
hardcfr checkpoints.
* gnat_rm.texi: Regenerate.
* gnat_ugn.texi: Regenerate.
gcc/ada/doc/gnat_rm/security_hardening_features.rst
gcc/ada/gnat_rm.texi
gcc/ada/gnat_ugn.texi