From f12ca311c01cba335a9e4c866a0c966d2efd41a2 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 28 Nov 2006 11:18:19 +0000 Subject: Updated to fedora-glibc-20061128T1037 --- ChangeLog | 21 +++++++++++++++++++ fedora/branch.mk | 4 ++-- fedora/glibc.spec.in | 15 ++++++++++++-- nptl/Makefile | 3 ++- resolv/mapv4v6addr.h | 10 ++++----- sunrpc/svc_run.c | 35 +++++++++++++++++++++++--------- sysdeps/unix/sysv/linux/i386/getgroups.c | 5 +++-- 7 files changed, 70 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 966a3581df..2ade0a332c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2006-11-27 Jakub Jelinek + + [BZ #3559] + * sunrpc/svc_run.c (svc_run): Fail instead of segfaulting if + malloc crashed. Don't allocate memory unnecessarily in each + loop. + +2006-10-21 Jakub Jelinek + + * resolv/mapv4v6addr.h (map_v4v6_address): Fix last change. + +2006-11-20 Ulrich Drepper + + * resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit. + +2006-11-18 Bruno Haible + + * sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke + __sysconf only after having tried to call getgroups32. + 2006-11-19 Ulrich Drepper * nss/nss_files/files-hosts.c (LINE_PARSER): Support IPv6-style @@ -15,6 +35,7 @@ * po/nl.po: Update from translation team. * timezone/zdump.c: Redo fix for BZ #3137. + 2006-11-14 Jakub Jelinek * nss/nss_files/files-alias.c (get_next_alias): Set line back diff --git a/fedora/branch.mk b/fedora/branch.mk index 2896206bcb..f3e425aa79 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-fc4 -fedora-sync-date := 2006-11-20 10:00 UTC -fedora-sync-tag := fedora-glibc-20061120T1000 +fedora-sync-date := 2006-11-28 10:37 UTC +fedora-sync-tag := fedora-glibc-20061128T1037 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index bd8a7c3120..8ba2ea5911 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -1,4 +1,4 @@ -%define glibcrelease 7 +%define glibcrelease 8 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define xenarches i686 athlon %ifarch %{xenarches} @@ -823,7 +823,7 @@ GCC="gcc -m64" GXX="g++ -m64" %endif -BuildFlags="$BuildFlags -DNDEBUG=1" +BuildFlags="$BuildFlags -DNDEBUG=1 -fasynchronous-unwind-tables" EnableKernel="--enable-kernel=%{enablekernel}" echo "$GCC" > Gcc AddOns=`echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\|powerpc-cpu\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d'` @@ -1155,6 +1155,11 @@ cp -f $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo/US/Eastern $RPM_BUILD_ROOT/etc/lo rm -rf $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo +# Make sure %config files have the same timestamp +touch -r fedora/glibc.spec.in $RPM_BUILD_ROOT/etc/ld.so.conf +touch -r timezone/northamerica $RPM_BUILD_ROOT/etc/localtime +touch -r sunrpc/etc.rpc $RPM_BUILD_ROOT/etc/rpc + cd fedora $GCC -Os -static -o build-locale-archive build-locale-archive.c \ ../build-%{nptl_target_cpu}-linuxnptl/locale/locarchive.o \ @@ -1529,6 +1534,12 @@ rm -f *.filelist* %endif %changelog +* Tue Nov 28 2006 Jakub Jelinek 2.5.90-8 +- fix svc_run (#216834, BZ#3559) +- add -fasynchronous-unwind-tables to CFLAGS (#216518) +- make sure there is consistent timestamp for /etc/ld.so.conf, + /etc/localtime and /etc/rpc between multilib glibc rpms + * Mon Nov 20 2006 Jakub Jelinek 2.5.90-7 - handle IPv6 addresses in /etc/hosts that are mappable to IPv4 addresses in IPv4 host lookups (#215283) diff --git a/nptl/Makefile b/nptl/Makefile index ef12a80689..8c1f74e2bb 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -340,7 +340,8 @@ endif extra-objs += $(crti-objs) $(crtn-objs) omit-deps += crti crtn -CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) +CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ + -fno-asynchronous-unwind-tables endif CFLAGS-flockfile.c = -D_IO_MTSAFE_IO diff --git a/resolv/mapv4v6addr.h b/resolv/mapv4v6addr.h index bc3290f162..7f85f7d5e3 100644 --- a/resolv/mapv4v6addr.h +++ b/resolv/mapv4v6addr.h @@ -56,16 +56,14 @@ static void map_v4v6_address (const char *src, char *dst) { u_char *p = (u_char *) dst; - char tmp[INADDRSZ]; int i; - /* Stash a temporary copy so our caller can update in place. */ - memcpy (tmp, src, INADDRSZ); + /* Move the IPv4 part to the right position. */ + memcpy (dst + 12, src, INADDRSZ); + /* Mark this ipv6 addr as a mapped ipv4. */ for (i = 0; i < 10; i++) *p++ = 0x00; *p++ = 0xff; - *p++ = 0xff; - /* Retrieve the saved copy and we're done. */ - memcpy ((void *) p, tmp, INADDRSZ); + *p = 0xff; } diff --git a/sunrpc/svc_run.c b/sunrpc/svc_run.c index 017910b453..feb1bf958e 100644 --- a/sunrpc/svc_run.c +++ b/sunrpc/svc_run.c @@ -51,36 +51,51 @@ void svc_run (void) { int i; + struct pollfd *my_pollfd = NULL; + int last_max_pollfd = 0; for (;;) { - struct pollfd *my_pollfd; + int max_pollfd = svc_max_pollfd; + if (max_pollfd == 0 && svc_pollfd == NULL) + break; - if (svc_max_pollfd == 0 && svc_pollfd == NULL) - return; + if (last_max_pollfd != max_pollfd) + { + struct pollfd *new_pollfd + = realloc (my_pollfd, sizeof (struct pollfd) * max_pollfd); + + if (new_pollfd == NULL) + { + perror (_("svc_run: - out of memory")); + break; + } + + last_max_pollfd = max_pollfd; + } - my_pollfd = malloc (sizeof (struct pollfd) * svc_max_pollfd); - for (i = 0; i < svc_max_pollfd; ++i) + for (i = 0; i < max_pollfd; ++i) { my_pollfd[i].fd = svc_pollfd[i].fd; my_pollfd[i].events = svc_pollfd[i].events; my_pollfd[i].revents = 0; } - switch (i = __poll (my_pollfd, svc_max_pollfd, -1)) + switch (i = __poll (my_pollfd, max_pollfd, -1)) { case -1: - free (my_pollfd); if (errno == EINTR) continue; perror (_("svc_run: - poll failed")); - return; + break; case 0: - free (my_pollfd); continue; default: INTUSE(svc_getreq_poll) (my_pollfd, i); - free (my_pollfd); + continue; } + break; } + + free (my_pollfd); } diff --git a/sysdeps/unix/sysv/linux/i386/getgroups.c b/sysdeps/unix/sysv/linux/i386/getgroups.c index b7a0a4efd4..f69baf943b 100644 --- a/sysdeps/unix/sysv/linux/i386/getgroups.c +++ b/sysdeps/unix/sysv/linux/i386/getgroups.c @@ -52,8 +52,6 @@ __getgroups (int n, gid_t *groups) } else { - int i, ngids; - __kernel_gid_t kernel_groups[n = MIN (n, __sysconf (_SC_NGROUPS_MAX))]; # ifdef __NR_getgroups32 if (__libc_missing_32bit_uids <= 0) { @@ -69,6 +67,9 @@ __getgroups (int n, gid_t *groups) } # endif /* __NR_getgroups32 */ + int i, ngids; + __kernel_gid_t kernel_groups[n = MIN (n, __sysconf (_SC_NGROUPS_MAX))]; + ngids = INLINE_SYSCALL (getgroups, 2, n, CHECK_N (kernel_groups, n)); if (n != 0 && ngids > 0) for (i = 0; i < ngids; i++) -- cgit v1.2.3