diff options
| -rw-r--r-- | src/env/__libc_start_main.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c index b4965d7f..7c95f822 100644 --- a/src/env/__libc_start_main.c +++ b/src/env/__libc_start_main.c @@ -66,7 +66,8 @@ static void libc_start_init(void)  weak_alias(libc_start_init, __libc_start_init); -static int libc_start_main_stage2(int (*)(int,char **,char **), int, char **); +typedef int lsm2_fn(int (*)(int,char **,char **), int, char **); +static lsm2_fn libc_start_main_stage2;  int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv)  { @@ -79,8 +80,8 @@ 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 (*)(int,char **,char **), int, char **); -	__asm__ ( "" : "=r"(stage2) : "0"(libc_start_main_stage2) : "memory" ); +	lsm2_fn *stage2 = libc_start_main_stage2; +	__asm__ ( "" : "+r"(stage2) : : "memory" );  	return stage2(main, argc, argv);  } | 
