Re: [PATCH 2/2] x86 : relocate uninitialized variable in init DATAsection into init BSS section

From: H. Peter Anvin
Date: Thu Feb 21 2008 - 13:36:20 EST


Ingo Molnar wrote:

well, that's bad. We'd silently ignore the " = 1" and boot up with that value at 0, right? At minimum we need some really prominent build-time _errors_ (i.e. aborted builds) if this ever happens. But ideally, shouldnt this whole thing be done at link time? Couldnt the linker sort the variables that are zero initialized into the right section, and move this constant maintenance pressure off the programmer's shoulder?


Not the linker (unless each variable is put in its own section)... the compiler could (should!) do it... unfortunately gcc failed to provide a way to specify rodata, data and bss sections for a single data item (on the assumption that if you specified a section, you already knew were it should be going.)

What we really need is a new gcc extension:

__attribute__((sections("data", "rodata", "bss")))

... where gcc stuffs it into the appropriate section depending on where it belongs, just as it does with undecorated data items.

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/