[PATCH RFC] explicit_bzero, again
Zack Weinberg
zackw@panix.com
Wed Aug 26 21:13:00 GMT 2015
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
More information about the Libc-alpha
mailing list