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