- Update from master (16c6f99)

- Fix typo in recent tzfile change (#769476)
  - Make MALLOC_ARENA_MAX and MALLOC_ARENA_TEST match documentation
    (#740506)
  - Revert "fix" to pthread_cond_wait (#769421)
  - Extract patch for 730856 from fedora-patch into a distinct patchfile
This commit is contained in:
Jeff Law 2011-12-22 19:25:40 +00:00
parent f79eb1f502
commit 25912eaa88
8 changed files with 767 additions and 451 deletions

3
.gitignore vendored
View File

@ -5,3 +5,6 @@ glibc-2.14-394-g8f3b1ff
/glibc-2.14-a4647e7-fedora.tar.gz
/glibc-2.14-a4647e7.tar.gz
/glibc-ports-2.14-4a93ed4.tar.gz
/glibc-2.14-16c6f99-fedora.tar.gz
/glibc-2.14-16c6f99.tar.gz
/glibc-ports-2.14-c2aeee1.tar.gz

File diff suppressed because it is too large Load Diff

16
glibc-rh730856.patch Normal file
View File

@ -0,0 +1,16 @@
2011-09-01 Andreas Schwab <schwab@redhat.com>
* resolv/res_query.c (__libc_res_nquery): Update assertion.
diff -ru a/resolv/res_query.c b/resolv/res_query.c
--- a/resolv/res_query.c 2011-12-12 14:10:52.000000000 -0700
+++ b/resolv/res_query.c 2011-12-12 14:23:04.832739111 -0700
@@ -248,7 +248,7 @@
&& *resplen2 > (int) sizeof (HEADER))
{
/* Special case of partial answer. */
- assert (hp != hp2);
+ assert (n == 0 || hp != hp2);
hp = hp2;
}
else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER)

35
glibc-rh740506.patch Normal file
View File

@ -0,0 +1,35 @@
* malloc/arena.c (arena_get2): Avoid unnecessarily
retrieving #cpus from /proc.
* malloc/malloc.c (mALLOPt): Clamp arena_test based on
the value of arena_max.
diff --git a/malloc/arena.c b/malloc/arena.c
index cb8548b..00f1da5 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size)
{
if (mp_.arena_max != 0)
narenas_limit = mp_.arena_max;
- else
+ else if (narenas > mp_.arena_test)
{
int n = __get_nprocs ();
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 8608083..f8d32da 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -4842,6 +4842,12 @@ int mALLOPt(int param_number, int value)
break;
#endif
}
+#ifdef PER_THREAD
+ /* Clamp ARENA_TEST from ARENA_MAX to avoid creating too many
+ arenas. */
+ if (mp_.arena_max > 0 && mp_.arena_max <= mp_.arena_test)
+ mp_.arena_test = mp_.arena_max - 1;
+#endif
(void)mutex_unlock(&av->mutex);
return res;
}

229
glibc-rh769421.patch Normal file
View File

@ -0,0 +1,229 @@
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
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:12.937212834 +0000
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:42.104222278 +0000
@@ -137,7 +137,6 @@ __pthread_cond_wait:
cmpl $PI_BIT, %eax
jne 18f
-90:
movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx
movl %ebp, %edx
xorl %esi, %esi
@@ -151,9 +150,6 @@ __pthread_cond_wait:
sete 16(%esp)
je 19f
- cmpl $-EAGAIN, %eax
- je 91f
-
/* Normal and PI futexes dont mix. Use normal futex functions only
if the kernel does not support the PI futex functions. */
cmpl $-ENOSYS, %eax
@@ -398,78 +394,6 @@ __pthread_cond_wait:
#endif
call __lll_unlock_wake
jmp 11b
-
-91:
-.LcleanupSTART2:
- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to
- call it again. */
-
- /* Get internal lock. */
- movl $1, %edx
- xorl %eax, %eax
- LOCK
-#if cond_lock == 0
- cmpxchgl %edx, (%ebx)
-#else
- cmpxchgl %edx, cond_lock(%ebx)
-#endif
- jz 92f
-
-#if cond_lock == 0
- movl %ebx, %edx
-#else
- leal cond_lock(%ebx), %edx
-#endif
-#if (LLL_SHARED-LLL_PRIVATE) > 255
- xorl %ecx, %ecx
-#endif
- cmpl $-1, dep_mutex(%ebx)
- setne %cl
- subl $1, %ecx
- andl $(LLL_SHARED-LLL_PRIVATE), %ecx
-#if LLL_PRIVATE != 0
- addl $LLL_PRIVATE, %ecx
-#endif
- call __lll_lock_wait
-
-92:
- /* Increment the cond_futex value again, so it can be used as a new
- expected value. */
- addl $1, cond_futex(%ebx)
- movl cond_futex(%ebx), %ebp
-
- /* Unlock. */
- LOCK
-#if cond_lock == 0
- subl $1, (%ebx)
-#else
- subl $1, cond_lock(%ebx)
-#endif
- je 93f
-#if cond_lock == 0
- movl %ebx, %eax
-#else
- leal cond_lock(%ebx), %eax
-#endif
-#if (LLL_SHARED-LLL_PRIVATE) > 255
- xorl %ecx, %ecx
-#endif
- cmpl $-1, dep_mutex(%ebx)
- setne %cl
- subl $1, %ecx
- andl $(LLL_SHARED-LLL_PRIVATE), %ecx
-#if LLL_PRIVATE != 0
- addl $LLL_PRIVATE, %ecx
-#endif
- call __lll_unlock_wake
-
-93:
- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */
- xorl %ecx, %ecx
- movl dep_mutex(%ebx), %edi
- jmp 90b
-.LcleanupEND2:
-
.size __pthread_cond_wait, .-__pthread_cond_wait
versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
GLIBC_2_3_2)
@@ -642,10 +566,6 @@ __condvar_w_cleanup:
.long .LcleanupEND-.Lsub_cond_futex
.long __condvar_w_cleanup-.LSTARTCODE
.uleb128 0
- .long .LcleanupSTART2-.LSTARTCODE
- .long .LcleanupEND2-.LcleanupSTART2
- .long __condvar_w_cleanup-.LSTARTCODE
- .uleb128 0
.long .LcallUR-.LSTARTCODE
.long .LENDCODE-.LcallUR
.long 0
Only in b/nptl/sysdeps/unix/sysv/linux/i386/i486: pthread_cond_wait.S.orig
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
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:04:12.941212837 +0000
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:05:05.155229737 +0000
@@ -23,7 +23,6 @@
#include <lowlevelcond.h>
#include <tcb-offsets.h>
#include <pthread-pi-defines.h>
-#include <pthread-errnos.h>
#include <stap-probe.h>
#include <kernel-features.h>
@@ -137,14 +136,11 @@ __pthread_cond_wait:
cmpl $PI_BIT, %eax
jne 61f
-90:
movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi
movl $SYS_futex, %eax
syscall
movl $1, %r8d
- cmpq $-EAGAIN, %rax
- je 91f
#ifdef __ASSUME_REQUEUE_PI
jmp 62f
#else
@@ -331,70 +327,6 @@ __pthread_cond_wait:
13: movq %r10, %rax
jmp 14b
-
-91:
-.LcleanupSTART2:
- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to
- call it again. */
- movq 8(%rsp), %rdi
-
- /* Get internal lock. */
- movl $1, %esi
- xorl %eax, %eax
- LOCK
-#if cond_lock == 0
- cmpxchgl %esi, (%rdi)
-#else
- cmpxchgl %esi, cond_lock(%rdi)
-#endif
- jz 92f
-
-#if cond_lock != 0
- addq $cond_lock, %rdi
-#endif
- cmpq $-1, dep_mutex-cond_lock(%rdi)
- movl $LLL_PRIVATE, %eax
- movl $LLL_SHARED, %esi
- cmovne %eax, %esi
- callq __lll_lock_wait
-#if cond_lock != 0
- subq $cond_lock, %rdi
-#endif
-92:
- /* Increment the cond_futex value again, so it can be used as a new
- expected value. */
- incl cond_futex(%rdi)
- movl cond_futex(%rdi), %edx
-
- /* Release internal lock. */
- LOCK
-#if cond_lock == 0
- decl (%rdi)
-#else
- decl cond_lock(%rdi)
-#endif
- jz 93f
-
-#if cond_lock != 0
- addq $cond_lock, %rdi
-#endif
- cmpq $-1, dep_mutex-cond_lock(%rdi)
- movl $LLL_PRIVATE, %eax
- movl $LLL_SHARED, %esi
- cmovne %eax, %esi
- /* The call preserves %rdx. */
- callq __lll_unlock_wake
-#if cond_lock != 0
- subq $cond_lock, %rdi
-#endif
-93:
- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */
- xorq %r10, %r10
- movq dep_mutex(%rdi), %r8
- leaq cond_futex(%rdi), %rdi
- jmp 90b
-.LcleanupEND2:
-
.size __pthread_cond_wait, .-__pthread_cond_wait
versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
GLIBC_2_3_2)
@@ -547,15 +479,11 @@ __condvar_cleanup1:
.uleb128 .LcleanupSTART-.LSTARTCODE
.uleb128 .LcleanupEND-.LcleanupSTART
.uleb128 __condvar_cleanup1-.LSTARTCODE
- .uleb128 0
- .uleb128 .LcleanupSTART2-.LSTARTCODE
- .uleb128 .LcleanupEND2-.LcleanupSTART2
- .uleb128 __condvar_cleanup1-.LSTARTCODE
- .uleb128 0
+ .uleb128 0
.uleb128 .LcallUR-.LSTARTCODE
.uleb128 .LENDCODE-.LcallUR
.uleb128 0
- .uleb128 0
+ .uleb128 0
.Lcstend:
Only in b/nptl/sysdeps/unix/sysv/linux/x86_64: pthread_cond_wait.S.orig
Only in b/nptl/sysdeps/unix/sysv/linux/x86_64: pthread_cond_wait.S.rej

19
glibc-rh769476.patch Normal file
View File

@ -0,0 +1,19 @@
commit 8fa26d571d4b87a1c7a7f19f1365f7e5d2995933
Author: Ulrich Drepper <drepper@gmail.com>
Date: Wed Dec 21 18:57:18 2011 -0500
Fix one typo
diff --git a/time/tzfile.c b/time/tzfile.c
index 402389c..a8c1c0e 100644
--- a/time/tzfile.c
+++ b/time/tzfile.c
@@ -278,7 +278,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
if (__builtin_expect (tzspec_len < num_isstd, 0))
goto lose;
tzspec_len -= num_isstd;
- if (__builtin_expect (tzspec == 0 || tzspec_len - 1 < num_isgmt, 0))
+ if (__builtin_expect (tzspec_len == 0 || tzspec_len - 1 < num_isgmt, 0))
goto lose;
tzspec_len -= num_isgmt + 1;
if (__builtin_expect (SIZE_MAX - total_size < tzspec_len, 0))

View File

@ -1,6 +1,6 @@
%define glibcsrcdir glibc-2.14-a4647e7
%define glibcsrcdir glibc-2.14-16c6f99
%define glibcversion 2.14.90
%define glibcportsdir glibc-ports-2.14-4a93ed4
%define glibcportsdir glibc-ports-2.14-c2aeee1
### glibc.spec.in follows:
%define run_glibc_tests 1
%define auxarches athlon alphaev6
@ -28,7 +28,7 @@
Summary: The GNU libc libraries
Name: glibc
Version: %{glibcversion}
Release: 25%{?dist}
Release: 26%{?dist}
# GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
# Things that are linked directly into dynamically linked programs
# and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
@ -46,6 +46,14 @@ Patch1: %{name}-ia64-lib64.patch
# thread A has unlocked on the error path
# There's an alternate approach using mmap after detecting an error that needs discussion
Patch2: %{name}-rh757881.patch
# Sent upstream, awaiting responses
Patch3: %{name}-rh740506.patch
# Not sure of upstream status
Patch4: %{name}-rh730856.patch
# Reverting an upstream patch. I don't think this has been discussed upstream yet.
# Caused a variety of problems for Fedora & Debian
Patch5: %{name}-rh769421.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Obsoletes: glibc-profile < 2.4
Obsoletes: nss_db
@ -261,10 +269,13 @@ rm -rf %{glibcportsdir}
%patch0 -E -p1
%ifarch ia64
%if "%{_lib}" == "lib64"
%patch1 -p1
#%patch1 -p1
%endif
%endif
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
# A lot of programs still misuse memcpy when they have to use
# memmove. The memcpy implementation below is not tolerant at
@ -1117,6 +1128,13 @@ rm -f *.filelist*
%endif
%changelog
* Thu Dec 22 2011 Jeff Law <law@redhat.com> - 2.14.90-26.fc17
- Update from master (16c6f99)
- Fix typo in recent tzfile change (#769476)
- Make MALLOC_ARENA_MAX and MALLOC_ARENA_TEST match documentation (#740506)
- Revert "fix" to pthread_cond_wait (#769421)
- Extract patch for 730856 from fedora-patch into a distinct patchfile
* Mon Dec 19 2011 Jeff Law <law@redhat.com> - 2.14.90-25.fc17
- Update from master (a4647e7).

View File

@ -1,3 +1,3 @@
cb5aa693529a29dccf63ff469464fcce glibc-2.14-a4647e7-fedora.tar.gz
905fb427fbfa8a32c01f63bfdd3f7912 glibc-2.14-a4647e7.tar.gz
2e5aa88b3474e41a90cdb1dab2ee1c5d glibc-ports-2.14-4a93ed4.tar.gz
5d434a88a92c4957d415748cbf10b532 glibc-2.14-16c6f99-fedora.tar.gz
5376ee70edca1e31fba32dabd777e9db glibc-2.14-16c6f99.tar.gz
a83cba20b4ef453e85335a400b1e137b glibc-ports-2.14-c2aeee1.tar.gz