socsvn commit: r225113 - in soc2011/xxp/xxp-head/libexec/rtld-elf: amd64 i386

xxp at FreeBSD.org xxp at FreeBSD.org
Sun Aug 14 15:17:11 UTC 2011


Author: xxp
Date: Sun Aug 14 15:17:09 2011
New Revision: 225113
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=225113

Log:
  review rtld

Modified:
  soc2011/xxp/xxp-head/libexec/rtld-elf/amd64/rtld_start.S
  soc2011/xxp/xxp-head/libexec/rtld-elf/i386/rtld_start.S

Modified: soc2011/xxp/xxp-head/libexec/rtld-elf/amd64/rtld_start.S
==============================================================================
--- soc2011/xxp/xxp-head/libexec/rtld-elf/amd64/rtld_start.S	Sun Aug 14 14:36:32 2011	(r225112)
+++ soc2011/xxp/xxp-head/libexec/rtld-elf/amd64/rtld_start.S	Sun Aug 14 15:17:09 2011	(r225113)
@@ -31,16 +31,13 @@
 	.type	.rtld_start, at function
 .rtld_start:
 	xorq	%rbp,%rbp		# Clear frame pointer for good form
-	cfi_def_cfa(%rsp,0)
 	subq	$24,%rsp		# A place to store exit procedure addr
-	cfi_adjust_cfa_offset(24)
 	movq	%rdi,%r12
 	movq	%rsp,%rsi		# save address of exit proc
 	movq	%rsp,%rdx		# construct address of obj_main
 	addq	$8,%rdx
 	call	_rtld at PLT		# Call rtld(sp); returns entry point
 	popq	%rsi			# Get exit procedure address
