Implement link-time optimization safe explicit_bzero()?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux