Messages in this thread |  | | Date | Mon, 27 Nov 2000 00:39:55 -0800 | From | "David S. Miller" <> | Subject | Re: [PATCH] removal of "static foo = 0" |
| |
Date: Mon, 27 Nov 2000 09:41:39 +0100 From: Werner Almesberger <Werner.Almesberger@epfl.ch>
egcs-2.91.66 indeed doesn't seem to make this optimization on i386. (Maybe the pointer increment or pointer offset solution would actually be slower - didn't check.) But I'm not sure if this is also true for other versions/architectures, or other code constructs.
There is no guarentee that contiguous data or bss section members will appear contiguous and in the same order, in the final object.
In fact, a specific optimization done on MIPS and other platforms is to place all data members under a certain size in a special ".small.data" section. So for example:
static int a; static struct foo b; static int b;
Would not place 'b' at "&a + sizeof(a) + sizeof(b)"
Also I believe linkers are allowed to arbitrarily reorder members in the data and bss sections. I could be wrong on this one though.
Later, David S. Miller davem@redhat.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |