From fe76d597a9b85f8af55235dd41722abf8fe63ca1 Mon Sep 17 00:00:00 2001 From: Nigel Croxon Date: Tue, 16 May 2023 08:34:07 -0400 Subject: Make ELF constructors/destructors work Since commit [4f8b339facb471192e021fffd5db545a0fbddbc3] Simple EFI tools like for example t.c from the apps directory crash. The reason seems to be a wrong null-pointer check in the ctors()/dtors() functions in lib/entry.c. sourceforge.net/u/davemueller Signed-off-by: Nigel Croxon --- lib/entry.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/entry.c b/lib/entry.c index d852608..6338112 100644 --- a/lib/entry.c +++ b/lib/entry.c @@ -24,13 +24,13 @@ static void ctors(void) { for (funcp *location = (void *)&_init_array; location < (funcp *)&_init_array_end; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } for (funcp *location = (void *)&__CTOR_LIST__; location < (funcp *)&__CTOR_END__; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } } @@ -39,13 +39,13 @@ static void dtors(void) { for (funcp *location = (void *)&__DTOR_LIST__; location < (funcp *)&__DTOR_END__; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } for (funcp *location = (void *)&_fini_array; location < (funcp *)&_fini_array_end; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } } -- cgit v1.2.1