[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r8394 - in /trunk: libc/ libc/debug/ libc/elf/ libc/gmon/ libc/gshadow/ libc/iconv/ libc/iconvdata/ libc/include/ libc/inet/...
- To: commits@xxxxxxxxxx
- Subject: [commits] r8394 - in /trunk: libc/ libc/debug/ libc/elf/ libc/gmon/ libc/gshadow/ libc/iconv/ libc/iconvdata/ libc/include/ libc/inet/...
- From: joseph@xxxxxxxxxx
- Date: Thu, 30 Apr 2009 21:37:19 -0000
Author: joseph
Date: Thu Apr 30 14:37:18 2009
New Revision: 8394
Log:
Merge changes between r8303 and r8393 from /fsf/trunk.
Added:
trunk/libc/gshadow/
- copied from r8393, fsf/trunk/libc/gshadow/
trunk/libc/include/gshadow.h
- copied unchanged from r8393, fsf/trunk/libc/include/gshadow.h
trunk/libc/nss/nss_files/files-sgrp.c
- copied unchanged from r8393, fsf/trunk/libc/nss/nss_files/files-sgrp.c
trunk/libc/nss/sgrp-lookup.c
- copied unchanged from r8393, fsf/trunk/libc/nss/sgrp-lookup.c
trunk/libc/shadow/tst-shadow.c
- copied unchanged from r8393, fsf/trunk/libc/shadow/tst-shadow.c
trunk/ports/sysdeps/hppa/hppa1.1/s_signbit.c
- copied unchanged from r8393, fsf/trunk/ports/sysdeps/hppa/hppa1.1/s_signbit.c
trunk/ports/sysdeps/unix/bsd/osf/alpha/
- copied from r8393, fsf/trunk/ports/sysdeps/unix/bsd/osf/alpha/
trunk/ports/sysdeps/unix/sysv/linux/mips/getcontext.S
- copied unchanged from r8393, fsf/trunk/ports/sysdeps/unix/sysv/linux/mips/getcontext.S
trunk/ports/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h
- copied unchanged from r8393, fsf/trunk/ports/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h
trunk/ports/sysdeps/unix/sysv/linux/mips/makecontext.S
- copied unchanged from r8393, fsf/trunk/ports/sysdeps/unix/sysv/linux/mips/makecontext.S
trunk/ports/sysdeps/unix/sysv/linux/mips/setcontext.S
- copied unchanged from r8393, fsf/trunk/ports/sysdeps/unix/sysv/linux/mips/setcontext.S
trunk/ports/sysdeps/unix/sysv/linux/mips/swapcontext.S
- copied unchanged from r8393, fsf/trunk/ports/sysdeps/unix/sysv/linux/mips/swapcontext.S
trunk/ports/sysdeps/unix/sysv/linux/mips/ucontext_i.sym
- copied unchanged from r8393, fsf/trunk/ports/sysdeps/unix/sysv/linux/mips/ucontext_i.sym
Modified:
trunk/libc/ChangeLog
trunk/libc/Makeconfig
trunk/libc/Makefile
trunk/libc/NEWS
trunk/libc/debug/vasprintf_chk.c
trunk/libc/debug/vsnprintf_chk.c
trunk/libc/debug/vsprintf_chk.c
trunk/libc/elf/dl-load.c
trunk/libc/elf/dl-open.c
trunk/libc/elf/dl-profile.c
trunk/libc/elf/dl-runtime.c
trunk/libc/elf/rtld.c
trunk/libc/elf/sprof.c
trunk/libc/gmon/gmon.c
trunk/libc/iconv/gconv_simple.c
trunk/libc/iconvdata/sjis.c
trunk/libc/include/features.h
trunk/libc/inet/inet6_option.c
trunk/libc/inet/rcmd.c
trunk/libc/inet/rexec.c
trunk/libc/libio/iovsprintf.c
trunk/libc/libio/iovsscanf.c
trunk/libc/libio/strfile.h
trunk/libc/libio/tst-widetext.input
trunk/libc/libio/vasprintf.c
trunk/libc/libio/vsnprintf.c
trunk/libc/locale/locarchive.h
trunk/libc/locale/programs/locarchive.c
trunk/libc/localedata/ChangeLog
trunk/libc/localedata/SUPPORTED
trunk/libc/localedata/locales/cs_CZ
trunk/libc/localedata/locales/csb_PL
trunk/libc/localedata/locales/da_DK
trunk/libc/localedata/locales/de_DE
trunk/libc/localedata/locales/en_GB
trunk/libc/localedata/locales/en_PH
trunk/libc/localedata/locales/es_CL
trunk/libc/localedata/locales/es_CO
trunk/libc/localedata/locales/es_MX
trunk/libc/localedata/locales/es_US
trunk/libc/localedata/locales/es_VE
trunk/libc/localedata/locales/et_EE
trunk/libc/localedata/locales/fil_PH
trunk/libc/localedata/locales/fr_FR
trunk/libc/localedata/locales/fur_IT
trunk/libc/localedata/locales/fy_DE
trunk/libc/localedata/locales/ht_HT
trunk/libc/localedata/locales/hu_HU
trunk/libc/localedata/locales/ik_CA
trunk/libc/localedata/locales/iu_CA
trunk/libc/localedata/locales/li_BE
trunk/libc/localedata/locales/li_NL
trunk/libc/localedata/locales/mk_MK
trunk/libc/localedata/locales/nb_NO
trunk/libc/localedata/locales/nds_DE
trunk/libc/localedata/locales/nds_NL
trunk/libc/localedata/locales/nn_NO
trunk/libc/localedata/locales/pl_PL
trunk/libc/localedata/locales/sc_IT
trunk/libc/localedata/locales/sk_SK
trunk/libc/localedata/locales/sr_ME
trunk/libc/localedata/locales/sr_RS
trunk/libc/localedata/locales/sr_RS@latin
trunk/libc/localedata/locales/tl_PH
trunk/libc/localedata/locales/uk_UA
trunk/libc/malloc/arena.c
trunk/libc/malloc/hooks.c
trunk/libc/malloc/malloc.c
trunk/libc/math/libm-test.inc
trunk/libc/math/w_fmod.c
trunk/libc/math/w_fmodf.c
trunk/libc/math/w_fmodl.c
trunk/libc/misc/hsearch_r.c
trunk/libc/misc/preadv.c
trunk/libc/misc/preadv64.c
trunk/libc/misc/pwritev.c
trunk/libc/misc/pwritev64.c
trunk/libc/misc/sys/uio.h
trunk/libc/nptl/ChangeLog
trunk/libc/nptl/cancellation.c
trunk/libc/nptl/libc-cancellation.c
trunk/libc/nptl/pthread_attr_setschedparam.c
trunk/libc/nptl/sem_open.c
trunk/libc/nptl/sysdeps/i386/tls.h
trunk/libc/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
trunk/libc/nptl/sysdeps/x86_64/tls.h
trunk/libc/nscd/connections.c
trunk/libc/nscd/nscd_helper.c
trunk/libc/nss/Makefile
trunk/libc/nss/Versions
trunk/libc/nss/nss_files/files-parse.c
trunk/libc/nss/nsswitch.c
trunk/libc/nss/nsswitch.conf
trunk/libc/po/ca.po
trunk/libc/posix/bits/posix1_lim.h
trunk/libc/resolv/res_send.c
trunk/libc/shadow/Makefile
trunk/libc/shadow/sgetspent_r.c
trunk/libc/stdio-common/isoc99_vsscanf.c
trunk/libc/stdio-common/printf.h
trunk/libc/stdio-common/psiginfo.c
trunk/libc/stdio-common/reg-modifier.c
trunk/libc/stdio-common/stdio_lim.h.in
trunk/libc/stdlib/random_r.c
trunk/libc/stdlib/strfmon_l.c
trunk/libc/stdlib/strtod_l.c
trunk/libc/stdlib/tst-strtod.c
trunk/libc/sunrpc/clnt_raw.c
trunk/libc/sysdeps/generic/paths.h
trunk/libc/sysdeps/i386/fpu/s_cos.S
trunk/libc/sysdeps/i386/fpu/s_cosf.S
trunk/libc/sysdeps/i386/fpu/s_cosl.S
trunk/libc/sysdeps/i386/fpu/s_sin.S
trunk/libc/sysdeps/i386/fpu/s_sinf.S
trunk/libc/sysdeps/i386/fpu/s_sinl.S
trunk/libc/sysdeps/i386/fpu/s_tan.S
trunk/libc/sysdeps/i386/fpu/s_tanf.S
trunk/libc/sysdeps/i386/fpu/s_tanl.S
trunk/libc/sysdeps/ieee754/dbl-64/s_expm1.c
trunk/libc/sysdeps/ieee754/dbl-64/s_sin.c
trunk/libc/sysdeps/ieee754/dbl-64/s_tan.c
trunk/libc/sysdeps/ieee754/flt-32/s_cosf.c
trunk/libc/sysdeps/ieee754/flt-32/s_expm1f.c
trunk/libc/sysdeps/ieee754/flt-32/s_sinf.c
trunk/libc/sysdeps/ieee754/flt-32/s_tanf.c
trunk/libc/sysdeps/ieee754/k_standard.c
trunk/libc/sysdeps/ieee754/ldbl-96/s_cosl.c
trunk/libc/sysdeps/ieee754/ldbl-96/s_sinl.c
trunk/libc/sysdeps/posix/preadv.c
trunk/libc/sysdeps/posix/pwritev.c
trunk/libc/sysdeps/posix/readv.c
trunk/libc/sysdeps/sh/sh4/setjmp.S
trunk/libc/sysdeps/unix/make-syscalls.sh
trunk/libc/sysdeps/unix/sysv/linux/dl-osinfo.h
trunk/libc/sysdeps/unix/sysv/linux/ifaddrs.c
trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
trunk/libc/sysdeps/unix/sysv/linux/paths.h
trunk/libc/sysdeps/unix/sysv/linux/preadv.c
trunk/libc/sysdeps/unix/sysv/linux/pwritev.c
trunk/libc/sysdeps/unix/sysv/linux/readv.c
trunk/libc/sysdeps/unix/sysv/linux/sys/mount.h
trunk/libc/sysdeps/unix/sysv/linux/sys/timex.h
trunk/libc/sysdeps/unix/sysv/linux/writev.c
trunk/libc/sysdeps/x86_64/dl-machine.h
trunk/libc/sysdeps/x86_64/fpu/s_cosl.S
trunk/libc/sysdeps/x86_64/fpu/s_expm1l.S
trunk/libc/sysdeps/x86_64/fpu/s_sinl.S
trunk/libc/sysdeps/x86_64/fpu/s_tanl.S
trunk/ports/ChangeLog.arm
trunk/ports/ChangeLog.hppa
trunk/ports/ChangeLog.m68k
trunk/ports/ChangeLog.mips
trunk/ports/README
trunk/ports/sysdeps/arm/eabi/fpu_control.h
trunk/ports/sysdeps/hppa/dl-machine.h
trunk/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
trunk/ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h
trunk/ports/sysdeps/unix/sysv/linux/hppa/sysdep.h
trunk/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h
trunk/ports/sysdeps/unix/sysv/linux/mips/Makefile
trunk/ports/sysdeps/unix/sysv/linux/mips/kernel-features.h
trunk/ports/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Thu Apr 30 14:37:18 2009
@@ -1,3 +1,336 @@
+2009-04-29 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/ifaddrs.c: Revert unintended 2008-08-12
+ comment change.
+
+2009-04-27 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * locale/programs/locarchive.c (create_archive): Add MAP_PRIVATE
+ to MAP_ANON in PROT_NONE mmap64 call.
+ (open_archive): Likewise.
+ (file_data_available_p): Use mmap64 instead of mremap.
+ (enlarge_archive): Likewise. Update head if ah->addr changed.
+ Attempt to reserve address space after mmap64 region.
+
+2009-04-26 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/ieee754/dbl-64/s_expm1.c: Set errno for overflow.
+ * sysdeps/ieee754/flt-32/s_expm1f.c: Likewise.
+ * sysdeps/x86_64/fpu/s_expm1l.S: Likewise.
+
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Pole errors in
+ atanh should set ERANGE.
+
+ [BZ #10087]
+ * elf/dl-runtime.c (_dl_fixup): Use DL_FIXUP_VALUE_ADDR to access
+ result of lookup to make call to implement STT_GNU_IFUNC.
+ (_dl_profile_fixup): Likewise.
+ Patch by H.J. Lu <hjl.tools@xxxxxxxxx>.
+
+ * nscd/connections.c (send_ro_fd): Define temporary variable to avoid
+ warning.
+
+ * sysdeps/unix/sysv/linux/dl-osinfo.h (dl_fatal): Remove inline
+ from definition.
+
+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Don't define
+ label if it is not used.
+
+ * elf/dl-profile.c (_dl_start_profile): Define real-type variant
+ of gmon_hist_hdr and gmon_hdr structures and use them.
+ * elf/sprof.c: Likewise.
+
+ * elf/dl-load.c (open_verify): Add temporary variable to avoid
+ warning.
+
+ * nscd/nscd_helper.c (get_mapping): Avoid casts to avoid warnings.
+
+ * sunrpc/clnt_raw.c (clntraw_private_s): Use union in definition
+ to avoid cast.
+
+ * inet/rexec.c (rexec_af): Make sa2 a union to avoid warnings.
+ * inet/rcmd.c (rcmd_af): Make from a union of the various needed types
+ to avoid warnings.
+ (iruserok_af): Use ss_family instead of casts.
+
+ * gmon/gmon.c (write_hist): Define real-type variant of
+ gmon_hist_hdr structure and use it.
+ (write_gmon): Likewise for gmon_hdr.
+
+ * sysdeps/unix/sysv/linux/readv.c: Avoid declaration of replacement
+ function if we are not going to define it.
+ * sysdeps/unix/sysv/linux/writev.c: Likewise.
+
+ * inet/inet6_option.c (option_alloc): Add temporary variable to
+ avoid warning.
+
+ * libio/strfile.h (struct _IO_streambuf): Use correct type and
+ name of VTable element.
+ * libio/iovsprintf.c: Avoid casts to avoid warnings.
+ * libio/iovsscanf.c: Likewise.
+ * libio/vasprintf.c: Likewise.
+ * libio/vsnprintf.c: Likewise.
+ * stdio-common/isoc99_vsscanf.c: Likewise.
+ * stdlib/strfmon_l.c: Likewise.
+ * debug/vasprintf_chk.c: Likewise.
+ * debug/vsnprintf_chk.c: Likewise.
+ * debug/vsprintf_chk.c: Likewise.
+
+ * nss/nsswitch.c (__nss_lookup_function): En/Decrypt cached
+ function pointers.
+
+2009-04-26 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * sysdeps/ieee754/dbl-64/s_tan.c (tan): Fix -Wsequence-point warnings.
+
+2009-04-25 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * posix/bits/posix1_lim.h: Cleanup namespace a bit.
+
+ * sysdeps/i386/fpu/s_tan.S: Set errno for ±Inf.
+ * sysdeps/i386/fpu/s_tanf.S: Likewise.
+ * sysdeps/i386/fpu/s_tanl.S: Likewise.
+ * sysdeps/ieee754/dbl-64/s_tan.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_tanf.c: Likewise.
+ * sysdeps/x86_64/fpu/s_tanl.S: Likewise.
+ * math/libm-test.inc: Add tests for errno after tan calls with
+ ±Inf.
+
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Use correct
+ errno value vor pow(+-0,neg).
+ * math/libm-test.inc (pow_test): Add tests for errno value for
+ pole errors.
+
+ * math/w_fmod.c: Also handle x=±Inf as error.
+ * math/w_fmodf.c: Likewise.
+ * math/w_fmodl.c: Likewise.
+ * math/libm-test.inc (fmod_test): Add tests for errno after calls for
+ x=±Inf or y=0.
+
+ * sysdeps/i386/fpu/s_cos.S: Set errno for ±Inf.
+ * sysdeps/i386/fpu/s_cosf.S: Likewise.
+ * sysdeps/i386/fpu/s_cosl.S: Likewise.
+ * sysdeps/i386/fpu/s_sin.S: Likewise.
+ * sysdeps/i386/fpu/s_sinf.S: Likewise.
+ * sysdeps/i386/fpu/s_sinl.S: Likewise.
+ * sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_cosf.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_sinf.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/s_cosl.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/s_sinl.c: Likewise.
+ * sysdeps/x86_64/fpu/s_cosl.S: Likewise.
+ * sysdeps/x86_64/fpu/s_sinl.S: Likewise.
+ * math/libm-test.inc: Add tests for errno after sin/cos calls with
+ ±Inf.
+
+ * stdlib/strtod_l.c (round_and_return): We have to set errno to
+ ERANGE for underflows.
+ * stdlib/tst-strtod.c (tests): Two tests should set errno to ERANGE.
+
+ * stdio-common/stdio_lim.h.in (L_cuserid): Not part of POSIX since
+ the 2001 revision.
+
+ * libio/tst-widetext.input: Remove surrogates.
+
+ * include/features.h: _POSIX_C_SOURCE >= 200112L implies C99.
+
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Pole errors
+ for lgamma should set errno to ERANGE, not EDOM.
+ * math/libm-test.inc (lgamma_test): Check errno for pole errors.
+
+2009-04-24 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10093]
+ * iconv/gconv_simple.c (BODY for UTF-8 to INTERNAL): Don't accept
+ UTF-16 surrogates.
+
+ * locale/programs/locarchive.c (enlarge_archive): Conserve address
+ space when temporarily mapping the whole content of the old file.
+
+ [BZ #10100]
+ * misc/hsearch_r.c (hsearch_r): Add back ensurance that hval is
+ not zero.
+
+2009-04-24 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * iconvdata/sjis.c (BODY): Don't advance inptr before
+ STANDARD_FROM_LOOP_ERR_HANDLER (2) for 2 byte invalid input.
+ Use STANDARD_FROM_LOOP_ERR_HANDLER with 2 instead of 1 for
+ two byte chars.
+
+2009-04-24 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * locale/locarchive.h (struct locarhandle): Rename len field to
+ mmaped and add new reserved field.
+ * locale/programs/locarchive.c (RESERVE_MMAP_SIZE): Define.
+ (create_archive): Reserve address space and then map file into it.
+ (open_archive): Likewise.
+ (file_data_available_p): New function.
+ (compare_from_file): New function.
+ (close_archive): Adjust to member name changes.
+ (add_locale): Before comparing locale data, check it is mapped.
+ Otherwise fall back to reading from the file.
+
+2009-04-23 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * stdio-common/psiginfo.c: Include <errno.h>.
+
+2009-04-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #9920]
+ * stdlib/random_r.c (__srandom_r): Change type of word to int32_t
+ to get consistency between 32 and 64 bit architectures.
+
+ [BZ #10052]
+ * sysdeps/unix/make-syscalls.sh: Add rule to create target
+ directory for dummy syscall rules.
+ Patch by Chris Steinbroner <hesh@xxxxxxxxx>.
+
+2009-04-23 Aurelien Jarno <aurelien@xxxxxxxxxxx>
+
+ [BZ #10092]
+ * sysdeps/unix/sysv/linux/sys/mount.h: Define MNT_DETACH and
+ MNT_EXPIRE.
+
+2009-04-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/preadv.c: The kernel API changed. Adjust.
+ * sysdeps/unix/sysv/linux/pwritev.c: Likewise.
+
+2009-04-23 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * sysdeps/posix/pwritev.c (PWRITEV): Fix up comment. Copy
+ data from vector to temporary buffer and call PWRITEV after it
+ instead of vice versa.
+ * sysdeps/posix/preadv.c: Fix up comment.
+ * misc/preadv.c: Likewise.
+ * misc/preadv64.c: Likewise.
+ * misc/pwritev.c: Likewise.
+ * misc/pwritev64.c: Likewise.
+ * misc/sys/uio.h (preadv, pwritev, preadv64, pwritev64): Likewise.
+
+2009-04-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * shadow/sgetspent_r.c (__sgetspent_r): Recognize too small buffers.
+
+ * shadow/Makefile (tests): Add tst-shadow.
+ * shadow/tst-shadow.c: New file.
+
+ [BZ #9955]
+ * gshadow/Makefile: New file.
+ * gshadow/Versions: New file.
+ * gshadow/fgetsgent.c: New file.
+ * gshadow/fgetsgent_r.c: New file.
+ * gshadow/getsgent.c: New file.
+ * gshadow/getsgent_r.c: New file.
+ * gshadow/getsgnam.c: New file.
+ * gshadow/getsgnam_r.c: New file.
+ * gshadow/gshadow.h: New file.
+ * gshadow/putsgent.c: New file.
+ * gshadow/sgetsgent.c: New file.
+ * gshadow/sgetsgent_r.c: New file.
+ * gshadow/tst-gshadow.c: New file.
+ * include/gshadow.h: New file.
+ * Makeconfig (all-subdirs): Add gshadow.
+ * Makefile (installed-headers): Add gshadow/gshadow.h.
+ * nss/Makefile (databases): Add sgrp.
+ * nss/Versions: Add gshadow functions as private exports.
+ * nss/nsswitch.conf: Add gshadow entry.
+ * nss/sgrp-lookup.c: New file.
+ * nss/nss_files/files-parse.c: Add STRING_LIST macro. Rewrite
+ parse_list to handle STRING_LIST and TRAILING_LIST_PARSER.
+ * nss/nss_files/files-sgrp.c: New file.
+ * sysdeps/generic/paths.h: Add _PATH_GSHADOW.
+ * sysdeps/unix/sysv/linux/paths.h: Likewise.
+
+2009-04-22 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * stdio-common/printf.h: Add missing const to register_printf_modifier.
+ * stdio-common/reg-modifier.c: Likewise.
+
+2009-04-22 Andrew Stubbs <ams@xxxxxxxxxxxxxxxx>
+
+ * sysdeps/sh/sh4/setjmp.S (__sigsetjmp): Adjust JB_SIZE when there
+ is no FPU.
+
+2009-04-20 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10086]
+ * sysdeps/unix/sysv/linux/sys/timex.h: Add definitions from kernel
+ headers up to 2.6.30.
+
+ * po/ca.po: Update from translation team.
+
+2009-04-19 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10069]
+ * elf/dl-open.c (dl_open_worker): We cannot guarantee that we can load
+ an object that uses static TLS if the TLS modid is higher than the
+ reserve we always allocate. At least for multi-threaded code.
+
+2009-04-18 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * stdlib/strfmon_l.c (__vstrfmon_l): Don't wrap when computing width.
+ Numerically stable check for valid width.
+
+ * locale/programs/locarchive.c (open_archive): Map the entire file
+ and not just the administrative data.
+ (add_locale): When we find a hash sum match compare the content
+ to be sure.
+
+ * malloc/malloc.c (malloc_info): Output address space information.
+
+2009-04-17 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * malloc/malloc.c (malloc_info): Also output system memory information.
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: All supported
+ architectures have preadv/pwritev in 2.6.30.
+
+ * sysdeps/posix/preadv.c: Reading of zero bytes is no error.
+ * sysdeps/posix/readv.c: Likewise.
+ Reported by Markus Armbruster <armbru@xxxxxxxxxx>.
+
+ * malloc/hooks.c (top_check): Force hook value into register.
+
+2009-04-16 Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
+
+ * elf/rtld.c (dl_main): Really call _dl_sysdep_start_cleanup after all
+ calls to _dl_relocate_object.
+
+2009-04-16 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #9957]
+ * malloc/malloc.c (force_reg): Define.
+ (sYSMALLOc): Load hook variable into variable
+ before test and force into register.
+ (sYSTRIm): Likewise.
+ (public_mALLOc): Force hook value into register.
+ (public_fREe): Likewise.
+ (public_rEALLOc): Likewise.
+ (public_mEMALIGn): Likewise.
+ (public_vALLOc): Likewise.
+ (public_pVALLOc): Likewise.
+ (public_cALLOc): Likewise.
+ (__posix_memalign): Likewise.
+ * malloc/arena.c (ptmalloc_init): Load hook variable into variable
+ before test and force into register.
+ * malloc/hooks.c (top_check): Likewise.
+ (public_sET_STATe): Pretty printing.
+
+ * resolv/res_send.c (send_dg): Don't just ignore the result we got
+ in case we only receive one reply in single-request mode.
+
+2009-04-16 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * elf/dl-open.c (_dl_open): Bump GL(dl_nns) to 1 if no libraries
+ are dlopened in statically linked program even for __LM_ID_CALLER.
+
+2009-04-16 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * resolv/res_send.c (send_dg): Don't switch into single-request
+ mode if we already are in it.
+
2009-04-15 Ulrich Drepper <drepper@xxxxxxxxxx>
* sysdeps/unix/sysv/linux/getsysstats.c (next_line): Make sure there
Modified: trunk/libc/Makeconfig
==============================================================================
--- trunk/libc/Makeconfig (original)
+++ trunk/libc/Makeconfig Thu Apr 30 14:37:18 2009
@@ -944,7 +944,7 @@
all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
- gnulib iconv iconvdata wctype manual shadow po argp \
+ gnulib iconv iconvdata wctype manual shadow gshadow po argp \
crypt nss localedata timezone rt conform debug \
$(add-on-subdirs) $(dlfcn) $(binfmt-subdir)
Modified: trunk/libc/Makefile
==============================================================================
--- trunk/libc/Makefile (original)
+++ trunk/libc/Makefile Thu Apr 30 14:37:18 2009
@@ -291,7 +291,7 @@
crypt/crypt.h ctype/ctype.h debug/execinfo.h \
dirent/dirent.h dlfcn/dlfcn.h elf/elf.h elf/link.h \
gmon/sys/gmon.h gmon/sys/gmon_out.h gmon/sys/profil.h \
- grp/grp.h iconv/iconv.h iconv/gconv.h \
+ grp/grp.h gshadow/gshadow.h iconv/iconv.h iconv/gconv.h \
$(wildcard inet/netinet/*.h) \
$(wildcard inet/arpa/*.h inet/protocols/*.h) \
inet/aliases.h inet/ifaddrs.h inet/netinet/ip6.h \
Modified: trunk/libc/NEWS
==============================================================================
--- trunk/libc/NEWS (original)
+++ trunk/libc/NEWS Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2009-4-13
+GNU C Library NEWS -- history of user-visible changes. 2009-4-23
Copyright (C) 1992-2008, 2009 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -42,6 +42,9 @@
* Extended printf hook support. It is possible to use user-defined types
and extend existing format specifiers.
+ Implemented by Ulrich Drepper.
+
+* Handling for group shadow files has been added.
Implemented by Ulrich Drepper.
Modified: trunk/libc/debug/vasprintf_chk.c
==============================================================================
--- trunk/libc/debug/vasprintf_chk.c (original)
+++ trunk/libc/debug/vasprintf_chk.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1997,1999-2002,2004,2006,2008
+/* Copyright (C) 1995,1997,1999-2002,2004,2006,2008,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -53,8 +53,8 @@
#ifdef _IO_MTSAFE_IO
sf._sbf._f._lock = NULL;
#endif
- _IO_no_init ((_IO_FILE *) &sf._sbf, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, string, init_string_size, string);
sf._sbf._f._flags &= ~_IO_USER_BUF;
sf._s._allocate_buffer = (_IO_alloc_type) malloc;
Modified: trunk/libc/debug/vsnprintf_chk.c
==============================================================================
--- trunk/libc/debug/vsnprintf_chk.c (original)
+++ trunk/libc/debug/vsnprintf_chk.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1997, 1998, 2004, 2006
+/* Copyright (C) 1991, 1995, 1997, 1998, 2004, 2006, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -53,7 +53,7 @@
}
_IO_no_init (&sf.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps;
+ _IO_JUMPS (&sf.f._sbf) = &_IO_strn_jumps;
s[0] = '\0';
/* For flags > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n
@@ -62,7 +62,7 @@
sf.f._sbf._f._flags2 |= _IO_FLAGS2_FORTIFY;
_IO_str_init_static_internal (&sf.f, s, maxlen - 1, s);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args);
+ ret = INTUSE(_IO_vfprintf) (&sf.f._sbf._f, format, args);
if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf)
*sf.f._sbf._f._IO_write_ptr = '\0';
Modified: trunk/libc/debug/vsprintf_chk.c
==============================================================================
--- trunk/libc/debug/vsprintf_chk.c (original)
+++ trunk/libc/debug/vsprintf_chk.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997, 1999-2003, 2004, 2006
+/* Copyright (C) 1994, 1997, 1999-2003, 2004, 2006, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -75,7 +75,7 @@
__chk_fail ();
_IO_no_init (&f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &f._sbf) = &_IO_str_chk_jumps;
+ _IO_JUMPS (&f._sbf) = &_IO_str_chk_jumps;
s[0] = '\0';
_IO_str_init_static_internal (&f, s, slen - 1, s);
@@ -84,7 +84,7 @@
if (flags > 0)
f._sbf._f._flags2 |= _IO_FLAGS2_FORTIFY;
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &f._sbf, format, args);
+ ret = INTUSE(_IO_vfprintf) (&f._sbf._f, format, args);
*f._sbf._f._IO_write_ptr = '\0';
return ret;
Modified: trunk/libc/elf/dl-load.c
==============================================================================
--- trunk/libc/elf/dl-load.c (original)
+++ trunk/libc/elf/dl-load.c Thu Apr 30 14:37:18 2009
@@ -1655,7 +1655,8 @@
EI_PAD), 0))
{
/* Something is wrong. */
- if (*(Elf32_Word *) &ehdr->e_ident !=
+ const Elf32_Word *magp = (const void *) ehdr->e_ident;
+ if (*magp !=
#if BYTE_ORDER == LITTLE_ENDIAN
((ELFMAG0 << (EI_MAG0 * 8)) |
(ELFMAG1 << (EI_MAG1 * 8)) |
Modified: trunk/libc/elf/dl-open.c
==============================================================================
--- trunk/libc/elf/dl-open.c (original)
+++ trunk/libc/elf/dl-open.c Thu Apr 30 14:37:18 2009
@@ -490,6 +490,18 @@
if (imap->l_need_tls_init)
{
+ /* For static TLS we have to allocate the memory here
+ and now. This includes allocating memory in the DTV.
+ But we cannot change any DTV other than our own. So,
+ if we cannot guarantee that there is room in the DTV
+ we don't even try it and fail the load.
+
+ XXX We could track the minimum DTV slots allocated in
+ all threads. */
+ if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS)
+ _dl_signal_error (0, "dlopen", NULL, N_("\
+cannot load any more object with static TLS"));
+
imap->l_need_tls_init = 0;
#ifdef SHARED
/* Update the slot information data for at least the
@@ -580,7 +592,8 @@
_dl_signal_error (EINVAL, file, NULL,
N_("invalid target namespace in dlmopen()"));
#ifndef SHARED
- else if (nsid == LM_ID_BASE && GL(dl_ns)[LM_ID_BASE]._ns_loaded == NULL
+ else if ((nsid == LM_ID_BASE || nsid == __LM_ID_CALLER)
+ && GL(dl_ns)[LM_ID_BASE]._ns_loaded == NULL
&& GL(dl_nns) == 0)
GL(dl_nns) = 1;
#endif
Modified: trunk/libc/elf/dl-profile.c
==============================================================================
--- trunk/libc/elf/dl-profile.c (original)
+++ trunk/libc/elf/dl-profile.c Thu Apr 30 14:37:18 2009
@@ -1,5 +1,5 @@
/* Profiling of shared libraries.
- Copyright (C) 1997-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-2004, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
Based on the BSD mcount implementation.
@@ -178,8 +178,6 @@
const ElfW(Phdr) *ph;
ElfW(Addr) mapstart = ~((ElfW(Addr)) 0);
ElfW(Addr) mapend = 0;
- struct gmon_hdr gmon_hdr;
- struct gmon_hist_hdr hist_hdr;
char *hist, *cp;
size_t idx;
size_t tossize;
@@ -251,15 +249,52 @@
+ 4 + 4 + fromssize * sizeof (struct here_cg_arc_record));
/* Create the gmon_hdr we expect or write. */
- memset (&gmon_hdr, '\0', sizeof (struct gmon_hdr));
+ struct real_gmon_hdr
+ {
+ char cookie[4];
+ int32_t version;
+ char spare[3 * 4];
+ } gmon_hdr;
+ if (sizeof (gmon_hdr) != sizeof (struct gmon_hdr)
+ || (offsetof (struct real_gmon_hdr, cookie)
+ != offsetof (struct gmon_hdr, cookie))
+ || (offsetof (struct real_gmon_hdr, version)
+ != offsetof (struct gmon_hdr, version)))
+ abort ();
+
memcpy (&gmon_hdr.cookie[0], GMON_MAGIC, sizeof (gmon_hdr.cookie));
- *(int32_t *) gmon_hdr.version = GMON_SHOBJ_VERSION;
+ gmon_hdr.version = GMON_SHOBJ_VERSION;
+ memset (gmon_hdr.spare, '\0', sizeof (gmon_hdr.spare));
/* Create the hist_hdr we expect or write. */
- *(char **) hist_hdr.low_pc = (char *) mapstart;
- *(char **) hist_hdr.high_pc = (char *) mapend;
- *(int32_t *) hist_hdr.hist_size = kcountsize / sizeof (HISTCOUNTER);
- *(int32_t *) hist_hdr.prof_rate = __profile_frequency ();
+ struct real_gmon_hist_hdr
+ {
+ char *low_pc;
+ char *high_pc;
+ int32_t hist_size;
+ int32_t prof_rate;
+ char dimen[15];
+ char dimen_abbrev;
+ } hist_hdr;
+ if (sizeof (hist_hdr) != sizeof (struct gmon_hist_hdr)
+ || (offsetof (struct real_gmon_hist_hdr, low_pc)
+ != offsetof (struct gmon_hist_hdr, low_pc))
+ || (offsetof (struct real_gmon_hist_hdr, high_pc)
+ != offsetof (struct gmon_hist_hdr, high_pc))
+ || (offsetof (struct real_gmon_hist_hdr, hist_size)
+ != offsetof (struct gmon_hist_hdr, hist_size))
+ || (offsetof (struct real_gmon_hist_hdr, prof_rate)
+ != offsetof (struct gmon_hist_hdr, prof_rate))
+ || (offsetof (struct real_gmon_hist_hdr, dimen)
+ != offsetof (struct gmon_hist_hdr, dimen))
+ || (offsetof (struct real_gmon_hist_hdr, dimen_abbrev)
+ != offsetof (struct gmon_hist_hdr, dimen_abbrev)))
+ abort ();
+
+ hist_hdr.low_pc = (char *) mapstart;
+ hist_hdr.high_pc = (char *) mapend;
+ hist_hdr.hist_size = kcountsize / sizeof (HISTCOUNTER);
+ hist_hdr.prof_rate = __profile_frequency ();
if (sizeof (hist_hdr.dimen) >= sizeof ("seconds"))
{
memcpy (hist_hdr.dimen, "seconds", sizeof ("seconds"));
Modified: trunk/libc/elf/dl-runtime.c
==============================================================================
--- trunk/libc/elf/dl-runtime.c (original)
+++ trunk/libc/elf/dl-runtime.c Thu Apr 30 14:37:18 2009
@@ -137,7 +137,7 @@
value = elf_machine_plt_value (l, reloc, value);
if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0))
- value = ((DL_FIXUP_VALUE_TYPE (*) (void)) value) ();
+ value = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) ();
/* Finally, fix up the plt itself. */
if (__builtin_expect (GLRO(dl_bind_not), 0))
@@ -225,7 +225,8 @@
if (__builtin_expect (ELFW(ST_TYPE) (defsym->st_info)
== STT_GNU_IFUNC, 0))
- value = ((DL_FIXUP_VALUE_TYPE (*) (void)) value) ();
+ value = ((DL_FIXUP_VALUE_TYPE (*) (void))
+ DL_FIXUP_VALUE_ADDR (value)) ();
}
else
{
@@ -235,7 +236,8 @@
if (__builtin_expect (ELFW(ST_TYPE) (refsym->st_info)
== STT_GNU_IFUNC, 0))
- value = ((DL_FIXUP_VALUE_TYPE (*) (void)) value) ();
+ value = ((DL_FIXUP_VALUE_TYPE (*) (void))
+ DL_FIXUP_VALUE_ADDR (value)) ();
result = l;
}
Modified: trunk/libc/elf/rtld.c
==============================================================================
--- trunk/libc/elf/rtld.c (original)
+++ trunk/libc/elf/rtld.c Thu Apr 30 14:37:18 2009
@@ -2181,8 +2181,6 @@
if (l->l_tls_blocksize != 0 && tls_init_tp_called)
_dl_add_to_slotinfo (l);
}
-
- _dl_sysdep_start_cleanup ();
}
else
{
@@ -2237,13 +2235,6 @@
HP_TIMING_DIFF (relocate_time, start, stop);
- /* Do any necessary cleanups for the startup OS interface code.
- We do these now so that no calls are made after rtld re-relocation
- which might be resolved to different functions than we expect.
- We cannot do this before relocating the other objects because
- _dl_relocate_object might need to call `mprotect' for DT_TEXTREL. */
- _dl_sysdep_start_cleanup ();
-
/* Now enable profiling if needed. Like the previous call,
this has to go here because the calls it makes should use the
rtld versions of the functions (particularly calloc()), but it
@@ -2298,6 +2289,13 @@
HP_TIMING_DIFF (add, start, stop);
HP_TIMING_ACCUM_NT (relocate_time, add);
}
+
+ /* Do any necessary cleanups for the startup OS interface code.
+ We do these now so that no calls are made after rtld re-relocation
+ which might be resolved to different functions than we expect.
+ We cannot do this before relocating the other objects because
+ _dl_relocate_object might need to call `mprotect' for DT_TEXTREL. */
+ _dl_sysdep_start_cleanup ();
#ifdef SHARED
/* Auditing checkpoint: we have added all objects. */
Modified: trunk/libc/elf/sprof.c
==============================================================================
--- trunk/libc/elf/sprof.c (original)
+++ trunk/libc/elf/sprof.c Thu Apr 30 14:37:18 2009
@@ -195,13 +195,24 @@
};
+struct real_gmon_hist_hdr
+{
+ char *low_pc;
+ char *high_pc;
+ int32_t hist_size;
+ int32_t prof_rate;
+ char dimen[15];
+ char dimen_abbrev;
+};
+
+
struct profdata
{
void *addr;
off_t size;
char *hist;
- struct gmon_hist_hdr *hist_hdr;
+ struct real_gmon_hist_hdr *hist_hdr;
uint16_t *kcount;
uint32_t narcs; /* Number of arcs in toset. */
struct here_cg_arc_record *data;
@@ -743,8 +754,6 @@
int fd;
struct stat st;
void *addr;
- struct gmon_hdr gmon_hdr;
- struct gmon_hist_hdr hist_hdr;
uint32_t *narcsp;
size_t fromlimit;
struct here_cg_arc_record *data;
@@ -831,10 +840,10 @@
/* Pointer to data after the header. */
result->hist = (char *) ((struct gmon_hdr *) addr + 1);
- result->hist_hdr = (struct gmon_hist_hdr *) ((char *) result->hist
- + sizeof (uint32_t));
+ result->hist_hdr = (struct real_gmon_hist_hdr *) ((char *) result->hist
+ + sizeof (uint32_t));
result->kcount = (uint16_t *) ((char *) result->hist + sizeof (uint32_t)
- + sizeof (struct gmon_hist_hdr));
+ + sizeof (struct real_gmon_hist_hdr));
/* Compute pointer to array of the arc information. */
narcsp = (uint32_t *) ((char *) result->kcount + shobj->kcountsize
@@ -844,18 +853,46 @@
+ sizeof (uint32_t));
/* Create the gmon_hdr we expect or write. */
- memset (&gmon_hdr, '\0', sizeof (struct gmon_hdr));
+ struct real_gmon_hdr
+ {
+ char cookie[4];
+ int32_t version;
+ char spare[3 * 4];
+ } gmon_hdr;
+ if (sizeof (gmon_hdr) != sizeof (struct gmon_hdr)
+ || (offsetof (struct real_gmon_hdr, cookie)
+ != offsetof (struct gmon_hdr, cookie))
+ || (offsetof (struct real_gmon_hdr, version)
+ != offsetof (struct gmon_hdr, version)))
+ abort ();
+
memcpy (&gmon_hdr.cookie[0], GMON_MAGIC, sizeof (gmon_hdr.cookie));
- *(int32_t *) gmon_hdr.version = GMON_SHOBJ_VERSION;
+ gmon_hdr.version = GMON_SHOBJ_VERSION;
+ memset (gmon_hdr.spare, '\0', sizeof (gmon_hdr.spare));
/* Create the hist_hdr we expect or write. */
- *(char **) hist_hdr.low_pc = (char *) shobj->lowpc - shobj->map->l_addr;
- *(char **) hist_hdr.high_pc = (char *) shobj->highpc - shobj->map->l_addr;
+ struct real_gmon_hist_hdr hist_hdr;
+ if (sizeof (hist_hdr) != sizeof (struct gmon_hist_hdr)
+ || (offsetof (struct real_gmon_hist_hdr, low_pc)
+ != offsetof (struct gmon_hist_hdr, low_pc))
+ || (offsetof (struct real_gmon_hist_hdr, high_pc)
+ != offsetof (struct gmon_hist_hdr, high_pc))
+ || (offsetof (struct real_gmon_hist_hdr, hist_size)
+ != offsetof (struct gmon_hist_hdr, hist_size))
+ || (offsetof (struct real_gmon_hist_hdr, prof_rate)
+ != offsetof (struct gmon_hist_hdr, prof_rate))
+ || (offsetof (struct real_gmon_hist_hdr, dimen)
+ != offsetof (struct gmon_hist_hdr, dimen))
+ || (offsetof (struct real_gmon_hist_hdr, dimen_abbrev)
+ != offsetof (struct gmon_hist_hdr, dimen_abbrev)))
+ abort ();
+
+ hist_hdr.low_pc = (char *) shobj->lowpc - shobj->map->l_addr;
+ hist_hdr.high_pc = (char *) shobj->highpc - shobj->map->l_addr;
if (do_test)
- printf ("low_pc = %p\nhigh_pc = %p\n",
- *(char **) hist_hdr.low_pc, *(char **) hist_hdr.high_pc);
- *(int32_t *) hist_hdr.hist_size = shobj->kcountsize / sizeof (HISTCOUNTER);
- *(int32_t *) hist_hdr.prof_rate = __profile_frequency ();
+ printf ("low_pc = %p\nhigh_pc = %p\n", hist_hdr.low_pc, hist_hdr.high_pc);
+ hist_hdr.hist_size = shobj->kcountsize / sizeof (HISTCOUNTER);
+ hist_hdr.prof_rate = __profile_frequency ();
strncpy (hist_hdr.dimen, "seconds", sizeof (hist_hdr.dimen));
hist_hdr.dimen_abbrev = 's';
@@ -1283,7 +1320,7 @@
size_t n;
void *data = NULL;
- tick_unit = 1.0 / *(uint32_t *) profdata->hist_hdr->prof_rate;
+ tick_unit = 1.0 / profdata->hist_hdr->prof_rate;
printf ("Flat profile:\n\n"
"Each sample counts as %g %s.\n",
Modified: trunk/libc/gmon/gmon.c
==============================================================================
--- trunk/libc/gmon/gmon.c (original)
+++ trunk/libc/gmon/gmon.c Thu Apr 30 14:37:18 2009
@@ -40,6 +40,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <stddef.h>
#include <unistd.h>
#include <libc-internal.h>
#include <not-cancel.h>
@@ -180,10 +181,18 @@
int fd;
{
u_char tag = GMON_TAG_TIME_HIST;
- struct gmon_hist_hdr thdr __attribute__ ((aligned (__alignof__ (char *))));
if (_gmonparam.kcountsize > 0)
{
+ struct real_gmon_hist_hdr
+ {
+ char *low_pc;
+ char *high_pc;
+ int32_t hist_size;
+ int32_t prof_rate;
+ char dimen[15];
+ char dimen_abbrev;
+ } thdr;
struct iovec iov[3] =
{
{ &tag, sizeof (tag) },
@@ -191,11 +200,25 @@
{ _gmonparam.kcount, _gmonparam.kcountsize }
};
- *(char **) thdr.low_pc = (char *) _gmonparam.lowpc;
- *(char **) thdr.high_pc = (char *) _gmonparam.highpc;
- *(int32_t *) thdr.hist_size = (_gmonparam.kcountsize
- / sizeof (HISTCOUNTER));
- *(int32_t *) thdr.prof_rate = __profile_frequency ();
+ if (sizeof (thdr) != sizeof (struct gmon_hist_hdr)
+ || (offsetof (struct real_gmon_hist_hdr, low_pc)
+ != offsetof (struct gmon_hist_hdr, low_pc))
+ || (offsetof (struct real_gmon_hist_hdr, high_pc)
+ != offsetof (struct gmon_hist_hdr, high_pc))
+ || (offsetof (struct real_gmon_hist_hdr, hist_size)
+ != offsetof (struct gmon_hist_hdr, hist_size))
+ || (offsetof (struct real_gmon_hist_hdr, prof_rate)
+ != offsetof (struct gmon_hist_hdr, prof_rate))
+ || (offsetof (struct real_gmon_hist_hdr, dimen)
+ != offsetof (struct gmon_hist_hdr, dimen))
+ || (offsetof (struct real_gmon_hist_hdr, dimen_abbrev)
+ != offsetof (struct gmon_hist_hdr, dimen_abbrev)))
+ abort ();
+
+ thdr.low_pc = (char *) _gmonparam.lowpc;
+ thdr.high_pc = (char *) _gmonparam.highpc;
+ thdr.hist_size = _gmonparam.kcountsize / sizeof (HISTCOUNTER);
+ thdr.prof_rate = __profile_frequency ();
strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen));
thdr.dimen_abbrev = 's';
@@ -318,7 +341,6 @@
static void
write_gmon (void)
{
- struct gmon_hdr ghdr __attribute__ ((aligned (__alignof__ (int))));
int fd = -1;
char *env;
@@ -350,9 +372,21 @@
}
/* write gmon.out header: */
- memset (&ghdr, '\0', sizeof (struct gmon_hdr));
+ struct real_gmon_hdr
+ {
+ char cookie[4];
+ int32_t version;
+ char spare[3 * 4];
+ } ghdr;
+ if (sizeof (ghdr) != sizeof (struct gmon_hdr)
+ || (offsetof (struct real_gmon_hdr, cookie)
+ != offsetof (struct gmon_hdr, cookie))
+ || (offsetof (struct real_gmon_hdr, version)
+ != offsetof (struct gmon_hdr, version)))
+ abort ();
memcpy (&ghdr.cookie[0], GMON_MAGIC, sizeof (ghdr.cookie));
- *(int32_t *) ghdr.version = GMON_VERSION;
+ ghdr.version = GMON_VERSION;
+ memset (ghdr.spare, '\0', sizeof (ghdr.spare));
write_not_cancel (fd, &ghdr, sizeof (struct gmon_hdr));
/* write PC histogram: */
Modified: trunk/libc/iconv/gconv_simple.c
==============================================================================
--- trunk/libc/iconv/gconv_simple.c (original)
+++ trunk/libc/iconv/gconv_simple.c Thu Apr 30 14:37:18 2009
@@ -1,5 +1,5 @@
/* Simple transformations functions.
- Copyright (C) 1997-2005, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1997-2005, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -1037,7 +1037,9 @@
/* If i < cnt, some trail byte was not >= 0x80, < 0xc0. \
If cnt > 2 and ch < 2^(5*cnt-4), the wide character ch could \
have been represented with fewer than cnt bytes. */ \
- if (i < cnt || (cnt > 2 && (ch >> (5 * cnt - 4)) == 0)) \
+ if (i < cnt || (cnt > 2 && (ch >> (5 * cnt - 4)) == 0) \
+ /* Do not accept UTF-16 surrogates. */ \
+ || (ch >= 0xd800 && ch <= 0xdfff)) \
{ \
/* This is an illegal encoding. */ \
goto errout; \
Modified: trunk/libc/iconvdata/sjis.c
==============================================================================
--- trunk/libc/iconvdata/sjis.c (original)
+++ trunk/libc/iconvdata/sjis.c Thu Apr 30 14:37:18 2009
@@ -1,5 +1,5 @@
/* Mapping tables for SJIS handling.
- Copyright (C) 1997-2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997-2001, 2002, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -4372,14 +4372,18 @@
\
ch2 = inptr[1]; \
idx = ch * 256 + ch2; \
- if (__builtin_expect (ch2 < 0x40, 0) \
- || (__builtin_expect (idx > 0x84be, 0) && idx < 0x889f) \
- || (__builtin_expect (idx > 0x88fc, 0) && idx < 0x8940) \
- || (__builtin_expect (idx > 0x9ffc, 0) && idx < 0xe040) \
- || __builtin_expect (idx > 0xeaa4, 0)) \
+ if (__builtin_expect (ch2 < 0x40, 0)) \
{ \
/* This is illegal. */ \
STANDARD_FROM_LOOP_ERR_HANDLER (1); \
+ } \
+ else if ((__builtin_expect (idx > 0x84be && idx < 0x889f, 0)) \
+ || (__builtin_expect (idx > 0x88fc && idx < 0x8940, 0)) \
+ || (__builtin_expect (idx > 0x9ffc && idx < 0xe040, 0)) \
+ || __builtin_expect (idx > 0xeaa4, 0)) \
+ { \
+ /* This is illegal. */ \
+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \
} \
else \
{ \
@@ -4395,13 +4399,13 @@
else \
ch = cjk_block4[(ch - 0xe0) * 192 + ch2 - 0x40]; \
\
+ if (__builtin_expect (ch == 0, 0)) \
+ { \
+ /* This is an illegal character. */ \
+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \
+ } \
+ \
inptr += 2; \
- } \
- \
- if (__builtin_expect (ch == 0, 0)) \
- { \
- /* This is an illegal character. */ \
- STANDARD_FROM_LOOP_ERR_HANDLER (2); \
} \
} \
\
Modified: trunk/libc/include/features.h
==============================================================================
--- trunk/libc/include/features.h (original)
+++ trunk/libc/include/features.h Thu Apr 30 14:37:18 2009
@@ -230,6 +230,8 @@
#if (_POSIX_C_SOURCE - 0) >= 200112L
# define __USE_XOPEN2K 1
+# undef __USE_ISOC99
+# define __USE_ISOC99 1
#endif
#if (_POSIX_C_SOURCE - 0) >= 200809L
Modified: trunk/libc/inet/inet6_option.c
==============================================================================
--- trunk/libc/inet/inet6_option.c (original)
+++ trunk/libc/inet/inet6_option.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -216,7 +216,8 @@
/* Too long. */
return NULL;
- ((struct ip6_ext *) CMSG_DATA (cmsg))->ip6e_len = len8b;
+ struct ip6_ext *ie = (void *) CMSG_DATA (cmsg);
+ ie->ip6e_len = len8b;
return result;
}
Modified: trunk/libc/inet/rcmd.c
==============================================================================
--- trunk/libc/inet/rcmd.c (original)
+++ trunk/libc/inet/rcmd.c Thu Apr 30 14:37:18 2009
@@ -112,7 +112,13 @@
{
char paddr[INET6_ADDRSTRLEN];
struct addrinfo hints, *res, *ai;
- struct sockaddr_storage from;
+ union
+ {
+ struct sockaddr sa;
+ struct sockaddr_storage ss;
+ struct sockaddr_in sin;
+ struct sockaddr_in6 sin6;
+ } from;
struct pollfd pfd[2];
int32_t oldmask;
pid_t pid;
@@ -274,14 +280,13 @@
(void)__close(s2);
goto bad;
}
- s3 = TEMP_FAILURE_RETRY (accept(s2, (struct sockaddr *)&from,
- &len));
- switch (from.ss_family) {
+ s3 = TEMP_FAILURE_RETRY (accept(s2, &from.sa, &len));
+ switch (from.sa.sa_family) {
case AF_INET:
- rport = ntohs(((struct sockaddr_in *)&from)->sin_port);
+ rport = ntohs(from.sin.sin_port);
break;
case AF_INET6:
- rport = ntohs(((struct sockaddr_in6 *)&from)->sin6_port);
+ rport = ntohs(from.sin6.sin6_port);
break;
default:
rport = 0;
@@ -605,13 +610,13 @@
memset (&ra, '\0', sizeof(ra));
switch (af){
case AF_INET:
- ((struct sockaddr_in *)&ra)->sin_family = AF_INET;
+ ra.ss_family = AF_INET;
memcpy (&(((struct sockaddr_in *)&ra)->sin_addr), raddr,
sizeof(struct in_addr));
ralen = sizeof(struct sockaddr_in);
break;
case AF_INET6:
- ((struct sockaddr_in6 *)&ra)->sin6_family = AF_INET6;
+ ra.ss_family = AF_INET6;
memcpy (&(((struct sockaddr_in6 *)&ra)->sin6_addr), raddr,
sizeof(struct in6_addr));
ralen = sizeof(struct sockaddr_in6);
Modified: trunk/libc/inet/rexec.c
==============================================================================
--- trunk/libc/inet/rexec.c (original)
+++ trunk/libc/inet/rexec.c Thu Apr 30 14:37:18 2009
@@ -56,7 +56,7 @@
int *fd2p;
sa_family_t af;
{
- struct sockaddr_storage sa2, from;
+ struct sockaddr_storage from;
struct addrinfo hints, *res0;
const char *orig_name = name;
const char *orig_pass = pass;
@@ -115,6 +115,11 @@
} else {
char num[32];
int s2;
+ union
+ {
+ struct sockaddr_storage ss;
+ struct sockaddr sa;
+ } sa2;
socklen_t sa2len;
s2 = __socket(res0->ai_family, res0->ai_socktype, 0);
@@ -124,17 +129,17 @@
}
__listen(s2, 1);
sa2len = sizeof (sa2);
- if (__getsockname(s2, (struct sockaddr *)&sa2, &sa2len) < 0) {
+ if (__getsockname(s2, &sa2.sa, &sa2len) < 0) {
perror("getsockname");
(void) __close(s2);
goto bad;
- } else if (sa2len != SA_LEN((struct sockaddr *)&sa2)) {
+ } else if (sa2len != SA_LEN(&sa2.sa)) {
__set_errno(EINVAL);
(void) __close(s2);
goto bad;
}
port = 0;
- if (!getnameinfo((struct sockaddr *)&sa2, sa2len,
+ if (!getnameinfo(&sa2.sa, sa2len,
NULL, 0, servbuff, sizeof(servbuff),
NI_NUMERICSERV))
port = atoi(servbuff);
Modified: trunk/libc/libio/iovsprintf.c
==============================================================================
--- trunk/libc/libio/iovsprintf.c (original)
+++ trunk/libc/libio/iovsprintf.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2006, 2009 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
@@ -38,10 +38,10 @@
sf._sbf._f._lock = NULL;
#endif
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, string, -1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf._sbf, format, args);
- _IO_putc_unlocked ('\0', (_IO_FILE *) &sf._sbf);
+ ret = INTUSE(_IO_vfprintf) (&sf._sbf._f, format, args);
+ _IO_putc_unlocked ('\0', &sf._sbf._f);
return ret;
}
INTDEF2(__IO_vsprintf, _IO_vsprintf)
Modified: trunk/libc/libio/iovsscanf.c
==============================================================================
--- trunk/libc/libio/iovsscanf.c (original)
+++ trunk/libc/libio/iovsscanf.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2006, 2009 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
@@ -40,9 +40,9 @@
sf._sbf._f._lock = NULL;
#endif
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
- ret = INTUSE(_IO_vfscanf) ((_IO_FILE *) &sf._sbf, format, args, NULL);
+ ret = INTUSE(_IO_vfscanf) (&sf._sbf._f, format, args, NULL);
return ret;
}
ldbl_weak_alias (_IO_vsscanf, __vsscanf)
Modified: trunk/libc/libio/strfile.h
==============================================================================
--- trunk/libc/libio/strfile.h (original)
+++ trunk/libc/libio/strfile.h Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997, 1998, 1999, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1997,1998,1999,2005,2009 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,7 +47,7 @@
struct _IO_streambuf
{
struct _IO_FILE _f;
- const void *_vtable;
+ const struct _IO_jump_t *vtable;
};
typedef struct _IO_strfile_
Modified: trunk/libc/libio/tst-widetext.input
==============================================================================
--- trunk/libc/libio/tst-widetext.input (original)
+++ trunk/libc/libio/tst-widetext.input Thu Apr 30 14:37:18 2009
@@ -1807,47 +1807,6 @@
í¤í¥í¦í§í¨í©íªí«í¬íí®í¯í°í±í²í³í´íµí¶í·í¸í¹íºí»í¼í½í¾í¿íííííí
ííííííííííííííííííííííííííí í¡í¢í£
í¤í¥í¦í§í¨í©íªí«í¬íí®í¯í°í±í²í³í´íµí¶í·í¸í¹íºí»í¼í½í¾í¿
-High Surrogates (U+D800-U+DB7F):
-
-í í í í í í
í í í í í í í í í í í í í í í í í í í í í í í í í í í í ¡í ¢í £í ¤í ¥í ¦í §í ¨í ©í ªí «í ¬í í ®í ¯í °í ±í ²í ³í ´í µí ¶í ·í ¸í ¹í ºí »í ¼í ½í ¾í ¿
-í¡í¡í¡í¡í¡í¡
í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡í¡ í¡¡í¡¢í¡£í¡¤í¡¥í¡¦í¡§í¡¨í¡©í¡ªí¡«í¡¬í¡í¡®í¡¯í¡°í¡±í¡²í¡³í¡´í¡µí¡¶í¡·í¡¸í¡¹í¡ºí¡»í¡¼í¡½í¡¾í¡¿
-í¢í¢í¢í¢í¢í¢
í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢í¢ í¢¡í¢¢í¢£í¢¤í¢¥í¢¦í¢§í¢¨í¢©í¢ªí¢«í¢¬í¢í¢®í¢¯í¢°í¢±í¢²í¢³í¢´í¢µí¢¶í¢·í¢¸í¢¹í¢ºí¢»í¢¼í¢½í¢¾í¢¿
-í£í£í£í£í£í£
í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£í£ í£¡í£¢í££í£¤í£¥í£¦í£§í£¨í£©í£ªí£«í£¬í£í£®í£¯í£°í£±í£²í£³í£´í£µí£¶í£·í£¸í£¹í£ºí£»í£¼í£½í£¾í£¿
-í¤í¤í¤í¤í¤í¤
í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤í¤ í¤¡í¤¢í¤£í¤¤í¤¥í¤¦í¤§í¤¨í¤©í¤ªí¤«í¤¬í¤í¤®í¤¯í¤°í¤±í¤²í¤³í¤´í¤µí¤¶í¤·í¤¸í¤¹í¤ºí¤»í¤¼í¤½í¤¾í¤¿
-í¥í¥í¥í¥í¥í¥
í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥í¥ í¥¡í¥¢í¥£í¥¤í¥¥í¥¦í¥§í¥¨í¥©í¥ªí¥«í¥¬í¥í¥®í¥¯í¥°í¥±í¥²í¥³í¥´í¥µí¥¶í¥·í¥¸í¥¹í¥ºí¥»í¥¼í¥½í¥¾í¥¿
-í¦í¦í¦í¦í¦í¦
í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦ í¦¡í¦¢í¦£í¦¤í¦¥í¦¦í¦§í¦¨í¦©í¦ªí¦«í¦¬í¦í¦®í¦¯í¦°í¦±í¦²í¦³í¦´í¦µí¦¶í¦·í¦¸í¦¹í¦ºí¦»í¦¼í¦½í¦¾í¦¿
-í§í§í§í§í§í§
í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§í§ í§¡í§¢í§£í§¤í§¥í§¦í§§í§¨í§©í§ªí§«í§¬í§í§®í§¯í§°í§±í§²í§³í§´í§µí§¶í§·í§¸í§¹í§ºí§»í§¼í§½í§¾í§¿
-í¨í¨í¨í¨í¨í¨
í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨í¨ í¨¡í¨¢í¨£í¨¤í¨¥í¨¦í¨§í¨¨í¨©í¨ªí¨«í¨¬í¨í¨®í¨¯í¨°í¨±í¨²í¨³í¨´í¨µí¨¶í¨·í¨¸í¨¹í¨ºí¨»í¨¼í¨½í¨¾í¨¿
-í©í©í©í©í©í©
í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í©í© í©¡í©¢í©£í©¤í©¥í©¦í©§í©¨í©©í©ªí©«í©¬í©í©®í©¯í©°í©±í©²í©³í©´í©µí©¶í©·í©¸í©¹í©ºí©»í©¼í©½í©¾í©¿
-íªíªíªíªíªíª
íªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíªíª íª¡íª¢íª£íª¤íª¥íª¦íª§íª¨íª©íªªíª«íª¬íªíª®íª¯íª°íª±íª²íª³íª´íªµíª¶íª·íª¸íª¹íªºíª»íª¼íª½íª¾íª¿
-í«í«í«í«í«í«
í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í«í« í«¡í«¢í«£í«¤í«¥í«¦í«§í«¨í«©í«ªí««í«¬í«í«®í«¯í«°í«±í«²í«³í«´í«µí«¶í«·í«¸í«¹í«ºí«»í«¼í«½í«¾í«¿
-í¬í¬í¬í¬í¬í¬
í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬í¬ í¬¡í¬¢í¬£í¬¤í¬¥í¬¦í¬§í¬¨í¬©í¬ªí¬«í¬¬í¬í¬®í¬¯í¬°í¬±í¬²í¬³í¬´í¬µí¬¶í¬·í¬¸í¬¹í¬ºí¬»í¬¼í¬½í¬¾í¬¿
-íííííí
ííííííííííííííííííííííííííí í¡í¢í£í¤í¥í¦í§í¨í©íªí«í¬íí®í¯í°í±í²í³í´íµí¶í·í¸í¹íºí»í¼í½í¾í¿
-
-High Private Use Surrogates (U+DB80-U+DBFF):
-
-í®í®í®í®í®í®
í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í®í® í®¡í®¢í®£í®¤í®¥í®¦í®§í®¨í®©í®ªí®«í®¬í®í®®í®¯í®°í®±í®²í®³í®´í®µí®¶í®·í®¸í®¹í®ºí®»í®¼í®½í®¾í®¿
-í¯í¯í¯í¯í¯í¯
í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯í¯ í¯¡í¯¢í¯£í¯¤í¯¥í¯¦í¯§í¯¨í¯©í¯ªí¯«í¯¬í¯í¯®í¯¯í¯°í¯±í¯²í¯³í¯´í¯µí¯¶í¯·í¯¸í¯¹í¯ºí¯»í¯¼í¯½í¯¾í¯¿
-
-Low Surrogates (U+DC00-U+DFFF):
-
-í°í°í°í°í°í°
í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í°í° í°¡í°¢í°£í°¤í°¥í°¦í°§í°¨í°©í°ªí°«í°¬í°í°®í°¯í°°í°±í°²í°³í°´í°µí°¶í°·í°¸í°¹í°ºí°»í°¼í°½í°¾í°¿
-í±í±í±í±í±í±
í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í±í± í±¡í±¢í±£í±¤í±¥í±¦í±§í±¨í±©í±ªí±«í±¬í±í±®í±¯í±°í±±í±²í±³í±´í±µí±¶í±·í±¸í±¹í±ºí±»í±¼í±½í±¾í±¿
-í²í²í²í²í²í²
í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í²í² í²¡í²¢í²£í²¤í²¥í²¦í²§í²¨í²©í²ªí²«í²¬í²í²®í²¯í²°í²±í²²í²³í²´í²µí²¶í²·í²¸í²¹í²ºí²»í²¼í²½í²¾í²¿
-í³í³í³í³í³í³
í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³í³ í³¡í³¢í³£í³¤í³¥í³¦í³§í³¨í³©í³ªí³«í³¬í³í³®í³¯í³°í³±í³²í³³í³´í³µí³¶í³·í³¸í³¹í³ºí³»í³¼í³½í³¾í³¿
-í´í´í´í´í´í´
í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´í´ í´¡í´¢í´£í´¤í´¥í´¦í´§í´¨í´©í´ªí´«í´¬í´í´®í´¯í´°í´±í´²í´³í´´í´µí´¶í´·í´¸í´¹í´ºí´»í´¼í´½í´¾í´¿
-íµíµíµíµíµíµ
íµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµíµ íµ¡íµ¢íµ£íµ¤íµ¥íµ¦íµ§íµ¨íµ©íµªíµ«íµ¬íµíµ®íµ¯íµ°íµ±íµ²íµ³íµ´íµµíµ¶íµ·íµ¸íµ¹íµºíµ»íµ¼íµ½íµ¾íµ¿
-í¶í¶í¶í¶í¶í¶
í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶í¶ í¶¡í¶¢í¶£í¶¤í¶¥í¶¦í¶§í¶¨í¶©í¶ªí¶«í¶¬í¶í¶®í¶¯í¶°í¶±í¶²í¶³í¶´í¶µí¶¶í¶·í¶¸í¶¹í¶ºí¶»í¶¼í¶½í¶¾í¶¿
-í·í·í·í·í·í·
í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í·í· í·¡í·¢í·£í·¤í·¥í·¦í·§í·¨í·©í·ªí·«í·¬í·í·®í·¯í·°í·±í·²í·³í·´í·µí·¶í··í·¸í·¹í·ºí·»í·¼í·½í·¾í·¿
-í¸í¸í¸í¸í¸í¸
í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸í¸ í¸¡í¸¢í¸£í¸¤í¸¥í¸¦í¸§í¸¨í¸©í¸ªí¸«í¸¬í¸í¸®í¸¯í¸°í¸±í¸²í¸³í¸´í¸µí¸¶í¸·í¸¸í¸¹í¸ºí¸»í¸¼í¸½í¸¾í¸¿
-í¹í¹í¹í¹í¹í¹
í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹í¹ í¹¡í¹¢í¹£í¹¤í¹¥í¹¦í¹§í¹¨í¹©í¹ªí¹«í¹¬í¹í¹®í¹¯í¹°í¹±í¹²í¹³í¹´í¹µí¹¶í¹·í¹¸í¹¹í¹ºí¹»í¹¼í¹½í¹¾í¹¿
-íºíºíºíºíºíº
íºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíºíº íº¡íº¢íº£íº¤íº¥íº¦íº§íº¨íº©íºªíº«íº¬íºíº®íº¯íº°íº±íº²íº³íº´íºµíº¶íº·íº¸íº¹íººíº»íº¼íº½íº¾íº¿
-í»í»í»í»í»í»
í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í»í» í»¡í»¢í»£í»¤í»¥í»¦í»§í»¨í»©í»ªí»«í»¬í»í»®í»¯í»°í»±í»²í»³í»´í»µí»¶í»·í»¸í»¹í»ºí»»í»¼í»½í»¾í»¿
-í¼í¼í¼í¼í¼í¼
í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼í¼ í¼¡í¼¢í¼£í¼¤í¼¥í¼¦í¼§í¼¨í¼©í¼ªí¼«í¼¬í¼í¼®í¼¯í¼°í¼±í¼²í¼³í¼´í¼µí¼¶í¼·í¼¸í¼¹í¼ºí¼»í¼¼í¼½í¼¾í¼¿
-í½í½í½í½í½í½
í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½í½ í½¡í½¢í½£í½¤í½¥í½¦í½§í½¨í½©í½ªí½«í½¬í½í½®í½¯í½°í½±í½²í½³í½´í½µí½¶í½·í½¸í½¹í½ºí½»í½¼í½½í½¾í½¿
-í¾í¾í¾í¾í¾í¾
í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾í¾ í¾¡í¾¢í¾£í¾¤í¾¥í¾¦í¾§í¾¨í¾©í¾ªí¾«í¾¬í¾í¾®í¾¯í¾°í¾±í¾²í¾³í¾´í¾µí¾¶í¾·í¾¸í¾¹í¾ºí¾»í¾¼í¾½í¾¾í¾¿
-í¿í¿í¿í¿í¿í¿
í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿í¿ í¿¡í¿¢í¿£í¿¤í¿¥í¿¦í¿§í¿¨í¿©í¿ªí¿«í¿¬í¿í¿®í¿¯í¿°í¿±í¿²í¿³í¿´í¿µí¿¶í¿·í¿¸í¿¹í¿ºí¿»í¿¼í¿½í¿¾í¿¿
-
Private Use (U+E000-U+F8FF):
îîîîîî
îîîîîîîîîîîîîîîîîîîîîîîîîîî î¡î¢î£î¤î¥î¦î§î¨î©îªî«î¬îî®î¯î°î±î²î³î´îµî¶î·î¸î¹îºî»î¼î½î¾î¿
Modified: trunk/libc/libio/vasprintf.c
==============================================================================
--- trunk/libc/libio/vasprintf.c (original)
+++ trunk/libc/libio/vasprintf.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995,1997,1999-2002,2004,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1997,1999-2002,2004,2006,2009
+ 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
@@ -54,8 +55,8 @@
#ifdef _IO_MTSAFE_IO
sf._sbf._f._lock = NULL;
#endif
- _IO_no_init ((_IO_FILE *) &sf._sbf, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, string, init_string_size, string);
sf._sbf._f._flags &= ~_IO_USER_BUF;
sf._s._allocate_buffer = (_IO_alloc_type) malloc;
Modified: trunk/libc/libio/vsnprintf.c
==============================================================================
--- trunk/libc/libio/vsnprintf.c (original)
+++ trunk/libc/libio/vsnprintf.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994,1997,1999-2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1994,1997,1999-2004,2006,2009 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
@@ -114,10 +114,10 @@
}
_IO_no_init (&sf.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps;
+ _IO_JUMPS (&sf.f._sbf) = &_IO_strn_jumps;
string[0] = '\0';
_IO_str_init_static_internal (&sf.f, string, maxlen - 1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args);
+ ret = INTUSE(_IO_vfprintf) (&sf.f._sbf._f, format, args);
if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf)
*sf.f._sbf._f._IO_write_ptr = '\0';
Modified: trunk/libc/locale/locarchive.h
==============================================================================
--- trunk/libc/locale/locarchive.h (original)
+++ trunk/libc/locale/locarchive.h Thu Apr 30 14:37:18 2009
@@ -1,5 +1,5 @@
/* Definitions for locale archive handling.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2009 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
@@ -83,7 +83,8 @@
{
int fd;
void *addr;
- size_t len;
+ size_t mmaped;
+ size_t reserved;
};
Modified: trunk/libc/locale/programs/locarchive.c
==============================================================================
--- trunk/libc/locale/programs/locarchive.c (original)
+++ trunk/libc/locale/programs/locarchive.c Thu Apr 30 14:37:18 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2002.
@@ -71,6 +71,10 @@
#define INITIAL_NUM_SUMS 2000
+/* Size of the reserved address space area. */
+#define RESERVE_MMAP_SIZE 512 * 1024 * 1024
+
+
static void
create_archive (const char *archivefname, struct locarhandle *ah)
{
@@ -125,8 +129,22 @@
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
}
+ /* To prepare for enlargements of the mmaped area reserve some
+ address space. */
+ size_t reserved = RESERVE_MMAP_SIZE;
+ int xflags = 0;
+ if (total < reserved
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+ -1, 0)) != MAP_FAILED))
+ xflags = MAP_FIXED;
+ else
+ {
+ p = NULL;
+ reserved = total;
+ }
+
/* Map the header and all the administration data structures. */
- p = mmap64 (NULL, total, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
if (p == MAP_FAILED)
{
int errval = errno;
@@ -170,7 +188,8 @@
ah->fd = fd;
ah->addr = p;
- ah->len = total;
+ ah->mmaped = total;
+ ah->reserved = reserved;
}
@@ -225,6 +244,51 @@
static void add_alias (struct locarhandle *ah, const char *alias,
bool replace, const char *oldname,
uint32_t *locrec_offset_p);
+
+
+static bool
+file_data_available_p (struct locarhandle *ah, uint32_t offset, uint32_t size)
+{
+ if (offset < ah->mmaped && offset + size <= ah->mmaped)
+ return true;
+
+ struct stat64 st;
+ if (fstat64 (ah->fd, &st) != 0)
+ return false;
+
+ if (st.st_size > ah->reserved)
+ return false;
+
+ const size_t pagesz = getpagesize ();
+ size_t start = ah->mmaped & ~(pagesz - 1);
+ void *p = mmap64 (ah->addr + start, st.st_size - start,
+ PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED,
+ ah->fd, start);
+ if (p == MAP_FAILED)
+ {
+ ah->mmaped = start;
+ return false;
+ }
+
+ ah->mmaped = st.st_size;
+ return true;
+}
+
+
+static int
+compare_from_file (struct locarhandle *ah, void *p1, uint32_t offset2,
+ uint32_t size)
+{
+ void *p2 = xmalloc (size);
+ if (pread (ah->fd, p2, size, offset2) != size)
+ WITH_CUR_LOCALE (error (4, errno,
+ _("cannot read data from locale archive")));
+
+ int res = memcmp (p1, p2, size);
+ free (p2);
+ return res;
+}
+
static void
enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
@@ -250,11 +314,24 @@
/* Not all of the old file has to be mapped. Change this now this
we will have to access the whole content. */
- if (fstat64 (ah->fd, &st) != 0
- || (ah->addr = mmap64 (NULL, st.st_size, PROT_READ | PROT_WRITE,
- MAP_SHARED, ah->fd, 0)) == MAP_FAILED)
+ if (fstat64 (ah->fd, &st) != 0)
+ enomap:
error (EXIT_FAILURE, errno, _("cannot map locale archive file"));
- ah->len = st.st_size;
+
+ if (st.st_size < ah->reserved)
+ ah->addr = mmap64 (ah->addr, st.st_size, PROT_READ | PROT_WRITE,
+ MAP_SHARED | MAP_FIXED, ah->fd, 0);
+ else
+ {
+ munmap (ah->addr, ah->reserved);
+ ah->addr = mmap64 (NULL, st.st_size, PROT_READ | PROT_WRITE,
+ MAP_SHARED, ah->fd, 0);
+ ah->reserved = st.st_size;
+ head = ah->addr;
+ }
+ if (ah->addr == MAP_FAILED)
+ goto enomap;
+ ah->mmaped = st.st_size;
/* Create a temporary file in the correct directory. */
fd = mkstemp (fname);
@@ -315,8 +392,22 @@
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
}
+ /* To prepare for enlargements of the mmaped area reserve some
+ address space. */
+ size_t reserved = RESERVE_MMAP_SIZE;
+ int xflags = 0;
+ if (total < reserved
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+ -1, 0)) != MAP_FAILED))
+ xflags = MAP_FIXED;
+ else
+ {
+ p = NULL;
+ reserved = total;
+ }
+
/* Map the header and all the administration data structures. */
- p = mmap64 (NULL, total, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
if (p == MAP_FAILED)
{
int errval = errno;
@@ -332,9 +423,10 @@
error (EXIT_FAILURE, errval, _("cannot lock new archive"));
}
- new_ah.len = total;
+ new_ah.mmaped = total;
new_ah.addr = p;
new_ah.fd = fd;
+ new_ah.reserved = reserved;
/* Walk through the hash name hash table to find out what data is
still referenced and transfer it into the new file. */
@@ -381,7 +473,7 @@
= ((char *) ah->addr
+ oldnamehashtab[oldlocrecarray[cnt - 1].cnt].name_offset);
- add_alias (&new_ah,
+ add_alias (&new_ah,
((char *) ah->addr
+ oldnamehashtab[oldlocrecarray[cnt].cnt].name_offset),
0, oldname, &last_locrec_offset);
@@ -515,18 +607,33 @@
}
ah->fd = fd;
- ah->len = (head.sumhash_offset
- + head.sumhash_size * sizeof (struct sumhashent));
-
- /* Now we know how large the administrative information part is.
- Map all of it. */
- ah->addr = mmap64 (NULL, ah->len, PROT_READ | (readonly ? 0 : PROT_WRITE),
- MAP_SHARED, fd, 0);
+ ah->mmaped = st.st_size;
+
+ /* To prepare for enlargements of the mmaped area reserve some
+ address space. */
+ size_t reserved = RESERVE_MMAP_SIZE;
+ int xflags = 0;
+ void *p;
+ if (st.st_size < reserved
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+ -1, 0)) != MAP_FAILED))
+ xflags = MAP_FIXED;
+ else
+ {
+ p = NULL;
+ reserved = st.st_size;
+ }
+
+ /* Map the entire file. We might need to compare the category data
+ in the file with the newly added data. */
+ ah->addr = mmap64 (p, st.st_size, PROT_READ | (readonly ? 0 : PROT_WRITE),
+ MAP_SHARED | xflags, fd, 0);
if (ah->addr == MAP_FAILED)
{
(void) lockf64 (fd, F_ULOCK, sizeof (struct locarhead));
error (EXIT_FAILURE, errno, _("cannot map archive header"));
}
+ ah->reserved = reserved;
}
@@ -535,7 +642,7 @@
{
if (ah->fd != -1)
{
- munmap (ah->addr, ah->len);
+ munmap (ah->addr, ah->reserved);
close (ah->fd);
}
}
@@ -761,10 +868,41 @@
{
if (memcmp (data[cnt].sum, sumhashtab[idx].sum, 16) == 0)
{
- /* Found it. */
- file_offsets[cnt] = sumhashtab[idx].file_offset;
- --num_new_offsets;
- break;
+ /* Check the content, there could be a collision of
+ the hash sum.
+
+ Unfortunately the sumhashent record does not include
+ the size of the stored data. So we have to search for
+ it. */
+ locrecent = (struct locrecent *) ((char *) ah->addr
+ + head->locrectab_offset);
+ size_t iloc;
+ for (iloc = 0; iloc < head->locrectab_used; ++iloc)
+ if (locrecent[iloc].refs != 0
+ && (locrecent[iloc].record[cnt].offset
+ == sumhashtab[idx].file_offset))
+ break;
+
+ if (iloc != head->locrectab_used
+ && data[cnt].size == locrecent[iloc].record[cnt].len
+ /* We have to compare the content. Either we can
+ have the data mmaped or we have to read from
+ the file. */
+ && (file_data_available_p (ah, sumhashtab[idx].file_offset,
+ data[cnt].size)
+ ? memcmp (data[cnt].addr,
+ (char *) ah->addr
+ + sumhashtab[idx].file_offset,
+ data[cnt].size) == 0
+ : compare_from_file (ah, data[cnt].addr,
+ sumhashtab[idx].file_offset,
+ data[cnt].size) == 0))
+ {
+ /* Found it. */
+ file_offsets[cnt] = sumhashtab[idx].file_offset;
+ --num_new_offsets;
+ break;
+ }
}
idx += incr;
Modified: trunk/libc/localedata/ChangeLog
==============================================================================
--- trunk/libc/localedata/ChangeLog (original)
+++ trunk/libc/localedata/ChangeLog Thu Apr 30 14:37:18 2009
@@ -1,3 +1,52 @@
+2009-03-08 Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
+
+ * locales/cs.CZ: Change week[2] to 19971130, change first_weekday and
+ first_workday to 2.
+ * locales/da_DK: Likewise.
+ * locales/de_DE: Likewise.
+ * locales/fr_FR: Likewise.
+ * locales/fur_IT: Likewise.
+ * locales/fy_DE: Likewise.
+ * locales/ht_HT: Likewise.
+ * locales/hu_HU: Likewise.
+ * locales/li_BE: Likewise.
+ * locales/li_NL: Likewise.
+ * locales/mk_MK: Likewise.
+ * locales/nb_NO: Likewise.
+ * locales/nds_DE: Likewise.
+ * locales/nds_NL: Likewise.
+ * locales/nn_NO: Likewise.
+ * locales/pl_PL: Likewise.
+ * locales/sc_IT: Likewise.
+ * locales/sk_SK: Likewise.
+ * locales/uk_UA: Likewise.
+
+ * locales/csb_PL: Change week[2] to 19971130.
+ * locales/en_GB: Likewise.
+ * locales/et_EE: Likewise.
+
+ * locales/sr_ME: Set week to 7;19971130;4.
+ * locales/sr_RS: Likewise.
+ * locales/sr_RS@latin: Likewise.
+
+2009-04-22 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #9963]
+ * locales/en_PH: Fix LC_PAPER.
+ * locales/es_CL: Likewise.
+ * locales/es_CO: Likewise.
+ * locales/es_MX: Likewise.
+ * locales/es_US: Likewise.
+ * locales/es_VE: Likewise.
+ * locales/fil_PH: Likewise.
+ * locales/ik_CA: Likewise.
+ * locales/iu_CA: Likewise.
+ * locales/tl_PH: Likewise.
+
+2009-04-18 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * SUPPORTED: Add ks_IN.
+
2009-04-07 Ulrich Drepper <drepper@xxxxxxxxxx>
* locales/ks_IN@devanagari: Replace duplicated information with copy.
Modified: trunk/libc/localedata/SUPPORTED
==============================================================================
--- trunk/libc/localedata/SUPPORTED (original)
+++ trunk/libc/localedata/SUPPORTED Thu Apr 30 14:37:18 2009
@@ -258,6 +258,7 @@
kn_IN/UTF-8 \
ko_KR.EUC-KR/EUC-KR \
ko_KR.UTF-8/UTF-8 \
+ks_IN/UTF-8 \
ks_IN@devanagari/UTF-8 \
ku_TR.UTF-8/UTF-8 \
ku_TR/ISO-8859-9 \
Modified: trunk/libc/localedata/locales/cs_CZ
==============================================================================
--- trunk/libc/localedata/locales/cs_CZ (original)
+++ trunk/libc/localedata/locales/cs_CZ Thu Apr 30 14:37:18 2009
@@ -2438,9 +2438,9 @@
% "<U004E><U006F><U0076>";/
% "<U0044><U0065><U0063>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
d_t_fmt "<U0025><U0061><U00A0><U0025><U002D><U0064><U002E><U00A0><U0025><U0042><U00A0><U0025><U0059><U002C><U00A0><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U00A0><U0025><U005A>"
Modified: trunk/libc/localedata/locales/csb_PL
==============================================================================
--- trunk/libc/localedata/locales/csb_PL (original)
+++ trunk/libc/localedata/locales/csb_PL Thu Apr 30 14:37:18 2009
@@ -184,7 +184,7 @@
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/da_DK
==============================================================================
--- trunk/libc/localedata/locales/da_DK (original)
+++ trunk/libc/localedata/locales/da_DK Thu Apr 30 14:37:18 2009
@@ -209,9 +209,9 @@
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_MESSAGES
Modified: trunk/libc/localedata/locales/de_DE
==============================================================================
--- trunk/libc/localedata/locales/de_DE (original)
+++ trunk/libc/localedata/locales/de_DE Thu Apr 30 14:37:18 2009
@@ -155,9 +155,9 @@
<U0025><U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_MESSAGES
Modified: trunk/libc/localedata/locales/en_GB
==============================================================================
--- trunk/libc/localedata/locales/en_GB (original)
+++ trunk/libc/localedata/locales/en_GB Thu Apr 30 14:37:18 2009
@@ -121,7 +121,7 @@
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/en_PH
==============================================================================
--- trunk/libc/localedata/locales/en_PH (original)
+++ trunk/libc/localedata/locales/en_PH Thu Apr 30 14:37:18 2009
@@ -166,11 +166,7 @@
LC_PAPER
-% This is the ISO_IEC TR14652 Locale definition for the LC_PAPER category
-% generated by IBM Basic CountryPack Transformer.
-height 297
-width 210
-
+copy "tl_PH"
END LC_PAPER
Modified: trunk/libc/localedata/locales/es_CL
==============================================================================
--- trunk/libc/localedata/locales/es_CL (original)
+++ trunk/libc/localedata/locales/es_CL Thu Apr 30 14:37:18 2009
@@ -125,10 +125,8 @@
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
Modified: trunk/libc/localedata/locales/es_CO
==============================================================================
--- trunk/libc/localedata/locales/es_CO (original)
+++ trunk/libc/localedata/locales/es_CO Thu Apr 30 14:37:18 2009
@@ -125,10 +125,8 @@
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
Modified: trunk/libc/localedata/locales/es_MX
==============================================================================
--- trunk/libc/localedata/locales/es_MX (original)
+++ trunk/libc/localedata/locales/es_MX Thu Apr 30 14:37:18 2009
@@ -125,10 +125,8 @@
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
Modified: trunk/libc/localedata/locales/es_US
==============================================================================
--- trunk/libc/localedata/locales/es_US (original)
+++ trunk/libc/localedata/locales/es_US Thu Apr 30 14:37:18 2009
@@ -177,8 +177,7 @@
END LC_TIME
LC_PAPER
-height 279
-width 216
+copy "en_US"
END LC_PAPER
LC_TELEPHONE
Modified: trunk/libc/localedata/locales/es_VE
==============================================================================
--- trunk/libc/localedata/locales/es_VE (original)
+++ trunk/libc/localedata/locales/es_VE Thu Apr 30 14:37:18 2009
@@ -126,10 +126,8 @@
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
Modified: trunk/libc/localedata/locales/et_EE
==============================================================================
--- trunk/libc/localedata/locales/et_EE (original)
+++ trunk/libc/localedata/locales/et_EE Thu Apr 30 14:37:18 2009
@@ -2196,7 +2196,7 @@
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 1
first_workday 1
END LC_TIME
Modified: trunk/libc/localedata/locales/fil_PH
==============================================================================
--- trunk/libc/localedata/locales/fil_PH (original)
+++ trunk/libc/localedata/locales/fil_PH Thu Apr 30 14:37:18 2009
@@ -150,8 +150,7 @@
END LC_MESSAGES
LC_PAPER
-height 297
-width 210
+copy "tl_PH"
END LC_PAPER
LC_MEASUREMENT
Modified: trunk/libc/localedata/locales/fr_FR
==============================================================================
--- trunk/libc/localedata/locales/fr_FR (original)
+++ trunk/libc/localedata/locales/fr_FR Thu Apr 30 14:37:18 2009
@@ -141,9 +141,9 @@
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
Modified: trunk/libc/localedata/locales/fur_IT
==============================================================================
--- trunk/libc/localedata/locales/fur_IT (original)
+++ trunk/libc/localedata/locales/fur_IT Thu Apr 30 14:37:18 2009
@@ -110,9 +110,9 @@
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
Modified: trunk/libc/localedata/locales/fy_DE
==============================================================================
--- trunk/libc/localedata/locales/fy_DE (original)
+++ trunk/libc/localedata/locales/fy_DE Thu Apr 30 14:37:18 2009
@@ -127,7 +127,7 @@
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/ht_HT
==============================================================================
--- trunk/libc/localedata/locales/ht_HT (original)
+++ trunk/libc/localedata/locales/ht_HT Thu Apr 30 14:37:18 2009
@@ -139,9 +139,9 @@
<U0020><U0025><U0068><U003A><U0025><U006D><U003A><U0025><U0073><U0020>/
<U0025><U005A><U0020><U0025><U0079>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
Modified: trunk/libc/localedata/locales/hu_HU
==============================================================================
--- trunk/libc/localedata/locales/hu_HU (original)
+++ trunk/libc/localedata/locales/hu_HU Thu Apr 30 14:37:18 2009
@@ -520,9 +520,9 @@
t_fmt_ampm "<U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053>"
date_fmt "<U0025><U0059><U002E><U0020><U0025><U0062><U002E><U0020><U0025><U0065><U002E><U002C>/
<U0020><U0025><U0041><U002C><U0020><U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053><U0020><U0025><U005A>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
Modified: trunk/libc/localedata/locales/ik_CA
==============================================================================
--- trunk/libc/localedata/locales/ik_CA (original)
+++ trunk/libc/localedata/locales/ik_CA Thu Apr 30 14:37:18 2009
@@ -207,10 +207,8 @@
noexpr "<U005B><U006E><U004E><U0071><U0051><U005D><U002E><U002A>"
END LC_MESSAGES
-% Default paper: A4
LC_PAPER
-height 297
-width 210
+copy "en_CA"
END LC_PAPER
% Metric System (ISO 1000)
Modified: trunk/libc/localedata/locales/iu_CA
==============================================================================
--- trunk/libc/localedata/locales/iu_CA (original)
+++ trunk/libc/localedata/locales/iu_CA Thu Apr 30 14:37:18 2009
@@ -119,10 +119,8 @@
noexpr "<U005B><U006E><U004E><U005D><U002E><U002A>"
END LC_MESSAGES
-% Default paper: A4
LC_PAPER
-height 297
-width 210
+copy "en_CA"
END LC_PAPER
% FIXME
Modified: trunk/libc/localedata/locales/li_BE
==============================================================================
--- trunk/libc/localedata/locales/li_BE (original)
+++ trunk/libc/localedata/locales/li_BE Thu Apr 30 14:37:18 2009
@@ -126,7 +126,7 @@
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/li_NL
==============================================================================
--- trunk/libc/localedata/locales/li_NL (original)
+++ trunk/libc/localedata/locales/li_NL Thu Apr 30 14:37:18 2009
@@ -127,7 +127,7 @@
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/mk_MK
==============================================================================
--- trunk/libc/localedata/locales/mk_MK (original)
+++ trunk/libc/localedata/locales/mk_MK Thu Apr 30 14:37:18 2009
@@ -85,9 +85,9 @@
date_fmt "<U0025><U0061><U002C><U0020><U0025><U0064><U0020><U0025><U0062>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1 % Monday
-first_workday 1 % Monday
+week 7;19971130;4
+first_weekday 2 % Monday
+first_workday 2 % Monday
END LC_TIME
LC_MONETARY
Modified: trunk/libc/localedata/locales/nb_NO
==============================================================================
--- trunk/libc/localedata/locales/nb_NO (original)
+++ trunk/libc/localedata/locales/nb_NO Thu Apr 30 14:37:18 2009
@@ -201,9 +201,9 @@
<U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U007A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_MESSAGES
Modified: trunk/libc/localedata/locales/nds_DE
==============================================================================
--- trunk/libc/localedata/locales/nds_DE (original)
+++ trunk/libc/localedata/locales/nds_DE Thu Apr 30 14:37:18 2009
@@ -125,7 +125,7 @@
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/nds_NL
==============================================================================
--- trunk/libc/localedata/locales/nds_NL (original)
+++ trunk/libc/localedata/locales/nds_NL Thu Apr 30 14:37:18 2009
@@ -124,7 +124,7 @@
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/nn_NO
==============================================================================
--- trunk/libc/localedata/locales/nn_NO (original)
+++ trunk/libc/localedata/locales/nn_NO Thu Apr 30 14:37:18 2009
@@ -128,9 +128,9 @@
<U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U007A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/pl_PL
==============================================================================
--- trunk/libc/localedata/locales/pl_PL (original)
+++ trunk/libc/localedata/locales/pl_PL Thu Apr 30 14:37:18 2009
@@ -2196,9 +2196,9 @@
date_fmt "<U0025><U0061><U002C><U0020>/
<U0025><U002D><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U002C><U0020>/
<U0025><U0054><U0020><U0025><U005A>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
Modified: trunk/libc/localedata/locales/sc_IT
==============================================================================
--- trunk/libc/localedata/locales/sc_IT (original)
+++ trunk/libc/localedata/locales/sc_IT Thu Apr 30 14:37:18 2009
@@ -110,9 +110,9 @@
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
Modified: trunk/libc/localedata/locales/sk_SK
==============================================================================
--- trunk/libc/localedata/locales/sk_SK (original)
+++ trunk/libc/localedata/locales/sk_SK Thu Apr 30 14:37:18 2009
@@ -183,9 +183,9 @@
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/sr_ME
==============================================================================
--- trunk/libc/localedata/locales/sr_ME (original)
+++ trunk/libc/localedata/locales/sr_ME Thu Apr 30 14:37:18 2009
@@ -120,7 +120,7 @@
date_fmt "<U0025><U0061><U002c><U0020><U0025><U0065><U002E><U0020>/
<U0025><U0062><U0020><U0025><U0059><U002E><U0020><U0020><U0025><U0048>/
<U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U000A>"
-% week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/sr_RS
==============================================================================
--- trunk/libc/localedata/locales/sr_RS (original)
+++ trunk/libc/localedata/locales/sr_RS Thu Apr 30 14:37:18 2009
@@ -301,7 +301,7 @@
date_fmt "<U0025><U0061><U002C><U0020><U0025><U0065><U002E><U0020>/
<U0025><U0062><U0020><U0025><U0059><U002E><U0020><U0020><U0025><U0048>/
<U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U000A>"
-% week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/sr_RS@latin
==============================================================================
--- trunk/libc/localedata/locales/sr_RS@latin (original)
+++ trunk/libc/localedata/locales/sr_RS@latin Thu Apr 30 14:37:18 2009
@@ -121,7 +121,7 @@
date_fmt "<U0025><U0061><U002c><U0020><U0025><U0065><U002E><U0020>/
<U0025><U0062><U0020><U0025><U0059><U002E><U0020><U0020><U0025><U0048>/
<U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U000A>"
-% week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
Modified: trunk/libc/localedata/locales/tl_PH
==============================================================================
--- trunk/libc/localedata/locales/tl_PH (original)
+++ trunk/libc/localedata/locales/tl_PH Thu Apr 30 14:37:18 2009
@@ -144,8 +144,8 @@
END LC_MESSAGES
LC_PAPER
-height 297
-width 210
+height 279
+width 216
END LC_PAPER
LC_MEASUREMENT
Modified: trunk/libc/localedata/locales/uk_UA
==============================================================================
--- trunk/libc/localedata/locales/uk_UA (original)
+++ trunk/libc/localedata/locales/uk_UA Thu Apr 30 14:37:18 2009
@@ -901,7 +901,9 @@
%
% ISO 8601 conforming applications should use the values 7, 19971201 (a
% Monday), and 4 (Thursday), respectively.
-week 7;19971201;4
+% week 7;19971201;4
+% But see BUG below.
+week 7;19971130;4
% A list of abbreviated weekday names. (%a)
%
@@ -1015,10 +1017,10 @@
% Define the first day of the week to be displayed in a calendar.
% This weekday is relative to the date defined in the <week> keyword.
-first_weekday 1
+first_weekday 2
% Define the first workday relative to the <week> keyword
-first_workday 1
+first_workday 2
% Zymovyj CHas (winter time) or z.ch. (or nothing)
% Litnij CHas (summer time) or l.ch.
Modified: trunk/libc/malloc/arena.c
==============================================================================
--- trunk/libc/malloc/arena.c (original)
+++ trunk/libc/malloc/arena.c Thu Apr 30 14:37:18 2009
@@ -624,8 +624,9 @@
if (check_action != 0)
__malloc_check_init();
}
- if(__malloc_initialize_hook != NULL)
- (*__malloc_initialize_hook)();
+ void (*hook) (void) = force_reg (__malloc_initialize_hook);
+ if (hook != NULL)
+ (*hook)();
__malloc_initialized = 1;
}
Modified: trunk/libc/malloc/hooks.c
==============================================================================
--- trunk/libc/malloc/hooks.c (original)
+++ trunk/libc/malloc/hooks.c Thu Apr 30 14:37:18 2009
@@ -235,8 +235,9 @@
return -1;
}
/* Call the `morecore' hook if necessary. */
- if (__after_morecore_hook)
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (hook)
+ (*hook) ();
main_arena.system_mem = (new_brk - mp_.sbrk_base) + sbrk_size;
top(&main_arena) = (mchunkptr)(brk + front_misalign);
@@ -669,10 +670,10 @@
!disallow_malloc_check)
__malloc_check_init ();
else if (!ms->using_malloc_checking && using_malloc_checking) {
- __malloc_hook = 0;
- __free_hook = 0;
- __realloc_hook = 0;
- __memalign_hook = 0;
+ __malloc_hook = NULL;
+ __free_hook = NULL;
+ __realloc_hook = NULL;
+ __memalign_hook = NULL;
using_malloc_checking = 0;
}
}
Modified: trunk/libc/malloc/malloc.c
==============================================================================
--- trunk/libc/malloc/malloc.c (original)
+++ trunk/libc/malloc/malloc.c Thu Apr 30 14:37:18 2009
@@ -22,6 +22,10 @@
/*
This is a version (aka ptmalloc2) of malloc/free/realloc written by
Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger.
+
+ There have been substantial changesmade after the integration into
+ glibc in all parts of the code. Do not look for much commonality
+ with the ptmalloc2 version.
* Version ptmalloc2-20011215
based on:
@@ -563,6 +567,13 @@
#endif
#endif
#endif
+
+
+/* Force a value to be in a register and stop the compiler referring
+ to the source (mostly memory location) again. */
+#define force_reg(val) \
+ ({ __typeof (val) _v; asm ("" : "=r" (_v) : "0" (val)); _v; })
+
/*
MALLOC_FAILURE_ACTION is the action to take before "return 0" when
@@ -3165,8 +3176,9 @@
if (brk != (char*)(MORECORE_FAILURE)) {
/* Call the `morecore' hook if necessary. */
- if (__builtin_expect (__after_morecore_hook != NULL, 0))
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
} else {
/*
If have mmap, try using it as a backup when MORECORE fails or
@@ -3302,10 +3314,12 @@
if (snd_brk == (char*)(MORECORE_FAILURE)) {
correction = 0;
snd_brk = (char*)(MORECORE(0));
- } else
+ } else {
/* Call the `morecore' hook if necessary. */
- if (__builtin_expect (__after_morecore_hook != NULL, 0))
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
+ }
}
/* handle non-contiguous cases */
@@ -3453,8 +3467,9 @@
MORECORE(-extra);
/* Call the `morecore' hook if necessary. */
- if (__builtin_expect (__after_morecore_hook != NULL, 0))
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
new_brk = (char*)(MORECORE(0));
if (new_brk != (char*)MORECORE_FAILURE) {
@@ -3579,7 +3594,8 @@
mstate ar_ptr;
Void_t *victim;
- __malloc_ptr_t (*hook) (size_t, __const __malloc_ptr_t) = __malloc_hook;
+ __malloc_ptr_t (*hook) (size_t, __const __malloc_ptr_t)
+ = force_reg (__malloc_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(bytes, RETURN_ADDRESS (0));
@@ -3655,7 +3671,8 @@
mstate ar_ptr;
mchunkptr p; /* chunk corresponding to mem */
- void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t) = __free_hook;
+ void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t)
+ = force_reg (__free_hook);
if (__builtin_expect (hook != NULL, 0)) {
(*hook)(mem, RETURN_ADDRESS (0));
return;
@@ -3713,7 +3730,7 @@
Void_t* newp; /* chunk to return */
__malloc_ptr_t (*hook) (__malloc_ptr_t, size_t, __const __malloc_ptr_t) =
- __realloc_hook;
+ force_reg (__realloc_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(oldmem, bytes, RETURN_ADDRESS (0));
@@ -3825,7 +3842,7 @@
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
+ force_reg (__memalign_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(alignment, bytes, RETURN_ADDRESS (0));
@@ -3882,7 +3899,7 @@
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
+ force_reg (__memalign_hook);
if (__builtin_expect (hook != NULL, 0))
return (*hook)(pagesz, bytes, RETURN_ADDRESS (0));
@@ -3929,7 +3946,7 @@
[... 6616 lines stripped ...]