Merge pull request #10678 from Dentomologist/skip_pagefault_test_if_no_exception_handler

UnitTests: Skip PageFaultTest if exception handlers aren't supported
This commit is contained in:
Pokechu22 2022-06-02 16:21:21 -07:00 committed by GitHub
commit 0fc1fb023f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 0 deletions

View File

@ -113,6 +113,11 @@ void UninstallExceptionHandler()
s_veh_handle = nullptr;
}
bool IsExceptionHandlerSupported()
{
return true;
}
#elif defined(__APPLE__) && !defined(USE_SIGACTION_ON_APPLE)
static void CheckKR(const char* name, kern_return_t kr)
@ -245,6 +250,11 @@ void UninstallExceptionHandler()
{
}
bool IsExceptionHandlerSupported()
{
return true;
}
#elif defined(_POSIX_VERSION) && !defined(_M_GENERIC)
static struct sigaction old_sa_segv;
@ -353,15 +363,27 @@ void UninstallExceptionHandler()
sigaction(SIGBUS, &old_sa_bus, nullptr);
#endif
}
bool IsExceptionHandlerSupported()
{
return true;
}
#else // _M_GENERIC or unsupported platform
void InstallExceptionHandler()
{
}
void UninstallExceptionHandler()
{
}
bool IsExceptionHandlerSupported()
{
return false;
}
#endif
} // namespace EMM

View File

@ -7,4 +7,5 @@ namespace EMM
{
void InstallExceptionHandler();
void UninstallExceptionHandler();
bool IsExceptionHandlerSupported();
} // namespace EMM

View File

@ -61,6 +61,11 @@ static void ASAN_DISABLE perform_invalid_access(void* data)
TEST(PageFault, PageFault)
{
if (!EMM::IsExceptionHandlerSupported())
{
// TODO: Use GTEST_SKIP() instead when GTest is updated to 1.10+
return;
}
EMM::InstallExceptionHandler();
void* data = Common::AllocateMemoryPages(PAGE_GRAN);
EXPECT_NE(data, nullptr);