diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | csu/libc-start.c | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/aarch64/libc-start.c | 23 | ||||
-rw-r--r-- | sysdeps/x86/libc-start.c | 23 |
4 files changed, 27 insertions, 36 deletions
diff --git a/ChangeLog b/ChangeLog index 876244a00a..859f582c3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2017-05-31 Siddhesh Poyarekar <siddhesh@sourceware.org> + + * csu/libc-start.c [!ARCH_INIT_CPU_FEATURES]: Define + ARCH_INIT_CPU_FEATURES. + (LIBC_START_MAIN): Call it. + * sysdeps/unix/sysv/linux/aarch64/libc-start.c + (__libc_start_main): Remove. + (ARCH_INIT_CPU_FEATURES): New macro. + * sysdeps/x86/libc-start.c (__libc_start_main): Remove. + (ARCH_INIT_CPU_FEATURES): New macro. + 2017-05-30 Dennis Wölfing <denniswoelfing@gmx.de> Rüdiger Sonderfeld <ruediger@c-plusplus.de> diff --git a/csu/libc-start.c b/csu/libc-start.c index 9a56dcbbae..c2dd1593eb 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -104,6 +104,10 @@ apply_irel (void) # define MAIN_AUXVEC_PARAM #endif +#ifndef ARCH_INIT_CPU_FEATURES +# define ARCH_INIT_CPU_FEATURES() +#endif + STATIC int LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), int argc, @@ -182,6 +186,8 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), __tunables_init (__environ); + ARCH_INIT_CPU_FEATURES (); + /* Perform IREL{,A} relocations. */ apply_irel (); diff --git a/sysdeps/unix/sysv/linux/aarch64/libc-start.c b/sysdeps/unix/sysv/linux/aarch64/libc-start.c index a5babd49ea..089a728a87 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc-start.c +++ b/sysdeps/unix/sysv/linux/aarch64/libc-start.c @@ -16,26 +16,13 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#ifdef SHARED -# include <csu/libc-start.c> -# else -/* The main work is done in the generic function. */ -# define LIBC_START_DISABLE_INLINE -# define LIBC_START_MAIN generic_start_main -# include <csu/libc-start.c> +#ifndef SHARED +# include <ldsodefs.h> # include <cpu-features.c> extern struct cpu_features _dl_aarch64_cpu_features; -int -__libc_start_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), - int argc, char **argv, - __typeof (main) init, - void (*fini) (void), - void (*rtld_fini) (void), void *stack_end) -{ - init_cpu_features (&_dl_aarch64_cpu_features); - return generic_start_main (main, argc, argv, init, fini, rtld_fini, - stack_end); -} +# define ARCH_INIT_CPU_FEATURES() init_cpu_features (&_dl_aarch64_cpu_features) + #endif +#include <csu/libc-start.c> diff --git a/sysdeps/x86/libc-start.c b/sysdeps/x86/libc-start.c index 9a56adc3ec..e11b490f5c 100644 --- a/sysdeps/x86/libc-start.c +++ b/sysdeps/x86/libc-start.c @@ -15,27 +15,14 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#ifdef SHARED -# include <csu/libc-start.c> -# else -/* The main work is done in the generic function. */ -# define LIBC_START_DISABLE_INLINE -# define LIBC_START_MAIN generic_start_main -# include <csu/libc-start.c> +#ifndef SHARED +#include <ldsodefs.h> # include <cpu-features.h> # include <cpu-features.c> extern struct cpu_features _dl_x86_cpu_features; -int -__libc_start_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), - int argc, char **argv, - __typeof (main) init, - void (*fini) (void), - void (*rtld_fini) (void), void *stack_end) -{ - init_cpu_features (&_dl_x86_cpu_features); - return generic_start_main (main, argc, argv, init, fini, rtld_fini, - stack_end); -} +#define ARCH_INIT_CPU_FEATURES() init_cpu_features (&_dl_x86_cpu_features) + #endif +# include <csu/libc-start.c> |