[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: explicit_bzero and -std=c99
From: |
Bruno Haible |
Subject: |
Re: explicit_bzero and -std=c99 |
Date: |
Sun, 27 Nov 2022 19:24:25 +0100 |
Paul Eggert wrote:
> > 2) Is there no other way to implement explicit_bzero without 'asm'?
> > There is a another fallback code using volatile pointers, but I'm not
> > sure it really has the same semantics.
>
> That fallback should work, though it's a bit slower.
I'm afraid that the fallback code
/* Invoke memset through a volatile function pointer. This defeats compiler
optimizations. */
void * (* const volatile volatile_memset) (void *, int, size_t) = memset;
(void) volatile_memset (s, '\0', len);
will stop working, as compilers get "smarter".
The other code based on asm is not so likely to break, since it is documented
that "Using the "memory" clobber effectively forms a read/write memory barrier
for the compiler." [1]
Bruno
[1] https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Extended-Asm.html