Mercurial > hg > CbC > CbC_llvm
view clang/lib/Headers/cet.h @ 176:de4ac79aef9d
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 17:13:11 +0900 |
parents | 0572611fdcc8 |
children |
line wrap: on
line source
/*===------ cet.h -Control-flow Enforcement Technology feature ------------=== * Add x86 feature with IBT and/or SHSTK bits to ELF program property if they * are enabled. Otherwise, contents in this header file are unused. This file * is mainly design for assembly source code which want to enable CET. * * 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 * *===-----------------------------------------------------------------------=== */ #ifndef __CET_H #define __CET_H #ifdef __ASSEMBLER__ #ifndef __CET__ # define _CET_ENDBR #endif #ifdef __CET__ # ifdef __LP64__ # if __CET__ & 0x1 # define _CET_ENDBR endbr64 # else # define _CET_ENDBR # endif # else # if __CET__ & 0x1 # define _CET_ENDBR endbr32 # else # define _CET_ENDBR # endif # endif # ifdef __LP64__ # define __PROPERTY_ALIGN 3 # else # define __PROPERTY_ALIGN 2 # endif .pushsection ".note.gnu.property", "a" .p2align __PROPERTY_ALIGN .long 1f - 0f /* name length. */ .long 4f - 1f /* data length. */ /* NT_GNU_PROPERTY_TYPE_0. */ .long 5 /* note type. */ 0: .asciz "GNU" /* vendor name. */ 1: .p2align __PROPERTY_ALIGN /* GNU_PROPERTY_X86_FEATURE_1_AND. */ .long 0xc0000002 /* pr_type. */ .long 3f - 2f /* pr_datasz. */ 2: /* GNU_PROPERTY_X86_FEATURE_1_XXX. */ .long __CET__ 3: .p2align __PROPERTY_ALIGN 4: .popsection #endif #endif #endif