mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-28 23:34:53 +03:00 
			
		
		
		
	CET arch_prctl bits should be defined in <asm/prctl.h> from Linux kernel
header files.  Add x86 <include/asm/prctl.h> for pre-CET kernel header
files.
Note: sysdeps/unix/sysv/linux/x86/include/asm/prctl.h should be removed
if <asm/prctl.h> from the required kernel header files contains CET
arch_prctl bits.
 /* CET features:
    IBT:   GNU_PROPERTY_X86_FEATURE_1_IBT
    SHSTK: GNU_PROPERTY_X86_FEATURE_1_SHSTK
  */
 /* Return CET features in unsigned long long *addr:
      features: addr[0].
      shadow stack base address: addr[1].
      shadow stack size: addr[2].
  */
 # define ARCH_CET_STATUS		0x3001
 /* Disable CET features in unsigned int features.  */
 # define ARCH_CET_DISABLE		0x3002
 /* Lock all CET features.  */
 # define ARCH_CET_LOCK			0x3003
 /* Allocate a new shadow stack with unsigned long long *addr:
      IN: requested shadow stack size: *addr.
      OUT: allocated shadow stack address: *addr.
  */
 # define ARCH_CET_ALLOC_SHSTK		0x3004
 /* Return legacy region bitmap info in unsigned long long *addr:
     address: addr[0].
     size: addr[1].
  */
 # define ARCH_CET_LEGACY_BITMAP	0x3005
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
	* sysdeps/unix/sysv/linux/x86/include/asm/prctl.h: New file.
	* sysdeps/unix/sysv/linux/x86/cpu-features.c: Include
	<sys/prctl.h> and <asm/prctl.h>.
	(get_cet_status): Call arch_prctl with ARCH_CET_STATUS.
	* sysdeps/unix/sysv/linux/x86/dl-cet.h: Include <sys/prctl.h>
	and <asm/prctl.h>.
	(dl_cet_allocate_legacy_bitmap): Call arch_prctl with
	ARCH_CET_LEGACY_BITMAP.
	(dl_cet_disable_cet): Call arch_prctl with ARCH_CET_DISABLE.
	(dl_cet_lock_cet): Call arch_prctl with ARCH_CET_LOCK.
	* sysdeps/x86/libc-start.c: Include <startup.h>.
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* FIXME: CET arch_prctl bits should come from the kernel header files.
 | |
|    This file should be removed if <asm/prctl.h> from the required kernel
 | |
|    header files contains CET arch_prctl bits.  */
 | |
| 
 | |
| #include_next <asm/prctl.h>
 | |
| 
 | |
| #ifndef ARCH_CET_STATUS
 | |
| /* CET features:
 | |
|    IBT:   GNU_PROPERTY_X86_FEATURE_1_IBT
 | |
|    SHSTK: GNU_PROPERTY_X86_FEATURE_1_SHSTK
 | |
|  */
 | |
| /* Return CET features in unsigned long long *addr:
 | |
|      features: addr[0].
 | |
|      shadow stack base address: addr[1].
 | |
|      shadow stack size: addr[2].
 | |
|  */
 | |
| # define ARCH_CET_STATUS	0x3001
 | |
| /* Disable CET features in unsigned int features.  */
 | |
| # define ARCH_CET_DISABLE	0x3002
 | |
| /* Lock all CET features.  */
 | |
| # define ARCH_CET_LOCK		0x3003
 | |
| /* Allocate a new shadow stack with unsigned long long *addr:
 | |
|      IN: requested shadow stack size: *addr.
 | |
|      OUT: allocated shadow stack address: *addr.
 | |
|  */
 | |
| # define ARCH_CET_ALLOC_SHSTK	0x3004
 | |
| /* Return legacy region bitmap info in unsigned long long *addr:
 | |
|      address: addr[0].
 | |
|      size: addr[1].
 | |
|  */
 | |
| # define ARCH_CET_LEGACY_BITMAP	0x3005
 | |
| #endif /* ARCH_CET_STATUS */
 |