On Tue, Nov 14, 2017 at 8:42 PM, R0b0t1 <r03...@gmail.com> wrote:
> On Tue, Nov 14, 2017 at 11:36 AM, Jorge Almeida <jjalme...@gmail.com> wrote:
>> On Fri, Nov 10, 2017 at 12:09 PM, Jorge Almeida <jjalme...@gmail.com> wrote:
>>
>>> http://www.daemonology.net/blog/2014-09-04-how-to-zero-a-buffer.html
>>>
>>>
>>>>> Of course, what would really solve the optimize-into-oblivion problem
>>>>> is a pragma that when invoked on a particular block of code (maybe
>>>>> only a function definition) would tell the compiler to do what the
>>>>> programmer says rather than viewing a function as a kind of black box.
>>>>>
>>>>
>>
>> It seems a solution exists with gcc:
>>
>> https://stackoverflow.com/questions/2219829/how-to-prevent-gcc-optimizing-some-statements-in-c
>>
>> The last reply:
>>
>> void __attribute__((optimize("O0"))) foo(unsigned char data) {
>>     // unmodifiable compiler code
>> }
>>
>> Any comments, anyone? Yes, it's gcc, but IMO this should be in the
>> language itself. Am I right to assume this is a poorly known feature
>> of gcc?
>> It allows, for example,  to replace sensitive data by random bytes,
>> existing system callls like memset() or getrandom() can be used as
>> they are, no reimplementation needed.
>>
>
> Very interesting. I imagine the opinion of the standards committee
> would be that the variability in code generation precludes a standard
> interface to optimization controls. This might seem unusual, but
> languages with a very controlling standard (like Java or C#) are a new
> concept.

Well, we'll have to stick to gcc (or other compilers with the same
feature). OTOH, boldness doesn't seem to be the comittee's most
salient feature.

>
> What I am wondering about is if C code which uses
> __attribute__((optimize(...))) is against Gentoo package standards and
> would have to be removed from the Portage tree.
>


You can set your optimization preferences in make.conf, and still an
ebuild will override them if deemed unsafe. What would be the
difference?

Cheers

Jorge

Reply via email to