This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH RFC] explicit_bzero, again
- From: Zack Weinberg <zackw at panix dot com>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Wed, 26 Aug 2015 17:13:07 -0400
- Subject: Re: [PATCH RFC] explicit_bzero, again
- Authentication-results: sourceware.org; auth=none
- References: <55C7E246 dot 3000006 at panix dot com> <55D0BDA7 dot 40402 at panix dot com> <55D653AF dot 8000107 at linaro dot org> <CAKCAbMhW4WrGYdaqiFBRYh8Vxt+5kmDb5fv7XiJ0ps1_4PA1jw at mail dot gmail dot com> <55DE2A73 dot 3060202 at linaro dot org>
On Wed, Aug 26, 2015 at 5:06 PM, Adhemerval Zanella
<adhemerval.zanella@linaro.org> wrote:
> On 20-08-2015 23:49, Zack Weinberg wrote:
>> This is a much more aggressive optimization barrier than is necessary.
...
> Right, but this way you are proposing limits this API to only C programs
> and only for GNU compilers. Using kernel way to use the whole-memory
> clobber avoids the '__memblk' (and thus compiles for C++ as well) and also
> guarantees it works on other C compilers (clang).
The *optimization* (replacing `explicit_bzero` with `memset` + vacuous
use) is limited to C programs and GCC. The *API* works just fine
regardless of compiler. I believe this is sufficient as a starting
point. As and when appropriate ways to express a vacuous use become
available in other compilers, we can add them.
>>> Also I see that OpenBSD added a patch to try disable this option for LTO [1].
>>> Do you think could it be worth to add as well in your version?
>>
>> I could be wrong about this, but I am fairly sure that neither GCC nor
>> LLVM is capable of LTO-optimizing through a call to a shared library,
>> therefore this additional complication should not be necessary.
>
> I agree, I was only curious if you know the background about this change.
It might be necessary for a C library intended to be linked
statically, and compiled with -flto or equivalent. That's the only
thing I can think of. If that means glibc should have something like
this in the !SHARED case I'm willing to add it.
zw