diff options
Diffstat (limited to 'dlfcn/dlfcn.c')
-rw-r--r-- | dlfcn/dlfcn.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/dlfcn/dlfcn.c b/dlfcn/dlfcn.c index 9c0a84afb8..8047150763 100644 --- a/dlfcn/dlfcn.c +++ b/dlfcn/dlfcn.c @@ -23,11 +23,17 @@ int __dlfcn_argc attribute_hidden; char **__dlfcn_argv attribute_hidden; - -void -__attribute__ ((constructor)) +#ifdef HAVE_INITFINI_ARRAY +static void init (int argc, char *argv[]) { __dlfcn_argc = argc; __dlfcn_argv = argv; } + +static void (*const init_array []) (int argc, char *argv[]) + __attribute__ ((section (".init_array"), aligned (sizeof (void *)))) + __attribute_used__ = { init }; +#else +# error "Need linker with .init_array support." +#endif |