about summary refs log tree commit diff
path: root/sysdeps/i386
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2024-01-09 12:23:27 -0800
committerH.J. Lu <hjl.tools@gmail.com>2024-01-10 05:20:20 -0800
commit874214db624a8e6c5d2dbe47419fab126f330d68 (patch)
tree2fe3f54cb138d9046767f101643c8c14e931355a /sysdeps/i386
parent7d544dd049a2e3f1480b668f51b72dcc89e376ab (diff)
downloadglibc-874214db624a8e6c5d2dbe47419fab126f330d68.tar.gz
glibc-874214db624a8e6c5d2dbe47419fab126f330d68.tar.xz
glibc-874214db624a8e6c5d2dbe47419fab126f330d68.zip
i386: Remove CET support bits
1. Remove _dl_runtime_resolve_shstk and _dl_runtime_profile_shstk.
2. Move CET offsets from x86 cpu-features-offsets.sym to x86-64
features-offsets.sym.
3. Rename x86 cet-control.h to x86-64 feature-control.h since it is only
for x86-64 and also used for PLT rewrite.
4. Add x86-64 ldsodefs.h to include feature-control.h.
5. Change TUNABLE_CALLBACK (set_plt_rewrite) to x86-64 only.
6. Move x86 dl-procruntime.c to x86-64.
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
Diffstat (limited to 'sysdeps/i386')
-rw-r--r--sysdeps/i386/dl-machine.h11
-rw-r--r--sysdeps/i386/dl-trampoline.S69
2 files changed, 2 insertions, 78 deletions
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
index c69ae165ac..fc1ef96587 100644
--- a/sysdeps/i386/dl-machine.h
+++ b/sysdeps/i386/dl-machine.h
@@ -65,9 +65,6 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
   extern void _dl_runtime_profile (Elf32_Word) attribute_hidden;
   extern void _dl_runtime_resolve_shstk (Elf32_Word) attribute_hidden;
   extern void _dl_runtime_profile_shstk (Elf32_Word) attribute_hidden;
-  /* Check if SHSTK is enabled by kernel.  */
-  bool shstk_enabled
-    = (GL(dl_x86_feature_1) & GNU_PROPERTY_X86_FEATURE_1_SHSTK) != 0;
 
   if (l->l_info[DT_JMPREL] && lazy)
     {
@@ -95,9 +92,7 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
 #ifdef SHARED
       if (__glibc_unlikely (profile))
 	{
-	  got[2] = (shstk_enabled
-		    ? (Elf32_Addr) &_dl_runtime_profile_shstk
-		    : (Elf32_Addr) &_dl_runtime_profile);
+	  got[2] = (Elf32_Addr) &_dl_runtime_profile;
 
 	  if (GLRO(dl_profile) != NULL
 	      && _dl_name_match_p (GLRO(dl_profile), l))
@@ -109,9 +104,7 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
 #endif
 	/* This function will get called to fix up the GOT entry indicated by
 	   the offset on the stack, and then jump to the resolved address.  */
-	got[2] = (shstk_enabled
-		  ? (Elf32_Addr) &_dl_runtime_resolve_shstk
-		  : (Elf32_Addr) &_dl_runtime_resolve);
+	got[2] = (Elf32_Addr) &_dl_runtime_resolve;
     }
 
   return lazy;
diff --git a/sysdeps/i386/dl-trampoline.S b/sysdeps/i386/dl-trampoline.S
index 2632020145..6c14d463b6 100644
--- a/sysdeps/i386/dl-trampoline.S
+++ b/sysdeps/i386/dl-trampoline.S
@@ -44,76 +44,7 @@ _dl_runtime_resolve:
 	cfi_endproc
 	.size _dl_runtime_resolve, .-_dl_runtime_resolve
 
-# The SHSTK compatible version.
-	.text
-	.globl _dl_runtime_resolve_shstk
-	.type _dl_runtime_resolve_shstk, @function
-	cfi_startproc
-	.align 16
-_dl_runtime_resolve_shstk:
-	cfi_adjust_cfa_offset (8)
-	pushl %eax		# Preserve registers otherwise clobbered.
-	cfi_adjust_cfa_offset (4)
-	pushl %edx
-	cfi_adjust_cfa_offset (4)
-	movl 12(%esp), %edx	# Copy args pushed by PLT in register.  Note
-	movl 8(%esp), %eax	# that `fixup' takes its parameters in regs.
-	call _dl_fixup		# Call resolver.
-	movl (%esp), %edx	# Get register content back.
-	movl %eax, %ecx		# Store the function address.
-	movl 4(%esp), %eax	# Get register content back.
-	addl $16, %esp		# Adjust stack: PLT1 + PLT2 + %eax + %edx
-	cfi_adjust_cfa_offset (-16)
-	jmp *%ecx		# Jump to function address.
-	cfi_endproc
-	.size _dl_runtime_resolve_shstk, .-_dl_runtime_resolve_shstk
-
 #if !defined PROF && defined SHARED
-# The SHSTK compatible version.
-	.globl _dl_runtime_profile_shstk
-	.type _dl_runtime_profile_shstk, @function
-	cfi_startproc
-	.align 16
-_dl_runtime_profile_shstk:
-	cfi_adjust_cfa_offset (8)
-	pushl %esp
-	cfi_adjust_cfa_offset (4)
-	addl $8, (%esp)		# Account for the pushed PLT data
-	pushl %ebp
-	cfi_adjust_cfa_offset (4)
-	pushl %eax		# Preserve registers otherwise clobbered.
-	cfi_adjust_cfa_offset (4)
-	pushl %ecx
-	cfi_adjust_cfa_offset (4)
-	pushl %edx
-	cfi_adjust_cfa_offset (4)
-	movl %esp, %ecx
-	subl $8, %esp
-	cfi_adjust_cfa_offset (8)
-	movl $-1, 4(%esp)
-	leal 4(%esp), %edx
-	movl %edx, (%esp)
-	pushl %ecx		# Address of the register structure
-	cfi_adjust_cfa_offset (4)
-	movl 40(%esp), %ecx	# Load return address
-	movl 36(%esp), %edx	# Copy args pushed by PLT in register.  Note
-	movl 32(%esp), %eax	# that `fixup' takes its parameters in regs.
-	call _dl_profile_fixup	# Call resolver.
-	cfi_adjust_cfa_offset (-8)
-	movl (%esp), %edx
-	testl %edx, %edx
-	jns 1f
-	movl 4(%esp), %edx	# Get register content back.
-	movl %eax, %ecx		# Store the function address.
-	movl 12(%esp), %eax	# Get register content back.
-	# Adjust stack: PLT1 + PLT2 + %esp + %ebp + %eax + %ecx + %edx
-	# + free.
-	addl $32, %esp
-	cfi_adjust_cfa_offset (-32)
-	jmp *%ecx		# Jump to function address.
-	cfi_endproc
-	.size _dl_runtime_profile_shstk, .-_dl_runtime_profile_shstk
-
 	.globl _dl_runtime_profile
 	.type _dl_runtime_profile, @function
 	cfi_startproc