From 9495cd170b5786c3518419e873d94eb5e7ada11a Mon Sep 17 00:00:00 2001 From: Laurent Date: Sat, 25 May 2013 06:01:29 -0400 Subject: [PATCH] configure: Fix check_exec_crash for ICL support Change the check_exec_crash test to use a function pointer instead of simply calling the function. The EBP availability test will crash when compiled with ICL likely due to compiler optimization shenanigans. Originally the check_exec_crash code was moved out of main to fix a problem with gcc's treatment of non-leaf main on x86_32. Libav already moved the code out of main but the addition of the function pointer will prevent any inlining which fixes the remaining problem. A function pointer is used since it is compiler agnostic (as opposed to say __attribute__ ((noinline)) which would only work with gcc compatible compilers). Signed-off-by: Luca Barbato --- configure | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure b/configure index e3cf0b9f8f..4866894d75 100755 --- a/configure +++ b/configure @@ -911,6 +911,7 @@ static void sighandler(int sig){ int foo(void){ $code } +int (*func_ptr)(void) = foo; int main(void){ signal(SIGILL, sighandler); signal(SIGFPE, sighandler); @@ -918,7 +919,7 @@ int main(void){ #ifdef SIGBUS signal(SIGBUS, sighandler); #endif - foo(); + return func_ptr(); } EOF }