a276343e14
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
54 lines
1.4 KiB
C++
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__
|