Files
async-profiler/test/native/safeAccessTest.cpp

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);
}