This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH RFC] explicit_bzero, again



On 26-08-2015 18:13, Zack Weinberg wrote:
> 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.

Right, but do you know what kind of optimization the 'memory' cobbler avoids
and your suggestion allows?  I do understand that the 'memory' cobbler is
indeed a more restrictive memory barrier, but for mostly targets avoids
a function calls were is possible is a much more gain that some memory
operations begin handle with restrictive scheduling.

> 
>>>> 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.

I am not sure either, I will let it for future iterations (if someone found
a scenarios where it might be an issue).

> 
> zw
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]