xref: /aosp_15_r20/prebuilts/clang-tools/linux-x86/clang-headers/cet.h (revision bed243d3d9cd544cfb038bfa7be843dedc6e6bf7)
1*bed243d3SAndroid Build Coastguard Worker /*===------ cet.h -Control-flow Enforcement Technology  feature ------------===
2*bed243d3SAndroid Build Coastguard Worker  * Add x86 feature with IBT and/or SHSTK bits to ELF program property if they
3*bed243d3SAndroid Build Coastguard Worker  * are enabled. Otherwise, contents in this header file are unused. This file
4*bed243d3SAndroid Build Coastguard Worker  * is mainly design for assembly source code which want to enable CET.
5*bed243d3SAndroid Build Coastguard Worker  *
6*bed243d3SAndroid Build Coastguard Worker  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
7*bed243d3SAndroid Build Coastguard Worker  * See https://llvm.org/LICENSE.txt for license information.
8*bed243d3SAndroid Build Coastguard Worker  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
9*bed243d3SAndroid Build Coastguard Worker  *
10*bed243d3SAndroid Build Coastguard Worker  *===-----------------------------------------------------------------------===
11*bed243d3SAndroid Build Coastguard Worker  */
12*bed243d3SAndroid Build Coastguard Worker #ifndef __CET_H
13*bed243d3SAndroid Build Coastguard Worker #define __CET_H
14*bed243d3SAndroid Build Coastguard Worker 
15*bed243d3SAndroid Build Coastguard Worker #ifdef __ASSEMBLER__
16*bed243d3SAndroid Build Coastguard Worker 
17*bed243d3SAndroid Build Coastguard Worker #ifndef __CET__
18*bed243d3SAndroid Build Coastguard Worker # define _CET_ENDBR
19*bed243d3SAndroid Build Coastguard Worker #endif
20*bed243d3SAndroid Build Coastguard Worker 
21*bed243d3SAndroid Build Coastguard Worker #ifdef __CET__
22*bed243d3SAndroid Build Coastguard Worker 
23*bed243d3SAndroid Build Coastguard Worker # ifdef __LP64__
24*bed243d3SAndroid Build Coastguard Worker #  if __CET__ & 0x1
25*bed243d3SAndroid Build Coastguard Worker #    define _CET_ENDBR endbr64
26*bed243d3SAndroid Build Coastguard Worker #  else
27*bed243d3SAndroid Build Coastguard Worker #    define _CET_ENDBR
28*bed243d3SAndroid Build Coastguard Worker #  endif
29*bed243d3SAndroid Build Coastguard Worker # else
30*bed243d3SAndroid Build Coastguard Worker #  if __CET__ & 0x1
31*bed243d3SAndroid Build Coastguard Worker #    define _CET_ENDBR endbr32
32*bed243d3SAndroid Build Coastguard Worker #  else
33*bed243d3SAndroid Build Coastguard Worker #    define _CET_ENDBR
34*bed243d3SAndroid Build Coastguard Worker #  endif
35*bed243d3SAndroid Build Coastguard Worker # endif
36*bed243d3SAndroid Build Coastguard Worker 
37*bed243d3SAndroid Build Coastguard Worker 
38*bed243d3SAndroid Build Coastguard Worker #  ifdef __LP64__
39*bed243d3SAndroid Build Coastguard Worker #   define __PROPERTY_ALIGN 3
40*bed243d3SAndroid Build Coastguard Worker #  else
41*bed243d3SAndroid Build Coastguard Worker #   define __PROPERTY_ALIGN 2
42*bed243d3SAndroid Build Coastguard Worker #  endif
43*bed243d3SAndroid Build Coastguard Worker 
44*bed243d3SAndroid Build Coastguard Worker 	.pushsection ".note.gnu.property", "a"
45*bed243d3SAndroid Build Coastguard Worker 	.p2align __PROPERTY_ALIGN
46*bed243d3SAndroid Build Coastguard Worker 	.long 1f - 0f		/* name length.  */
47*bed243d3SAndroid Build Coastguard Worker 	.long 4f - 1f		/* data length.  */
48*bed243d3SAndroid Build Coastguard Worker 	/* NT_GNU_PROPERTY_TYPE_0.   */
49*bed243d3SAndroid Build Coastguard Worker 	.long 5			/* note type.  */
50*bed243d3SAndroid Build Coastguard Worker 0:
51*bed243d3SAndroid Build Coastguard Worker 	.asciz "GNU"		/* vendor name.  */
52*bed243d3SAndroid Build Coastguard Worker 1:
53*bed243d3SAndroid Build Coastguard Worker 	.p2align __PROPERTY_ALIGN
54*bed243d3SAndroid Build Coastguard Worker 	/* GNU_PROPERTY_X86_FEATURE_1_AND.  */
55*bed243d3SAndroid Build Coastguard Worker 	.long 0xc0000002	/* pr_type.  */
56*bed243d3SAndroid Build Coastguard Worker 	.long 3f - 2f		/* pr_datasz.  */
57*bed243d3SAndroid Build Coastguard Worker 2:
58*bed243d3SAndroid Build Coastguard Worker 	/* GNU_PROPERTY_X86_FEATURE_1_XXX.  */
59*bed243d3SAndroid Build Coastguard Worker 	.long __CET__
60*bed243d3SAndroid Build Coastguard Worker 3:
61*bed243d3SAndroid Build Coastguard Worker 	.p2align __PROPERTY_ALIGN
62*bed243d3SAndroid Build Coastguard Worker 4:
63*bed243d3SAndroid Build Coastguard Worker 	.popsection
64*bed243d3SAndroid Build Coastguard Worker #endif
65*bed243d3SAndroid Build Coastguard Worker #endif
66*bed243d3SAndroid Build Coastguard Worker #endif
67