This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFC: [PATCH] x86: Add -mzero-caller-saved-regs=[skip|used|all]
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Szabolcs Nagy <szabolcs dot nagy at arm dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, nd <nd at arm dot com>, Uros Bizjak <ubizjak at gmail dot com>
- Date: Thu, 27 Sep 2018 06:14:48 -0700
- Subject: Re: RFC: [PATCH] x86: Add -mzero-caller-saved-regs=[skip|used|all]
- References: <20180926181029.GA20898@intel.com> <b6629ac7-15be-d871-aa31-9a547f61edd9@arm.com>
On Thu, Sep 27, 2018 at 6:08 AM, Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
> On 26/09/18 19:10, H.J. Lu wrote:
>>
>> Add -mzero-caller-saved-regs=[skip|used|all] command-line option and
>> zero_caller_saved_regs("skip|used|all") function attribue:
>>
>> 1. -mzero-caller-saved-regs=skip and zero_caller_saved_regs("skip")
>>
>> Don't zero caller-saved integer registers upon function return.
>>
>> 2. -mzero-caller-saved-regs=used and zero_caller_saved_regs("used")
>>
>> Zero used caller-saved integer registers upon function return.
>>
>> 3. -mzero-caller-saved-regs=all and zero_caller_saved_regs("all")
>>
>> Zero all caller-saved integer registers upon function return.
>>
>> Tested on i686 and x86-64 with bootstrapping GCC trunk and
>> -mzero-caller-saved-regs=used as well as -mzero-caller-saved-regs=all
>> enabled by default.
>>
>
> from this description and the documentation it's
> not clear to me what this tries to achieve.
>
> is it trying to prevent information leak?
> or some pcs hack the caller may rely on?
>
> if it's for information leak then i'd expect such
> attribute to be used on crypto code.. however i'd
> expect crypto code to use simd registers as well,
> so integer only cleaning needs explanation.
The target usage is in Linux kernel.
--
H.J.