-	cfi_adjust_cfa_offset(-8)
 	movq	%r12,%rdi		# *ap
 /*
  * At this point, %rax contains the entry point of the main program, and
@@ -83,27 +80,16 @@
 	.type	_rtld_bind_start, at function
 _rtld_bind_start:
 	subq	$8,%rsp
-	cfi_adjust_cfa_offset(8)
 	pushfq				# Save rflags
-	cfi_adjust_cfa_offset(8)
 	pushq	%rax			# Save %rax
-	cfi_adjust_cfa_offset(8)
 	pushq	%rdx			# Save %rdx
-	cfi_adjust_cfa_offset(8)
 	pushq	%rcx			# Save %rcx
-	cfi_adjust_cfa_offset(8)
 	pushq	%rsi			# Save %rsi
-	cfi_adjust_cfa_offset(8)
 	pushq	%rdi			# Save %rdi
-	cfi_adjust_cfa_offset(8)
 	pushq	%r8			# Save %r8
-	cfi_adjust_cfa_offset(8)
 	pushq	%r9			# Save %r9
-	cfi_adjust_cfa_offset(8)
 	pushq	%r10			# Save %r10
-	cfi_adjust_cfa_offset(8)
 	pushq	%r11			# Save %r11
-	cfi_adjust_cfa_offset(8)
 
 	movq	0x58(%rsp),%rdi		# Fetch obj argument
 	movq	0x60(%rsp),%rsi		# Fetch reloff argument
@@ -115,25 +101,15 @@
 
 	movq	%rax,0x60(%rsp)		# Store target over reloff argument
 	popq	%r11			# Restore %r11
-	cfi_adjust_cfa_offset(-8)
 	popq	%r10			# Restore %r10
-	cfi_adjust_cfa_offset(-8)
 	popq	%r9			# Restore %r9
-	cfi_adjust_cfa_offset(-8)
 	popq	%r8			# Restore %r8
-	cfi_adjust_cfa_offset(-8)
 	popq	%rdi			# Restore %rdi
-	cfi_adjust_cfa_offset(-8)
 	popq	%rsi			# Restore %rsi
-	cfi_adjust_cfa_offset(-8)
 	popq	%rcx			# Restore %rcx
-	cfi_adjust_cfa_offset(-8)
 	popq	%rdx			# Restore %rdx
-	cfi_adjust_cfa_offset(-8)
 	popq	%rax			# Restore %rax
-	cfi_adjust_cfa_offset(-8)
 	popfq				# Restore rflags
-	cfi_adjust_cfa_offset(-8)
 	leaq	16(%rsp),%rsp		# Discard spare, obj, do not change rflags
 	ret				# "Return" to target address
 

Modified: soc2011/xxp/xxp-head/libexec/rtld-elf/i386/rtld_start.S
==============================================================================
--- soc2011/xxp/xxp-head/libexec/rtld-elf/i386/rtld_start.S	Sun Aug 14 14:36:32 2011	(r225112)
+++ soc2011/xxp/xxp-head/libexec/rtld-elf/i386/rtld_start.S	Sun Aug 14 15:17:09 2011	(r225113)
@@ -34,27 +34,18 @@
 	movl	%esp,%eax		# Save initial stack pointer
 	movl	%esp,%esi		# Save initial stack pointer
 	andl	$0xfffffff0,%esp	# Align stack pointer
-	cfi_def_cfa(%esp,0)
 	subl	$16,%esp		# A place to store exit procedure addr
-	cfi_adjust_cfa_offset(16)
 	movl	%esp,%ebx		# save address of exit proc
 	movl	%esp,%ecx		# construct address of obj_main
 	addl	$4,%ecx
 	subl	$4,%esp			# Keep stack aligned
-	cfi_adjust_cfa_offset(4)
 	pushl	%ecx			# Pass address of obj_main
-	cfi_adjust_cfa_offset(4)
 	pushl	%ebx			# Pass address of exit proc
-	cfi_adjust_cfa_offset(4)
 	pushl	%eax			# Pass initial stack pointer to rtld
-	cfi_adjust_cfa_offset(4)
 	call	_rtld at PLT		# Call rtld(sp); returns entry point
 	addl	$16,%esp		# Remove arguments from stack
-	cfi_adjust_cfa_offset(-16)
 	popl	%edx			# Get exit procedure address
-	cfi_adjust_cfa_offset(-4)
 	movl	%esi,%esp		# Ignore obj_main
-	cfi_def_cfa(%esp,0)
 /*
  * At this point, %eax contains the entry point of the main program, and
  * %edx contains a pointer to a termination function that should be
@@ -81,32 +72,21 @@
 	.type	_rtld_bind_start, at function
 _rtld_bind_start:
 	pushf				# Save eflags
-	cfi_adjust_cfa_offset(4)
 	pushl	%eax			# Save %eax
-	cfi_adjust_cfa_offset(4)
 	pushl	%edx			# Save %edx
-	cfi_adjust_cfa_offset(4)
 	pushl	%ecx			# Save %ecx
-	cfi_adjust_cfa_offset(4)
 	pushl	20(%esp)		# Copy reloff argument
-	cfi_adjust_cfa_offset(4)
 	pushl	20(%esp)		# Copy obj argument
-	cfi_adjust_cfa_offset(4)
 
 	call	_rtld_bind at PLT		# Transfer control to the binder
 	/* Now %eax contains the entry point of the function being called. */
 
 	addl	$8,%esp			# Discard binder arguments
-	cfi_adjust_cfa_offset(-8)
 	movl	%eax,20(%esp)		# Store target over obj argument
 	popl	%ecx			# Restore %ecx
-	cfi_adjust_cfa_offset(-4)
 	popl	%edx			# Restore %edx
-	cfi_adjust_cfa_offset(-4)
 	popl	%eax			# Restore %eax
-	cfi_adjust_cfa_offset(-4)
 	popf				# Restore eflags
-	cfi_adjust_cfa_offset(-4)
 	leal	4(%esp),%esp		# Discard reloff, do not change eflags
 	ret				# "Return" to target address
 


More information about the svn-soc-all mailing list