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