28 lines
892 B
C++
28 lines
892 B
C++
/*
|
|
* Copyright The async-profiler authors
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "testRunner.hpp"
|
|
#include "profiler.h"
|
|
#include "safeAccess.h"
|
|
|
|
TEST_CASE(SafeAccess_load) {
|
|
Profiler::instance()->updateSymbols(false);
|
|
Profiler::instance()->setupSignalHandlers();
|
|
|
|
void* good_val = (void*)(uintptr_t)0x123456789abcdef0ULL;
|
|
void** good_ptr = &good_val;
|
|
void** bad_ptr = (void**)(uintptr_t)0xbaad0000ffffbaadULL;
|
|
void* deadbeef = (void*)(uintptr_t)0xdeadbeefdeadbeefULL;
|
|
|
|
ASSERT_EQ(SafeAccess::load(bad_ptr), 0);
|
|
ASSERT_EQ(SafeAccess::load(good_ptr), good_val);
|
|
|
|
ASSERT_EQ(SafeAccess::load(bad_ptr, deadbeef), deadbeef);
|
|
ASSERT_EQ(SafeAccess::load(good_ptr, deadbeef), good_val);
|
|
|
|
ASSERT_EQ(SafeAccess::load32((int32_t*)bad_ptr, 0x87654321), 0x87654321);
|
|
ASSERT_EQ(SafeAccess::load32((int32_t*)good_ptr, 0x87654321), 0x9abcdef0);
|
|
}
|