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

source code of glibc/sysdeps/unix/sysv/linux/x86/tst-cet-property-dep-2.S