Fix the C library runtime initialization order.
This allows libc.so to run the C runtime initializer as soon as the dynamic linker loads the shared library, i.e. before any other initializers (e.g. static C++ constructors in other shared libraries the executable depends on). This also removes the bug where the initializers from the executable itself were run twice: once by the dynamic linker, and another time by __libc_init as defined by libc_init_dynamic.c
This commit is contained in:
@@ -38,10 +38,6 @@ typedef struct
|
||||
void (**ctors_array)(void);
|
||||
} structors_array_t;
|
||||
|
||||
extern __noreturn void __libc_init_common(uintptr_t *elfdata,
|
||||
void (*onexit)(void),
|
||||
int (*slingshot)(int, char**, char**),
|
||||
structors_array_t const * const structors,
|
||||
void (*pre_ctor_hook)());
|
||||
extern void __libc_init_common(uintptr_t *elfdata);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user