[PATCH 2/2] ntdll/tests: Add tests for UMIP instructions
Alexandre Julliard
julliard at winehq.org
Wed Nov 6 15:04:53 CST 2019
Brendan Shanks <bshanks at codeweavers.com> writes:
> +static LONG CALLBACK umip_vectored_handler(EXCEPTION_POINTERS *ExceptionInfo)
> +{
> + PEXCEPTION_RECORD rec = ExceptionInfo->ExceptionRecord;
> + trace("vectored exception handler %08x addr:%p\n", rec->ExceptionCode, rec->ExceptionAddress);
> +
> + ok (!(rec->ExceptionCode == EXCEPTION_ACCESS_VIOLATION &&
> + rec->ExceptionInformation[0] == 0 &&
> + rec->ExceptionInformation[1] == UINTPTR_MAX),
> + "vectored_handler caught fault for unemulated UMIP instruction, exiting\n");
> +
> + ExitProcess(1);
> +
> + return EXCEPTION_CONTINUE_SEARCH;
> +}
> +#endif /* __x86_64__ || __i386__ */
> +
> +START_TEST(umip)
> +{
> + /* Test that sldt, str, sgdt, sidt, and smsw can be executed with
> + * all possible operand types (registers/memory of different widths).
> + *
> + * We mostly cannot test/predict the returned values, but on a UMIP-enabled
> + * system without emulation the instructions willl trigger a SIGSEGV.
> + * A non-first-chance vectored exception handler is added to catch the exception,
> + * fail the test, and exit the process if that happens.
> + */
This test should go with the others in exception.c, where you can reuse
the infrastructure to handle exceptions etc.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list