mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-24 03:39:45 +00:00
trap signals in tests that can crash
Originally committed as revision 8727 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
24ba15b16e
commit
7dfef2451d
42
configure
vendored
42
configure
vendored
@ -485,6 +485,32 @@ check_exec(){
|
||||
check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
|
||||
}
|
||||
|
||||
check_exec_crash(){
|
||||
code=`cat`
|
||||
|
||||
# exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
|
||||
# are safe but may not be available everywhere. Thus we use
|
||||
# raise(SIGTERM) instead. The check is run in a subshell so we
|
||||
# can redirect the "Terminated" message from the shell. SIGBUS
|
||||
# is not defined by standard C so it is used conditionally.
|
||||
|
||||
(check_exec "$@") >>$logfile 2>&1 <<EOF
|
||||
#include <signal.h>
|
||||
static void sighandler(int sig){
|
||||
raise(SIGTERM);
|
||||
}
|
||||
int main(){
|
||||
signal(SIGILL, sighandler);
|
||||
signal(SIGFPE, sighandler);
|
||||
signal(SIGSEGV, sighandler);
|
||||
#ifdef SIGBUS
|
||||
signal(SIGBUS, sighandler);
|
||||
#endif
|
||||
{ $code }
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
require(){
|
||||
name="$1"
|
||||
header="$2"
|
||||
@ -1191,10 +1217,6 @@ ar="${cross_prefix}${ar}"
|
||||
ranlib="${cross_prefix}${ranlib}"
|
||||
strip="${cross_prefix}${strip}"
|
||||
|
||||
# Disable core dumps so that intentional execution of broken apps doesn't
|
||||
# pollute the current directory.
|
||||
ulimit -c 0 >/dev/null 2>&1
|
||||
|
||||
# we need to build at least one lib type
|
||||
if disabled_all static shared; then
|
||||
cat <<EOF
|
||||
@ -1397,26 +1419,16 @@ if test "$?" != 0; then
|
||||
fi
|
||||
|
||||
if test $arch = "x86_32" -o $arch = "x86_64"; then
|
||||
if test "$targetos" = mingw32 -o "$targetos" = cygwin; then
|
||||
cat <<EOF
|
||||
WARNING: The following test might cause a testapp to crash (intentionally)
|
||||
resulting in the appearance of a dialog box. Please click "Don't send" and
|
||||
ignore it.
|
||||
EOF
|
||||
fi
|
||||
|
||||
# check whether EBP is available on x86
|
||||
# As 'i' is stored on the stack, this program will crash
|
||||
# if the base pointer is used to access it because the
|
||||
# base pointer is cleared in the inline assembly code.
|
||||
(check_exec) <<EOF >>$logfile 2>&1 && enable ebp_available
|
||||
int main(){
|
||||
check_exec_crash <<EOF && enable ebp_available
|
||||
volatile int i=0;
|
||||
asm volatile (
|
||||
"xorl %%ebp, %%ebp"
|
||||
::: "%ebp");
|
||||
return i;
|
||||
}
|
||||
EOF
|
||||
|
||||
# check wether EBX is available on x86
|
||||
|
Loading…
Reference in New Issue
Block a user