Jeremy Fitzhardinge
2011-Aug-20 00:51 UTC
[Xen-devel] [PATCH] minios: use NULL sentinel at end of [CD]TOR list
Use the NULL pointer at the end of the [CD]TOR list rather than relying on a count. I hit a linker bug where the [CD]TOR list count was being miscomputed, but its just simpler to use a sentinel. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org> diff -r b81c0417b901 extras/mini-os/arch/ia64/minios-ia64.lds --- a/extras/mini-os/arch/ia64/minios-ia64.lds Wed Aug 17 16:08:41 2011 -0700 +++ b/extras/mini-os/arch/ia64/minios-ia64.lds Wed Aug 17 17:04:10 2011 -0700 @@ -55,7 +55,6 @@ .ctors : AT(ADDR(.ctors) - (((5<<(61))+0x100000000) - (1 << 20))) { __CTOR_LIST__ = .; - QUAD((__CTOR_END__ - __CTOR_LIST__) / 8 - 2) *(.ctors) CONSTRUCTORS QUAD(0) @@ -65,7 +64,6 @@ .dtors : AT(ADDR(.dtors) - (((5<<(61))+0x100000000) - (1 << 20))) { __DTOR_LIST__ = .; - QUAD((__DTOR_END__ - __DTOR_LIST__) / 8 - 2) *(.dtors) QUAD(0) __DTOR_END__ = .; diff -r b81c0417b901 extras/mini-os/arch/x86/minios-x86_32.lds --- a/extras/mini-os/arch/x86/minios-x86_32.lds Wed Aug 17 16:08:41 2011 -0700 +++ b/extras/mini-os/arch/x86/minios-x86_32.lds Wed Aug 17 17:04:10 2011 -0700 @@ -30,7 +30,6 @@ .ctors : { __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) *(.ctors) CONSTRUCTORS LONG(0) @@ -39,7 +38,6 @@ .dtors : { __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) *(.dtors) LONG(0) __DTOR_END__ = .; diff -r b81c0417b901 extras/mini-os/arch/x86/minios-x86_64.lds --- a/extras/mini-os/arch/x86/minios-x86_64.lds Wed Aug 17 16:08:41 2011 -0700 +++ b/extras/mini-os/arch/x86/minios-x86_64.lds Wed Aug 17 17:04:10 2011 -0700 @@ -30,7 +30,6 @@ .ctors : { __CTOR_LIST__ = .; - QUAD((__CTOR_END__ - __CTOR_LIST__) / 8 - 2) *(.ctors) CONSTRUCTORS QUAD(0) @@ -39,7 +38,6 @@ .dtors : { __DTOR_LIST__ = .; - QUAD((__DTOR_END__ - __DTOR_LIST__) / 8 - 2) *(.dtors) QUAD(0) __DTOR_END__ = .; diff -r b81c0417b901 extras/mini-os/main.c --- a/extras/mini-os/main.c Wed Aug 17 16:08:41 2011 -0700 +++ b/extras/mini-os/main.c Wed Aug 17 17:04:10 2011 -0700 @@ -153,7 +153,7 @@ __libc_init_array(); environ = envp; - for (i = 1; i <= __CTOR_LIST__[0]; i++) + for (i = 0; __CTOR_LIST__[i] != 0; i++) ((void((*)(void)))__CTOR_LIST__[i]) (); tzset(); @@ -164,7 +164,7 @@ { int i; - for (i = 1; i <= __DTOR_LIST__[0]; i++) + for (i = 0; __DTOR_LIST__[i] != 0; i++) ((void((*)(void)))__DTOR_LIST__[i]) (); close_all_files(); __libc_fini_array(); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel