about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-04-13 08:36:19 +0000
committerUlrich Drepper <drepper@redhat.com>2003-04-13 08:36:19 +0000
commitad2be8527ac0f19f129fc4519d823cbe48239c78 (patch)
tree2e5a5862015657296877d4ca5e34a92551865b54
parent08c765fa6e664c584659a476dadfc926d6c74254 (diff)
downloadglibc-ad2be8527ac0f19f129fc4519d823cbe48239c78.tar.gz
glibc-ad2be8527ac0f19f129fc4519d823cbe48239c78.tar.xz
glibc-ad2be8527ac0f19f129fc4519d823cbe48239c78.zip
Update.
	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Add unwind info.
	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S90
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S70
5 files changed, 167 insertions, 2 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 9066a7c475..1a3e32f716 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,7 +1,8 @@
 2003-04-13  Ulrich Drepper  <drepper@redhat.com>
 
-	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Add
-	unwind info.
+	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Add unwind info.
+	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
 	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
 
 2003-04-12  Ulrich Drepper  <drepper@redhat.com>
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index 04db819267..cd80099406 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -379,7 +379,9 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
 	.long	.LSTARTCODE		# Start address of the code.
 #endif
 	.long	.LENDCODE-.LSTARTCODE	# Length of the code.
+#ifdef SHARED
 	.uleb128 0			# No augmentation data.
+#endif
 	.byte	4			# DW_CFA_advance_loc4
 	.long	.Lpush_ebp-.LSTARTCODE
 	.byte	14			# DW_CFA_def_cfa_offset
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
index 72dcf4d653..89bd4a66f0 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
@@ -348,7 +348,9 @@ versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
 	.long	.LSTARTCODE		# Start address of the code.
 #endif
 	.long	.LENDCODE-.LSTARTCODE	# Length of the code.
+#ifdef SHARED
 	.uleb128 0			# No augmentation data.
+#endif
 	.byte	4			# DW_CFA_advance_loc4
 	.long	.Lpush_edi-.LSTARTCODE
 	.byte	14			# DW_CFA_def_cfa_offset
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index 7a75e0d7d2..79d8a2aebe 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -44,10 +44,15 @@
 	.type	__pthread_cond_timedwait, @function
 	.align	16
 __pthread_cond_timedwait:
+.LSTARTCODE:
 	pushq	%r12
+.Lpush_r12:
 	pushq	%r13
+.Lpush_r13:
 	pushq	%r14
+.Lpush_r14:
 	subq	$80, %rsp
+.Lsubq:
 	/* Stack frame:
 
 	   rsp + 80
@@ -228,14 +233,19 @@ __pthread_cond_timedwait:
 	cmoveq	%r14, %rax
 
 18:	addq	$80, %rsp
+.Laddq:
 	popq	%r14
+.Lpop_r14:
 	popq	%r13
+.Lpop_r13:
 	popq	%r12
+.Lpop_r12:
 
 	retq
 
 	/* Initial locking failed.  */
 1:
+.LSbl1:
 #if cond_lock != 0
 	addq	$cond_lock, %rdi
 #endif
@@ -311,6 +321,86 @@ __pthread_cond_timedwait:
 	js	13b
 	jmp	21b
 #endif
+.LENDCODE:
 	.size	__pthread_cond_timedwait, .-__pthread_cond_timedwait
 versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
 		  GLIBC_2_3_2)
