UnitTests: Skip PageFaultTest if exception handlers are not supported
Page faults should only occur on architectures that support exception handlers, so skip the test on other architectures to avoid spurious test failures.
This commit is contained in:
parent
62601663e5
commit
6ffd938f98
|
@ -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
|
||||
|
|
|
@ -7,4 +7,5 @@ namespace EMM
|
|||
{
|
||||
void InstallExceptionHandler();
|
||||
void UninstallExceptionHandler();
|
||||
bool IsExceptionHandlerSupported();
|
||||
} // namespace EMM
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue