* Mikulas Patocka: > On Fri, 19 Apr 2024, Zack Weinberg wrote: > >> On Fri, Apr 19, 2024, at 4:15 PM, Mikulas Patocka wrote: >> > On Fri, 19 Apr 2024, Zack Weinberg wrote: >> >> ... the copy >> >> of round_keys in the vector registers *won't* get erased -- the exact >> >> problem being discussed in this thread. >> > >> > On the SYSV ABI, all the vector registers are volatile, so you can erase >> > them in explicit_bzero. >> > >> > On Windows 64-bit ABI, it is more problematic, because some of the vector >> > registers must be preserved. >> >> Oh, huh. Yes, that would work. > > I've just realized that this wouldn't work - if the function > explicit_bzero is lazily resolved, the dynamic linker would spill the > vector registers to the stack prior to calling explicit_bzero. No, the dynamic linker makes a tail call to explicit_bzero. There's no register restore on the return path, all that happens before the tail call. Thanks, Florian