Message ID | 20240601080355.8136-1-remi@remlab.net |
---|---|
State | Accepted |
Commit | 8d117024fe05dcf0f45693b47118e4c26e0940af |
Headers | show |
Series | [FFmpeg-devel] checkasm: disable unaligned access emulation | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
Le lauantaina 1. kesäkuuta 2024, 11.03.55 EEST Rémi Denis-Courmont a écrit : > 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. Will push soon.
diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index d7aa2a9c09..2329e2e1bc 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -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;