//===--- PointerAuthOptions.h -----------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file defines options for configuring pointer-auth technologies // like ARMv8.3. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_BASIC_POINTERAUTHOPTIONS_H #define LLVM_CLANG_BASIC_POINTERAUTHOPTIONS_H #include "clang/Basic/LLVM.h" #include "clang/Basic/LangOptions.h" #include "llvm/ADT/STLForwardCompat.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Target/TargetOptions.h" #include <optional> namespace clang { /// Constant discriminator to be used with function pointers in .init_array and /// .fini_array. The value is ptrauth_string_discriminator("init_fini") constexpr uint16_t InitFiniPointerConstantDiscriminator = …; constexpr unsigned PointerAuthKeyNone = …; /// Constant discriminator for std::type_info vtable pointers: 0xB1EA/45546 /// The value is ptrauth_string_discriminator("_ZTVSt9type_info"), i.e., /// the vtable type discriminator for classes derived from std::type_info. constexpr uint16_t StdTypeInfoVTablePointerConstantDiscrimination = …; class PointerAuthSchema { … }; struct PointerAuthOptions { … }; } // end namespace clang #endif