On 11/02/16 14:29, Sebastian Huber wrote:
Hello, how can I implement a link-time optimization safe explicit_bzero() that works with a fully LTO enabled statically linked program?
My understanding by reading this thread (https://sourceware.org/ml/libc-alpha/2016-01/msg00208.html) is that this is not possible at the moment because of lacking compiler support. See also https://sourceware.org/ml/libc-alpha/2015-11/msg00467.html and follow-ups.
If I were to tackle this problem, I would try first to implement a __builtin_explicit_bzero() directly in GCC such that GCC will know exactly how to handle it. This would be faster, safer and more portable than any trick you may get working now (since LTO keeps improving), and it will provide the basis for a gnu libc implementation.
Even if a builtin is not the right way, the process of proposing such a patch may point to a better way. And even if you cannot wait for your patch to be in the next GCC release, the process of developing it will teach you about how a workaround may work with current releases.
Of course, there is the question of whether explicit_bzero() or similar functions are a solution at all to any problem (https://sourceware.org/ml/libc-alpha/2016-01/msg00208.html)
Cheers, Manuel.