[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r16333 - in /trunk: ./ libc/ libc/iconv/ libc/iconvdata/ libc/inet/ libc/inet/netinet/ libc/libidn/ libc/locale/ libc/locale...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r16333 - in /trunk: ./ libc/ libc/iconv/ libc/iconvdata/ libc/inet/ libc/inet/netinet/ libc/libidn/ libc/locale/ libc/locale...
- From: joseph@xxxxxxxxxx
- Date: Thu, 22 Dec 2011 19:27:41 -0000
Author: joseph
Date: Thu Dec 22 19:27:39 2011
New Revision: 16333
Log:
Merge changes between r16068 and r16332 from /fsf/trunk.
Added:
trunk/libc/inet/tst-checks.c
- copied unchanged from r16332, fsf/trunk/libc/inet/tst-checks.c
trunk/libc/localedata/locales/bho_IN
- copied unchanged from r16332, fsf/trunk/libc/localedata/locales/bho_IN
trunk/libc/localedata/locales/brx_IN
- copied unchanged from r16332, fsf/trunk/libc/localedata/locales/brx_IN
trunk/libc/localedata/locales/es_CU
- copied unchanged from r16332, fsf/trunk/libc/localedata/locales/es_CU
trunk/libc/localedata/locales/unm_US
- copied unchanged from r16332, fsf/trunk/libc/localedata/locales/unm_US
trunk/libc/sysdeps/i386/i686/multiarch/wcschr-c.c
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcschr-c.c
trunk/libc/sysdeps/i386/i686/multiarch/wcschr-sse2.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcschr-sse2.S
trunk/libc/sysdeps/i386/i686/multiarch/wcschr.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcschr.S
trunk/libc/sysdeps/i386/i686/multiarch/wcscpy-c.c
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscpy-c.c
trunk/libc/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
trunk/libc/sysdeps/i386/i686/multiarch/wcscpy.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscpy.S
trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr-c.c
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr-c.c
trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr.S
trunk/libc/sysdeps/powerpc/locale-defines.sym
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/locale-defines.sym
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
trunk/libc/sysdeps/powerpc/powerpc32/power7/Makefile
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc32/power7/Makefile
trunk/libc/sysdeps/powerpc/powerpc32/power7/strcasecmp.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc32/power7/strcasecmp.S
trunk/libc/sysdeps/powerpc/powerpc32/power7/strcasecmp_l.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc32/power7/strcasecmp_l.S
trunk/libc/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
trunk/libc/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
trunk/libc/sysdeps/powerpc/powerpc64/power7/strcasecmp.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc64/power7/strcasecmp.S
trunk/libc/sysdeps/powerpc/powerpc64/power7/strcasecmp_l.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/powerpc/powerpc64/power7/strcasecmp_l.S
trunk/libc/sysdeps/x86_64/multiarch/wcscpy-c.c
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/x86_64/multiarch/wcscpy-c.c
trunk/libc/sysdeps/x86_64/multiarch/wcscpy-ssse3.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/x86_64/multiarch/wcscpy-ssse3.S
trunk/libc/sysdeps/x86_64/multiarch/wcscpy.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/x86_64/multiarch/wcscpy.S
trunk/libc/sysdeps/x86_64/wcschr.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/x86_64/wcschr.S
trunk/libc/sysdeps/x86_64/wcsrchr.S
- copied unchanged from r16332, fsf/trunk/libc/sysdeps/x86_64/wcsrchr.S
trunk/libc/wcsmbs/test-wcscpy.c
- copied unchanged from r16332, fsf/trunk/libc/wcsmbs/test-wcscpy.c
trunk/libc/wcsmbs/test-wcsrchr.c
- copied unchanged from r16332, fsf/trunk/libc/wcsmbs/test-wcsrchr.c
trunk/ports/ChangeLog.linux-generic
- copied unchanged from r16332, fsf/trunk/ports/ChangeLog.linux-generic
trunk/ports/ChangeLog.tile
- copied unchanged from r16332, fsf/trunk/ports/ChangeLog.tile
trunk/ports/data/c++-types-tile-linux-gnu.data
- copied unchanged from r16332, fsf/trunk/ports/data/c++-types-tile-linux-gnu.data
trunk/ports/sysdeps/arm/eabi/armv6t2/
- copied from r16332, fsf/trunk/ports/sysdeps/arm/eabi/armv6t2/
trunk/ports/sysdeps/arm/eabi/armv7/
- copied from r16332, fsf/trunk/ports/sysdeps/arm/eabi/armv7/
trunk/ports/sysdeps/tile/
- copied from r16332, fsf/trunk/ports/sysdeps/tile/
trunk/ports/sysdeps/unix/sysv/linux/generic/
- copied from r16332, fsf/trunk/ports/sysdeps/unix/sysv/linux/generic/
trunk/ports/sysdeps/unix/sysv/linux/tile/
- copied from r16332, fsf/trunk/ports/sysdeps/unix/sysv/linux/tile/
Removed:
trunk/libc/sysdeps/x86_64/fpu/s_scalbln.c
trunk/libc/sysdeps/x86_64/fpu/s_scalbn.c
trunk/ports/sysdeps/unix/sysv/linux/mips/sys/syscall.h
Modified:
trunk/ (props changed)
trunk/libc/ChangeLog
trunk/libc/NEWS
trunk/libc/iconv/gconv.h
trunk/libc/iconvdata/unicode.c
trunk/libc/iconvdata/utf-16.c
trunk/libc/iconvdata/utf-32.c
trunk/libc/inet/Makefile
trunk/libc/inet/netinet/in.h
trunk/libc/libidn/ChangeLog
trunk/libc/libidn/idna.c
trunk/libc/locale/iso-639.def
trunk/libc/localedata/ChangeLog
trunk/libc/localedata/SUPPORTED
trunk/libc/localedata/locales/nl_BE
trunk/libc/malloc/mcheck.h
trunk/libc/malloc/mtrace.c
trunk/libc/manual/resource.texi
trunk/libc/math/bits/math-finite.h
trunk/libc/math/libm-test.inc
trunk/libc/math/s_cacosh.c
trunk/libc/math/s_cacoshf.c
trunk/libc/math/s_cacoshl.c
trunk/libc/nis/nis_findserv.c
trunk/libc/nptl/ChangeLog
trunk/libc/nptl/allocatestack.c
trunk/libc/nptl/pthread_create.c
trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
trunk/libc/nscd/aicache.c
trunk/libc/resolv/res_init.c
trunk/libc/stdio-common/vfprintf.c
trunk/libc/stdlib/strtod_l.c
trunk/libc/string/test-strcmp.c
trunk/libc/string/test-strcpy.c
trunk/libc/string/test-strrchr.c
trunk/libc/sunrpc/clnt_tcp.c
trunk/libc/sunrpc/clnt_udp.c
trunk/libc/sunrpc/clnt_unix.c
trunk/libc/sysdeps/generic/dl-hash.h
trunk/libc/sysdeps/i386/i686/multiarch/Makefile
trunk/libc/sysdeps/powerpc/Makefile
trunk/libc/sysdeps/powerpc/fpu/e_hypot.c
trunk/libc/sysdeps/powerpc/powerpc32/a2/memcpy.S
trunk/libc/sysdeps/powerpc/powerpc32/dl-start.S
trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_floor.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_lround.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_rint.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_round.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_trunc.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
trunk/libc/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
trunk/libc/sysdeps/powerpc/powerpc32/memset.S
trunk/libc/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
trunk/libc/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S
trunk/libc/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S
trunk/libc/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S
trunk/libc/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S
trunk/libc/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
trunk/libc/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S
trunk/libc/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
trunk/libc/sysdeps/powerpc/powerpc32/sysdep.h
trunk/libc/sysdeps/powerpc/powerpc64/power7/Makefile
trunk/libc/sysdeps/unix/sysv/linux/Makefile
trunk/libc/sysdeps/unix/sysv/linux/powerpc/Makefile
trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S
trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
trunk/libc/sysdeps/unix/sysv/linux/s390/Makefile
trunk/libc/sysdeps/unix/sysv/linux/sparc/Makefile
trunk/libc/sysdeps/unix/sysv/linux/sparc/sys/epoll.h
trunk/libc/sysdeps/unix/sysv/linux/sys/epoll.h
trunk/libc/sysdeps/unix/sysv/linux/x86_64/Makefile
trunk/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h
trunk/libc/sysdeps/x86_64/fpu/bits/fenv.h
trunk/libc/sysdeps/x86_64/multiarch/Makefile
trunk/libc/sysdeps/x86_64/multiarch/wmemcmp-c.c
trunk/libc/time/tzfile.c
trunk/libc/wcsmbs/Makefile
trunk/libc/wcsmbs/wcschr.c
trunk/ports/ChangeLog.arm
trunk/ports/ChangeLog.m68k
trunk/ports/ChangeLog.mips
trunk/ports/sysdeps/arm/preconfigure
trunk/ports/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
trunk/ports/sysdeps/unix/sysv/linux/m68k/syscall.S
trunk/ports/sysdeps/unix/sysv/linux/mips/Makefile
trunk/ports/sysdeps/unix/sysv/linux/mips/configure
trunk/ports/sysdeps/unix/sysv/linux/mips/configure.in
trunk/ports/sysdeps/unix/sysv/linux/mips/sys/epoll.h
Propchange: trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec 22 19:27:39 2011
@@ -1,1 +1,1 @@
-/fsf/trunk:15224-16068
+/fsf/trunk:15224-16332
Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Thu Dec 22 19:27:39 2011
@@ -1,3 +1,238 @@
+2011-12-22 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/Makefile (syscall-list-variants)
+ (syscall-list-default-options, syscall-list-default-condition)
+ (syscall-list-includes): Define.
+ ($(objpfx)syscall-%.h $(objpfx)syscall-%.d): Support arbitrary
+ list of ABIs and options and #if conditions for each ABI. Do not
+ handle common syscalls between ABIs specially.
+ * sysdeps/unix/sysv/linux/powerpc/Makefile (64bit-predefine):
+ Remove.
+ (syscall-list-variants, syscall-list-32bit-options)
+ (syscall-list-32bit-condition, syscall-list-64bit-options)
+ (syscall-list-64bit-condition): Define.
+ * sysdeps/unix/sysv/linux/s390/Makefile (64bit-predefine): Remove.
+ (syscall-list-variants, syscall-list-32bit-options)
+ (syscall-list-32bit-condition, syscall-list-64bit-options)
+ (syscall-list-64bit-condition): Define.
+ * sysdeps/unix/sysv/linux/sparc/Makefile (64bit-predefine):
+ Remove.
+ (syscall-list-variants, syscall-list-32bit-options)
+ (syscall-list-32bit-condition, syscall-list-64bit-options)
+ (syscall-list-64bit-condition): Define.
+ * sysdeps/unix/sysv/linux/x86_64/Makefile (64bit-predefine):
+ Remove.
+ (syscall-list-variants, syscall-list-32bit-options)
+ (syscall-list-32bit-condition, syscall-list-64bit-options)
+ (syscall-list-64bit-condition): Define.
+
+2011-12-22 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * locale/iso-639.def: Add brx entry.
+
+ [BZ #13328]
+ * malloc/mtrace.c (tr_freehook): Avoid unnecessary unlock/lock.
+ Proposed by Mariusz_Cukr <marcukr@xxxxx>.
+
+ * sysdeps/x86_64/fpu/bits/fenv.h: Use __REDIRECT_NTH for
+ __feraiseexcept_renamed.
+
+2011-12-21 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #13538]
+ * sysdeps/unix/sysv/linux/sys/epoll.h: Initialize EPOLLONESHOT and
+ EPOLLET with unsigned values.
+ * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sys/epoll.h: Likewise.
+
+ * math/s_cacosh.c: Use Kahan's formula if the subtraction could lead
+ to large cancellation.
+ * math/s_cacoshf.c: Likewise.
+ * math/s_cacoshl.c: Likewise.
+
+2011-11-18 Richard B. Kreckel <kreckel@xxxxxxxx>
+
+ [BZ #13305]
+ * math/s_cacosh.c: Fix rare miscomputation in cacosh().
+ * math/s_cacoshf.c: Likewise.
+ * math/s_cacoshl.c: Likewise.
+
+2011-12-21 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #13439]
+ * iconv/gconv.h: Define __GCONV_SWAP.
+ * iconvdata/unicode.c: The swap bit must be stored in __flags.
+ * iconvdata/utf-16.c: Likewise.
+ * iconvdata/utf-32.c: Likewise.
+
+2011-12-21 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
+
+ [BZ #13524]
+ * stdlib/strtod_l.c (____STRTOF_INTERNAL): Clear lowest limb of
+ numerator after shifting it by one limb.
+
+2011-12-19 Rafael ÃÂvila de EspÃÂndola <rafael.espindola@xxxxxxxxx>
+
+ * sysdeps/x86_64/fpu/bits/fenv.h (feraiseexcept): Define it only
+ under [__USE_EXTERN_INLINES].
+
+2011-12-17 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #13446]
+ * stdio-common/vfprintf.c (vfprintf): Fix extension of specs array.
+
+2011-11-22 Adhemerval Zanella <azanella@xxxxxxxxxxxxxxxxxx>
+
+ * sysdeps/powerpc/Makefile: Added locale-defines.sym generation.
+ * sysdeps/powerpc/locale-defines.sym: Locale definitions for strcasecmp
+ optimized code.
+ * sysdeps/powerpc/powerpc32/power7/Makefile: New file.
+ * sysdeps/powerpc/powerpc32/power7/strcasecmp.S: New file.
+ * sysdeps/powerpc/powerpc32/power7/strcasecmp_l.S: New file.
+ * sysdeps/powerpc/powerpc64/power7/Makefile: Added unroll-loop option
+ for strncasecmp/strncasecmp_l compilation.
+ * sysdeps/powerpc/powerpc64/power7/strcasecmp.S: New file.
+ * sysdeps/powerpc/powerpc64/power7/strcasecmp_l.S: New file.
+
+2011-12-08 Marek Polacek <mpolacek@xxxxxxxxxx>
+
+ [BZ #13484]
+ * math/bits/math-finite.h: Use __REDIRECT_NTH and __NTH instead
+ of __asm__.
+
+2011-12-17 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #13506]
+ * time/tzfile.c (__tzfile_read): Check values from file header.
+
+2011-11-21 Will Schmidt <will_schmidt@xxxxxxxxxxxx>
+
+ * powerpc/powerpc32/sysdep.h: Define SETUP_GOT_ACCESS() macro.
+ * powerpc/powerpc32/a2/memcpy.S: Use SETUP_GOT_ACCESS() macro.
+ * powerpc/powerpc32/dl-start.S: Likewise.
+ * powerpc/powerpc32/elf/start.S: Likewise.
+ * powerpc/powerpc32/fpu/__longjmp-common.S: Likewise.
+ * powerpc/powerpc32/fpu/s_ceil.S: Likewise.
+ * powerpc/powerpc32/fpu/s_ceilf.S: Likewise.
+ * powerpc/powerpc32/fpu/s_floor.S: Likewise.
+ * powerpc/powerpc32/fpu/s_floorf.S: Likewise.
+ * powerpc/powerpc32/fpu/s_lround.S: Likewise.
+ * powerpc/powerpc32/fpu/s_rint.S: Likewise.
+ * powerpc/powerpc32/fpu/s_rintf.S: Likewise.
+ * powerpc/powerpc32/fpu/s_round.S: Likewise.
+ * powerpc/powerpc32/fpu/s_roundf.S: Likewise.
+ * powerpc/powerpc32/fpu/s_trunc.S: Likewise.
+ * powerpc/powerpc32/fpu/s_truncf.S: Likewise.
+ * powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
+ * powerpc/powerpc32/memset.S: Likewise.
+ * powerpc/powerpc32/power4/fpu/s_llround.S: Likewise.
+ * powerpc/powerpc32/power4/fpu/w_sqrt.S: Likewise.
+ * powerpc/powerpc32/power4/fpu/w_sqrtf.S: Likewise.
+ * powerpc/powerpc32/power5/fpu/w_sqrt.S: Likewise.
+ * powerpc/powerpc32/power5/fpu/w_sqrtf.S: Likewise.
+ * powerpc/powerpc32/power7/fpu/s_finite.S: Likewise.
+ * powerpc/powerpc32/power7/fpu/s_isinf.S: Likewise.
+ * powerpc/powerpc32/power7/fpu/s_isnan.S: Likewise.
+ * unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S: Likewise.
+ * unix/sysv/linux/powerpc/powerpc32/brk.S: Likewise.
+ * unix/sysv/linux/powerpc/powerpc32/getcontext-common.S: Likewise.
+ * unix/sysv/linux/powerpc/powerpc32/setcontext-common.S: Likewise.
+ * unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S: Likewise.
+
+2011-11-18 Adhemerval Zanella <azanella@xxxxxxxxxxxxxxxxxx>
+
+ * math/libm-test.inc: Added more nearbyint tests.
+ * sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S: New file.
+ * sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S: New file.
+ * sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S: New file.
+ * sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S: New file.
+
+2011-11-21 Ross Lagerwall <rosslagerwall@xxxxxxxxx>
+
+ * resolv/res_init.c (__res_vinit): Open /etc/resolv.conf with
+ FD_CLOEXEC.
+
+2011-11-14 Liubov Dmitrieva <liubov.dmitrieva@xxxxxxxxx>
+
+ * sysdeps/x86_64/multiarch/Makefile [subdir=wcsmbs] (sysdep_routines):
+ Add wcscpy-ssse3 wcscpy-c.
+ * sysdeps/x86_64/multiarch/wcscpy-ssse3.S: New file.
+ * sysdeps/x86_64/multiarch/wcscpy-c.c: New file.
+ * sysdeps/x86_64/multiarch/wcscpy.S: New file.
+ * sysdeps/x86_64/wcschr.S: New file.
+ * sysdeps/x86_64/wcsrchr.S: New file.
+ * string/test-strcmp.c: Remove checking of wcscmp function for
+ wrong alignments.
+ * sysdeps/i386/i686/multiarch/Makefile [subdir=wcsmbs]
+ (sysdep_routines): Add wcscpy-ssse3 wcscpy-c wcschr-sse2 wcschr-c
+ wcsrchr-sse2 wcsrchr-c.
+ * sysdeps/i386/i686/multiarch/wcschr.S: New file.
+ * sysdeps/i386/i686/multiarch/wcschr-c.c: New file.
+ * sysdeps/i386/i686/multiarch/wcschr-sse2.S: New file.
+ * sysdeps/i386/i686/multiarch/wcsrchr.S: New file.
+ * sysdeps/i386/i686/multiarch/wcsrchr-c.c: New file.
+ * sysdeps/i386/i686/multiarch/wcsrchr-sse2.S: New file.
+ * sysdeps/i386/i686/multiarch/wcscpy.S: New file.
+ * sysdeps/i386/i686/multiarch/wcscpy-c.c: New file.
+ * sysdeps/i386/i686/multiarch/wcscpy-ssse3.S: New file.
+ * wcsmbc/wcschr.c (WCSCHR): New macro.
+
+2011-11-17 Liubov Dmitrieva <liubov.dmitrieva@xxxxxxxxx>
+
+ * wcsmbs/Makefile (strop-tests): Add wcsrchr wcscpy.
+ * wcsmbs/test-wcsrchr.c: New file.
+ * string/test-strrchr.c: Add wcsrchr support.
+ (WIDE): New macro.
+ * wcsmbs/test-wcscpy.c: New file.
+ * string/test-strcpy.c: Add wcscpy support.
+ (WIDE): New macro.
+
+2011-12-10 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * sysdeps/generic/dl-hash.h (_dl_elf_hash): Lift one operation out of
+ the inner loop.
+
+2011-12-06 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
+
+ [BZ #13472]
+ * sysdeps/powerpc/fpu/e_hypot.c (twoM600): Correct value.
+
+2011-12-04 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * sysdeps/generic/dl-hash.h (_dl_elf_hash): Fix attribute.
+ Minor optimizations.
+
+ * sunrpc/clnt_unix.c (clntunix_control): Fix aliasing issues.
+ * sunrpc/clnt_tcp.c (clnttcp_control): Likewise.
+ * sunrpc/clnt_udp.c (clntudp_call): Likewise.
+
+2011-12-03 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * inet/netinet/in.h: Provide versions of IN6_IS_ADDR_UNSPECIFIED,
+ IN6_IS_ADDR_LOOPBACK, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_SITELOCAL,
+ IN6_IS_ADDR_V4MAPPED, IN6_IS_ADDR_V4COMPAT, and IN6_ARE_ADDR_EQUAL
+ for gcc to avoid warnings.
+ * inet/Makefile (tests): Add tst-checks.
+ * inet/tst-checks.c: New file.
+
+ * sysdeps/generic/dl-hash.h (_dl_elf_hash): Add attribute to avoid
+ warning.
+
+ * sysdeps/x86_64/multiarch/wmemcmp-c.c: Provide prototype for
+ __wmemcmp_sse2.
+
+ * sysdeps/x86_64/fpu/s_scalbln.c: Removed.
+ * sysdeps/x86_64/fpu/s_scalbn.c: Removed.
+
+ * malloc/mcheck.h: Fix use of incorrect encoding in comment.
+
+2011-12-02 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * nis/nis_findserv.c (__nis_findfastest_with_timeout): Avoid aliasing
+ problem.
+
+ * nscd/aicache.c (addhstaiX): Avoid unused variable warning.
+
2011-11-29 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
* sysdeps/unix/sysv/linux/sh/bits/atomic.h (rNOSP): Define
Modified: trunk/libc/NEWS
==============================================================================
--- trunk/libc/NEWS (original)
+++ trunk/libc/NEWS Thu Dec 22 19:27:39 2011
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2011-11-14
+GNU C Library NEWS -- history of user-visible changes. 2011-12-22
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -12,7 +12,9 @@
6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874,
12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090,
13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13192,
- 13268, 13276, 13291, 13335, 13337, 13344, 13358, 13367
+ 13268, 13276, 13282, 13291, 13305, 13328, 13335, 13337, 13344, 13358,
+ 13367, 13413, 13416, 13423, 13439, 13446, 13472, 13484, 13506, 13515,
+ 13523, 13524, 13538
* New program pldd to list loaded object of a process
Implemented by Ulrich Drepper.
@@ -34,7 +36,8 @@
* Optimized strchr and strrchr for SSE on x86-32.
Contributed by Liubov Dmitrieva.
-* Optimized memchr, memrchr, rawmemchr, memcmp, wmemcmp for x86-64 and x86-32.
+* Optimized memchr, memrchr, rawmemchr, memcmp, wmemcmp, wcschr, wcscpy
+ for x86-64 and x86-32.
Contributed by Liubov Dmitrieva.
* New interfaces: scandirat, scandirat64
@@ -59,6 +62,11 @@
* Optimized strcasecmp and strncasecmp for SSSE3 and SSE4.2 on x86-32.
Implemented by Ulrich Drepper.
+
+* Optimized nearbyint and strcasecmp for PPC.
+ Implemented by Adhemerval Zanella.
+
+* New locales: bho_IN, unm_US, es_CU
Version 2.14
Modified: trunk/libc/iconv/gconv.h
==============================================================================
--- trunk/libc/iconv/gconv.h (original)
+++ trunk/libc/iconv/gconv.h Thu Dec 22 19:27:39 2011
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-1999, 2000-2002, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1997-1999, 2000-2002, 2007, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -56,7 +56,8 @@
enum
{
__GCONV_IS_LAST = 0x0001,
- __GCONV_IGNORE_ERRORS = 0x0002
+ __GCONV_IGNORE_ERRORS = 0x0002,
+ __GCONV_SWAP = 0x0004
};
Modified: trunk/libc/iconvdata/unicode.c
==============================================================================
--- trunk/libc/iconvdata/unicode.c (original)
+++ trunk/libc/iconvdata/unicode.c Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Conversion module for Unicode
- Copyright (C) 1999, 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000-2002, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1999.
@@ -57,7 +57,7 @@
*inptrp = inptr += 2; \
else if (get16u (inptr) == BOM_OE) \
{ \
- ((struct unicode_data *) step->__data)->swap = 1; \
+ data->__flags |= __GCONV_SWAP; \
*inptrp = inptr += 2; \
} \
} \
@@ -71,7 +71,7 @@
put16u (outbuf, BOM); \
outbuf += 2; \
} \
- swap = ((struct unicode_data *) step->__data)->swap;
+ swap = data->__flags & __GCONV_SWAP;
#define EXTRA_LOOP_ARGS , swap
@@ -86,7 +86,6 @@
struct unicode_data
{
enum direction dir;
- int swap;
};
@@ -110,7 +109,6 @@
if (new_data != NULL)
{
new_data->dir = dir;
- new_data->swap = 0;
step->__data = new_data;
if (dir == from_unicode)
Modified: trunk/libc/iconvdata/utf-16.c
==============================================================================
--- trunk/libc/iconvdata/utf-16.c (original)
+++ trunk/libc/iconvdata/utf-16.c Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Conversion module for UTF-16.
- Copyright (C) 1999, 2000-2002, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000-2002, 2003, 2005, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1999.
@@ -44,35 +44,42 @@
#define PREPARE_LOOP \
enum direction dir = ((struct utf16_data *) step->__data)->dir; \
enum variant var = ((struct utf16_data *) step->__data)->var; \
- if (__builtin_expect (data->__invocation_counter == 0, 0) && var == UTF_16) \
+ if (__builtin_expect (data->__invocation_counter == 0, 0)) \
{ \
- if (FROM_DIRECTION) \
+ if (var == UTF_16) \
{ \
- /* We have to find out which byte order the file is encoded in. */ \
- if (inptr + 2 > inend) \
- return (inptr == inend \
- ? __GCONV_EMPTY_INPUT : __GCONV_INCOMPLETE_INPUT); \
- \
- if (get16u (inptr) == BOM) \
- /* Simply ignore the BOM character. */ \
- *inptrp = inptr += 2; \
- else if (get16u (inptr) == BOM_OE) \
+ if (FROM_DIRECTION) \
{ \
- ((struct utf16_data *) step->__data)->swap = 1; \
- *inptrp = inptr += 2; \
+ /* We have to find out which byte order the file is \
+ encoded in. */ \
+ if (inptr + 2 > inend) \
+ return (inptr == inend \
+ ? __GCONV_EMPTY_INPUT : __GCONV_INCOMPLETE_INPUT); \
+ \
+ if (get16u (inptr) == BOM) \
+ /* Simply ignore the BOM character. */ \
+ *inptrp = inptr += 2; \
+ else if (get16u (inptr) == BOM_OE) \
+ { \
+ data->__flags |= __GCONV_SWAP; \
+ *inptrp = inptr += 2; \
+ } \
+ } \
+ else if (!FROM_DIRECTION && !data->__internal_use) \
+ { \
+ /* Emit the Byte Order Mark. */ \
+ if (__builtin_expect (outbuf + 2 > outend, 0)) \
+ return __GCONV_FULL_OUTPUT; \
+ \
+ put16u (outbuf, BOM); \
+ outbuf += 2; \
} \
} \
- else if (!FROM_DIRECTION && !data->__internal_use) \
- { \
- /* Emit the Byte Order Mark. */ \
- if (__builtin_expect (outbuf + 2 > outend, 0)) \
- return __GCONV_FULL_OUTPUT; \
- \
- put16u (outbuf, BOM); \
- outbuf += 2; \
- } \
+ else if ((var == UTF_16LE && BYTE_ORDER == BIG_ENDIAN) \
+ || (var == UTF_16BE && BYTE_ORDER == LITTLE_ENDIAN)) \
+ data->__flags |= __GCONV_SWAP; \
} \
- int swap = ((struct utf16_data *) step->__data)->swap;
+ const int swap = data->__flags & __GCONV_SWAP;
#define EXTRA_LOOP_ARGS , swap
@@ -96,7 +103,6 @@
{
enum direction dir;
enum variant var;
- int swap;
};
@@ -151,9 +157,6 @@
{
new_data->dir = dir;
new_data->var = var;
- new_data->swap = ((var == UTF_16LE && BYTE_ORDER == BIG_ENDIAN)
- || (var == UTF_16BE
- && BYTE_ORDER == LITTLE_ENDIAN));
step->__data = new_data;
if (dir == from_utf16)
Modified: trunk/libc/iconvdata/utf-32.c
==============================================================================
--- trunk/libc/iconvdata/utf-32.c (original)
+++ trunk/libc/iconvdata/utf-32.c Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Conversion module for UTF-32.
- Copyright (C) 1999, 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000-2002, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -45,7 +45,7 @@
int swap; \
if (FROM_DIRECTION && var == UTF_32) \
{ \
- if (data->__invocation_counter == 0) \
+ if (__builtin_expect (data->__invocation_counter == 0, 0)) \
{ \
/* We have to find out which byte order the file is encoded in. */ \
if (inptr + 4 > inend) \
@@ -57,7 +57,7 @@
*inptrp = inptr += 4; \
else if (get32u (inptr) == BOM_OE) \
{ \
- ((struct utf32_data *) step->__data)->swap = 1; \
+ data->__flags |= __GCONV_SWAP; \
*inptrp = inptr += 4; \
} \
} \
@@ -72,7 +72,11 @@
put32u (outbuf, BOM); \
outbuf += 4; \
} \
- swap = ((struct utf32_data *) step->__data)->swap;
+ else if (__builtin_expect (data->__invocation_counter == 0, 0) \
+ && ((var == UTF_32LE && BYTE_ORDER == BIG_ENDIAN) \
+ || (var == UTF_32BE && BYTE_ORDER == LITTLE_ENDIAN))) \
+ data->__flags |= __GCONV_SWAP; \
+ swap = data->__flags & __GCONV_SWAP;
#define EXTRA_LOOP_ARGS , var, swap
@@ -96,7 +100,6 @@
{
enum direction dir;
enum variant var;
- int swap;
};
@@ -151,9 +154,6 @@
{
new_data->dir = dir;
new_data->var = var;
- new_data->swap = ((var == UTF_32LE && BYTE_ORDER == BIG_ENDIAN)
- || (var == UTF_32BE
- && BYTE_ORDER == LITTLE_ENDIAN));
step->__data = new_data;
if (dir == from_utf32)
@@ -216,9 +216,8 @@
} \
\
if (swap) \
- put32 (outptr, bswap_32 (c)); \
- else \
- put32 (outptr, c); \
+ c = bswap_32 (c); \
+ put32 (outptr, c); \
\
outptr += 4; \
inptr += 4; \
Modified: trunk/libc/inet/Makefile
==============================================================================
--- trunk/libc/inet/Makefile (original)
+++ trunk/libc/inet/Makefile Thu Dec 22 19:27:39 2011
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006, 2007, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1991-2006, 2007, 2009, 2011 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
@@ -60,7 +60,7 @@
tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
tst-gethnm test-ifaddrs bug-if1 tst-ether_line \
- tst-getni1 tst-getni2 tst-inet6_rth
+ tst-getni1 tst-getni2 tst-inet6_rth tst-checks
tests-$(OPTION_EGLIBC_ADVANCED_INET6) += test-inet6_opt
include ../Rules
@@ -105,5 +105,5 @@
ifeq (yes,$(build-static-nss))
otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
- $(resolvobjdir)/libresolv.a
+ $(resolvobjdir)/libresolv.a
endif
Modified: trunk/libc/inet/netinet/in.h
==============================================================================
--- trunk/libc/inet/netinet/in.h (original)
+++ trunk/libc/inet/netinet/in.h Thu Dec 22 19:27:39 2011
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008
+/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008, 2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -396,44 +396,96 @@
# endif
#endif
-#define IN6_IS_ADDR_UNSPECIFIED(a) \
+#ifdef __GNUC__
+# define IN6_IS_ADDR_UNSPECIFIED(a) \
+ (__extension__ \
+ ({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
+ __a->s6_addr32[0] == 0 \
+ && __a->s6_addr32[1] == 0 \
+ && __a->s6_addr32[2] == 0 \
+ && __a->s6_addr32[3] == 0; }))
+
+# define IN6_IS_ADDR_LOOPBACK(a) \
+ (__extension__ \
+ ({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
+ __a->s6_addr32[0] == 0 \
+ && __a->s6_addr32[1] == 0 \
+ && __a->s6_addr32[2] == 0 \
+ && __a->s6_addr32[3] == htonl (1); }))
+
+# define IN6_IS_ADDR_LINKLOCAL(a) \
+ (__extension__ \
+ ({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
+ (__a->s6_addr32[0] & htonl (0xffc00000)) == htonl (0xfe800000); }))
+
+# define IN6_IS_ADDR_SITELOCAL(a) \
+ (__extension__ \
+ ({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
+ (__a->s6_addr32[0] & htonl (0xffc00000)) == htonl (0xfec00000); }))
+
+# define IN6_IS_ADDR_V4MAPPED(a) \
+ (__extension__ \
+ ({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
+ __a->s6_addr32[0] == 0 \
+ && __a->s6_addr32[1] == 0 \
+ && __a->s6_addr32[2] == htonl (0xffff); }))
+
+# define IN6_IS_ADDR_V4COMPAT(a) \
+ (__extension__ \
+ ({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
+ __a->s6_addr32[0] == 0 \
+ && __a->s6_addr32[1] == 0 \
+ && __a->s6_addr32[2] == 0 \
+ && ntohl (__a->s6_addr32[3]) > 1; }))
+
+# define IN6_ARE_ADDR_EQUAL(a,b) \
+ (__extension__ \
+ ({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
+ __const struct in6_addr *__b = (__const struct in6_addr *) (b); \
+ __a->s6_addr32[0] == __b->s6_addr32[0] \
+ && __a->s6_addr32[1] == __b->s6_addr32[1] \
+ && __a->s6_addr32[2] == __b->s6_addr32[2] \
+ && __a->s6_addr32[3] == __b->s6_addr32[3]; }))
+#else
+# define IN6_IS_ADDR_UNSPECIFIED(a) \
(((__const uint32_t *) (a))[0] == 0 \
&& ((__const uint32_t *) (a))[1] == 0 \
&& ((__const uint32_t *) (a))[2] == 0 \
&& ((__const uint32_t *) (a))[3] == 0)
-#define IN6_IS_ADDR_LOOPBACK(a) \
+# define IN6_IS_ADDR_LOOPBACK(a) \
(((__const uint32_t *) (a))[0] == 0 \
&& ((__const uint32_t *) (a))[1] == 0 \
&& ((__const uint32_t *) (a))[2] == 0 \
&& ((__const uint32_t *) (a))[3] == htonl (1))
-#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
-
-#define IN6_IS_ADDR_LINKLOCAL(a) \
+# define IN6_IS_ADDR_LINKLOCAL(a) \
((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
== htonl (0xfe800000))
-#define IN6_IS_ADDR_SITELOCAL(a) \
+# define IN6_IS_ADDR_SITELOCAL(a) \
((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
== htonl (0xfec00000))
-#define IN6_IS_ADDR_V4MAPPED(a) \
+# define IN6_IS_ADDR_V4MAPPED(a) \
((((__const uint32_t *) (a))[0] == 0) \
&& (((__const uint32_t *) (a))[1] == 0) \
&& (((__const uint32_t *) (a))[2] == htonl (0xffff)))
-#define IN6_IS_ADDR_V4COMPAT(a) \
+# define IN6_IS_ADDR_V4COMPAT(a) \
((((__const uint32_t *) (a))[0] == 0) \
&& (((__const uint32_t *) (a))[1] == 0) \
&& (((__const uint32_t *) (a))[2] == 0) \
&& (ntohl (((__const uint32_t *) (a))[3]) > 1))
-#define IN6_ARE_ADDR_EQUAL(a,b) \
+# define IN6_ARE_ADDR_EQUAL(a,b) \
((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \
&& (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \
&& (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \
&& (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
+#endif
+
+#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
#if defined __USE_MISC || defined __USE_GNU
/* Bind socket to a privileged IP port. */
Modified: trunk/libc/libidn/ChangeLog
==============================================================================
--- trunk/libc/libidn/ChangeLog (original)
+++ trunk/libc/libidn/ChangeLog Thu Dec 22 19:27:39 2011
@@ -1,3 +1,7 @@
+2011-12-03 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * idna.c (idna_to_unicode_4z4z): Remove variable rc.
+
2008-02-10 Jim Meyering <meyering@xxxxxxxxxx>
* stringprep.c (stringprep, stringprep_profile): Remove useless
Modified: trunk/libc/libidn/idna.c
==============================================================================
--- trunk/libc/libidn/idna.c (original)
+++ trunk/libc/libidn/idna.c Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* idna.c Convert to or from IDN strings.
- * Copyright (C) 2002, 2003, 2004 Simon Josefsson
+ * Copyright (C) 2002, 2003, 2004, 2011 Simon Josefsson
*
* This file is part of GNU Libidn.
*
@@ -614,7 +614,6 @@
size_t buflen;
uint32_t *out = NULL;
size_t outlen = 0;
- int rc;
*output = NULL;
@@ -630,8 +629,8 @@
if (!buf)
return IDNA_MALLOC_ERROR;
- rc = idna_to_unicode_44i (start, end - start, buf, &buflen, flags);
- /* don't check rc as per specification! */
+ idna_to_unicode_44i (start, end - start, buf, &buflen, flags);
+ /* don't check return value as per specification! */
if (out)
{
Modified: trunk/libc/locale/iso-639.def
==============================================================================
--- trunk/libc/locale/iso-639.def (original)
+++ trunk/libc/locale/iso-639.def Thu Dec 22 19:27:39 2011
@@ -70,6 +70,7 @@
DEFINE_LANGUAGE_CODE3 ("Bini", bin, bin)
DEFINE_LANGUAGE_CODE ("Bislama", bi, bis, bis)
DEFINE_LANGUAGE_CODE3 ("Blin; Bilin", byn, byn)
+DEFINE_LANGUAGE_CODE3 ("Bodo", brx, brx)
DEFINE_LANGUAGE_CODE ("Bosnian", bs, bos, bos)
DEFINE_LANGUAGE_CODE3 ("Braj", bra, bra)
DEFINE_LANGUAGE_CODE ("Breton", br, bre, bre)
Modified: trunk/libc/localedata/ChangeLog
==============================================================================
--- trunk/libc/localedata/ChangeLog (original)
+++ trunk/libc/localedata/ChangeLog Thu Dec 22 19:27:39 2011
@@ -1,3 +1,24 @@
+2011-12-22 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #13282]
+ * locales/brx_IN: New file.
+ * SUPPORTED (SUPPORTED-LOCALES): Add appropriate entry
+
+ [BZ #13413]
+ * locales/nl_BE: Use LC_MONETARY from nl_NL.
+
+ [BZ #13416]
+ * locales/es_CU: New file.
+ * SUPPORTED (SUPPORTED-LOCALES): Add appropriate entry
+
+ [BZ #13423]
+ * locales/unm_US: New file.
+ * SUPPORTED (SUPPORTED-LOCALES): Add appropriate entry
+
+ [BZ #13523]
+ * locales/bho_IN: New file.
+ * SUPPORTED (SUPPORTED-LOCALES): Add appropriate entry
+
2011-11-17 Ulrich Drepper <drepper@xxxxxxxxx>
* Makefile (charmaps): Not need to filter out any of the VC
Modified: trunk/libc/localedata/SUPPORTED
==============================================================================
--- trunk/libc/localedata/SUPPORTED (original)
+++ trunk/libc/localedata/SUPPORTED Thu Dec 22 19:27:39 2011
@@ -58,6 +58,7 @@
ber_MA/UTF-8 \
bg_BG.UTF-8/UTF-8 \
bg_BG/CP1251 \
+bho_IN/UTF-8 \
bn_BD/UTF-8 \
bn_IN/UTF-8 \
bo_CN/UTF-8 \
@@ -65,6 +66,7 @@
br_FR.UTF-8/UTF-8 \
br_FR/ISO-8859-1 \
br_FR@euro/ISO-8859-15 \
+brx_IN/UTF-8 \
bs_BA.UTF-8/UTF-8 \
bs_BA/ISO-8859-2 \
byn_ER/UTF-8 \
@@ -147,6 +149,7 @@
es_CO/ISO-8859-1 \
es_CR.UTF-8/UTF-8 \
es_CR/ISO-8859-1 \
+es_CU/UTF-8 \
es_DO.UTF-8/UTF-8 \
es_DO/ISO-8859-1 \
es_EC.UTF-8/UTF-8 \
@@ -399,6 +402,7 @@
ug_CN/UTF-8 \
uk_UA.UTF-8/UTF-8 \
uk_UA/KOI8-U \
+unm_US/UTF-8 \
ur_PK/UTF-8 \
uz_UZ/ISO-8859-1 \
uz_UZ@cyrillic/UTF-8 \
Modified: trunk/libc/localedata/locales/nl_BE
==============================================================================
--- trunk/libc/localedata/locales/nl_BE (original)
+++ trunk/libc/localedata/locales/nl_BE Thu Dec 22 19:27:39 2011
@@ -59,7 +59,7 @@
END LC_MESSAGES
LC_MONETARY
-copy "fr_BE"
+copy "nl_NL"
END LC_MONETARY
LC_NUMERIC
Modified: trunk/libc/malloc/mcheck.h
==============================================================================
--- trunk/libc/malloc/mcheck.h (original)
+++ trunk/libc/malloc/mcheck.h Thu Dec 22 19:27:39 2011
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -41,7 +41,7 @@
null, the standard function prints on stderr and then calls `abort'. */
extern int mcheck (void (*__abortfunc) (enum mcheck_status)) __THROW;
-/* Similar to `mcheck but performs checks for all block whenever one of
+/* Similar to `mcheck' but performs checks for all block whenever one of
the memory handling functions is called. This can be very slow. */
extern int mcheck_pedantic (void (*__abortfunc) (enum mcheck_status)) __THROW;
Modified: trunk/libc/malloc/mtrace.c
==============================================================================
--- trunk/libc/malloc/mtrace.c (original)
+++ trunk/libc/malloc/mtrace.c Thu Dec 22 19:27:39 2011
@@ -146,10 +146,12 @@
tr_where (caller, info);
/* Be sure to print it first. */
fprintf (mallstream, "- %p\n", ptr);
- __libc_lock_unlock (lock);
if (ptr == mallwatch)
- tr_break ();
- __libc_lock_lock (lock);
+ {
+ __libc_lock_unlock (lock);
+ tr_break ();
+ __libc_lock_lock (lock);
+ }
__free_hook = tr_old_free_hook;
if (tr_old_free_hook != NULL)
(*tr_old_free_hook) (ptr, caller);
Modified: trunk/libc/manual/resource.texi
==============================================================================
--- trunk/libc/manual/resource.texi (original)
+++ trunk/libc/manual/resource.texi Thu Dec 22 19:27:39 2011
@@ -1607,7 +1607,7 @@
@end smallexample
@noindent
-returns the number of processors which are currently inline (i.e.,
+returns the number of processors which are currently online (i.e.,
available).
For these two pieces of information the GNU C library also provides
Modified: trunk/libc/math/bits/math-finite.h
==============================================================================
--- trunk/libc/math/bits/math-finite.h (original)
+++ trunk/libc/math/bits/math-finite.h Thu Dec 22 19:27:39 2011
@@ -22,155 +22,159 @@
#endif
/* acos. */
-extern double acos (double) __asm__ ("__acos_finite");
-extern float acosf (float) __asm__ ("__acosf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double acosl (long double) __asm__ ("__acosl_finite");
+extern double __REDIRECT_NTH (acos, (double), __acos_finite);
+extern float __REDIRECT_NTH (acosf, (float), __acosf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (acosl, (long double), __acosl_finite);
#endif
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
/* acosh. */
-extern double acosh (double) __asm__ ("__acosh_finite");
-extern float acoshf (float) __asm__ ("__acoshf_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double acoshl (long double) __asm__ ("__acoshl_finite");
+extern double __REDIRECT_NTH (acosh, (double), __acosh_finite);
+extern float __REDIRECT_NTH (acoshf, (float), __acoshf_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (acoshl, (long double), __acoshl_finite);
# endif
#endif
/* asin. */
-extern double asin (double) __asm__ ("__asin_finite");
-extern float asinf (float) __asm__ ("__asinf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double asinl (long double) __asm__ ("__asinl_finite");
+extern double __REDIRECT_NTH (asin, (double), __asin_finite);
+extern float __REDIRECT_NTH (asinf, (float), __asinf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (asinl, (long double), __asinl_finite);
#endif
/* atan2. */
-extern double atan2 (double, double) __asm__ ("__atan2_finite");
-extern float atan2f (float, float) __asm__ ("__atan2f_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double atan2l (long double, long double) __asm__ ("__atan2l_finite");
+extern double __REDIRECT_NTH (atan2, (double, double), __atan2_finite);
+extern float __REDIRECT_NTH (atan2f, (float, float), __atan2f_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (atan2l, (long double, long double),
+ __atan2l_finite);
#endif
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
/* atanh. */
-extern double atanh (double) __asm__ ("__atanh_finite");
-extern float atanhf (float) __asm__ ("__atanhf_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double atanhl (long double) __asm__ ("__atanhl_finite");
+extern double __REDIRECT_NTH (atanh, (double), __atanh_finite);
+extern float __REDIRECT_NTH (atanhf, (float), __atanhf_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (atanhl, (long double), __atanhl_finite);
# endif
#endif
/* cosh. */
-extern double cosh (double) __asm__ ("__cosh_finite");
-extern float coshf (float) __asm__ ("__coshf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double coshl (long double) __asm__ ("__coshl_finite");
+extern double __REDIRECT_NTH (cosh, (double), __cosh_finite);
+extern float __REDIRECT_NTH (coshf, (float), __coshf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (coshl, (long double), __coshl_finite);
#endif
/* exp. */
-extern double exp (double) __asm__ ("__exp_finite");
-extern float expf (float) __asm__ ("__expf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double expl (long double) __asm__ ("__expl_finite");
+extern double __REDIRECT_NTH (exp, (double), __exp_finite);
+extern float __REDIRECT_NTH (expf, (float), __expf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (expl, (long double), __expl_finite);
#endif
#ifdef __USE_GNU
/* exp10. */
-extern double exp10 (double) __asm__ ("__exp10_finite");
-extern float exp10f (float) __asm__ ("__exp10f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double exp10l (long double) __asm__ ("__exp10l_finite");
+extern double __REDIRECT_NTH (exp10, (double), __exp10_finite);
+extern float __REDIRECT_NTH (exp10f, (float), __exp10f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (exp10l, (long double), __exp10l_finite);
# endif
/* pow10. */
-extern double pow10 (double) __asm__ ("__exp10_finite");
-extern float pow10f (float) __asm__ ("__exp10f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double pow10l (long double) __asm__ ("__exp10l_finite");
+extern double __REDIRECT_NTH (pow10, (double), __exp10_finite);
+extern float __REDIRECT_NTH (pow10f, (float), __exp10f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (pow10l, (long double), __exp10l_finite);
# endif
#endif
#ifdef __USE_ISOC99
/* exp2. */
-extern double exp2 (double) __asm__ ("__exp2_finite");
-extern float exp2f (float) __asm__ ("__exp2f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double exp2l (long double) __asm__ ("__exp2l_finite");
+extern double __REDIRECT_NTH (exp2, (double), __exp2_finite);
+extern float __REDIRECT_NTH (exp2f, (float), __exp2f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (exp2l, (long double), __exp2l_finite);
# endif
#endif
/* fmod. */
-extern double fmod (double, double) __asm__ ("__fmod_finite");
-extern float fmodf (float, float) __asm__ ("__fmodf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double fmodl (long double, long double) __asm__ ("__fmodl_finite");
+extern double __REDIRECT_NTH (fmod, (double, double), __fmod_finite);
+extern float __REDIRECT_NTH (fmodf, (float, float), __fmodf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (fmodl, (long double, long double),
+ __fmodl_finite);
#endif
#ifdef __USE_ISOC99
/* hypot. */
-extern double hypot (double, double) __asm__ ("__hypot_finite");
-extern float hypotf (float, float) __asm__ ("__hypotf_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double hypotl (long double, long double) __asm__ ("__hypotl_finite");
+extern double __REDIRECT_NTH (hypot, (double, double), __hypot_finite);
+extern float __REDIRECT_NTH (hypotf, (float, float), __hypotf_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (hypotl, (long double, long double),
+ __hypotl_finite);
# endif
#endif
#if defined __USE_MISC || defined __USE_XOPEN
/* j0. */
-extern double j0 (double) __asm__ ("__j0_finite");
-extern float j0f (float) __asm__ ("__j0f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double j0l (long double) __asm__ ("__j0l_finite");
+extern double __REDIRECT_NTH (j0, (double), __j0_finite);
+extern float __REDIRECT_NTH (j0f, (float), __j0f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (j0l, (long double), __j0l_finite);
# endif
/* y0. */
-extern double y0 (double) __asm__ ("__y0_finite");
-extern float y0f (float) __asm__ ("__y0f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double y0l (long double) __asm__ ("__y0l_finite");
+extern double __REDIRECT_NTH (y0, (double), __y0_finite);
+extern float __REDIRECT_NTH (y0f, (float), __y0f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (y0l, (long double), __y0l_finite);
# endif
/* j1. */
-extern double j1 (double) __asm__ ("__j1_finite");
-extern float j1f (float) __asm__ ("__j1f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double j1l (long double) __asm__ ("__j1l_finite");
+extern double __REDIRECT_NTH (j1, (double), __j1_finite);
+extern float __REDIRECT_NTH (j1f, (float), __j1f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (j1l, (long double), __j1l_finite);
# endif
/* y1. */
-extern double y1 (double) __asm__ ("__y1_finite");
-extern float y1f (float) __asm__ ("__y1f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double y1l (long double) __asm__ ("__y1l_finite");
+extern double __REDIRECT_NTH (y1, (double), __y1_finite);
+extern float __REDIRECT_NTH (y1f, (float), __y1f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (y1l, (long double), __y1l_finite);
# endif
/* jn. */
-extern double jn (int, double) __asm__ ("__jn_finite");
-extern float jnf (int, float) __asm__ ("__jnf_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double jnl (int, long double) __asm__ ("__jnl_finite");
+extern double __REDIRECT_NTH (jn, (int, double), __jn_finite);
+extern float __REDIRECT_NTH (jnf, (int, float), __jnf_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (jnl, (int, long double), __jnl_finite);
# endif
/* yn. */
-extern double yn (int, double) __asm__ ("__yn_finite");
-extern float ynf (int, float) __asm__ ("__ynf_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double ynl (int, long double) __asm__ ("__ynl_finite");
+extern double __REDIRECT_NTH (yn, (int, double), __yn_finite);
+extern float __REDIRECT_NTH (ynf, (int, float), __ynf_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (ynl, (int, long double), __ynl_finite);
# endif
#endif
#ifdef __USE_MISC
/* lgamma_r. */
-extern double lgamma_r (double, int *) __asm__ ("__lgamma_r_finite");
-extern float lgammaf_r (float, int *) __asm__ ("__lgammaf_r_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double lgammal_r (long double, int *) __asm__ ("__lgammal_r_finite");
+extern double __REDIRECT_NTH (lgamma_r, (double, int *), __lgamma_r_finite);
+extern float __REDIRECT_NTH (lgammaf_r, (float, int *), __lgammaf_r_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (lgammal_r, (long double, int *),
+ __lgammal_r_finite);
# endif
#endif
#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99
/* lgamma. */
-__extern_always_inline double lgamma (double __d)
+__extern_always_inline double __NTH (lgamma (double __d))
{
# ifdef __USE_ISOC99
int __local_signgam = 0;
@@ -179,7 +183,7 @@
return lgamma_r (__d, &signgam);
# endif
}
-__extern_always_inline float lgammaf (float __d)
+__extern_always_inline float __NTH (lgammaf (float __d))
{
# ifdef __USE_ISOC99
int __local_signgam = 0;
@@ -189,7 +193,7 @@
# endif
}
# ifdef __MATH_DECLARE_LDOUBLE
-__extern_always_inline long double lgammal (long double __d)
+__extern_always_inline long double __NTH (lgammal (long double __d))
{
# ifdef __USE_ISOC99
int __local_signgam = 0;
@@ -203,7 +207,7 @@
#if defined __USE_MISC || defined __USE_XOPEN
/* gamma. */
-__extern_always_inline double gamma (double __d)
+__extern_always_inline double __NTH (gamma (double __d))
{
# ifdef __USE_ISOC99
int __local_signgam = 0;
@@ -212,7 +216,7 @@
return lgamma_r (__d, &signgam);
# endif
}
-__extern_always_inline float gammaf (float __d)
+__extern_always_inline float __NTH (gammaf (float __d))
{
# ifdef __USE_ISOC99
int __local_signgam = 0;
@@ -222,7 +226,7 @@
# endif
}
# ifdef __MATH_DECLARE_LDOUBLE
-__extern_always_inline long double gammal (long double __d)
+__extern_always_inline long double __NTH (gammal (long double __d))
{
# ifdef __USE_ISOC99
int __local_signgam = 0;
@@ -235,76 +239,79 @@
#endif
/* log. */
-extern double log (double) __asm__ ("__log_finite");
-extern float logf (float) __asm__ ("__logf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double logl (long double) __asm__ ("__logl_finite");
+extern double __REDIRECT_NTH (log, (double), __log_finite);
+extern float __REDIRECT_NTH (logf, (float), __logf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (logl, (long double), __logl_finite);
#endif
/* log10. */
-extern double log10 (double) __asm__ ("__log10_finite");
-extern float log10f (float) __asm__ ("__log10f_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double log10l (long double) __asm__ ("__log10l_finite");
+extern double __REDIRECT_NTH (log10, (double), __log10_finite);
+extern float __REDIRECT_NTH (log10f, (float), __log10f_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (log10l, (long double), __log10l_finite);
#endif
#ifdef __USE_ISOC99
/* log2. */
-extern double log2 (double) __asm__ ("__log2_finite");
-extern float log2f (float) __asm__ ("__log2f_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double log2l (long double) __asm__ ("__log2l_finite");
+extern double __REDIRECT_NTH (log2, (double), __log2_finite);
+extern float __REDIRECT_NTH (log2f, (float), __log2f_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (log2l, (long double), __log2l_finite);
# endif
#endif
/* pow. */
-extern double pow (double, double) __asm__ ("__pow_finite");
-extern float powf (float, float) __asm__ ("__powf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double powl (long double, long double) __asm__ ("__powl_finite");
+extern double __REDIRECT_NTH (pow, (double, double), __pow_finite);
+extern float __REDIRECT_NTH (powf, (float, float), __powf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (powl, (long double, long double),
+ __powl_finite);
#endif
/* remainder. */
-extern double remainder (double, double) __asm__ ("__remainder_finite");
-extern float remainderf (float, float) __asm__ ("__remainderf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double remainderl (long double, long double) __asm__ ("__remainderl_finite");
+extern double __REDIRECT_NTH (remainder, (double, double), __remainder_finite);
+extern float __REDIRECT_NTH (remainderf, (float, float), __remainderf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (remainderl, (long double, long double),
+ __remainderl_finite);
#endif
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
/* scalb. */
-extern double scalb (double, double) __asm__ ("__scalb_finite");
-extern float scalbf (float, float) __asm__ ("__scalbf_finite");
-# ifdef __MATH_DECLARE_LDOUBLE
-extern long double scalbl (long double, long double) __asm__ ("__scalbl_finite");
+extern double __REDIRECT_NTH (scalb, (double, double), __scalb_finite);
+extern float __REDIRECT_NTH (scalbf, (float, float), __scalbf_finite);
+# ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (scalbl, (long double, long double),
+ __scalbl_finite);
# endif
#endif
/* sinh. */
-extern double sinh (double) __asm__ ("__sinh_finite");
-extern float sinhf (float) __asm__ ("__sinhf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double sinhl (long double) __asm__ ("__sinhl_finite");
+extern double __REDIRECT_NTH (sinh, (double), __sinh_finite);
+extern float __REDIRECT_NTH (sinhf, (float), __sinhf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (sinhl, (long double), __sinhl_finite);
#endif
/* sqrt. */
-extern double sqrt (double) __asm__ ("__sqrt_finite");
-extern float sqrtf (float) __asm__ ("__sqrtf_finite");
-#ifdef __MATH_DECLARE_LDOUBLE
-extern long double sqrtl (long double) __asm__ ("__sqrtl_finite");
+extern double __REDIRECT_NTH (sqrt, (double), __sqrt_finite);
+extern float __REDIRECT_NTH (sqrtf, (float), __sqrtf_finite);
+#ifdef __MATH_DECLARE_LDOUBLE
+extern long double __REDIRECT_NTH (sqrtl, (long double), __sqrtl_finite);
#endif
#ifdef __USE_ISOC99
/* tgamma. */
extern double __gamma_r_finite (double, int *);
-__extern_always_inline double tgamma (double __d)
+__extern_always_inline double __NTH (tgamma (double __d))
{
int __local_signgam = 0;
double __res = __gamma_r_finite (__d, &__local_signgam);
return __local_signgam < 0 ? -__res : __res;
}
extern float __gammaf_r_finite (float, int *);
-__extern_always_inline float tgammaf (float __d)
+__extern_always_inline float __NTH (tgammaf (float __d))
{
int __local_signgam = 0;
float __res = __gammaf_r_finite (__d, &__local_signgam);
@@ -312,7 +319,7 @@
}
# ifdef __MATH_DECLARE_LDOUBLE
extern long double __gammal_r_finite (long double, int *);
-__extern_always_inline long double tgammal (long double __d)
+__extern_always_inline long double __NTH (tgammal (long double __d))
{
int __local_signgam = 0;
long double __res = __gammal_r_finite (__d, &__local_signgam);
Modified: trunk/libc/math/libm-test.inc
==============================================================================
--- trunk/libc/math/libm-test.inc (original)
+++ trunk/libc/math/libm-test.inc Thu Dec 22 19:27:39 2011
@@ -4631,6 +4631,10 @@
TEST_f_f (nearbyint, minus_infty, minus_infty);
TEST_f_f (nearbyint, nan_value, nan_value);
+ /* Subnormal values */
+ TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307);
+ TEST_f_f (nearbyint, -4.45015e-308, minus_zero);
+
/* Default rounding mode is round to nearest. */
TEST_f_f (nearbyint, 0.5, 0.0);
TEST_f_f (nearbyint, 1.5, 2.0);
Modified: trunk/libc/math/s_cacosh.c
==============================================================================
--- trunk/libc/math/s_cacosh.c (original)
+++ trunk/libc/math/s_cacosh.c Thu Dec 22 19:27:39 2011
@@ -65,6 +65,11 @@
__real__ res = 0.0;
__imag__ res = __copysign (M_PI_2, __imag__ x);
}
+ /* The factor 16 is just a guess. */
+ else if (16.0 * fabs (__imag__ x) < fabs (__real__ x))
+ /* Kahan's formula which avoid cancellation through subtraction in
+ some cases. */
+ res = 2.0 * __clog (__csqrt ((x + 1.0) / 2.0) + __csqrt ((x - 1.0) / 2.0));
else
{
__complex__ double y;
@@ -74,17 +79,13 @@
y = __csqrt (y);
- if (__real__ x < 0.0)
+ if (signbit (__real__ x))
y = -y;
__real__ y += __real__ x;
__imag__ y += __imag__ x;
res = __clog (y);
-
- /* We have to use the positive branch. */
- if (__real__ res < 0.0)
- res = -res;
}
return res;
Modified: trunk/libc/math/s_cacoshf.c
==============================================================================
--- trunk/libc/math/s_cacoshf.c (original)
+++ trunk/libc/math/s_cacoshf.c Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Return arc hyperbole cosine for float value.
- Copyright (C) 1997, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2006, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -65,9 +65,14 @@
__real__ res = 0.0;
__imag__ res = __copysignf (M_PI_2, __imag__ x);
}
+ /* The factor 16 is just a guess. */
+ else if (16.0 * fabsf (__imag__ x) < fabsf (__real__ x))
+ /* Kahan's formula which avoid cancellation through subtraction in
+ some cases. */
+ res = 2.0 * __clogf (__csqrtf ((x + 1.0) / 2.0)
+ + __csqrtf ((x - 1.0) / 2.0));
else
{
-#if 1
__complex__ float y;
__real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) - 1.0;
@@ -75,30 +80,13 @@
y = __csqrtf (y);
- if (__real__ x < 0.0)
+ if (signbit (__real__ x))
y = -y;
__real__ y += __real__ x;
__imag__ y += __imag__ x;
res = __clogf (y);
-#else
- float re2 = __real__ x * __real__ x;
- float im2 = __imag__ x * __imag__ x;
- float sq = re2 - im2 - 1.0;
- float ro = __ieee754_sqrtf (sq * sq + 4 * re2 * im2);
- float a = __ieee754_sqrtf ((sq + ro) / 2.0);
- float b = __ieee754_sqrtf ((-sq + ro) / 2.0);
-
- __real__ res = 0.5 * __ieee754_logf (re2 + __real__ x * 2 * a
- + im2 + __imag__ x * 2 * b
- + ro);
- __imag__ res = __ieee754_atan2f (__imag__ x + b, __real__ x + a);
-#endif
-
- /* We have to use the positive branch. */
- if (__real__ res < 0.0)
- res = -res;
}
return res;
Modified: trunk/libc/math/s_cacoshl.c
==============================================================================
--- trunk/libc/math/s_cacoshl.c (original)
+++ trunk/libc/math/s_cacoshl.c Thu Dec 22 19:27:39 2011
@@ -65,6 +65,12 @@
__real__ res = 0.0;
__imag__ res = __copysignl (M_PI_2l, __imag__ x);
}
+ /* The factor 16 is just a guess. */
+ else if (16.0L * fabsl (__imag__ x) < fabsl (__real__ x))
+ /* Kahan's formula which avoid cancellation through subtraction in
+ some cases. */
+ res = 2.0L * __clogl (__csqrtl ((x + 1.0L) / 2.0L)
+ + __csqrtl ((x - 1.0L) / 2.0L));
else
{
__complex__ long double y;
@@ -74,17 +80,13 @@
y = __csqrtl (y);
- if (__real__ x < 0.0)
+ if (signbit (__real__ x))
y = -y;
__real__ y += __real__ x;
__imag__ y += __imag__ x;
res = __clogl (y);
-
- /* We have to use the positive branch. */
- if (__real__ res < 0.0)
- res = -res;
}
return res;
Modified: trunk/libc/nis/nis_findserv.c
==============================================================================
--- trunk/libc/nis/nis_findserv.c (original)
+++ trunk/libc/nis/nis_findserv.c Thu Dec 22 19:27:39 2011
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000, 2001, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2001, 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@xxxxxxxxxxxxxxxxxxx>, 1997.
@@ -175,7 +175,9 @@
(xdrproc_t) xdr_void, (caddr_t) 0,
*timeout);
if (RPC_SUCCESS == rc) {
- fastest = *((u_int32_t *) (cu->cu_inbuf)) - xid_seed;
+ u_int32_t val;
+ memcpy (&val, cu->cu_inbuf, sizeof (u_int32_t));
+ fastest = val - xid_seed;
if (fastest < pings_count) {
bind->server_used = pings[fastest].server_nr;
bind->current_ep = pings[fastest].server_ep;
Modified: trunk/libc/nptl/ChangeLog
==============================================================================
--- trunk/libc/nptl/ChangeLog (original)
+++ trunk/libc/nptl/ChangeLog Thu Dec 22 19:27:39 2011
@@ -1,3 +1,18 @@
+2011-12-21 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #13515]
+ * sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np):
+ Correct reading name from file.
+
+2011-12-14 Carlos O'Donell <carlos@xxxxxxxxxxxxxxxx>
+
+ * allocatestack.c (allocate_stack): Return errno on failure.
+
+2011-12-14 Jeff Law <law@xxxxxxxxxx>
+
+ [BZ #5245]
+ * pthread_create.c (__pthread_create_2_1): Translate ENOMEM to EAGAIN.
+
2011-11-28 Andreas Schwab <schwab@xxxxxxxxxx>
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Handle
Modified: trunk/libc/nptl/allocatestack.c
==============================================================================
--- trunk/libc/nptl/allocatestack.c (original)
+++ trunk/libc/nptl/allocatestack.c Thu Dec 22 19:27:39 2011
@@ -435,7 +435,7 @@
{
/* Something went wrong. */
assert (errno == ENOMEM);
- return EAGAIN;
+ return errno;
}
@@ -496,12 +496,7 @@
MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
if (__builtin_expect (mem == MAP_FAILED, 0))
- {
- if (errno == ENOMEM)
- __set_errno (EAGAIN);
-
- return errno;
- }
+ return errno;
/* SIZE is guaranteed to be greater than zero.
So we can never get a null pointer back from mmap. */
@@ -581,7 +576,7 @@
/* Free the stack memory we just allocated. */
(void) munmap (mem, size);
- return EAGAIN;
+ return errno;
}
@@ -636,10 +631,7 @@
#endif
if (mprotect (guard, guardsize, PROT_NONE) != 0)
{
- int err;
mprot_error:
- err = errno == ENOMEM ? EAGAIN : errno;
-
lll_lock (stack_cache_lock, LLL_PRIVATE);
/* Remove the thread from the list. */
@@ -657,7 +649,7 @@
is nothing we could do. */
(void) munmap (mem, size);
- return err;
+ return errno;
}
pd->guardsize = guardsize;
Modified: trunk/libc/nptl/pthread_create.c
==============================================================================
--- trunk/libc/nptl/pthread_create.c (original)
+++ trunk/libc/nptl/pthread_create.c Thu Dec 22 19:27:39 2011
@@ -462,8 +462,9 @@
int err = ALLOCATE_STACK (iattr, &pd);
if (__builtin_expect (err != 0, 0))
/* Something went wrong. Maybe a parameter of the attributes is
- invalid or we could not allocate memory. */
- return err;
+ invalid or we could not allocate memory. Note we have to
+ translate error codes. */
+ return err == ENOMEM ? EAGAIN : err;
/* Initialize the TCB. All initializations with zero should be
Modified: trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
==============================================================================
--- trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c (original)
+++ trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* pthread_getname_np -- Get thread name. Linux version
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -57,6 +57,15 @@
ssize_t n = TEMP_FAILURE_RETRY (read_not_cancel (fd, buf, len));
if (n < 0)
res = errno;
+ else
+ {
+ if (buf[n - 1] == '\n')
+ buf[n - 1] = '\0';
+ else if (n == len)
+ res = ERANGE;
+ else
+ buf[n] = '\0';
+ }
close_not_cancel_no_status (fd);
Modified: trunk/libc/nscd/aicache.c
==============================================================================
--- trunk/libc/nscd/aicache.c (original)
+++ trunk/libc/nscd/aicache.c Thu Dec 22 19:27:39 2011
@@ -461,9 +461,12 @@
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
+# ifndef __ASSUME_SENDFILE
ssize_t written;
- written = sendfileall (fd, db->wr_fd, (char *) &dataset->resp
- - (char *) db->head, dataset->head.recsize);
+ written =
+# endif
+ sendfileall (fd, db->wr_fd, (char *) &dataset->resp
+ - (char *) db->head, dataset->head.recsize);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
Modified: trunk/libc/resolv/res_init.c
==============================================================================
--- trunk/libc/resolv/res_init.c (original)
+++ trunk/libc/resolv/res_init.c Thu Dec 22 19:27:39 2011
@@ -233,7 +233,7 @@
(line[sizeof(name) - 1] == ' ' || \
line[sizeof(name) - 1] == '\t'))
- if ((fp = fopen(_PATH_RESCONF, "rc")) != NULL) {
+ if ((fp = fopen(_PATH_RESCONF, "rce")) != NULL) {
/* No threads use this stream. */
__fsetlocking (fp, FSETLOCKING_BYCALLER);
/* read the config file */
Modified: trunk/libc/stdio-common/vfprintf.c
==============================================================================
--- trunk/libc/stdio-common/vfprintf.c (original)
+++ trunk/libc/stdio-common/vfprintf.c Thu Dec 22 19:27:39 2011
@@ -1661,9 +1661,9 @@
/* Array with information about the needed arguments. This has to
be dynamically extensible. */
size_t nspecs = 0;
- size_t nspecs_max = 32; /* A more or less arbitrary start value. */
- struct printf_spec *specs
- = alloca (nspecs_max * sizeof (struct printf_spec));
+ /* A more or less arbitrary start value. */
+ size_t nspecs_size = 32 * sizeof (struct printf_spec);
+ struct printf_spec *specs = alloca (nspecs_size);
/* The number of arguments the format string requests. This will
determine the size of the array needed to store the argument
@@ -1702,15 +1702,14 @@
for (f = lead_str_end; *f != L_('\0'); f = specs[nspecs++].next_fmt)
{
- if (nspecs >= nspecs_max)
+ if (nspecs * sizeof (*specs) >= nspecs_size)
{
/* Extend the array of format specifiers. */
struct printf_spec *old = specs;
- specs = extend_alloca (specs, nspecs_max,
- 2 * nspecs_max * sizeof (*specs));
+ specs = extend_alloca (specs, nspecs_size, 2 * nspecs_size);
/* Copy the old array's elements to the new space. */
- memmove (specs, old, nspecs * sizeof (struct printf_spec));
+ memmove (specs, old, nspecs * sizeof (*specs));
}
/* Parse the format specifier. */
Modified: trunk/libc/stdlib/strtod_l.c
==============================================================================
--- trunk/libc/stdlib/strtod_l.c (original)
+++ trunk/libc/stdlib/strtod_l.c Thu Dec 22 19:27:39 2011
@@ -1526,6 +1526,7 @@
assert (numsize == densize);
for (i = numsize; i > 0; --i)
num[i] = num[i - 1];
+ num[0] = 0;
}
den[densize] = 0;
@@ -1570,6 +1571,7 @@
n0 = num[densize] = num[densize - 1];
for (i = densize - 1; i > 0; --i)
num[i] = num[i - 1];
+ num[0] = 0;
got_limb;
}
Modified: trunk/libc/string/test-strcmp.c
==============================================================================
--- trunk/libc/string/test-strcmp.c (original)
+++ trunk/libc/string/test-strcmp.c Thu Dec 22 19:27:39 2011
@@ -221,14 +221,16 @@
static void
do_random_tests (void)
{
- for (size_t a = 0; a < CHARBYTES; a += CHARALIGN)
- for (size_t b = 0; b < CHARBYTES; b += CHARALIGN)
- {
- UCHAR *p1 = (UCHAR *) (buf1 + page_size - 512 * CHARBYTES - a);
- UCHAR *p2 = (UCHAR *) (buf2 + page_size - 512 * CHARBYTES - b);
+ UCHAR *p1 = (UCHAR *) (buf1 + page_size - 512 * CHARBYTES);
+ UCHAR *p2 = (UCHAR *) (buf2 + page_size - 512 * CHARBYTES);
for (size_t n = 0; n < ITERATIONS; n++)
{
+ /* for wcscmp case align1 and align2 mean here alignment
+ in wchar_t symbols, it equal 4*k alignment in bytes, we
+ don't check other alignments like for example
+ p1 = (wchar_t *)(buf1 + 1)
+ because it's wrong using of wchar_t type. */
size_t align1 = random () & 31;
size_t align2;
if (random () & 1)
@@ -274,7 +276,7 @@
}
int result = 0;
- MEMCPY ((CHAR *) (p2 + align2), (CHAR *) (p1 + align1), pos);
+ MEMCPY (p2 + align2, p1 + align1, pos);
if (pos < len1)
{
if (p2[align2 + pos] == p1[align1 + pos])
@@ -302,13 +304,12 @@
|| (r < 0 && result >= 0)
|| (r > 0 && result <= 0))
{
- error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
+ error (0, 0, "Iteration %zd - wrong result in function %s (align in bytes: %zd, align in bytes: %zd, len1: %zd, len2: %zd, pos: %zd) %d != %d, p1 %p p2 %p",
n, impl->name, (size_t) (p1 + align1) & 63, (size_t) (p1 + align2) & 63, len1, len2, pos, r, result, p1, p2);
ret = 1;
}
}
- }
- }
+ }
}
static void
Modified: trunk/libc/string/test-strcpy.c
==============================================================================
--- trunk/libc/string/test-strcpy.c (original)
+++ trunk/libc/string/test-strcpy.c Thu Dec 22 19:27:39 2011
@@ -1,7 +1,8 @@
/* Test and measure strcpy functions.
- Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002, 2003, 2005, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Jakub Jelinek <jakub@xxxxxxxxxx>, 1999.
+ Added wcscpy support by Liubov Dmitrieva <liubov.dmitrieva@xxxxxxxxx>, 2011
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,29 +19,55 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#ifdef WIDE
+# include <wchar.h>
+# define CHAR wchar_t
+# define UCHAR wchar_t
+# define BIG_CHAR WCHAR_MAX
+# define SMALL_CHAR 1273
+# define STRCMP wcscmp
+# define MEMCMP wmemcmp
+# define MEMSET wmemset
+#else
+# define CHAR char
+# define UCHAR unsigned char
+# define BIG_CHAR CHAR_MAX
+# define SMALL_CHAR 127
+# define STRCMP strcmp
+# define MEMCMP memcmp
+# define MEMSET memset
+#endif
+
#ifndef STRCPY_RESULT
# define STRCPY_RESULT(dst, len) dst
# define TEST_MAIN
# include "test-string.h"
-
-char *simple_strcpy (char *, const char *);
-
-IMPL (simple_strcpy, 0)
-IMPL (strcpy, 1)
-
-char *
-simple_strcpy (char *dst, const char *src)
-{
- char *ret = dst;
+# ifndef WIDE
+# define SIMPLE_STRCPY simple_strcpy
+# define STRCPY strcpy
+# else
+# define SIMPLE_STRCPY simple_wcscpy
+# define STRCPY wcscpy
+# endif
+
+CHAR *SIMPLE_STRCPY (CHAR *, const CHAR *);
+
+IMPL (SIMPLE_STRCPY, 0)
+IMPL (STRCPY, 1)
+
+CHAR *
+SIMPLE_STRCPY (CHAR *dst, const CHAR *src)
+{
+ CHAR *ret = dst;
while ((*dst++ = *src++) != '\0');
return ret;
}
#endif
-typedef char *(*proto_t) (char *, const char *);
+typedef CHAR *(*proto_t) (CHAR *, const CHAR *);
static void
-do_one_test (impl_t *impl, char *dst, const char *src,
+do_one_test (impl_t *impl, CHAR *dst, const CHAR *src,
size_t len __attribute__((unused)))
{
if (CALL (impl, dst, src) != STRCPY_RESULT (dst, len))
@@ -51,7 +78,7 @@
return;
}
- if (strcmp (dst, src) != 0)
+ if (STRCMP (dst, src) != 0)
{
error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
impl->name, dst, src);
@@ -82,25 +109,27 @@
do_test (size_t align1, size_t align2, size_t len, int max_char)
{
size_t i;
- char *s1, *s2;
-
+ CHAR *s1, *s2;
+/* For wcscpy: align1 and align2 here mean alignment not in bytes,
+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t))
+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */
align1 &= 7;
- if (align1 + len >= page_size)
+ if ((align1 + len) * sizeof(CHAR) >= page_size)
return;
align2 &= 7;
- if (align2 + len >= page_size)
+ if ((align2 + len) * sizeof(CHAR) >= page_size)
return;
- s1 = (char *) (buf1 + align1);
- s2 = (char *) (buf2 + align2);
+ s1 = (CHAR *) (buf1) + align1;
+ s2 = (CHAR *) (buf2) + align2;
for (i = 0; i < len; i++)
s1[i] = 32 + 23 * i % (max_char - 32);
s1[len] = 0;
if (HP_TIMING_AVAIL)
- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
+ printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR));
FOR_EACH_IMPL (impl, 0)
do_one_test (impl, s2, s1, len);
@@ -113,15 +142,21 @@
do_random_tests (void)
{
size_t i, j, n, align1, align2, len;
- unsigned char *p1 = buf1 + page_size - 512;
- unsigned char *p2 = buf2 + page_size - 512;
- unsigned char *res;
+ UCHAR *p1 = (UCHAR *) (buf1 + page_size) - 512;
+ UCHAR *p2 = (UCHAR *) (buf2 + page_size) - 512;
+ UCHAR *res;
for (n = 0; n < ITERATIONS; n++)
{
- align1 = random () & 31;
+ /* For wcsrchr: align1 and align2 here mean align not in bytes,
+ but in wchar_ts, in bytes it will equal to align * (sizeof
+ (wchar_t)). For strrchr we need to check all alignments from
+ 0 to 63 since some assembly implementations have separate
+ prolog for alignments more 48. */
+
+ align1 = random () & (63 / sizeof(CHAR));
if (random () & 1)
- align2 = random () & 31;
+ align2 = random () & (63 / sizeof(CHAR));
else
align2 = align1 + (random () & 24);
len = random () & 511;
@@ -139,17 +174,16 @@
p1[i] = 0;
else
{
- p1[i] = random () & 255;
+ p1[i] = random () & BIG_CHAR;
if (i >= align1 && i < len + align1 && !p1[i])
- p1[i] = (random () & 127) + 3;
+ p1[i] = (random () & SMALL_CHAR) + 3;
}
}
FOR_EACH_IMPL (impl, 1)
{
- memset (p2 - 64, '\1', 512 + 64);
- res = (unsigned char *) CALL (impl, (char *) (p2 + align2),
- (char *) (p1 + align1));
+ MEMSET (p2 - 64, '\1', 512 + 64);
+ res = (UCHAR *) CALL (impl, (CHAR *) (p2 + align2), (CHAR *) (p1 + align1));
if (res != STRCPY_RESULT (p2 + align2, len))
{
error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd) %p != %p",
@@ -177,7 +211,7 @@
break;
}
}
- if (memcmp (p1 + align1, p2 + align2, len + 1))
+ if (MEMCMP (p1 + align1, p2 + align2, len + 1))
{
error (0, 0, "Iteration %zd - different strings, %s (%zd, %zd, %zd)",
n, impl->name, align1, align2, len);
@@ -201,24 +235,24 @@
for (i = 0; i < 16; ++i)
{
- do_test (0, 0, i, 127);
- do_test (0, 0, i, 255);
- do_test (0, i, i, 127);
- do_test (i, 0, i, 255);
+ do_test (0, 0, i, SMALL_CHAR);
+ do_test (0, 0, i, BIG_CHAR);
+ do_test (0, i, i, SMALL_CHAR);
+ do_test (i, 0, i, BIG_CHAR);
}
for (i = 1; i < 8; ++i)
{
- do_test (0, 0, 8 << i, 127);
- do_test (8 - i, 2 * i, 8 << i, 127);
+ do_test (0, 0, 8 << i, SMALL_CHAR);
+ do_test (8 - i, 2 * i, 8 << i, SMALL_CHAR);
}
for (i = 1; i < 8; ++i)
{
- do_test (i, 2 * i, 8 << i, 127);
- do_test (2 * i, i, 8 << i, 255);
- do_test (i, i, 8 << i, 127);
- do_test (i, i, 8 << i, 255);
+ do_test (i, 2 * i, 8 << i, SMALL_CHAR);
+ do_test (2 * i, i, 8 << i, BIG_CHAR);
+ do_test (i, i, 8 << i, SMALL_CHAR);
+ do_test (i, i, 8 << i, BIG_CHAR);
}
do_random_tests ();
Modified: trunk/libc/string/test-strrchr.c
==============================================================================
--- trunk/libc/string/test-strrchr.c (original)
+++ trunk/libc/string/test-strrchr.c Thu Dec 22 19:27:39 2011
@@ -1,7 +1,9 @@
-/* Test and measure strrchr functions.
- Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Test and measure STRCHR functions.
+ Copyright (C) 1999, 2002, 2003, 2005, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Jakub Jelinek <jakub@xxxxxxxxxx>, 1999.
+ Added wcsrrchr support by Liubov Dmitrieva <liubov.dmitrieva@xxxxxxxxx>,
+ 2011.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -21,28 +23,45 @@
#define TEST_MAIN
#include "test-string.h"
-typedef char *(*proto_t) (const char *, int);
-char *simple_strrchr (const char *, int);
-
-IMPL (simple_strrchr, 0)
-IMPL (strrchr, 1)
-
-char *
-simple_strrchr (const char *s, int c)
-{
- const char *ret = NULL;
+#ifdef WIDE
+# include <wchar.h>
+# define SIMPLE_STRRCHR simple_wcsrchr
+# define STRRCHR wcsrchr
+# define CHAR wchar_t
+# define UCHAR wchar_t
+# define BIG_CHAR WCHAR_MAX
+# define SMALL_CHAR 1273
+#else
+# define SIMPLE_STRRCHR simple_strrchr
+# define STRRCHR strrchr
+# define CHAR char
+# define UCHAR unsigned char
+# define BIG_CHAR CHAR_MAX
+# define SMALL_CHAR 127
+#endif
+
+typedef CHAR *(*proto_t) (const CHAR *, int);
+CHAR *SIMPLE_STRRCHR (const CHAR *, int);
+
+IMPL (SIMPLE_STRRCHR, 0)
+IMPL (STRRCHR, 1)
+
+CHAR *
+SIMPLE_STRRCHR (const CHAR *s, int c)
+{
+ const CHAR *ret = NULL;
for (; *s != '\0'; ++s)
- if (*s == (char) c)
+ if (*s == (CHAR) c)
ret = s;
- return (char *) (c == '\0' ? s : ret);
+ return (CHAR *) (c == '\0' ? s : ret);
}
static void
-do_one_test (impl_t *impl, const char *s, int c, char *exp_res)
-{
- char *res = CALL (impl, s, c);
+do_one_test (impl_t *impl, const CHAR *s, int c, CHAR *exp_res)
+{
+ CHAR *res = CALL (impl, s, c);
if (res != exp_res)
{
error (0, 0, "Wrong result in function %s %p %p", impl->name,
@@ -72,41 +91,45 @@
static void
do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char)
+/* For wcsrchr: align here means align not in bytes,
+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t))
+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */
{
size_t i;
- char *result;
+ CHAR *result;
+ CHAR *buf = (CHAR *) buf1;
align &= 7;
- if (align + len >= page_size)
+ if ( (align + len) * sizeof(CHAR) >= page_size)
return;
for (i = 0; i < len; ++i)
{
- buf1[align + i] = random () & max_char;
- if (!buf1[align + i])
- buf1[align + i] = random () & max_char;
- if (!buf1[align + i])
- buf1[align + i] = 1;
- if ((i > pos || pos >= len) && buf1[align + i] == seek_char)
- buf1[align + i] = seek_char + 10 + (random () & 15);
- }
- buf1[align + len] = 0;
+ buf[align + i] = (random () * random ()) & max_char;
+ if (!buf[align + i])
+ buf[align + i] = (random () * random ()) & max_char;
+ if (!buf[align + i])
+ buf[align + i] = 1;
+ if ((i > pos || pos >= len) && buf[align + i] == seek_char)
+ buf[align + i] = seek_char + 10 + (random () & 15);
+ }
+ buf[align + len] = 0;
if (pos < len)
{
- buf1[align + pos] = seek_char;
- result = (char *) (buf1 + align + pos);
+ buf[align + pos] = seek_char;
+ result = (CHAR *) (buf + align + pos);
}
else if (seek_char == 0)
- result = (char *) (buf1 + align + len);
+ result = (CHAR *) (buf + align + len);
else
result = NULL;
if (HP_TIMING_AVAIL)
- printf ("Length %4zd, alignment %2zd:", pos, align);
+ printf ("Length %4zd, alignment in bytes %2zd:", pos, align * sizeof(CHAR));
FOR_EACH_IMPL (impl, 0)
- do_one_test (impl, (char *) (buf1 + align), seek_char, result);
+ do_one_test (impl, (CHAR *) (buf + align), seek_char, result);
if (HP_TIMING_AVAIL)
putchar ('\n');
@@ -117,20 +140,27 @@
{
size_t i, j, n, align, pos, len;
int seek_char;
- char *result;
- unsigned char *p = buf1 + page_size - 512;
+ CHAR *result;
+ UCHAR *p = (UCHAR *) (buf1 + page_size) - 512;
for (n = 0; n < ITERATIONS; n++)
{
- align = random () & 15;
+ align = random () & (63 / sizeof(CHAR));
+ /* For wcsrchr: align here means align not in bytes, but in wchar_ts,
+ in bytes it will equal to align * (sizeof (wchar_t)).
+ For strrchr we need to check all alignments from 0 to 63 since
+ some assembly implementations have separate prolog for alignments
+ more 48. */
pos = random () & 511;
if (pos + align >= 511)
pos = 510 - align - (random () & 7);
len = random () & 511;
+ /* len for wcschr here isn't in bytes but it's number of wchar_t
+ symbols. */
if (pos >= len)
len = pos + (random () & 7);
if (len + align >= 512)
- len = 511 - align - (random () & 7);
+ len = 511 - align - (random () & 7);
seek_char = random () & 255;
if (seek_char && pos == len)
{
@@ -141,7 +171,7 @@
}
j = len + align + 64;
if (j > 512)
- j = 512;
+ j = 512;
for (i = 0; i < j; i++)
{
@@ -165,18 +195,18 @@
}
if (pos <= len)
- result = (char *) (p + pos + align);
+ result = (CHAR *) (p + pos + align);
else if (seek_char == 0)
- result = (char *) (p + len + align);
+ result = (CHAR *) (p + len + align);
else
result = NULL;
FOR_EACH_IMPL (impl, 1)
- if (CALL (impl, (char *) (p + align), seek_char) != result)
+ if (CALL (impl, (CHAR *) (p + align), seek_char) != result)
{
error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %d, %zd, %zd) %p != %p, p %p",
n, impl->name, align, seek_char, len, pos,
- CALL (impl, (char *) (p + align), seek_char), result, p);
+ CALL (impl, (CHAR *) (p + align), seek_char), result, p);
ret = 1;
}
}
@@ -196,38 +226,38 @@
for (i = 1; i < 8; ++i)
{
- do_test (0, 16 << i, 2048, 23, 127);
- do_test (i, 16 << i, 2048, 23, 127);
- }
-
- for (i = 1; i < 8; ++i)
- {
- do_test (i, 64, 256, 23, 127);
- do_test (i, 64, 256, 23, 255);
+ do_test (0, 16 << i, 2048, 23, SMALL_CHAR);
+ do_test (i, 16 << i, 2048, 23, SMALL_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, 23, SMALL_CHAR);
+ do_test (i, 64, 256, 23, BIG_CHAR);
}
for (i = 0; i < 32; ++i)
{
- do_test (0, i, i + 1, 23, 127);
- do_test (0, i, i + 1, 23, 255);
- }
-
- for (i = 1; i < 8; ++i)
- {
- do_test (0, 16 << i, 2048, 0, 127);
- do_test (i, 16 << i, 2048, 0, 127);
- }
-
- for (i = 1; i < 8; ++i)
- {
- do_test (i, 64, 256, 0, 127);
- do_test (i, 64, 256, 0, 255);
+ do_test (0, i, i + 1, 23, SMALL_CHAR);
+ do_test (0, i, i + 1, 23, BIG_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 2048, 0, SMALL_CHAR);
+ do_test (i, 16 << i, 2048, 0, SMALL_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, 0, SMALL_CHAR);
+ do_test (i, 64, 256, 0, BIG_CHAR);
}
for (i = 0; i < 32; ++i)
{
- do_test (0, i, i + 1, 0, 127);
- do_test (0, i, i + 1, 0, 255);
+ do_test (0, i, i + 1, 0, SMALL_CHAR);
+ do_test (0, i, i + 1, 0, BIG_CHAR);
}
do_random_tests ();
Modified: trunk/libc/sunrpc/clnt_tcp.c
==============================================================================
--- trunk/libc/sunrpc/clnt_tcp.c (original)
+++ trunk/libc/sunrpc/clnt_tcp.c Thu Dec 22 19:27:39 2011
@@ -364,6 +364,8 @@
clnttcp_control (CLIENT *cl, int request, char *info)
{
struct ct_data *ct = (struct ct_data *) cl->cl_private;
+ u_long *mcall_ptr;
+ u_long ul;
switch (request)
@@ -393,11 +395,24 @@
* first element in the call structure *.
* This will get the xid of the PREVIOUS call
*/
+#if 0
+ /* This original code has aliasing issues. */
*(u_long *)info = ntohl (*(u_long *)ct->ct_mcall);
+#else
+ mcall_ptr = (u_long *)ct->ct_mcall;
+ ul = ntohl (*mcall_ptr);
+ memcpy (info, &ul, sizeof (ul));
+#endif
break;
case CLSET_XID:
/* This will set the xid of the NEXT call */
+#if 0
+ /* This original code has aliasing issues. */
*(u_long *)ct->ct_mcall = htonl (*(u_long *)info - 1);
+#else
+ ul = ntohl (*(u_long *)info - 1);
+ memcpy (ct->ct_mcall, &ul, sizeof (ul));
+#endif
/* decrement by 1 as clnttcp_call() increments once */
break;
case CLGET_VERS:
Modified: trunk/libc/sunrpc/clnt_udp.c
==============================================================================
--- trunk/libc/sunrpc/clnt_udp.c (original)
+++ trunk/libc/sunrpc/clnt_udp.c Thu Dec 22 19:27:39 2011
@@ -473,8 +473,7 @@
/* see if reply transaction id matches sent id.
Don't do this if we only wait for a replay */
if (xargs != NULL
- && (*((u_int32_t *) (cu->cu_inbuf))
- != *((u_int32_t *) (cu->cu_outbuf))))
+ && memcmp (cu->cu_inbuf, cu->cu_outbuf, sizeof (u_int32_t)) != 0)
continue;
/* we now assume we have the proper reply */
break;
Modified: trunk/libc/sunrpc/clnt_unix.c
==============================================================================
--- trunk/libc/sunrpc/clnt_unix.c (original)
+++ trunk/libc/sunrpc/clnt_unix.c Thu Dec 22 19:27:39 2011
@@ -338,7 +338,8 @@
clntunix_control (CLIENT *cl, int request, char *info)
{
struct ct_data *ct = (struct ct_data *) cl->cl_private;
-
+ u_long *mcall_ptr;
+ u_long ul;
switch (request)
{
@@ -366,11 +367,24 @@
* first element in the call structure *.
* This will get the xid of the PREVIOUS call
*/
+#if 0
+ /* This original code has aliasing issues. */
*(u_long *) info = ntohl (*(u_long *)ct->ct_mcall);
+#else
+ mcall_ptr = (u_long *)ct->ct_mcall;
+ ul = ntohl (*mcall_ptr);
+ memcpy (info, &ul, sizeof (ul));
+#endif
break;
case CLSET_XID:
/* This will set the xid of the NEXT call */
+#if 0
+ /* This original code has aliasing issues. */
*(u_long *) ct->ct_mcall = htonl (*(u_long *)info - 1);
+#else
+ ul = ntohl (*(u_long *)info - 1);
+ memcpy (ct->ct_mcall, &ul, sizeof (ul));
+#endif
/* decrement by 1 as clntunix_call() increments once */
break;
case CLGET_VERS:
Modified: trunk/libc/sysdeps/generic/dl-hash.h
==============================================================================
--- trunk/libc/sysdeps/generic/dl-hash.h (original)
+++ trunk/libc/sysdeps/generic/dl-hash.h Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Compute hash value for given string according to ELF standard.
- Copyright (C) 1995,1996,1997,1998,2003,2005 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998,2003,2005,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -25,46 +25,47 @@
first five operations no overflow is possible so we optimized it a
bit. */
static unsigned int
+__attribute__ ((unused))
_dl_elf_hash (const char *name_arg)
{
const unsigned char *name = (const unsigned char *) name_arg;
- unsigned long int hash = 0;
- if (*name != '\0')
+ unsigned long int hash = *name;
+ if (hash != 0 && name[1] != '\0')
{
- hash = *name++;
- if (*name != '\0')
+ hash = (hash << 4) + name[1];
+ if (name[2] != '\0')
{
- hash = (hash << 4) + *name++;
- if (*name != '\0')
+ hash = (hash << 4) + name[2];
+ if (name[3] != '\0')
{
- hash = (hash << 4) + *name++;
- if (*name != '\0')
+ hash = (hash << 4) + name[3];
+ if (name[4] != '\0')
{
- hash = (hash << 4) + *name++;
- if (*name != '\0')
+ hash = (hash << 4) + name[4];
+ name += 5;
+ while (*name != '\0')
{
+ unsigned long int hi;
hash = (hash << 4) + *name++;
- while (*name != '\0')
- {
- unsigned long int hi;
- hash = (hash << 4) + *name++;
- hi = hash & 0xf0000000;
+ hi = hash & 0xf0000000;
- /* The algorithm specified in the ELF ABI is as
- follows:
+ /* The algorithm specified in the ELF ABI is as
+ follows:
- if (hi != 0)
- hash ^= hi >> 24;
+ if (hi != 0)
+ hash ^= hi >> 24;
- hash &= ~hi;
+ hash &= ~hi;
- But the following is equivalent and a lot
- faster, especially on modern processors. */
+ But the following is equivalent and a lot
+ faster, especially on modern processors. */
- hash ^= hi;
- hash ^= hi >> 24;
- }
+ hash ^= hi >> 24;
}
+
+ /* Second part of the modified formula. This
+ operation can be lifted outside the loop. */
+ hash &= 0x0fffffff;
}
}
}
Modified: trunk/libc/sysdeps/i386/i686/multiarch/Makefile
==============================================================================
--- trunk/libc/sysdeps/i386/i686/multiarch/Makefile (original)
+++ trunk/libc/sysdeps/i386/i686/multiarch/Makefile Thu Dec 22 19:27:39 2011
@@ -37,7 +37,8 @@
ifeq ($(subdir),wcsmbs)
sysdep_routines += wcscmp-sse2 wcscmp-c wcslen-sse2 wcslen-c \
- wmemcmp-sse4 wmemcmp-ssse3 wmemcmp-c
+ wmemcmp-sse4 wmemcmp-ssse3 wmemcmp-c wcschr-sse2 \
+ wcschr-c wcsrchr-sse2 wcsrchr-c wcscpy-ssse3 wcscpy-c
endif
ifeq (mathyes,$(subdir)$(config-cflags-avx))
Modified: trunk/libc/sysdeps/powerpc/Makefile
==============================================================================
--- trunk/libc/sysdeps/powerpc/Makefile (original)
+++ trunk/libc/sysdeps/powerpc/Makefile Thu Dec 22 19:27:39 2011
@@ -23,4 +23,6 @@
ifeq ($(subdir),csu)
# get offset to rtld_global._dl_hwcap
gen-as-const-headers += rtld-global-offsets.sym
+# get offset to __locale_struct.__ctype_tolower
+gen-as-const-headers += locale-defines.sym
endif
Modified: trunk/libc/sysdeps/powerpc/fpu/e_hypot.c
==============================================================================
--- trunk/libc/sysdeps/powerpc/fpu/e_hypot.c (original)
+++ trunk/libc/sysdeps/powerpc/fpu/e_hypot.c Thu Dec 22 19:27:39 2011
@@ -26,7 +26,7 @@
static const double two600 = 4.149515568880993e+180;
static const double two1022 = 4.49423283715579e+307;
static const double twoM500 = 3.054936363499605e-151;
-static const double twoM600 = 4.616489308892868e-128;
+static const double twoM600 = 2.4099198651028841e-181;
static const double pdnum = 2.225073858507201e-308;
/* __ieee754_hypot(x,y)
Modified: trunk/libc/sysdeps/powerpc/powerpc32/a2/memcpy.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/a2/memcpy.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/a2/memcpy.S Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Optimized memcpy implementation for PowerPC A2.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by Michael Brutman <brutman@xxxxxxxxxx>.
This file is part of the GNU C Library.
@@ -113,11 +113,9 @@
mflr r0
/* Establishes GOT addressability so we can load __cache_line_size
from static. This value was set from the aux vector during startup. */
- bcl 20,31,1f
-1:
- mflr r9
- addis r9,r9,__cache_line_size-1b@ha
- lwz r9,__cache_line_size-1b@l(r9)
+ SETUP_GOT_ACCESS(r9,got_label)
+ addis r9,r9,__cache_line_size-got_label@ha
+ lwz r9,__cache_line_size-got_label@l(r9)
mtlr r0
#else
/* Load __cache_line_size from static. This value was set from the
Modified: trunk/libc/sysdeps/powerpc/powerpc32/dl-start.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/dl-start.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/dl-start.S Thu Dec 22 19:27:39 2011
@@ -1,5 +1,6 @@
/* Machine-dependent ELF startup code. PowerPC version.
- Copyright (C) 1995-2000, 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1995-2000, 2002, 2004, 2005, 2006, 2011
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -47,10 +48,9 @@
passed by value!). */
/* Put our GOT pointer in r31, */
- bcl 20,31,1f
-1: mflr r31
- addis r31,r31,_GLOBAL_OFFSET_TABLE_-1b@ha
- addi r31,r31,_GLOBAL_OFFSET_TABLE_-1b@l
+ SETUP_GOT_ACCESS(r31,got_label)
+ addis r31,r31,_GLOBAL_OFFSET_TABLE_-got_label@ha
+ addi r31,r31,_GLOBAL_OFFSET_TABLE_-got_label@l
/* the address of _start in r30, */
mr r30,r3
/* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28. */
Modified: trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Startup code for programs linked with GNU libc.
- Copyright (C) 1998,1999,2000,2001,2002,2003,2009
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2009, 2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -59,10 +59,8 @@
/* Set up an initial stack frame, and clear the LR. */
clrrwi r1,r1,4
#ifdef PIC
- bcl 20,31,L(branch)
-L(branch):
+ SETUP_GOT_ACCESS(r13,got_label)
li r0,0
- mflr r13
#else
li r0,0
#endif
@@ -73,10 +71,10 @@
start_addresses in r8. Also load the GOT pointer so that new PLT
calls work, like the one to __libc_start_main. */
#ifdef PIC
- addis r30,r13,_GLOBAL_OFFSET_TABLE_-L(branch)@ha
- addis r8,r13,L(start_addresses)-L(branch)@ha
- addi r30,r30,_GLOBAL_OFFSET_TABLE_-L(branch)@l
- lwzu r13,L(start_addresses)-L(branch)@l(r8)
+ addis r30,r13,_GLOBAL_OFFSET_TABLE_-got_label@ha
+ addis r8,r13,L(start_addresses)-got_label@ha
+ addi r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
+ lwzu r13, L(start_addresses)-got_label@l(r8)
#else
lis r8,L(start_addresses)@ha
lwzu r13,L(start_addresses)@l(r8)
Modified: trunk/libc/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S Thu Dec 22 19:27:39 2011
@@ -1,5 +1,6 @@
/* longjmp for PowerPC.
- Copyright (C) 1995-99, 2000, 2003-2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1995-99, 2000, 2003-2006, 2009, 2011
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -34,10 +35,9 @@
# ifdef PIC
mflr r6
cfi_register (lr,r6)
- bcl 20,31,1f
-1: mflr r5
- addis r5,r5,_GLOBAL_OFFSET_TABLE_-1b@ha
- addi r5,r5,_GLOBAL_OFFSET_TABLE_-1b@l
+ SETUP_GOT_ACCESS(r5,got_label)
+ addis r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@ha
+ addi r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@l
# ifdef SHARED
lwz r5,_rtld_global_ro@got(r5)
mtlr r6
Modified: trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceil.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceil.S Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* ceil function. PowerPC32 version.
- Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -31,10 +31,9 @@
#ifdef SHARED
mflr r11
cfi_register(lr,r11)
- bcl 20,31,1f
-1: mflr r9
- addis r9,r9,.LC0-1b@ha
- lfs fp13,.LC0-1b@l(r9)
+ SETUP_GOT_ACCESS(r9,got_label)
+ addis r9,r9,.LC0-got_label@ha
+ lfs fp13,.LC0-got_label@l(r9)
mtlr r11
cfi_same_value (lr)
#else
Modified: trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* float ceil function. PowerPC32 version.
- Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -30,10 +30,9 @@
#ifdef SHARED
mflr r11
cfi_register(lr,r11)
- bcl 20,31,1f
-1: mflr r9
- addis r9,r9,.LC0-1b@ha
- lfs fp13,.LC0-1b@l(r9)
+ SETUP_GOT_ACCESS(r9,got_label)
+ addis r9,r9,.LC0-got_label@ha
+ lfs fp13,.LC0-got_label@l(r9)
mtlr r11
cfi_same_value (lr)
#else
Modified: trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_floor.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_floor.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/fpu/s_floor.S Thu Dec 22 19:27:39 2011
@@ -1,5 +1,5 @@
/* Floor function. PowerPC32 version.
- Copyright (C) 2004, 2006 Free Software Foundation, Inc.
[... 1710 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits