On Tue, 2018-10-02 at 15:33 -0700, Nick Desaulniers wrote: +AD4 On Tue, Oct 2, 2018 at 10:57 AM Bart Van Assche +ADw-bvanassche+AEA-acm.org+AD4 wrote: +AD4 +AD4 Explicitly initialized global and static variables end up in the .data +AD4 +AD4 section and need space in that section. +AD4 +AD4 Unless the initial value is zero. +AD4 https://godbolt.org/z/curRoO +AD4 +AD4 So you don't wind up with an increase in binary size simply by having +AD4 global variables initialized to zero, right? Instead the kernel knows +AD4 to create a zero'd out mapping for bss. You don't need a run of zeros +AD4 in the binary. +AD4 +AD4 So I disagree when you said earlier +ACI-zero initializers should be left +AD4 out to minimize the size of object files.+ACI I assert they don't affect +AD4 the size of the binary. +AD4 +AD4 If you had many global variables all initialized to zero, why would +AD4 you encode that many zeros in a binary, when you can just set a size +AD4 on the bss section and have the kernel create the appropriate sized +AD4 and zero'd mapping? +AD4 +AD4 +AD4 That is not the case if the +AD4 +AD4 initializer is left out and these variables end up in the .bss section. +AD4 +AD4 From my above link, gcc will put globals without initializers into +ACI-common.+ACI No matter what particular compiler versions do with explicit initialization to zero, the preferred kernel coding style is to leave out such explicit initialization. Bart.