From: Alexandre Oliva Date: Wed, 28 Jun 2023 04:36:53 +0000 (-0300) Subject: ada: Add leafy mode for zero-call-used-regs X-Git-Tag: basepoints/gcc-15~7731 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=92eeb32df4f134e96265631511b6b26609aa9c12;p=gcc.git ada: Add leafy mode for zero-call-used-regs Document leafy mode. gcc/ada/ * doc/gnat_rm/security_hardening_features.rst (Register Scrubbing): Document leafy mode. * gnat_rm.texi: Regenerate. --- diff --git a/gcc/ada/doc/gnat_rm/security_hardening_features.rst b/gcc/ada/doc/gnat_rm/security_hardening_features.rst index ad165cd68493..14328598c33f 100644 --- a/gcc/ada/doc/gnat_rm/security_hardening_features.rst +++ b/gcc/ada/doc/gnat_rm/security_hardening_features.rst @@ -34,6 +34,12 @@ subprograms. pragma Machine_Attribute (Bar, "zero_call_used_regs", "all"); -- Before returning, Bar scrubs all call-clobbered registers. + function Baz return Integer; + pragma Machine_Attribute (Bar, "zero_call_used_regs", "leafy"); + -- Before returning, Bar scrubs call-clobbered registers, either + -- those it uses itself, if it can be identified as a leaf + -- function, or all of them otherwise. + For usage and more details on the command-line option, on the ``zero_call_used_regs`` attribute, and on their use with other diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index b28e6ebfffa1..817ba0b91088 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -19,7 +19,7 @@ @copying @quotation -GNAT Reference Manual , Jul 04, 2023 +GNAT Reference Manual , Jul 10, 2023 AdaCore @@ -29191,6 +29191,12 @@ pragma Machine_Attribute (Foo, "zero_call_used_regs", "used"); function Bar return Integer; pragma Machine_Attribute (Bar, "zero_call_used_regs", "all"); -- Before returning, Bar scrubs all call-clobbered registers. + +function Baz return Integer; +pragma Machine_Attribute (Bar, "zero_call_used_regs", "leafy"); +-- Before returning, Bar scrubs call-clobbered registers, either +-- those it uses itself, if it can be identified as a leaf +-- function, or all of them otherwise. @end example For usage and more details on the command-line option, on the