Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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
  67.