mirror of
https://github.com/librempeg/librempeg
synced 2024-11-22 00:51:37 +00:00
checkasm: disable unaligned access emulation
The OS may silently fix (emulate) unaligned hardware access exceptions. This is extremely slow and code should be fixed not to rely on unaligned access on affected hardware. Accordingly this requests that the OS disable emulation and instead throw Bus error, which will be caught by checkasm's signal handler. This has no effects if the hardware supports unaligned access in hardware, since no exceptions are generated. prctl() will fail safe in that case. Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
71f91d9dd4
commit
d2583e57f1
@ -41,6 +41,9 @@
|
||||
#if HAVE_IO_H
|
||||
#include <io.h>
|
||||
#endif
|
||||
#if HAVE_PRCTL
|
||||
#include <sys/prctl.h>
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) && !defined(SIGBUS)
|
||||
/* non-standard, use the same value as mingw-w64 */
|
||||
@ -847,6 +850,9 @@ int main(int argc, char *argv[])
|
||||
sigaction(SIGILL, &signal_handler_act, NULL);
|
||||
sigaction(SIGSEGV, &signal_handler_act, NULL);
|
||||
#endif
|
||||
#if HAVE_PRCTL && defined(PR_SET_UNALIGN)
|
||||
prctl(PR_SET_UNALIGN, PR_UNALIGN_SIGBUS);
|
||||
#endif
|
||||
#if ARCH_ARM && HAVE_ARMV5TE_EXTERNAL
|
||||
if (have_vfp(av_get_cpu_flags()) || have_neon(av_get_cpu_flags()))
|
||||
checkasm_checked_call = checkasm_checked_call_vfp;
|
||||
|
Loading…
Reference in New Issue
Block a user