use prototype for function pointer in static link libc init barrier
authorRich Felker <dalias@aerifal.cx>
Thu, 18 Oct 2018 15:44:49 +0000 (11:44 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 18 Oct 2018 15:44:49 +0000 (11:44 -0400)
this is not needed for correctness, but doesn't hurt, and in some
cases the compiler may pessimize the call assuming the callee might be
variadic when it lacks a prototype.

src/env/__libc_start_main.c

index f9aa019db30a3ddc64bb1a15ab8e5d29c1070d0e..b4965d7fdcfac47f09712adb3dfcd60eac3eb565 100644 (file)
@@ -79,7 +79,7 @@ int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv)
 
        /* Barrier against hoisting application code or anything using ssp
         * or thread pointer prior to its initialization above. */
-       int (*stage2)();
+       int (*stage2)(int (*)(int,char **,char **), int, char **);
        __asm__ ( "" : "=r"(stage2) : "0"(libc_start_main_stage2) : "memory" );
        return stage2(main, argc, argv);
 }