(not my own words)
In C, statically-allocated objects without an explicit initializer are initialized to zero (for arithmetic types) or a null pointer (for pointer types). Implementations of C typically represent zero values and null pointer values using a bit pattern consisting solely of zero-valued bits (though this is not required by the C standard). Hence, the bss section typically includes all uninitialized variables declared at file scope (i.e., outside of any function) as well as uninitialized local variables declared with the static keyword. An implementation may also assign statically-allocated variables initialized with a value consisting solely of zero-valued bits to the bss section.
http://en.wikipedia.org/wiki/.bss
z is uninitialized, so it will bet put in BSS. But didn't you say that in your question?
y and m would also likely go there. Not sure if you were intending to ask about them, though.
X would then go to the data segment.
http://en.wikipedia.org/wiki/Data_segment