https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87210
Bug ID: 87210 Summary: [RFE] introduce build time options to zero initialize automatic stack variables Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: pjp at fedoraproject dot org Target Milestone: --- Hello, Please see: -> http://www.openwall.com/lists/kernel-hardening/2018/02/27/33 -> http://www.openwall.com/lists/kernel-hardening/2018/02/27/41 Some time back, a proposal to zero(0) initialize various automatic stack variables(inc arrays/structs/etc.) inside kernel was proposed based on an experimental glibc patch, with an intention to remove kernel information leakage issues. As from the reply, it would be nice to have four options/features available from the compiler, from least to most performance impact: - initialize padding to zero when static initializers are used (this would make foo = { .field = something }; identical to memset(&foo, 0, sizeof(foo)); foo.field = something for all structures, but now, any structures with padding _must_ use the latter to be safe, which is highly error-prone). - initialize all uninitialized variables that contain a structure marked with a special attribute (e.g. __attribute__((force_initialize)) ). - initialize all uninitialized variables that are passed by reference (see GCC_PLUGIN_STRUCTLEAK_BYREF_ALL). - initialize all uninitialized variables (-finit-local-vars seems to do this) The advent of h/w vulnerabilities like Spectre and Meltdown and more recently L1TF has not only opened a new research area but has also reiterated the importance of initializing memory bytes with known values. Also see: -> https://googleprojectzero.blogspot.com/2018/06/detecting-kernel-memory-disclosure.html Would it be possible to introduce new gcc(1) command-line options to initialize automatic stack variables(inc arrays/structs/etc.) of a program? Thank you.