platform_bionic/tests/mte_test.cpp
Martin Stjernholm a276343e14 Reland "Make bionic_platform_headers available only for Bionic targets".
The triggering reason for this change is that the SDK snapshot
generation cannot readily handle header libraries that are required for
targets that the SDK itself isn't available for. However, these include
files shouldn't be used without Bionic anyway.

Relanding unchanged - the build problem was due to a split topic.

Test: m checkbuild (on aosp_taimen)
Test: m (on aosp_taimen_hwasan)
Test: atest CtsBionicTestCases
Test: lunch fvp-userdebug && mmm bionic
Bug: 152255951
Change-Id: Iaf49597ea265e6f2a042de5ee873238073b2e545
2020-04-29 18:14:11 +01:00

54 lines
1.4 KiB
C++

/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <sys/cdefs.h>
#if defined(__BIONIC__)
#include <gtest/gtest.h>
#include <android-base/macros.h>
#include <bionic/mte.h>
__attribute__((no_sanitize("hwaddress")))
static void test_tag_mismatch() {
std::unique_ptr<int[]> p = std::make_unique<int[]>(4);
p[0] = 1;
int* mistagged_p ATTRIBUTE_UNUSED =
reinterpret_cast<int*>(reinterpret_cast<uintptr_t>(p.get()) + (1ULL << 56));
{
ScopedDisableMTE x;
{ ScopedDisableMTE y; }
#if defined(__aarch64__)
volatile int load ATTRIBUTE_UNUSED = *mistagged_p;
#endif
}
#if defined(__aarch64__)
if (mte_supported()) {
EXPECT_DEATH(
{
volatile int load ATTRIBUTE_UNUSED = *mistagged_p;
},
"");
}
#endif
}
TEST(mte_test, ScopedDisableMTE) {
test_tag_mismatch();
}
#endif // __BIONIC__