+
+
+	.section .eh_frame,"a",@progbits
+.LSTARTFRAME:
+	.long	L(ENDCIE)-L(STARTCIE)	# Length of the CIE.
+.LSTARTCIE:
+	.long	0			# CIE ID.
+	.byte	1			# Version number.
+#ifdef SHARED
+	.string	"zR"			# NUL-terminated augmentation string.
+#else
+	.ascii	"\0"			# NUL-terminated augmentation string.
+#endif
+	.uleb128 1			# Code alignment factor.
+	.sleb128 -8			# Data alignment factor.
+	.byte	16			# Return address register column.
+#ifdef SHARED
+	.uleb128 1			# Augmentation value length.
+	.byte	0x1b			# Encoding: DW_EH_PE_pcrel
+					# + DW_EH_PE_sdata4.
+#endif
+	.byte 0x0c			# DW_CFA_def_cfa
+	.uleb128 7
+	.uleb128 8
+	.byte	0x90			# DW_CFA_offset, column 0x8
+	.uleb128 1
+	.align 8
+.LENDCIE:
+
+	.long	.LENDFDE-.LSTARTFDE	# Length of the FDE.
+.LSTARTFDE:
+	.long	.LSTARTFDE-.LSTARTFRAME	# CIE pointer.
+#ifdef SHARED
+	.long	.LSTARTCODE-.		# PC-relative start address of the code
+#else
+	.long	.LSTARTCODE		# Start address of the code.
+#endif
+	.long	.LENDCODE-.LSTARTCODE	# Length of the code.
+#ifdef SHARED
+	.uleb128 0			# No augmentation data.
+#endif
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpush_r12-.LSTARTCODE
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 16
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpush_r13-.Lpush_r12
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 24
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpush_r14-.Lpush_r13
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 32
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lsubq-.Lpush_r14
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 112
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Laddq-.Lsubq
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 32
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpop_r14-.Laddq
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 24
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpop_r13-.Lpop_r14
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 16
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpop_r12-.Lpop_r13
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 8
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.LSbl1-.Lpop_r12
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 112
+	.align	8
+.LENDFDE:
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index 652ddca772..a7fcc8c8fc 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -100,8 +100,11 @@ __condvar_cleanup:
 	.type	__pthread_cond_wait, @function
 	.align	16
 __pthread_cond_wait:
+.LSTARTCODE:
 	pushq	%r12
+.Lpush_r12:
 	subq	$64, %rsp
+.Lsubq:
 	/* Stack frame:
 
 	   rsp + 64
@@ -220,14 +223,17 @@ __pthread_cond_wait:
 	movq	16(%rsp), %rdi
 	callq	__pthread_mutex_lock_internal
 14:	addq	$64, %rsp
+.Laddq:
 
 	popq	%r12
+.Lpop_r12:
 
 	/* We return the result of the mutex_lock operation.  */
 	retq
 
 	/* Initial locking failed.  */
 1:
+.LSbl1:
 #if cond_lock != 0
 	addq	$cond_lock, %rdi
 #endif
@@ -279,6 +285,70 @@ __pthread_cond_wait:
 
 13:	movq	%r10, %rax
 	jmp	14b
+.LENDCODE:
 	.size	__pthread_cond_wait, .-__pthread_cond_wait
 versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
 		  GLIBC_2_3_2)
+
+
+	.section .eh_frame,"a",@progbits
+.LSTARTFRAME:
+	.long	L(ENDCIE)-L(STARTCIE)	# Length of the CIE.
+.LSTARTCIE:
+	.long	0			# CIE ID.
+	.byte	1			# Version number.
+#ifdef SHARED
+	.string	"zR"			# NUL-terminated augmentation string.
+#else
+	.ascii	"\0"			# NUL-terminated augmentation string.
+#endif
+	.uleb128 1			# Code alignment factor.
+	.sleb128 -8			# Data alignment factor.
+	.byte	16			# Return address register column.
+#ifdef SHARED
+	.uleb128 1			# Augmentation value length.
+	.byte	0x1b			# Encoding: DW_EH_PE_pcrel
+					# + DW_EH_PE_sdata4.
+#endif
+	.byte 0x0c			# DW_CFA_def_cfa
+	.uleb128 7
+	.uleb128 8
+	.byte	0x90			# DW_CFA_offset, column 0x8
+	.uleb128 1
+	.align 8
+.LENDCIE:
+
+	.long	.LENDFDE-.LSTARTFDE	# Length of the FDE.
+.LSTARTFDE:
+	.long	.LSTARTFDE-.LSTARTFRAME	# CIE pointer.
+#ifdef SHARED
+	.long	.LSTARTCODE-.		# PC-relative start address of the code
+#else
+	.long	.LSTARTCODE		# Start address of the code.
+#endif
+	.long	.LENDCODE-.LSTARTCODE	# Length of the code.
+#ifdef SHARED
+	.uleb128 0			# No augmentation data.
+#endif
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpush_r12-.LSTARTCODE
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 16
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lsubq-.Lpush_r12
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 80
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Laddq-.Lsubq
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 16
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.Lpop_r12-.Laddq
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 8
+	.byte	4			# DW_CFA_advance_loc4
+	.long	.LSbl1-.Lpop_r12
+	.byte	14			# DW_CFA_def_cfa_offset
+	.uleb128 80
+	.align	8
+.LENDFDE: