diff options
Diffstat (limited to 'elf')
-rw-r--r-- | elf/dl-fini.c | 5 | ||||
-rw-r--r-- | elf/dl-init.c | 8 |
2 files changed, 5 insertions, 8 deletions
diff --git a/elf/dl-fini.c b/elf/dl-fini.c index 226a6f077a..231db3d66d 100644 --- a/elf/dl-fini.c +++ b/elf/dl-fini.c @@ -19,6 +19,7 @@ #include <assert.h> #include <string.h> #include <ldsodefs.h> +#include <elf-initfini.h> /* Type of the constructor functions. */ @@ -117,7 +118,7 @@ _dl_fini (void) /* Is there a destructor function? */ if (l->l_info[DT_FINI_ARRAY] != NULL - || l->l_info[DT_FINI] != NULL) + || (ELF_INITFINI && l->l_info[DT_FINI] != NULL)) { /* When debugging print a message first. */ if (__builtin_expect (GLRO(dl_debug_mask) @@ -139,7 +140,7 @@ _dl_fini (void) } /* Next try the old-style destructor. */ - if (l->l_info[DT_FINI] != NULL) + if (ELF_INITFINI && l->l_info[DT_FINI] != NULL) DL_CALL_DT_FINI (l, l->l_addr + l->l_info[DT_FINI]->d_un.d_ptr); } diff --git a/elf/dl-init.c b/elf/dl-init.c index 55d528c7a5..1234611a1c 100644 --- a/elf/dl-init.c +++ b/elf/dl-init.c @@ -18,6 +18,7 @@ #include <stddef.h> #include <ldsodefs.h> +#include <elf-initfini.h> /* Type of the initializer. */ @@ -40,11 +41,6 @@ call_init (struct link_map *l, int argc, char **argv, char **env) && l->l_type == lt_executable) return; - /* Are there any constructors? */ - if (l->l_info[DT_INIT] == NULL - && __builtin_expect (l->l_info[DT_INIT_ARRAY] == NULL, 1)) - return; - /* Print a debug message if wanted. */ if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS)) _dl_debug_printf ("\ncalling init: %s\n\n", @@ -54,7 +50,7 @@ call_init (struct link_map *l, int argc, char **argv, char **env) - the one named by DT_INIT - the others in the DT_INIT_ARRAY. */ - if (l->l_info[DT_INIT] != NULL) + if (ELF_INITFINI && l->l_info[DT_INIT] != NULL) DL_CALL_DT_INIT(l, l->l_addr + l->l_info[DT_INIT]->d_un.d_ptr, argc, argv, env); /* Next see whether there is an array with initialization functions. */ |