
Hello,
Am 30.10.2010 16:36, schrieb Wolfgang Denk:
Dear Albert ARIBAUD,
In message4CCC1F6C.7040603@free.fr you wrote:
Wait a minute. No parts of the code assume BSS is *cleared*, or at least no pat of the should *should ever* assume that. BSS is not "zeroed data", it is "uninitialized data".
BSS _is_ zeroed data. This is a very basic assumption of the C runtime.
BSS is not *required* to be zero. It is zeroed out as a courtesy, but>
No, you are wrong here.
Zeroing of the BSS is a mandatory requirement.
Beeing curious, I've looked up that part in the C99 standard. Just to refresh our memories:
------------------------------------- 6.7.8
10
If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate. If an object that has static storage duration is not initialized explicitly, then: — if it has pointer type, it is initialized to a null pointer; — if it has arithmetic type, it is initialized to (positive or unsigned) zero; — if it is an aggregate, every member is initialized (recursively) according to these rules; — if it is a union, the first named member is initialized (recursively) according to these rules. -------------------------------------
Regards,
Alexander