Contents of /trunk/glibc/patches/glibc-2.16.0-revert-c5a0802a.patch
Parent Directory | Revision Log
Revision 1835 -
(show annotations)
(download)
Wed Jul 11 12:34:38 2012 UTC (12 years, 2 months ago) by niro
File size: 5393 byte(s)
Wed Jul 11 12:34:38 2012 UTC (12 years, 2 months ago) by niro
File size: 5393 byte(s)
-fixed patch for 2.16.0
1 | diff -rup a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S |
2 | --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:12.937212834 +0000 |
3 | +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:42.104222278 +0000 |
4 | @@ -137,7 +137,6 @@ __pthread_cond_wait: |
5 | cmpl $PI_BIT, %eax |
6 | jne 18f |
7 | |
8 | -90: |
9 | movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx |
10 | movl %ebp, %edx |
11 | xorl %esi, %esi |
12 | @@ -151,9 +150,6 @@ __pthread_cond_wait: |
13 | sete 16(%esp) |
14 | je 19f |
15 | |
16 | - cmpl $-EAGAIN, %eax |
17 | - je 91f |
18 | - |
19 | /* Normal and PI futexes dont mix. Use normal futex functions only |
20 | if the kernel does not support the PI futex functions. */ |
21 | cmpl $-ENOSYS, %eax |
22 | @@ -398,78 +394,6 @@ __pthread_cond_wait: |
23 | #endif |
24 | call __lll_unlock_wake |
25 | jmp 11b |
26 | - |
27 | -91: |
28 | -.LcleanupSTART2: |
29 | - /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to |
30 | - call it again. */ |
31 | - |
32 | - /* Get internal lock. */ |
33 | - movl $1, %edx |
34 | - xorl %eax, %eax |
35 | - LOCK |
36 | -#if cond_lock == 0 |
37 | - cmpxchgl %edx, (%ebx) |
38 | -#else |
39 | - cmpxchgl %edx, cond_lock(%ebx) |
40 | -#endif |
41 | - jz 92f |
42 | - |
43 | -#if cond_lock == 0 |
44 | - movl %ebx, %edx |
45 | -#else |
46 | - leal cond_lock(%ebx), %edx |
47 | -#endif |
48 | -#if (LLL_SHARED-LLL_PRIVATE) > 255 |
49 | - xorl %ecx, %ecx |
50 | -#endif |
51 | - cmpl $-1, dep_mutex(%ebx) |
52 | - setne %cl |
53 | - subl $1, %ecx |
54 | - andl $(LLL_SHARED-LLL_PRIVATE), %ecx |
55 | -#if LLL_PRIVATE != 0 |
56 | - addl $LLL_PRIVATE, %ecx |
57 | -#endif |
58 | - call __lll_lock_wait |
59 | - |
60 | -92: |
61 | - /* Increment the cond_futex value again, so it can be used as a new |
62 | - expected value. */ |
63 | - addl $1, cond_futex(%ebx) |
64 | - movl cond_futex(%ebx), %ebp |
65 | - |
66 | - /* Unlock. */ |
67 | - LOCK |
68 | -#if cond_lock == 0 |
69 | - subl $1, (%ebx) |
70 | -#else |
71 | - subl $1, cond_lock(%ebx) |
72 | -#endif |
73 | - je 93f |
74 | -#if cond_lock == 0 |
75 | - movl %ebx, %eax |
76 | -#else |
77 | - leal cond_lock(%ebx), %eax |
78 | -#endif |
79 | -#if (LLL_SHARED-LLL_PRIVATE) > 255 |
80 | - xorl %ecx, %ecx |
81 | -#endif |
82 | - cmpl $-1, dep_mutex(%ebx) |
83 | - setne %cl |
84 | - subl $1, %ecx |
85 | - andl $(LLL_SHARED-LLL_PRIVATE), %ecx |
86 | -#if LLL_PRIVATE != 0 |
87 | - addl $LLL_PRIVATE, %ecx |
88 | -#endif |
89 | - call __lll_unlock_wake |
90 | - |
91 | -93: |
92 | - /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ |
93 | - xorl %ecx, %ecx |
94 | - movl dep_mutex(%ebx), %edi |
95 | - jmp 90b |
96 | -.LcleanupEND2: |
97 | - |
98 | .size __pthread_cond_wait, .-__pthread_cond_wait |
99 | versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, |
100 | GLIBC_2_3_2) |
101 | @@ -642,10 +566,6 @@ __condvar_w_cleanup: |
102 | .long .LcleanupEND-.Lsub_cond_futex |
103 | .long __condvar_w_cleanup-.LSTARTCODE |
104 | .uleb128 0 |
105 | - .long .LcleanupSTART2-.LSTARTCODE |
106 | - .long .LcleanupEND2-.LcleanupSTART2 |
107 | - .long __condvar_w_cleanup-.LSTARTCODE |
108 | - .uleb128 0 |
109 | .long .LcallUR-.LSTARTCODE |
110 | .long .LENDCODE-.LcallUR |
111 | .long 0 |
112 | Only in b/nptl/sysdeps/unix/sysv/linux/i386/i486: pthread_cond_wait.S.orig |
113 | diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S |
114 | --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:04:12.941212837 +0000 |
115 | +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:05:05.155229737 +0000 |
116 | @@ -23,7 +23,6 @@ |
117 | #include <lowlevelcond.h> |
118 | #include <tcb-offsets.h> |
119 | #include <pthread-pi-defines.h> |
120 | -#include <pthread-errnos.h> |
121 | #include <stap-probe.h> |
122 | |
123 | #include <kernel-features.h> |
124 | @@ -137,14 +136,11 @@ __pthread_cond_wait: |
125 | cmpl $PI_BIT, %eax |
126 | jne 61f |
127 | |
128 | -90: |
129 | movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi |
130 | movl $SYS_futex, %eax |
131 | syscall |
132 | |
133 | movl $1, %r8d |
134 | - cmpq $-EAGAIN, %rax |
135 | - je 91f |
136 | #ifdef __ASSUME_REQUEUE_PI |
137 | jmp 62f |
138 | #else |
139 | @@ -331,70 +327,6 @@ __pthread_cond_wait: |
140 | |
141 | 13: movq %r10, %rax |
142 | jmp 14b |
143 | - |
144 | -91: |
145 | -.LcleanupSTART2: |
146 | - /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to |
147 | - call it again. */ |
148 | - movq 8(%rsp), %rdi |
149 | - |
150 | - /* Get internal lock. */ |
151 | - movl $1, %esi |
152 | - xorl %eax, %eax |
153 | - LOCK |
154 | -#if cond_lock == 0 |
155 | - cmpxchgl %esi, (%rdi) |
156 | -#else |
157 | - cmpxchgl %esi, cond_lock(%rdi) |
158 | -#endif |
159 | - jz 92f |
160 | - |
161 | -#if cond_lock != 0 |
162 | - addq $cond_lock, %rdi |
163 | -#endif |
164 | - LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi) |
165 | - movl $LLL_PRIVATE, %eax |
166 | - movl $LLL_SHARED, %esi |
167 | - cmovne %eax, %esi |
168 | - callq __lll_lock_wait |
169 | -#if cond_lock != 0 |
170 | - subq $cond_lock, %rdi |
171 | -#endif |
172 | -92: |
173 | - /* Increment the cond_futex value again, so it can be used as a new |
174 | - expected value. */ |
175 | - incl cond_futex(%rdi) |
176 | - movl cond_futex(%rdi), %edx |
177 | - |
178 | - /* Release internal lock. */ |
179 | - LOCK |
180 | -#if cond_lock == 0 |
181 | - decl (%rdi) |
182 | -#else |
183 | - decl cond_lock(%rdi) |
184 | -#endif |
185 | - jz 93f |
186 | - |
187 | -#if cond_lock != 0 |
188 | - addq $cond_lock, %rdi |
189 | -#endif |
190 | - LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi) |
191 | - movl $LLL_PRIVATE, %eax |
192 | - movl $LLL_SHARED, %esi |
193 | - cmovne %eax, %esi |
194 | - /* The call preserves %rdx. */ |
195 | - callq __lll_unlock_wake |
196 | -#if cond_lock != 0 |
197 | - subq $cond_lock, %rdi |
198 | -#endif |
199 | -93: |
200 | - /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ |
201 | - xorq %r10, %r10 |
202 | - mov dep_mutex(%rdi), %R8_LP |
203 | - leaq cond_futex(%rdi), %rdi |
204 | - jmp 90b |
205 | -.LcleanupEND2: |
206 | - |
207 | .size __pthread_cond_wait, .-__pthread_cond_wait |
208 | versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, |
209 | GLIBC_2_3_2) |
210 | @@ -547,15 +479,11 @@ __condvar_cleanup1: |
211 | .uleb128 .LcleanupSTART-.LSTARTCODE |
212 | .uleb128 .LcleanupEND-.LcleanupSTART |
213 | .uleb128 __condvar_cleanup1-.LSTARTCODE |
214 | - .uleb128 0 |
215 | - .uleb128 .LcleanupSTART2-.LSTARTCODE |
216 | - .uleb128 .LcleanupEND2-.LcleanupSTART2 |
217 | - .uleb128 __condvar_cleanup1-.LSTARTCODE |
218 | - .uleb128 0 |
219 | + .uleb128 0 |
220 | .uleb128 .LcallUR-.LSTARTCODE |
221 | .uleb128 .LENDCODE-.LcallUR |
222 | .uleb128 0 |
223 | - .uleb128 0 |
224 | + .uleb128 0 |
225 | .Lcstend: |
226 |