[FFmpeg-cvslog] configure: Fix check_exec_crash for ICL support
Laurent
git at videolan.org
Sat May 25 21:42:15 CEST 2013
ffmpeg | branch: master | Laurent <laurent.aml at gmail.com> | Sat May 25 06:01:29 2013 -0400| [9495cd170b5786c3518419e873d94eb5e7ada11a] | committer: Luca Barbato
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 <lu_zero at gentoo.org>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9495cd170b5786c3518419e873d94eb5e7ada11a
---
configure | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index e3cf0b9..4866894 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
}
More information about the ffmpeg-cvslog
mailing list