1/* Test CET property note parser.
2   Copyright (C) 2018-2022 Free Software Foundation, Inc.
3   This file is part of the GNU C Library.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library; if not, see
17   <https://www.gnu.org/licenses/>.  */
18
19#include <cet.h>
20
21	.text
22	.p2align 4,,15
23	.globl	bar
24	.type	bar, @function
25/* Since this function doesn't start with ENDBR, it should lead to the
26   IBT violation when called indirectly.  */
27bar:
28	.cfi_startproc
29	ret
30	.cfi_endproc
31	.size	bar, .-bar
32
33#if __SIZEOF_PTRDIFF_T__  == 8
34# define ALIGN 3
35#elif __SIZEOF_PTRDIFF_T__  == 4
36# define ALIGN 2
37#endif
38
39/* In NT_GNU_PROPERTY_TYPE_0 note, add a GNU_PROPERTY_STACK_SIZE property
40   before the GNU_PROPERTY_X86_FEATURE_1_AND property.  */
41	.section ".note.gnu.property", "a"
42	.p2align ALIGN
43	.long 1f - 0f		/* name length */
44	.long 5f - 2f		/* data length */
45	.long 5			/* note type */
460:	.asciz "GNU"		/* vendor name */
471:
48	.p2align ALIGN
492:
50	.long 1			/* pr_type.  */
51	.long 4f - 3f		/* pr_datasz.  */
523:
53#if __SIZEOF_PTRDIFF_T__  == 8
54	.long 0x800
55	.long 0x800
56#else
57	.long 0x08000800
58#endif
594:
60	.p2align ALIGN
615:
62
63	.section	.note.GNU-stack,"",@progbits
64