Hello, how can I implement a link-time optimization safe explicit_bzero() that works with a fully LTO enabled statically linked program? I guess this trick will not work: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/explicit_bzero.c?rev=1.4&content-type=text/x-cvsweb-markup /* $OpenBSD: explicit_bzero.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */ /* * Public domain. * Written by Matthew Dempsky. */ #include <string.h> __attribute__((weak)) void __explicit_bzero_hook(void *buf, size_t len) { } void explicit_bzero(void *buf, size_t len) { memset(buf, 0, len); __explicit_bzero_hook(buf, len); } DEF_WEAK(explicit_bzero); Do I really need something like this: http://www.openwall.com/lists/musl/2014/06/11/5 __asm__ volatile ("" : : "r"(buf) : "memory"); Is the "r" constraint available on all architectures? I could use a memset_s(). Will it be supported in all future GCC versions? The future state of the Annex K is not clear: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1969.htm -- Sebastian Huber, embedded brains GmbH Address : Dornierstr. 4, D-82178 Puchheim, Germany Phone : +49 89 189 47 41-16 Fax : +49 89 189 47 41-09 E-Mail : sebastian.huber at embedded-brains.de PGP : Public key available on request. Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.