--- glibc-20080412T0741/ChangeLog 12 Apr 2008 04:17:47 -0000 1.11164 +++ glibc-20080412T0741-fedora/ChangeLog 30 Apr 2008 12:11:28 -0000 1.8782.2.298 @@ -1,3 +1,43 @@ +2008-04-25 David S. Miller + + * sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c (semctl): + Pass "union semun" properly in to sys_ipc, it must be passed + by value, not by reference. + +2008-04-22 Jakub Jelinek + + * nscd/Makefile (nscd-cflags): Set back to -fpie. + * nscd/nscd.h (mem_in_flight): Add attribute_tls_model_ie. + * nscd/connections.c (mem_in_flight): Likewise. + + * nscd/nscd.h (dbs): Make hidden. + +2008-04-15 Ulrich Drepper + + [BZ #5381] + * nscd/nscd.h: Define enum in_flight, mem_in_flight, and + mem_in_flight_list variables. Add new parameter to mempool_alloc + prototype. + * nscd/mem.c (mempool_alloc): Take additional parameter. Initialize + appropriate mem_in_flight element. + (gc): Take allocations which have not yet been committed to the + database into account. + * nscd/cache.c (cache_add): Add new parameter to mempool_alloc call. + Reset mem_in_flight before returning. + * nscd/connections.c (nscd_run_worker): Initialize mem_in_flight and + cue it up in mem_in_flight_list. + * nscd/aicache.c: Adjust mempool_alloc call. + * nscd/grpcache.c: Likewise. + * nscd/hstcache.c: Likewise. + * nscd/initgrcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + * nscd/servicescache.c: Likewise. + * nscd/Makefile (nscd-flags): Until ld is fixed, use -fpic instead + of -fpie. + + * nscd/connections.c (handle_request): Provide better error message + in case SELinux forbids the service. + 2008-04-11 Ulrich Drepper * sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h (__signbitl): @@ -4395,6 +4435,13 @@ * include/sys/cdefs.h: Redefine __nonnull so that test for incorrect parameters in the libc code itself are not omitted. +2006-07-02 Jakub Jelinek + + * nscd/connections.c (sighup_pending): New variable. + (nscd_run): If sighup_pending, prune all 3 caches. + (sighup_handler): Don't prune caches here, rather just set + sighup_pending flag. + 2007-05-09 Jakub Jelinek * sysdeps/ia64/fpu/fraiseexcpt.c (feraiseexcept): Don't raise overflow @@ -4690,6 +4737,10 @@ [BZ #4368] * stdlib/stdlib.h: Remove obsolete part of comment for realpath. +2007-04-16 Jakub Jelinek + + * locale/programs/locarchive.c (add_alias, insert_name): Remove static. + 2007-04-16 Ulrich Drepper [BZ #4364] @@ -5947,6 +5998,15 @@ separators also if no non-zero digits found. * stdlib/Makefile (tests): Add tst-strtod3. +2006-12-10 Jakub Jelinek + + * sysdeps/unix/sysv/linux/netlinkaccess.h: Include linux/if_addr.h + if IFA_MAX is not defined. + (IFA_RTA, IFA_PAYLOAD, IFLA_RTA, IFLA_PAYLOAD): Define if not + defined. + * sysdeps/unix/sysv/linux/check_pf.c: Include netlinkaccess.h + instead of asm/types.h, linux/netlink.h and linux/rtnetlink.h. + 2006-12-09 Ulrich Drepper [BZ #3632] --- glibc-20080412T0741/ChangeLog.15 16 Feb 2005 07:34:17 -0000 1.1 +++ glibc-20080412T0741-fedora/ChangeLog.15 19 Dec 2006 19:05:40 -0000 1.1.6.3 @@ -477,6 +477,14 @@ 2004-11-26 Jakub Jelinek + * posix/Makefile (generated: Add getconf.speclist. + ($(inst_libexecdir)/getconf): Use getconf.speclist instead of + getconf output. + ($(objpfx)getconf.speclist): New rule. + * posix/getconf.speclist.h: New file. + +2004-11-26 Jakub Jelinek + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. 2004-11-26 Kaz Kojima @@ -1103,6 +1111,13 @@ * sysdeps/generic/tempname.c (__path_search): Add missing argument TRY_TMPDIR. +2004-11-02 Jakub Jelinek + + * include/features.h (__USE_FORTIFY_LEVEL): Also set for Red Hat + GCC 3.4.x-RH >= 3.4.2-8. + * debug/tst-chk1.c (do_test): Deal with GCC 3.4.x-RH not + being able to recognize subobjects. + 2004-10-31 Mariusz Mazur * sysdeps/unix/sysv/linux/alpha/setregid.c: New file. @@ -1443,6 +1458,11 @@ * sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ... (__readonly_area): ... this. +2004-10-19 Jakub Jelinek + + * include/features.h (__USE_FORTIFY_LEVEL): Enable even with + Red Hat gcc4 4.0.0 and above. + 2004-10-18 Jakub Jelinek * sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking @@ -3182,6 +3202,23 @@ before return type. * locale/localename.c (__current_locale_name): Likewise. +2004-08-31 Jakub Jelinek + + * elf/ldconfig.c (parse_conf): Add prefix argument, prepend it + before arguments to add_dir and pass to parse_conf_include. + (parse_conf_include): Add prefix argument, pass it down to + parse_conf. + (main): Call arch_startup. Adjust parse_conf caller. + Call add_arch_dirs. + * sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define. + * sysdeps/unix/sysv/linux/i386/dl-cache.h: New file. + * sysdeps/unix/sysv/linux/ia64/dl-cache.h (EMUL_HACK, arch_startup, + add_arch_dirs): Define. + * sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: Prepend + /emul/ia32-linux before the 32-bit ld.so pathname. + * sysdeps/unix/sysv/linux/ia64/dl-procinfo.c: New file. + * sysdeps/unix/sysv/linux/ia64/dl-procinfo.h: New file. + 2004-08-30 Roland McGrath * scripts/extract-abilist.awk: If `lastversion' variable defined, omit --- glibc-20080412T0741/ChangeLog.16 4 May 2006 16:05:24 -0000 1.1 +++ glibc-20080412T0741-fedora/ChangeLog.16 5 May 2006 06:11:52 -0000 1.1.2.1 @@ -171,6 +171,11 @@ [BZ #2611] * stdio-common/renameat.c (renameat): Fix typo. +2006-04-27 Jakub Jelinek + + * nscd/connections.c (sighup_handler): Only run prune_cache on + enabled databases. + 2006-04-26 Roland McGrath * Makeconfig (%.v.i rule): Don't use -DASSEMBLER. @@ -1030,6 +1035,34 @@ _SC_CPUTIME and _SC_THREAD_CPUTIME here. * sysdeps/unix/sysv/linux/x86_64/sysconf.c (__sysconf): Likewise. +2006-03-04 Jakub Jelinek + Roland McGrath + + * sysdeps/unix/sysv/linux/i386/lowlevellock.h + (LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END, + LLL_STUB_UNWIND_INFO_3, LLL_STUB_UNWIND_INFO_4): Define. + (lll_mutex_lock, lll_robust_mutex_lock, lll_mutex_cond_lock, + lll_robust_mutex_cond_lock, lll_mutex_timedlock, + lll_robust_mutex_timedlock, lll_mutex_unlock, + lll_robust_mutex_unlock, lll_lock, lll_unlock): Use them. + Add _L_*_ symbols around the subsection. + * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Add unwind info. + * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Likewise. + +2006-03-03 Jakub Jelinek + Roland McGrath + + * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h + (LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END, + LLL_STUB_UNWIND_INFO_5, LLL_STUB_UNWIND_INFO_6): Define. + (lll_mutex_lock, lll_robust_mutex_lock, lll_mutex_cond_lock, + lll_robust_mutex_cond_lock, lll_mutex_timedlock, + lll_robust_mutex_timedlock, lll_mutex_unlock, + lll_robust_mutex_unlock, lll_lock, lll_unlock): Use them. + Add _L_*_ symbols around the subsection. + * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Add unwind info. + * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Likewise. + 2006-03-05 Roland McGrath * malloc/malloc.c (MALLOC_ALIGNMENT): Revert to (2 * SIZE_SZ) value. @@ -2042,6 +2075,11 @@ (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT followed by __THROW. + * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If + file == NULL, use __futimes unconditionally. + + * manual/filesys.texi (futimes): Fix prototype. + 2006-02-02 Ulrich Drepper * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] @@ -2101,6 +2139,11 @@ * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. +2006-01-30 Jakub Jelinek + + * include/bits/stdlib-ldbl.h: New file. + * include/bits/wchar-ldbl.h: New file. + 2006-01-19 Thomas Schwinge * libio/genops.c: Include . @@ -4527,6 +4570,10 @@ * elf/order2mod2.c (init): Cast ignored value to void. +2005-12-27 Jakub Jelinek + + * elf/ldconfig.c (search_dir): Skip prelink temporaries. + 2005-12-27 Ulrich Drepper * elf/tst-tls13.c (do_test): Avoid using the library path when @@ -4810,6 +4857,26 @@ * sysdeps/unix/sysv/linux/time.c: If __NR_time is not defined, use sysdeps/unix/time.c implementation. +2005-12-20 Jakub Jelinek + + * malloc/mtrace.c (__libc_malloc, __libc_free, __libc_realloc, + __libc_memalign): Add prototypes and libc_hidden_proto resp. + defines for !_LIBC. + (tr_freehook): Call __libc_free instead of free. + (tr_mallochook): Call __libc_malloc instead of malloc. + (tr_reallochook): Call __libc_realloc instead of realloc. + (tr_memalignhook): Call __libc_memalign instead of memalign. + * malloc/mcheck.c: Include stdlib.h. + (__libc_malloc, __libc_free, __libc_realloc, + __libc_memalign): Add prototypes and libc_hidden_proto resp. + defines for !_LIBC. + (freehook): Call __libc_free instead of free. + (mallochook): Call __libc_malloc instead of malloc. + (reallochook): Call __libc_realloc instead of realloc. + (memalignhook): Call __libc_memalign instead of memalign. + (mcheck): Call __libc_malloc and __libc_free instead of + malloc and free. + 2005-12-19 Ulrich Drepper [BZ #1955] @@ -7928,6 +7995,11 @@ R_ARM_TLS_TPOFF32, R_ARM_TLS_GD32, R_ARM_TLS_LDM32, R_ARM_TLS_LDO32, R_ARM_TLS_IE32, R_ARM_TLS_LE32): New macros. +2005-10-03 Jakub Jelinek + + * nscd/selinux.c (audit_init): Print error string in the failure + message. + 2005-10-03 Roland McGrath * sysdeps/powerpc/nofpu: Directory removed, saved in ports repository. @@ -8922,6 +8994,12 @@ * argp/argp-help.c (__argp_error): __asprintf -> vasprintf. (__argp_failure): Likewise. +2005-08-08 Jakub Jelinek + + * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): + Shift marked &errno down on big-endian instead of up. + * elf/tst-stackguard1.c (do_test): Fix a typo. + 2005-08-08 Ulrich Drepper * nscd/cache.c (cache_add): Commit hash table and header to disk. @@ -9046,6 +9124,17 @@ __syslog_chk. * misc/Versions: Export __syslog_chk and __vsyslog_chk. +2005-07-29 Jakub Jelinek + + * sysdeps/unix/sysv/linux/dl-osinfo.h: Include errno.h, hp-timing.h, + endian.h. + (_dl_setup_stack_chk_guard): Even without + --enable-stackguard-randomization attempt to do some guard + randomization using hp-timing (if available) and kernel stack and + mmap randomization. + * elf/tst-stackguard1.c (do_test): Don't fail if the poor man's + randomization doesn't work well enough. + 2005-07-28 Thomas Schwinge [BZ #1137] @@ -12106,6 +12195,18 @@ * scripts/soversions.awk: Fix default version set handling. +2005-02-09 Jakub Jelinek + + * sysdeps/unix/sysv/linux/bits/termios.h (CMSPAR): Define. + * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Add __USE_MISC + and __USE_XOPEN guards to match linux/bits/termios.h. + (CMSPAR): Define. + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Add __USE_MISC + and __USE_XOPEN guards to match linux/bits/termios.h. + (CMSPAR): Define. + * sysdeps/unix/sysv/linux/sparc/bits/termios.h: Add __USE_MISC + and __USE_XOPEN guards to match linux/bits/termios.h. + 2005-02-10 Roland McGrath [BZ #157] --- glibc-20080412T0741/csu/Makefile 1 Mar 2006 10:35:47 -0000 1.79 +++ glibc-20080412T0741-fedora/csu/Makefile 30 Nov 2006 17:07:37 -0000 1.74.2.6 @@ -93,7 +93,8 @@ omit-deps += $(crtstuff) $(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h $(compile.S) -g0 $(ASFLAGS-.os) -o $@ -CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) +CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ + -fno-asynchronous-unwind-tables vpath initfini.c $(sysdirs) --- glibc-20080412T0741/csu/elf-init.c 5 Nov 2005 17:41:38 -0000 1.8 +++ glibc-20080412T0741-fedora/csu/elf-init.c 15 Nov 2005 09:54:10 -0000 1.3.2.6 @@ -49,6 +49,23 @@ extern void (*__init_array_end []) (int, extern void (*__fini_array_start []) (void) attribute_hidden; extern void (*__fini_array_end []) (void) attribute_hidden; +#if defined HAVE_VISIBILITY_ATTRIBUTE \ + && (defined SHARED || defined LIBC_NONSHARED) +# define hidden_undef_2(x) #x +# define hidden_undef_1(x) hidden_undef_2 (x) +# define hidden_undef(x) \ + __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ + __asm (".hidden " #x); +#else +# define hidden_undef(x) +#endif + +hidden_undef (__preinit_array_start) +hidden_undef (__preinit_array_end) +hidden_undef (__init_array_start) +hidden_undef (__init_array_end) +hidden_undef (__fini_array_start) +hidden_undef (__fini_array_end) /* These function symbols are provided for the .init/.fini section entry points automagically by the linker. */ --- glibc-20080412T0741/debug/tst-chk1.c 5 Mar 2008 06:51:37 -0000 1.19 +++ glibc-20080412T0741-fedora/debug/tst-chk1.c 5 Mar 2008 09:37:40 -0000 1.1.2.19 @@ -17,6 +17,9 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ +#define __noreturn__ + #include #include #include @@ -242,7 +245,7 @@ do_test (void) if (memcmp (a.buf1, "aabcdabcjj", 10)) FAIL (); -#if __USE_FORTIFY_LEVEL < 2 +#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0) /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2 and sufficient GCC support, as the string operations overflow from a.buf1 into a.buf2. */ @@ -357,7 +360,7 @@ do_test (void) memset (a.buf1 + 9, 'j', l0 + 2); CHK_FAIL_END -# if __USE_FORTIFY_LEVEL >= 2 +# if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0) # define O 0 # else # define O 1 --- glibc-20080412T0741/elf/ldconfig.c 19 Mar 2008 06:43:31 -0000 1.63 +++ glibc-20080412T0741-fedora/elf/ldconfig.c 26 Mar 2008 11:22:14 -0000 1.47.2.18 @@ -1000,17 +1000,19 @@ search_dirs (void) static void parse_conf_include (const char *config_file, unsigned int lineno, - bool do_chroot, const char *pattern); + const char *prefix, bool do_chroot, + const char *pattern); /* Parse configuration file. */ static void -parse_conf (const char *filename, bool do_chroot) +parse_conf (const char *filename, const char *prefix, bool do_chroot) { FILE *file = NULL; char *line = NULL; const char *canon; size_t len = 0; unsigned int lineno; + size_t prefix_len = prefix ? strlen (prefix) : 0; if (do_chroot && opt_chroot) { @@ -1071,7 +1073,14 @@ parse_conf (const char *filename, bool d cp += 8; while ((dir = strsep (&cp, " \t")) != NULL) if (dir[0] != '\0') - parse_conf_include (filename, lineno, do_chroot, dir); + parse_conf_include (filename, lineno, prefix, do_chroot, dir); + } + else if (prefix != NULL) + { + size_t cp_len = strlen (cp); + char new_cp [prefix_len + cp_len + 1]; + memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1); + add_dir (new_cp); } else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5])) { @@ -1134,7 +1143,7 @@ parse_conf (const char *filename, bool d config files to read. */ static void parse_conf_include (const char *config_file, unsigned int lineno, - bool do_chroot, const char *pattern) + const char *prefix, bool do_chroot, const char *pattern) { if (opt_chroot && pattern[0] != '/') error (EXIT_FAILURE, 0, @@ -1164,7 +1173,7 @@ parse_conf_include (const char *config_f { case 0: for (size_t i = 0; i < gl.gl_pathc; ++i) - parse_conf (gl.gl_pathv[i], false); + parse_conf (gl.gl_pathv[i], prefix, false); globfree64 (&gl); break; @@ -1207,6 +1216,8 @@ main (int argc, char **argv) /* Set the text message domain. */ textdomain (_libc_intl_domainname); + arch_startup (argc, argv); + /* Parse and process arguments. */ int remaining; argp_parse (&argp, argc, argv, 0, &remaining, NULL); @@ -1318,12 +1329,14 @@ main (int argc, char **argv) if (!opt_only_cline) { - parse_conf (config_file, true); + parse_conf (config_file, NULL, true); /* Always add the standard search paths. */ add_system_dir (SLIBDIR); if (strcmp (SLIBDIR, LIBDIR)) add_system_dir (LIBDIR); + + add_arch_dirs (config_file); } if (! opt_ignore_aux_cache) --- glibc-20080412T0741/elf/tst-stackguard1.c 26 Jun 2005 18:08:36 -0000 1.1 +++ glibc-20080412T0741-fedora/elf/tst-stackguard1.c 8 Aug 2005 21:24:27 -0000 1.1.2.3 @@ -160,17 +160,21 @@ do_test (void) the 16 runs, something is very wrong. */ int ndifferences = 0; int ndefaults = 0; + int npartlyrandomized = 0; for (i = 0; i < N; ++i) { if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) ndifferences++; else if (child_stack_chk_guards[i] == default_guard) ndefaults++; + else if (*(char *) &child_stack_chk_guards[i] == 0) + npartlyrandomized++; } - printf ("differences %d defaults %d\n", ndifferences, ndefaults); + printf ("differences %d defaults %d partly randomized %d\n", + ndifferences, ndefaults, npartlyrandomized); - if (ndifferences < N / 2 && ndefaults < N / 2) + if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) { puts ("stack guard canaries are not randomized enough"); puts ("nor equal to the default canary value"); --- glibc-20080412T0741/include/features.h 11 Apr 2008 17:33:13 -0000 1.50 +++ glibc-20080412T0741-fedora/include/features.h 12 Apr 2008 07:48:57 -0000 1.35.2.20 @@ -282,8 +282,13 @@ #endif #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ - && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 -# if _FORTIFY_SOURCE > 1 + && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 +# if !__GNUC_PREREQ (4, 1) +# ifdef __GNUC_RH_RELEASE__ +# warning _FORTIFY_SOURCE supported only with GCC 4.1 and later +# endif +# define __USE_FORTIFY_LEVEL 0 +# elif _FORTIFY_SOURCE > 1 # define __USE_FORTIFY_LEVEL 2 # else # define __USE_FORTIFY_LEVEL 1 --- glibc-20080412T0741/include/bits/stdlib-ldbl.h 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/include/bits/stdlib-ldbl.h 1 Feb 2006 09:30:43 -0000 1.1.2.1 @@ -0,0 +1 @@ +#include --- glibc-20080412T0741/include/bits/wchar-ldbl.h 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/include/bits/wchar-ldbl.h 1 Feb 2006 09:30:43 -0000 1.1.2.1 @@ -0,0 +1 @@ +#include --- glibc-20080412T0741/intl/locale.alias 28 Oct 2007 01:39:54 -0000 1.24 +++ glibc-20080412T0741-fedora/intl/locale.alias 12 Dec 2007 18:13:23 -0000 1.23.2.2 @@ -57,8 +57,6 @@ korean ko_KR.eucKR korean.euc ko_KR.eucKR ko_KR ko_KR.eucKR lithuanian lt_LT.ISO-8859-13 -no_NO nb_NO.ISO-8859-1 -no_NO.ISO-8859-1 nb_NO.ISO-8859-1 norwegian nb_NO.ISO-8859-1 nynorsk nn_NO.ISO-8859-1 polish pl_PL.ISO-8859-2 --- glibc-20080412T0741/libio/stdio.h 8 Jan 2008 01:18:40 -0000 1.92 +++ glibc-20080412T0741-fedora/libio/stdio.h 11 Jan 2008 07:45:13 -0000 1.78.2.13 @@ -145,10 +145,12 @@ typedef _G_fpos64_t fpos64_t; extern struct _IO_FILE *stdin; /* Standard input stream. */ extern struct _IO_FILE *stdout; /* Standard output stream. */ extern struct _IO_FILE *stderr; /* Standard error output stream. */ +#ifdef __STDC__ /* C89/C99 say they're macros. Make them happy. */ #define stdin stdin #define stdout stdout #define stderr stderr +#endif __BEGIN_NAMESPACE_STD /* Remove file FILENAME. */ --- glibc-20080412T0741/locale/iso-4217.def 17 Feb 2007 07:46:20 -0000 1.20 +++ glibc-20080412T0741-fedora/locale/iso-4217.def 21 Feb 2007 11:15:50 -0000 1.15.2.5 @@ -8,6 +8,7 @@ * * !!! The list has to be sorted !!! */ +DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */ DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */ DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */ DEFINE_INT_CURR("ALL") /* Albanian Lek */ @@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD") /* Armenia Dram DEFINE_INT_CURR("ANG") /* Netherlands Antilles */ DEFINE_INT_CURR("AOA") /* Angolan Kwanza */ DEFINE_INT_CURR("ARS") /* Argentine Peso */ +DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */ DEFINE_INT_CURR("AUD") /* Australian Dollar */ DEFINE_INT_CURR("AWG") /* Aruba Guilder */ DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */ DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */ DEFINE_INT_CURR("BBD") /* Barbados Dollar */ DEFINE_INT_CURR("BDT") /* Bangladesh Taka */ +DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */ DEFINE_INT_CURR("BGN") /* Bulgarian Lev */ DEFINE_INT_CURR("BHD") /* Bahraini Dinar */ DEFINE_INT_CURR("BIF") /* Burundi Franc */ @@ -44,6 +47,7 @@ DEFINE_INT_CURR("CUP") /* Cuban Peso * DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */ DEFINE_INT_CURR("CYP") /* Cypriot Pound */ DEFINE_INT_CURR("CZK") /* Czech Koruna */ +DEFINE_INT_CURR("DEM") /* German Mark -> EUR */ DEFINE_INT_CURR("DJF") /* Djibouti Franc */ DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */ DEFINE_INT_CURR("DOP") /* Dominican Republic */ @@ -51,16 +55,20 @@ DEFINE_INT_CURR("DZD") /* Algerian Dina DEFINE_INT_CURR("EEK") /* Estonian Kroon */ DEFINE_INT_CURR("EGP") /* Egyptian Pound */ DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */ +DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */ DEFINE_INT_CURR("ETB") /* Ethiopian Birr */ DEFINE_INT_CURR("EUR") /* European Union Euro */ +DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */ DEFINE_INT_CURR("FJD") /* Fiji Dollar */ DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */ +DEFINE_INT_CURR("FRF") /* French Franc -> EUR */ DEFINE_INT_CURR("GBP") /* British Pound */ DEFINE_INT_CURR("GEL") /* Georgia Lari */ DEFINE_INT_CURR("GHC") /* Ghana Cedi */ DEFINE_INT_CURR("GIP") /* Gibraltar Pound */ DEFINE_INT_CURR("GMD") /* Gambian Dalasi */ DEFINE_INT_CURR("GNF") /* Guinea Franc */ +DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */ DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */ DEFINE_INT_CURR("GYD") /* Guyana Dollar */ DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */ @@ -69,12 +77,14 @@ DEFINE_INT_CURR("HRK") /* Croatia Kuna DEFINE_INT_CURR("HTG") /* Haiti Gourde */ DEFINE_INT_CURR("HUF") /* Hungarian Forint */ DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */ +DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */ DEFINE_INT_CURR("ILS") /* Israeli Shekel */ DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */ DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */ DEFINE_INT_CURR("IQD") /* Iraqi Dinar */ DEFINE_INT_CURR("IRR") /* Iranian Rial */ DEFINE_INT_CURR("ISK") /* Iceland Krona */ +DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */ DEFINE_INT_CURR("JEP") /* Jersey Pound */ DEFINE_INT_CURR("JMD") /* Jamaican Dollar */ DEFINE_INT_CURR("JOD") /* Jordanian Dinar */ @@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR") /* Sri Lankan Ru DEFINE_INT_CURR("LRD") /* Liberian Dollar */ DEFINE_INT_CURR("LSL") /* Lesotho Maloti */ DEFINE_INT_CURR("LTL") /* Lithuanian Litas */ +DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */ DEFINE_INT_CURR("LVL") /* Latvia Lat */ DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */ DEFINE_INT_CURR("MAD") /* Moroccan Dirham */ @@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM") /* Mozambique Me DEFINE_INT_CURR("NAD") /* Namibia Dollar */ DEFINE_INT_CURR("NGN") /* Nigeria Naira */ DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */ +DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */ DEFINE_INT_CURR("NOK") /* Norwegian Krone */ DEFINE_INT_CURR("NPR") /* Nepalese Rupee */ DEFINE_INT_CURR("NZD") /* New Zealand Dollar */ @@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK") /* Papau New Gui DEFINE_INT_CURR("PHP") /* Philippines Peso */ DEFINE_INT_CURR("PKR") /* Pakistan Rupee */ DEFINE_INT_CURR("PLN") /* Polish Zloty */ +DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */ DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ DEFINE_INT_CURR("QAR") /* Qatar Rial */ DEFINE_INT_CURR("ROL") /* Romanian Leu */ --- glibc-20080412T0741/locale/programs/locarchive.c 16 Jul 2007 00:54:59 -0000 1.25 +++ glibc-20080412T0741-fedora/locale/programs/locarchive.c 31 Jul 2007 17:45:53 -0000 1.21.2.4 @@ -222,9 +222,9 @@ oldlocrecentcmp (const void *a, const vo /* forward decls for below */ static uint32_t add_locale (struct locarhandle *ah, const char *name, locale_data_t data, bool replace); -static void add_alias (struct locarhandle *ah, const char *alias, - bool replace, const char *oldname, - uint32_t *locrec_offset_p); +void add_alias (struct locarhandle *ah, const char *alias, + bool replace, const char *oldname, + uint32_t *locrec_offset_p); static void enlarge_archive (struct locarhandle *ah, const struct locarhead *head) @@ -542,7 +542,7 @@ close_archive (struct locarhandle *ah) #include "../../intl/explodename.c" #include "../../intl/l10nflist.c" -static struct namehashent * +struct namehashent * insert_name (struct locarhandle *ah, const char *name, size_t name_len, bool replace) { @@ -600,7 +600,7 @@ insert_name (struct locarhandle *ah, return &namehashtab[idx]; } -static void +void add_alias (struct locarhandle *ah, const char *alias, bool replace, const char *oldname, uint32_t *locrec_offset_p) { --- glibc-20080412T0741/localedata/ChangeLog 9 Apr 2008 18:16:26 -0000 1.694 +++ glibc-20080412T0741-fedora/localedata/ChangeLog 8 Apr 2008 07:59:47 -0000 1.494.2.64 @@ -1,16 +1,9 @@ -2008-04-09 Ulrich Drepper - - * tst-langinfo.sh: Adjust for latest fr_FR locale changes. - 2008-04-07 Ulrich Drepper [BZ #6021] * locales/es_ES: Fix p_cs_precedes and n_cs_precedes. Use common collation definition. - [BZ #6040] - * locales/fr_FR: Fix abmon, abday, d_ftm, grouping. - [BZ #6004] * locales/iso14651_t1_common: Fix first weight for U+1E60, U+1E62, U+1E64, U+1E66, and U+1E68. --- glibc-20080412T0741/localedata/Makefile 30 Mar 2008 23:40:06 -0000 1.108 +++ glibc-20080412T0741-fedora/localedata/Makefile 8 Apr 2008 07:59:47 -0000 1.101.2.8 @@ -224,6 +224,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo echo -n '...'; \ input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ $(LOCALEDEF) --alias-file=../intl/locale.alias \ + --no-archive \ -i locales/$$input -c -f charmaps/$$charset \ $(addprefix --prefix=,$(install_root)) $$locale; \ echo ' done'; \ --- glibc-20080412T0741/localedata/SUPPORTED 4 Mar 2008 22:10:33 -0000 1.109 +++ glibc-20080412T0741-fedora/localedata/SUPPORTED 5 Mar 2008 09:37:42 -0000 1.71.2.21 @@ -84,6 +84,7 @@ cy_GB.UTF-8/UTF-8 \ cy_GB/ISO-8859-14 \ da_DK.UTF-8/UTF-8 \ da_DK/ISO-8859-1 \ +da_DK.ISO-8859-15/ISO-8859-15 \ de_AT.UTF-8/UTF-8 \ de_AT/ISO-8859-1 \ de_AT@euro/ISO-8859-15 \ @@ -113,6 +114,7 @@ en_DK.UTF-8/UTF-8 \ en_DK/ISO-8859-1 \ en_GB.UTF-8/UTF-8 \ en_GB/ISO-8859-1 \ +en_GB.ISO-8859-15/ISO-8859-15 \ en_HK.UTF-8/UTF-8 \ en_HK/ISO-8859-1 \ en_IE.UTF-8/UTF-8 \ @@ -128,6 +130,7 @@ en_SG.UTF-8/UTF-8 \ en_SG/ISO-8859-1 \ en_US.UTF-8/UTF-8 \ en_US/ISO-8859-1 \ +en_US.ISO-8859-15/ISO-8859-15 \ en_ZA.UTF-8/UTF-8 \ en_ZA/ISO-8859-1 \ en_ZW.UTF-8/UTF-8 \ @@ -296,6 +299,8 @@ nl_NL/ISO-8859-1 \ nl_NL@euro/ISO-8859-15 \ nn_NO.UTF-8/UTF-8 \ nn_NO/ISO-8859-1 \ +no_NO.UTF-8/UTF-8 \ +no_NO/ISO-8859-1 \ nr_ZA/UTF-8 \ nso_ZA/UTF-8 \ oc_FR.UTF-8/UTF-8 \ @@ -352,6 +357,7 @@ sv_FI/ISO-8859-1 \ sv_FI@euro/ISO-8859-15 \ sv_SE.UTF-8/UTF-8 \ sv_SE/ISO-8859-1 \ +sv_SE.ISO-8859-15/ISO-8859-15 \ ta_IN/UTF-8 \ te_IN/UTF-8 \ tg_TJ.UTF-8/UTF-8 \ --- glibc-20080412T0741/localedata/tst-langinfo.sh 9 Apr 2008 18:16:14 -0000 1.7 +++ glibc-20080412T0741-fedora/localedata/tst-langinfo.sh 10 Oct 2007 21:00:45 -0000 1.5.2.1 @@ -1,6 +1,6 @@ #! /bin/sh # Test nl_langinfo. -# Copyright (C) 2000, 2001, 2003, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2000, 2001, 2003, 2007 Free Software Foundation, Inc. # This file is part of the GNU C Library. # @@ -245,13 +245,13 @@ de_DE.UTF-8 RADIXCHAR , de_DE.UTF-8 THOUSEP . de_DE.UTF-8 YESEXPR ^[jJyY].* de_DE.UTF-8 NOEXPR ^[nN].* -fr_FR.ISO-8859-1 ABDAY_1 dim. -fr_FR.ISO-8859-1 ABDAY_2 lun. -fr_FR.ISO-8859-1 ABDAY_3 mar. -fr_FR.ISO-8859-1 ABDAY_4 mer. -fr_FR.ISO-8859-1 ABDAY_5 jeu. -fr_FR.ISO-8859-1 ABDAY_6 ven. -fr_FR.ISO-8859-1 ABDAY_7 sam. +fr_FR.ISO-8859-1 ABDAY_1 dim +fr_FR.ISO-8859-1 ABDAY_2 lun +fr_FR.ISO-8859-1 ABDAY_3 mar +fr_FR.ISO-8859-1 ABDAY_4 mer +fr_FR.ISO-8859-1 ABDAY_5 jeu +fr_FR.ISO-8859-1 ABDAY_6 ven +fr_FR.ISO-8859-1 ABDAY_7 sam fr_FR.ISO-8859-1 DAY_1 dimanche fr_FR.ISO-8859-1 DAY_2 lundi fr_FR.ISO-8859-1 DAY_3 mardi @@ -259,18 +259,18 @@ fr_FR.ISO-8859-1 DAY_4 mercred fr_FR.ISO-8859-1 DAY_5 jeudi fr_FR.ISO-8859-1 DAY_6 vendredi fr_FR.ISO-8859-1 DAY_7 samedi -fr_FR.ISO-8859-1 ABMON_1 janv. -fr_FR.ISO-8859-1 ABMON_2 févr. -fr_FR.ISO-8859-1 ABMON_3 mars -fr_FR.ISO-8859-1 ABMON_4 avril +fr_FR.ISO-8859-1 ABMON_1 jan +fr_FR.ISO-8859-1 ABMON_2 fév +fr_FR.ISO-8859-1 ABMON_3 mar +fr_FR.ISO-8859-1 ABMON_4 avr fr_FR.ISO-8859-1 ABMON_5 mai -fr_FR.ISO-8859-1 ABMON_6 juin -fr_FR.ISO-8859-1 ABMON_7 juil. -fr_FR.ISO-8859-1 ABMON_8 août -fr_FR.ISO-8859-1 ABMON_9 sept. -fr_FR.ISO-8859-1 ABMON_10 oct. -fr_FR.ISO-8859-1 ABMON_11 nov. -fr_FR.ISO-8859-1 ABMON_12 déc. +fr_FR.ISO-8859-1 ABMON_6 jun +fr_FR.ISO-8859-1 ABMON_7 jui +fr_FR.ISO-8859-1 ABMON_8 aoû +fr_FR.ISO-8859-1 ABMON_9 sep +fr_FR.ISO-8859-1 ABMON_10 oct +fr_FR.ISO-8859-1 ABMON_11 nov +fr_FR.ISO-8859-1 ABMON_12 déc fr_FR.ISO-8859-1 MON_1 janvier fr_FR.ISO-8859-1 MON_2 février fr_FR.ISO-8859-1 MON_3 mars @@ -284,7 +284,7 @@ fr_FR.ISO-8859-1 MON_10 octobre fr_FR.ISO-8859-1 MON_11 novembre fr_FR.ISO-8859-1 MON_12 décembre fr_FR.ISO-8859-1 D_T_FMT "%a %d %b %Y %T %Z" -fr_FR.ISO-8859-1 D_FMT "%d/%m/%Y" +fr_FR.ISO-8859-1 D_FMT "%d.%m.%Y" fr_FR.ISO-8859-1 T_FMT "%T" fr_FR.ISO-8859-1 RADIXCHAR , fr_FR.ISO-8859-1 THOUSEP " " --- glibc-20080412T0741/localedata/locales/cy_GB 28 Sep 2004 04:37:33 -0000 1.4 +++ glibc-20080412T0741-fedora/localedata/locales/cy_GB 29 Sep 2004 08:48:23 -0000 1.3.2.2 @@ -248,8 +248,11 @@ mon "" d_fmt "" t_fmt "" -am_pm "";"" -t_fmt_ampm "" +am_pm "";"" +t_fmt_ampm "" +date_fmt "/ +/ +" END LC_TIME LC_MESSAGES --- glibc-20080412T0741/localedata/locales/en_GB 30 Sep 2007 18:24:20 -0000 1.15 +++ glibc-20080412T0741-fedora/localedata/locales/en_GB 3 Oct 2007 19:32:28 -0000 1.10.2.5 @@ -116,8 +116,8 @@ mon "" d_fmt "" t_fmt "" -am_pm "";"" -t_fmt_ampm "" +am_pm "";"" +t_fmt_ampm "" date_fmt "/ / " --- glibc-20080412T0741/localedata/locales/fr_FR 8 Apr 2008 00:17:54 -0000 1.15 +++ glibc-20080412T0741-fedora/localedata/locales/fr_FR 10 Oct 2007 21:00:45 -0000 1.10.2.3 @@ -3,35 +3,33 @@ escape_char / % % French Language Locale for France % Source: RAP +% Address: Sankt Jo//rgens Alle 8 +% DK-1615 Ko//benhavn V, Danmark +% Contact: Keld Simonsen +% Email: Keld.Simonsen@dkuug.dk +% Tel: +45 - 31226543 +% Fax: +45 - 33256543 % Language: fr -% Contact: Traduc.org -% Address: 18, rue Cavendish -% 75019 Paris -% Email: traduc@traduc.org % Territory: FR -% Revision: 4.4 -% Date: 2008-03-02 +% Revision: 4.3 +% Date: 1996-10-15 % Users: general % Charset: ISO-8859-1 -% Authors: -% 2000-06-28, keld.simonsen@dkuug.dk -% 2008-03-02, stephane.raimbault@gmail.com -% % Distribution and use is free, also % for commercial purposes. LC_IDENTIFICATION title "French locale for France" source "RAP" -address "" -contact "Traduc.org" +address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" +contact "Keld Simonsen" email "bug-glibc-locales@gnu.org" tel "" fax "" language "French" territory "France" revision "1.0" -date "2008-03-15" +date "2000-06-28" % category "fr_FR:2000";LC_IDENTIFICATION category "fr_FR:2000";LC_CTYPE @@ -74,7 +72,7 @@ int_curr_symbol "" mon_decimal_point "" mon_thousands_sep "" -mon_grouping 3 +mon_grouping 3;3 positive_sign "" negative_sign "" int_frac_digits 2 @@ -90,17 +88,14 @@ END LC_MONETARY LC_NUMERIC decimal_point "" thousands_sep "" -grouping 3 +grouping 0;0 END LC_NUMERIC LC_TIME -abday "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "" +abday "";"";/ + "";"";/ + "";"";/ + "" day "";/ "";/ "";/ @@ -108,18 +103,12 @@ day "";/ "";/ "" -abmon "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "" +abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" mon "";/ "";/ "";/ @@ -133,7 +122,7 @@ mon "";/ "" d_t_fmt "" -d_fmt "" +d_fmt "" t_fmt "" am_pm "";"" t_fmt_ampm "" --- glibc-20080412T0741/localedata/locales/no_NO 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/localedata/locales/no_NO 22 Sep 2004 21:21:01 -0000 1.11.2.1 @@ -0,0 +1,69 @@ +escape_char / +comment_char % + +% Norwegian language locale for Norway +% Source: Norsk Standardiseringsforbund +% Address: University Library, +% Drammensveien 41, N-9242 Oslo, Norge +% Contact: Kolbjoern Aamboe +% Tel: +47 - 22859109 +% Fax: +47 - 22434497 +% Email: kolbjorn.aambo@usit.uio.no +% Language: no +% Territory: NO +% Revision: 4.3 +% Date: 1996-10-15 +% Application: general +% Users: general +% Repertoiremap: mnemonic.ds +% Charset: ISO-8859-1 +% Distribution and use is free, also +% for commercial purposes. + +LC_IDENTIFICATION +copy "nb_NO" +END LC_IDENTIFICATION + +LC_COLLATE +copy "nb_NO" +END LC_COLLATE + +LC_CTYPE +copy "nb_NO" +END LC_CTYPE + +LC_MONETARY +copy "nb_NO" +END LC_MONETARY + +LC_NUMERIC +copy "nb_NO" +END LC_NUMERIC + +LC_TIME +copy "nb_NO" +END LC_TIME + +LC_MESSAGES +copy "nb_NO" +END LC_MESSAGES + +LC_PAPER +copy "nb_NO" +END LC_PAPER + +LC_TELEPHONE +copy "nb_NO" +END LC_TELEPHONE + +LC_MEASUREMENT +copy "nb_NO" +END LC_MEASUREMENT + +LC_NAME +copy "nb_NO" +END LC_NAME + +LC_ADDRESS +copy "nb_NO" +END LC_ADDRESS --- glibc-20080412T0741/localedata/locales/zh_TW 31 Oct 2004 23:42:28 -0000 1.7 +++ glibc-20080412T0741-fedora/localedata/locales/zh_TW 2 Nov 2004 12:25:57 -0000 1.5.2.2 @@ -1,7 +1,7 @@ comment_char % escape_char / % -% Chinese language locale for Taiwan R.O.C. +% Chinese language locale for Taiwan % charmap: BIG5-CP950 % % Original Author: @@ -17,7 +17,7 @@ escape_char / % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf LC_IDENTIFICATION -title "Chinese locale for Taiwan R.O.C." +title "Chinese locale for Taiwan" source "" address "" contact "" @@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org" tel "" fax "" language "Chinese" -territory "Taiwan R.O.C." +territory "Taiwan" revision "0.2" date "2000-08-02" % --- glibc-20080412T0741/malloc/mcheck.c 19 May 2007 04:27:20 -0000 1.20 +++ glibc-20080412T0741-fedora/malloc/mcheck.c 21 May 2007 20:01:08 -0000 1.18.2.2 @@ -24,9 +24,25 @@ # include # include # include +# include # include #endif +#ifdef _LIBC +extern __typeof (malloc) __libc_malloc; +extern __typeof (free) __libc_free; +extern __typeof (realloc) __libc_realloc; +libc_hidden_proto (__libc_malloc) +libc_hidden_proto (__libc_realloc) +libc_hidden_proto (__libc_free) +libc_hidden_proto (__libc_memalign) +#else +# define __libc_malloc(sz) malloc (sz) +# define __libc_free(ptr) free (ptr) +# define __libc_realloc(ptr, sz) realloc (ptr, sz) +# define __libc_memalign(al, sz) memalign (al, sz) +#endif + /* Old hook values. */ static void (*old_free_hook) (__ptr_t ptr, __const __ptr_t); static __ptr_t (*old_malloc_hook) (__malloc_size_t size, const __ptr_t); @@ -197,7 +213,7 @@ freehook (__ptr_t ptr, const __ptr_t cal if (old_free_hook != NULL) (*old_free_hook) (ptr, caller); else - free (ptr); + __libc_free (ptr); __free_hook = freehook; } @@ -214,7 +230,7 @@ mallochook (__malloc_size_t size, const hdr = (struct hdr *) (*old_malloc_hook) (sizeof (struct hdr) + size + 1, caller); else - hdr = (struct hdr *) malloc (sizeof (struct hdr) + size + 1); + hdr = (struct hdr *) __libc_malloc (sizeof (struct hdr) + size + 1); __malloc_hook = mallochook; if (hdr == NULL) return NULL; @@ -245,7 +261,7 @@ memalignhook (__malloc_size_t alignment, if (old_memalign_hook != NULL) block = (*old_memalign_hook) (alignment, slop + size + 1, caller); else - block = memalign (alignment, slop + size + 1); + block = __libc_memalign (alignment, slop + size + 1); __memalign_hook = memalignhook; if (block == NULL) return NULL; @@ -300,8 +316,8 @@ reallochook (__ptr_t ptr, __malloc_size_ sizeof (struct hdr) + size + 1, caller); else - hdr = (struct hdr *) realloc ((__ptr_t) hdr, - sizeof (struct hdr) + size + 1); + hdr = (struct hdr *) __libc_realloc ((__ptr_t) hdr, + sizeof (struct hdr) + size + 1); __free_hook = freehook; __malloc_hook = mallochook; __memalign_hook = memalignhook; @@ -361,8 +377,8 @@ mcheck (func) if (__malloc_initialized <= 0 && !mcheck_used) { /* We call malloc() once here to ensure it is initialized. */ - void *p = malloc (0); - free (p); + void *p = __libc_malloc (0); + __libc_free (p); old_free_hook = __free_hook; __free_hook = freehook; --- glibc-20080412T0741/malloc/mtrace.c 25 Jan 2007 00:43:38 -0000 1.43 +++ glibc-20080412T0741-fedora/malloc/mtrace.c 20 Dec 2005 10:59:21 -0000 1.41.2.1 @@ -40,6 +40,18 @@ # include # define setvbuf(s, b, f, l) INTUSE(_IO_setvbuf) (s, b, f, l) # define fwrite(buf, size, count, fp) _IO_fwrite (buf, size, count, fp) +extern __typeof (malloc) __libc_malloc; +extern __typeof (free) __libc_free; +extern __typeof (realloc) __libc_realloc; +libc_hidden_proto (__libc_malloc) +libc_hidden_proto (__libc_realloc) +libc_hidden_proto (__libc_free) +libc_hidden_proto (__libc_memalign) +#else +# define __libc_malloc(sz) malloc (sz) +# define __libc_free(ptr) free (ptr) +# define __libc_realloc(ptr, sz) realloc (ptr, sz) +# define __libc_memalign(al, sz) memalign (al, sz) #endif #ifndef attribute_hidden @@ -154,7 +166,7 @@ tr_freehook (ptr, caller) if (tr_old_free_hook != NULL) (*tr_old_free_hook) (ptr, caller); else - free (ptr); + __libc_free (ptr); __free_hook = tr_freehook; __libc_lock_unlock (lock); } @@ -173,7 +185,7 @@ tr_mallochook (size, caller) if (tr_old_malloc_hook != NULL) hdr = (__ptr_t) (*tr_old_malloc_hook) (size, caller); else - hdr = (__ptr_t) malloc (size); + hdr = (__ptr_t) __libc_malloc (size); __malloc_hook = tr_mallochook; tr_where (caller); @@ -209,7 +221,7 @@ tr_reallochook (ptr, size, caller) if (tr_old_realloc_hook != NULL) hdr = (__ptr_t) (*tr_old_realloc_hook) (ptr, size, caller); else - hdr = (__ptr_t) realloc (ptr, size); + hdr = (__ptr_t) __libc_realloc (ptr, size); __free_hook = tr_freehook; __malloc_hook = tr_mallochook; __realloc_hook = tr_reallochook; @@ -251,7 +263,7 @@ tr_memalignhook (alignment, size, caller if (tr_old_memalign_hook != NULL) hdr = (__ptr_t) (*tr_old_memalign_hook) (alignment, size, caller); else - hdr = (__ptr_t) memalign (alignment, size); + hdr = (__ptr_t) __libc_memalign (alignment, size); __memalign_hook = tr_memalignhook; __malloc_hook = tr_mallochook; --- glibc-20080412T0741/manual/libc.texinfo 31 Jan 2008 01:43:04 -0000 1.98 +++ glibc-20080412T0741-fedora/manual/libc.texinfo 31 Jan 2008 08:43:19 -0000 1.94.2.4 @@ -5,7 +5,7 @@ @c setchapternewpage odd @comment Tell install-info what to do. -@dircategory Software libraries +@dircategory Libraries @direntry * Libc: (libc). C library. @end direntry --- glibc-20080412T0741/misc/sys/cdefs.h 3 Oct 2007 18:27:02 -0000 1.73 +++ glibc-20080412T0741-fedora/misc/sys/cdefs.h 3 Oct 2007 19:32:28 -0000 1.58.2.10 @@ -132,7 +132,10 @@ #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) #define __bos0(ptr) __builtin_object_size (ptr, 0) -#if __GNUC_PREREQ (4,3) +#if __GNUC_PREREQ (4,3) \ + || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ + && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ + && __GNUC_RH_RELEASE__ >= 31) # define __warndecl(name, msg) \ extern void name (void) __attribute__((__warning__ (msg))) # define __warnattr(msg) __attribute__((__warning__ (msg))) @@ -291,10 +294,16 @@ /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 inline semantics, unless -fgnu89-inline is used. */ -#if !defined __cplusplus || __GNUC_PREREQ (4,3) +#if !defined __cplusplus || __GNUC_PREREQ (4,3) \ + || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ + && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ + && __GNUC_RH_RELEASE__ >= 31) # if defined __GNUC_STDC_INLINE__ || defined __cplusplus # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) -# if __GNUC_PREREQ (4,3) +# if __GNUC_PREREQ (4,3) \ + || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ + && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ + && __GNUC_RH_RELEASE__ >= 31) # define __extern_always_inline \ extern __always_inline __attribute__ ((__gnu_inline__, __artificial__)) # else @@ -309,7 +318,10 @@ /* GCC 4.3 and above allow passing all anonymous arguments of an __extern_always_inline function to some other vararg function. */ -#if __GNUC_PREREQ (4,3) +#if __GNUC_PREREQ (4,3) \ + || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ + && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ + && __GNUC_RH_RELEASE__ >= 31) # define __va_arg_pack() __builtin_va_arg_pack () # define __va_arg_pack_len() __builtin_va_arg_pack_len () #endif --- glibc-20080412T0741/nis/nss 28 Apr 2006 21:02:23 -0000 1.3 +++ glibc-20080412T0741-fedora/nis/nss 1 May 2006 08:02:53 -0000 1.2.2.2 @@ -25,4 +25,4 @@ # memory with every getXXent() call. Otherwise each getXXent() call # might result into a network communication with the server to get # the next entry. -#SETENT_BATCH_READ=TRUE +SETENT_BATCH_READ=TRUE --- glibc-20080412T0741/nptl/ChangeLog 9 Apr 2008 17:59:06 -0000 1.1062 +++ glibc-20080412T0741-fedora/nptl/ChangeLog 30 Apr 2008 12:11:30 -0000 1.706.2.154 @@ -1,3 +1,8 @@ +2008-04-14 David S. Miller + + * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c + (__old_sem_wait): Fix argument to lll_futex_wait(). + 2007-11-26 Daniel Jacobowitz * pthread_create.c: Require pthread_mutex_trylock and @@ -3148,6 +3153,15 @@ Use __sigfillset. Document that sigfillset does the right thing wrt to SIGSETXID. +2005-08-08 Jakub Jelinek + + * tst-stackguard1.c (do_test): Likewise. + +2005-07-29 Jakub Jelinek + + * tst-stackguard1.c (do_test): Don't fail if the poor man's + randomization doesn't work well enough. + 2005-07-11 Jakub Jelinek [BZ #1102] @@ -3884,6 +3898,11 @@ Move definition inside libpthread, libc, librt check. Provide definition for rtld. +2004-09-02 Jakub Jelinek + + * pthread_cond_destroy.c (__pthread_cond_destroy): If there are + waiters, awake all waiters on the associated mutex. + 2004-09-02 Ulrich Drepper * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. @@ -5958,6 +5977,11 @@ * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). +2003-07-22 Jakub Jelinek + + * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h + if __need_struct_pthread_size, instead define lll_lock_t. + 2003-07-25 Jakub Jelinek * tst-cancel17.c (do_test): Check if aio_cancel failed. --- glibc-20080412T0741/nptl/Makefile 1 Feb 2008 00:01:18 -0000 1.193 +++ glibc-20080412T0741-fedora/nptl/Makefile 1 Feb 2008 10:19:38 -0000 1.157.2.35 @@ -339,7 +339,8 @@ endif extra-objs += $(crti-objs) $(crtn-objs) omit-deps += crti crtn -CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) +CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ + -fno-asynchronous-unwind-tables endif CFLAGS-flockfile.c = -D_IO_MTSAFE_IO @@ -523,15 +524,19 @@ $(addprefix $(objpfx), \ $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ $(objpfx)libpthread_nonshared.a $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so -# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, +# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, # since otherwise libpthread.so comes before libc.so when linking. $(addprefix $(objpfx), $(tests-reverse)): \ - $(objpfx)../libc.so $(objpfx)libpthread.so \ + $(objpfx)linklibc.so $(objpfx)libpthread.so \ $(objpfx)libpthread_nonshared.a $(objpfx)../libc.so: $(common-objpfx)libc.so ; $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so + +$(objpfx)linklibc.so: $(common-objpfx)libc.so + ln -s ../libc.so $@ +generated += libclink.so else $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a endif --- glibc-20080412T0741/nptl/tst-stackguard1.c 26 Jun 2005 17:44:14 -0000 1.1 +++ glibc-20080412T0741-fedora/nptl/tst-stackguard1.c 8 Aug 2005 21:24:28 -0000 1.1.2.3 @@ -190,17 +190,21 @@ do_test (void) the 16 runs, something is very wrong. */ int ndifferences = 0; int ndefaults = 0; + int npartlyrandomized = 0; for (i = 0; i < N; ++i) { if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) ndifferences++; else if (child_stack_chk_guards[i] == default_guard) ndefaults++; + else if (*(char *) &child_stack_chk_guards[i] == 0) + npartlyrandomized++; } - printf ("differences %d defaults %d\n", ndifferences, ndefaults); + printf ("differences %d defaults %d partly randomized %d\n", + ndifferences, ndefaults, npartlyrandomized); - if (ndifferences < N / 2 && ndefaults < N / 2) + if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) { puts ("stack guard canaries are not randomized enough"); puts ("nor equal to the default canary value"); --- glibc-20080412T0741/nptl/sysdeps/unix/sysv/linux/kernel-features.h 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/nptl/sysdeps/unix/sysv/linux/kernel-features.h 22 Sep 2004 21:21:02 -0000 1.1.2.1 @@ -0,0 +1,6 @@ +#include_next + +/* NPTL can always assume all clone thread flags work. */ +#ifndef __ASSUME_CLONE_THREAD_FLAGS +# define __ASSUME_CLONE_THREAD_FLAGS 1 +#endif --- glibc-20080412T0741/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 8 Mar 2008 01:57:04 -0000 1.16 +++ glibc-20080412T0741-fedora/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 14 Mar 2008 22:36:45 -0000 1.8.2.9 @@ -181,4 +181,7 @@ /* Typed memory objects are not available. */ #define _POSIX_TYPED_MEMORY_OBJECTS -1 +/* Streams are not available. */ +#define _XOPEN_STREAMS -1 + #endif /* posix_opt.h */ --- glibc-20080412T0741/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c 15 Aug 2007 20:47:42 -0000 1.2 +++ glibc-20080412T0741-fedora/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c 30 Apr 2008 12:11:31 -0000 1.1.2.3 @@ -155,7 +155,7 @@ __old_sem_wait (sem_t *sem) /* Enable asynchronous cancellation. Required by the standard. */ int oldtype = __pthread_enable_asynccancel (); - err = lll_futex_wait (futex, 0, + err = lll_futex_wait (&isem->value, 0, isem->private ^ FUTEX_PRIVATE_FLAG); /* Disable asynchronous cancellation. */ --- glibc-20080412T0741/nscd/aicache.c 25 Nov 2007 12:56:35 -0000 1.17 +++ glibc-20080412T0741-fedora/nscd/aicache.c 30 Apr 2008 12:11:31 -0000 1.5.2.9 @@ -262,7 +262,8 @@ addhstaiX (struct database_dyn *db, int { dataset = (struct dataset *) mempool_alloc (db, total - + req->key_len); + + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -338,7 +339,8 @@ addhstaiX (struct database_dyn *db, int struct dataset *newp = (struct dataset *) mempool_alloc (db, total - + req->key_len); + + req->key_len, + IDX_result_data); if (__builtin_expect (newp != NULL, 1)) { /* Adjust pointer into the memory block. */ @@ -424,7 +426,8 @@ addhstaiX (struct database_dyn *db, int if (fd != -1) TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { --- glibc-20080412T0741/nscd/cache.c 25 Nov 2007 21:47:35 -0000 1.35 +++ glibc-20080412T0741-fedora/nscd/cache.c 30 Apr 2008 12:11:31 -0000 1.19.2.10 @@ -155,11 +155,16 @@ cache_add (int type, const void *key, si unsigned long int hash = __nis_hash (key, len) % table->head->module; struct hashentry *newp; - newp = mempool_alloc (table, sizeof (struct hashentry)); + newp = mempool_alloc (table, sizeof (struct hashentry), IDX_record_data); /* If we cannot allocate memory, just do not do anything. */ if (newp == NULL) { ++table->head->addfailed; + + /* Mark the in-flight memory as unused. */ + for (enum in_flight idx = 0; idx < IDX_record_data; ++idx) + mem_in_flight.block[idx].dbidx = -1; + return -1; } @@ -215,6 +220,10 @@ cache_add (int type, const void *key, si else next_wakeup = table->wakeup_time; + /* Mark the in-flight memory as unused. */ + for (enum in_flight idx = 0; idx < IDX_last; ++idx) + mem_in_flight.block[idx].dbidx = -1; + return 0; } --- glibc-20080412T0741/nscd/connections.c 4 Mar 2008 01:53:50 -0000 1.109 +++ glibc-20080412T0741-fedora/nscd/connections.c 30 Apr 2008 12:11:31 -0000 1.55.2.39 @@ -225,6 +225,11 @@ static int sock; /* Number of times clients had to wait. */ unsigned long int client_queued; +/* Data structure for recording in-flight memory allocation. */ +__thread struct mem_in_flight mem_in_flight attribute_tls_model_ie; +/* Global list of the mem_in_flight variables of all the threads. */ +struct mem_in_flight *mem_in_flight_list; + ssize_t writeall (int fd, const void *buf, size_t len) @@ -964,7 +969,7 @@ send_ro_fd (struct database_dyn *db, cha /* Handle new request. */ static void -handle_request (int fd, request_header *req, void *key, uid_t uid) +handle_request (int fd, request_header *req, void *key, uid_t uid, pid_t pid) { if (__builtin_expect (req->version, NSCD_VERSION) != NSCD_VERSION) { @@ -979,7 +984,31 @@ cannot handle old request version %d; cu if (selinux_enabled && nscd_request_avc_has_perm (fd, req->type) != 0) { if (debug_level > 0) - dbg_log (_("request not handled due to missing permission")); + { +#ifdef SO_PEERCRED +# ifdef PATH_MAX + char buf[PATH_MAX]; +# else + char buf[4096]; +# endif + + snprintf (buf, sizeof (buf), "/proc/%ld/exe", (long int) pid); + ssize_t n = readlink (buf, buf, sizeof (buf) - 1); + + if (n <= 0) + dbg_log (_("\ +request from %ld not handled due to missing permission"), (long int) pid); + else + { + buf[n] = '\0'; + dbg_log (_("\ +request from '%s' [%ld] not handled due to missing permission"), + buf, (long int) pid); + } +#else + dbg_log (_("request not handled due to missing permission")); +#endif + } return; } @@ -1426,6 +1455,16 @@ nscd_run_worker (void *p) { char buf[256]; + /* Initialize the memory-in-flight list. */ + for (enum in_flight idx = 0; idx < IDX_last; ++idx) + mem_in_flight.block[idx].dbidx = -1; + /* And queue this threads structure. */ + do + mem_in_flight.next = mem_in_flight_list; + while (atomic_compare_and_exchange_bool_acq (&mem_in_flight_list, + &mem_in_flight, + mem_in_flight.next) != 0); + /* Initial locking. */ pthread_mutex_lock (&readylist_lock); @@ -1491,6 +1530,8 @@ nscd_run_worker (void *p) if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0) pid = caller.pid; } +#else + const pid_t pid = 0; #endif /* It should not be possible to crash the nscd with a silly @@ -1531,7 +1572,7 @@ handle_request: request received (Versio } /* Phew, we got all the data, now process it. */ - handle_request (fd, &req, keybuf, uid); + handle_request (fd, &req, keybuf, uid, pid); } close_and_out: --- glibc-20080412T0741/nscd/grpcache.c 25 Nov 2007 21:25:22 -0000 1.50 +++ glibc-20080412T0741-fedora/nscd/grpcache.c 30 Apr 2008 12:11:31 -0000 1.36.2.12 @@ -113,7 +113,8 @@ cache_addgr (struct database_dyn *db, in written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -204,7 +205,8 @@ cache_addgr (struct database_dyn *db, in if (he == NULL) { - dataset = (struct dataset *) mempool_alloc (db, total + n); + dataset = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -274,7 +276,8 @@ cache_addgr (struct database_dyn *db, in /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + n); + = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (newp != NULL) { /* Adjust pointers into the memory block. */ --- glibc-20080412T0741/nscd/hstcache.c 25 Nov 2007 21:24:14 -0000 1.46 +++ glibc-20080412T0741-fedora/nscd/hstcache.c 30 Apr 2008 12:11:31 -0000 1.31.2.11 @@ -121,7 +121,8 @@ cache_addhst (struct database_dyn *db, i written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -226,7 +227,8 @@ cache_addhst (struct database_dyn *db, i if (he == NULL && h_addr_list_cnt == 1) { dataset = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -312,7 +314,8 @@ cache_addhst (struct database_dyn *db, i appropriate memory and copy it. */ struct dataset *newp = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (newp != NULL) { /* Adjust pointers into the memory block. */ --- glibc-20080412T0741/nscd/initgrcache.c 25 Nov 2007 21:29:04 -0000 1.12 +++ glibc-20080412T0741-fedora/nscd/initgrcache.c 30 Apr 2008 12:11:31 -0000 1.1.2.14 @@ -197,7 +197,8 @@ addinitgroupsX (struct database_dyn *db, written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -259,7 +260,8 @@ addinitgroupsX (struct database_dyn *db, if (he == NULL) { dataset = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -329,7 +331,8 @@ addinitgroupsX (struct database_dyn *db, /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + req->key_len); + = (struct dataset *) mempool_alloc (db, total + req->key_len, + IDX_result_data); if (newp != NULL) { /* Adjust pointer into the memory block. */ --- glibc-20080412T0741/nscd/mem.c 25 Nov 2007 21:07:14 -0000 1.12 +++ glibc-20080412T0741-fedora/nscd/mem.c 30 Apr 2008 12:11:31 -0000 1.3.2.7 @@ -197,6 +197,31 @@ gc (struct database_dyn *db) } assert (cnt == db->head->nentries); + /* Go through the list of in-flight memory blocks. */ + struct mem_in_flight *mrunp = mem_in_flight_list; + while (mrunp != NULL) + { + /* NB: There can be no race between this test and another thread + setting the field to the index we are looking for because + this would require the other thread to also have the memlock + for the database. + + NB2: we do not have to look at latter blocks (higher indices) if + earlier blocks are not in flight. They are always allocated in + sequence. */ + for (enum in_flight idx = IDX_result_data; + idx < IDX_last && mrunp->block[idx].dbidx == db - dbs; ++idx) + { + assert ((char *) mrunp->block[idx].blockaddr > db->data); + assert ((char *) mrunp->block[idx].blockaddr + + mrunp->block[0].blocklen <= db->data + db->memsize); + markrange (mark, (char *) mrunp->block[idx].blockaddr - db->data, + mrunp->block[idx].blocklen); + } + + mrunp = mrunp->next; + } + /* Sort the entries by the addresses of the referenced data. All the entries pointing to the same DATAHEAD object will have the same key. Stability of the sorting is unimportant. */ @@ -503,7 +528,7 @@ gc (struct database_dyn *db) void * -mempool_alloc (struct database_dyn *db, size_t len) +mempool_alloc (struct database_dyn *db, size_t len, enum in_flight idx) { /* Make sure LEN is a multiple of our maximum alignment so we can keep track of used memory is multiples of this alignment value. */ @@ -567,6 +592,12 @@ mempool_alloc (struct database_dyn *db, db->head->first_free += len; db->last_alloc_failed = false; + + /* Remember that we have allocated this memory. */ + assert (idx >= 0 && idx < IDX_last); + mem_in_flight.block[idx].dbidx = db - dbs; + mem_in_flight.block[idx].blocklen = len; + mem_in_flight.block[idx].blockaddr = res; } pthread_mutex_unlock (&db->memlock); --- glibc-20080412T0741/nscd/nscd.conf 6 Nov 2007 00:50:48 -0000 1.16 +++ glibc-20080412T0741-fedora/nscd/nscd.conf 12 Dec 2007 18:13:28 -0000 1.8.2.7 @@ -33,7 +33,7 @@ # logfile /var/log/nscd.log # threads 4 # max-threads 32 -# server-user nobody + server-user nscd # stat-user somebody debug-level 0 # reload-count 5 --- glibc-20080412T0741/nscd/nscd.h 4 Mar 2008 01:53:25 -0000 1.33 +++ glibc-20080412T0741-fedora/nscd/nscd.h 30 Apr 2008 12:11:31 -0000 1.17.2.13 @@ -130,7 +130,7 @@ struct database_dyn /* Global variables. */ -extern struct database_dyn dbs[lastdb]; +extern struct database_dyn dbs[lastdb] attribute_hidden; extern const char *const dbnames[lastdb]; extern const char *const serv2str[LASTREQ]; @@ -181,6 +181,31 @@ extern uid_t old_uid; extern gid_t old_gid; +/* Memory allocation in flight. Each thread can have a limited number + of allocation in flight. No need to create dynamic data + structures. We use fixed indices. */ +enum in_flight + { + IDX_result_data = 0, + /* Keep the IDX_record_data entry last at all times. */ + IDX_record_data = 1, + IDX_last + }; +extern __thread struct mem_in_flight +{ + struct + { + int dbidx; + nscd_ssize_t blocklen; + void *blockaddr; + } block[IDX_last]; + + struct mem_in_flight *next; +} mem_in_flight attribute_tls_model_ie; +/* Global list of the mem_in_flight variables of all the threads. */ +extern struct mem_in_flight *mem_in_flight_list; + + /* Prototypes for global functions. */ /* nscd.c */ @@ -271,7 +296,8 @@ extern void readdservbyport (struct data struct datahead *dh); /* mem.c */ -extern void *mempool_alloc (struct database_dyn *db, size_t len); +extern void *mempool_alloc (struct database_dyn *db, size_t len, + enum in_flight idx); extern void gc (struct database_dyn *db); --- glibc-20080412T0741/nscd/nscd.init 1 Dec 2006 20:12:45 -0000 1.10 +++ glibc-20080412T0741-fedora/nscd/nscd.init 12 Dec 2007 18:13:28 -0000 1.6.2.6 @@ -9,6 +9,7 @@ # slow naming services like NIS, NIS+, LDAP, or hesiod. # processname: /usr/sbin/nscd # config: /etc/nscd.conf +# config: /etc/sysconfig/nscd # ### BEGIN INIT INFO # Provides: nscd @@ -28,20 +29,8 @@ # Source function library. . /etc/init.d/functions -# nscd does not run on any kernel lower than 2.2.0 because of threading -# problems, so we require that in first place. -case $(uname -r) in - 2.[2-9].*) - # this is okay - ;; - [3-9]*) - # these are of course also okay - ;; - *) - #this is not - exit 1 - ;; -esac +# Source an auxiliary options file if we have one, and pick up NSCD_OPTIONS. +[ -r /etc/sysconfig/nscd ] && . /etc/sysconfig/nscd RETVAL=0 prog=nscd @@ -50,7 +39,7 @@ start () { [ -d /var/run/nscd ] || mkdir /var/run/nscd [ -d /var/db/nscd ] || mkdir /var/db/nscd echo -n $"Starting $prog: " - daemon /usr/sbin/nscd + daemon /usr/sbin/nscd $NSCD_OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd @@ -104,9 +93,12 @@ case "$1" in ;; force-reload | reload) echo -n $"Reloading $prog: " - killproc /usr/sbin/nscd -HUP - RETVAL=$? - echo + RETVAL=0 + /usr/sbin/nscd -i passwd || RETVAL=$? + /usr/sbin/nscd -i group || RETVAL=$? + /usr/sbin/nscd -i hosts || RETVAL=$? + /usr/sbin/nscd -i services || RETVAL=$? + echo ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" --- glibc-20080412T0741/nscd/pwdcache.c 25 Nov 2007 21:27:50 -0000 1.48 +++ glibc-20080412T0741-fedora/nscd/pwdcache.c 30 Apr 2008 12:11:31 -0000 1.35.2.11 @@ -120,7 +120,8 @@ cache_addpw (struct database_dyn *db, in written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -199,7 +200,8 @@ cache_addpw (struct database_dyn *db, in if (he == NULL) { - dataset = (struct dataset *) mempool_alloc (db, total + n); + dataset = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -270,7 +272,8 @@ cache_addpw (struct database_dyn *db, in /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + n); + = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (newp != NULL) { /* Adjust pointer into the memory block. */ --- glibc-20080412T0741/nscd/servicescache.c 25 Nov 2007 21:26:37 -0000 1.5 +++ glibc-20080412T0741-fedora/nscd/servicescache.c 30 Apr 2008 12:11:31 -0000 1.1.2.6 @@ -103,7 +103,8 @@ cache_addserv (struct database_dyn *db, written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -190,7 +191,8 @@ cache_addserv (struct database_dyn *db, if (he == NULL) { dataset = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -261,7 +263,8 @@ cache_addserv (struct database_dyn *db, /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + req->key_len); + = (struct dataset *) mempool_alloc (db, total + req->key_len, + IDX_result_data); if (newp != NULL) { /* Adjust pointers into the memory block. */ --- glibc-20080412T0741/posix/Makefile 20 Nov 2007 00:41:16 -0000 1.203 +++ glibc-20080412T0741-fedora/posix/Makefile 12 Dec 2007 18:13:30 -0000 1.171.2.27 @@ -301,11 +301,8 @@ $(inst_libexecdir)/getconf: $(inst_bindi mv -f $@/$$spec.new $@/$$spec; \ done < $(objpfx)getconf.speclist -$(objpfx)getconf.speclist: $(objpfx)getconf -ifeq (no,$(cross-compiling)) - LC_ALL=C GETCONF_DIR=/dev/null \ - $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS > $@.new -else - > $@.new -endif +$(objpfx)getconf.speclist: getconf.speclist.h + $(CC) -E $(CFLAGS) $(CPPFLAGS) $< \ + | sed -n -e '/START_OF_STRINGS/,$${/POSIX_V6_/{s/^[^"]*"//;s/".*$$//;p}}' \ + > $@.new mv -f $@.new $@ --- glibc-20080412T0741/posix/getconf.speclist.h 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/posix/getconf.speclist.h 13 Dec 2004 23:32:37 -0000 1.1.2.2 @@ -0,0 +1,15 @@ +#include +const char *START_OF_STRINGS = +#if _POSIX_V6_ILP32_OFF32 == 1 +"POSIX_V6_ILP32_OFF32" +#endif +#if _POSIX_V6_ILP32_OFFBIG == 1 +"POSIX_V6_ILP32_OFFBIG" +#endif +#if _POSIX_V6_LP64_OFF64 == 1 +"POSIX_V6_LP64_OFF64" +#endif +#if _POSIX_V6_LPBIG_OFFBIG == 1 +"POSIX_V6_LPBIG_OFFBIG" +#endif +""; --- glibc-20080412T0741/streams/Makefile 23 Oct 2002 23:48:41 -0000 1.4 +++ glibc-20080412T0741-fedora/streams/Makefile 14 Mar 2008 22:36:46 -0000 1.4.2.1 @@ -21,7 +21,7 @@ # subdir := streams -headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h +#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach include ../Rules --- glibc-20080412T0741/sysdeps/generic/dl-cache.h 25 Jun 2003 08:01:22 -0000 1.13 +++ glibc-20080412T0741-fedora/sysdeps/generic/dl-cache.h 22 Sep 2004 21:21:07 -0000 1.13.2.1 @@ -36,6 +36,14 @@ # define add_system_dir(dir) add_dir (dir) #endif +#ifndef arch_startup +# define arch_startup(argc, argv) do { } while (0) +#endif + +#ifndef add_arch_dirs +# define add_arch_dirs(config_file) do { } while (0) +#endif + #define CACHEMAGIC "ld.so-1.7.0" /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another --- glibc-20080412T0741/sysdeps/i386/Makefile 6 Mar 2005 00:18:16 -0000 1.20 +++ glibc-20080412T0741-fedora/sysdeps/i386/Makefile 30 Jun 2006 09:16:34 -0000 1.16.2.4 @@ -64,4 +64,12 @@ endif ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) defines += -DNO_TLS_DIRECT_SEG_REFS +else +# .a libraries are not performance critical and so we +# build them without direct TLS segment references +# always. +CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS +CFLAGS-.o += -mno-tls-direct-seg-refs +CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS +CFLAGS-.oS += -mno-tls-direct-seg-refs endif --- glibc-20080412T0741/sysdeps/ia64/Makefile 16 Aug 2004 06:46:14 -0000 1.10 +++ glibc-20080412T0741-fedora/sysdeps/ia64/Makefile 22 Sep 2004 21:21:07 -0000 1.10.2.1 @@ -12,8 +12,8 @@ elide-routines.os += hp-timing ifeq (yes,$(build-shared)) # Compatibility -sysdep_routines += ia64libgcc -shared-only-routines += ia64libgcc +sysdep_routines += libgcc-compat +shared-only-routines += libgcc-compat endif endif --- glibc-20080412T0741/sysdeps/ia64/ia64libgcc.S 11 May 2002 05:12:35 -0000 1.2 +++ glibc-20080412T0741-fedora/sysdeps/ia64/ia64libgcc.S 22 Sep 2004 21:21:07 -0000 1.2.2.1 @@ -1,350 +0,0 @@ -/* From the Intel IA-64 Optimization Guide, choose the minimum latency - alternative. */ - -#include -#undef ret - -#include - -#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) - -/* __divtf3 - Compute a 80-bit IEEE double-extended quotient. - farg0 holds the dividend. farg1 holds the divisor. */ - -ENTRY(___divtf3) - cmp.eq p7, p0 = r0, r0 - frcpa.s0 f10, p6 = farg0, farg1 - ;; -(p6) cmp.ne p7, p0 = r0, r0 - .pred.rel.mutex p6, p7 -(p6) fnma.s1 f11 = farg1, f10, f1 -(p6) fma.s1 f12 = farg0, f10, f0 - ;; -(p6) fma.s1 f13 = f11, f11, f0 -(p6) fma.s1 f14 = f11, f11, f11 - ;; -(p6) fma.s1 f11 = f13, f13, f11 -(p6) fma.s1 f13 = f14, f10, f10 - ;; -(p6) fma.s1 f10 = f13, f11, f10 -(p6) fnma.s1 f11 = farg1, f12, farg0 - ;; -(p6) fma.s1 f11 = f11, f10, f12 -(p6) fnma.s1 f12 = farg1, f10, f1 - ;; -(p6) fma.s1 f10 = f12, f10, f10 -(p6) fnma.s1 f12 = farg1, f11, farg0 - ;; -(p6) fma.s0 fret0 = f12, f10, f11 -(p7) mov fret0 = f10 - br.ret.sptk rp -END(___divtf3) - .symver ___divtf3, __divtf3@GLIBC_2.2 - -/* __divdf3 - Compute a 64-bit IEEE double quotient. - farg0 holds the dividend. farg1 holds the divisor. */ - -ENTRY(___divdf3) - cmp.eq p7, p0 = r0, r0 - frcpa.s0 f10, p6 = farg0, farg1 - ;; -(p6) cmp.ne p7, p0 = r0, r0 - .pred.rel.mutex p6, p7 -(p6) fmpy.s1 f11 = farg0, f10 -(p6) fnma.s1 f12 = farg1, f10, f1 - ;; -(p6) fma.s1 f11 = f12, f11, f11 -(p6) fmpy.s1 f13 = f12, f12 - ;; -(p6) fma.s1 f10 = f12, f10, f10 -(p6) fma.s1 f11 = f13, f11, f11 - ;; -(p6) fmpy.s1 f12 = f13, f13 -(p6) fma.s1 f10 = f13, f10, f10 - ;; -(p6) fma.d.s1 f11 = f12, f11, f11 -(p6) fma.s1 f10 = f12, f10, f10 - ;; -(p6) fnma.d.s1 f8 = farg1, f11, farg0 - ;; -(p6) fma.d fret0 = f8, f10, f11 -(p7) mov fret0 = f10 - br.ret.sptk rp - ;; -END(___divdf3) - .symver ___divdf3, __divdf3@GLIBC_2.2 - -/* __divsf3 - Compute a 32-bit IEEE float quotient. - farg0 holds the dividend. farg1 holds the divisor. */ - -ENTRY(___divsf3) - cmp.eq p7, p0 = r0, r0 - frcpa.s0 f10, p6 = farg0, farg1 - ;; -(p6) cmp.ne p7, p0 = r0, r0 - .pred.rel.mutex p6, p7 -(p6) fmpy.s1 f8 = farg0, f10 -(p6) fnma.s1 f9 = farg1, f10, f1 - ;; -(p6) fma.s1 f8 = f9, f8, f8 -(p6) fmpy.s1 f9 = f9, f9 - ;; -(p6) fma.s1 f8 = f9, f8, f8 -(p6) fmpy.s1 f9 = f9, f9 - ;; -(p6) fma.d.s1 f10 = f9, f8, f8 - ;; -(p6) fnorm.s.s0 fret0 = f10 -(p7) mov fret0 = f10 - br.ret.sptk rp - ;; -END(___divsf3) - .symver ___divsf3, __divsf3@GLIBC_2.2 - -/* __divdi3 - Compute a 64-bit integer quotient. - in0 holds the dividend. in1 holds the divisor. */ - -ENTRY(___divdi3) - .regstk 2,0,0,0 - /* Transfer inputs to FP registers. */ - setf.sig f8 = in0 - setf.sig f9 = in1 - ;; - /* Convert the inputs to FP, so that they won't be treated as - unsigned. */ - fcvt.xf f8 = f8 - fcvt.xf f9 = f9 - ;; - /* Compute the reciprocal approximation. */ - frcpa.s1 f10, p6 = f8, f9 - ;; - /* 3 Newton-Raphson iterations. */ -(p6) fnma.s1 f11 = f9, f10, f1 -(p6) fmpy.s1 f12 = f8, f10 - ;; -(p6) fmpy.s1 f13 = f11, f11 -(p6) fma.s1 f12 = f11, f12, f12 - ;; -(p6) fma.s1 f10 = f11, f10, f10 -(p6) fma.s1 f11 = f13, f12, f12 - ;; -(p6) fma.s1 f10 = f13, f10, f10 -(p6) fnma.s1 f12 = f9, f11, f8 - ;; -(p6) fma.s1 f10 = f12, f10, f11 - ;; - /* Round quotient to an integer. */ - fcvt.fx.trunc.s1 f10 = f10 - ;; - /* Transfer result to GP registers. */ - getf.sig ret0 = f10 - br.ret.sptk rp - ;; -END(___divdi3) - .symver ___divdi3, __divdi3@GLIBC_2.2 - -/* __moddi3 - Compute a 64-bit integer modulus. - in0 holds the dividend (a). in1 holds the divisor (b). */ - -ENTRY(___moddi3) - .regstk 2,0,0,0 - /* Transfer inputs to FP registers. */ - setf.sig f14 = in0 - setf.sig f9 = in1 - ;; - /* Convert the inputs to FP, so that they won't be treated as - unsigned. */ - fcvt.xf f8 = f14 - fcvt.xf f9 = f9 - ;; - /* Compute the reciprocal approximation. */ - frcpa.s1 f10, p6 = f8, f9 - ;; - /* 3 Newton-Raphson iterations. */ -(p6) fmpy.s1 f12 = f8, f10 -(p6) fnma.s1 f11 = f9, f10, f1 - ;; -(p6) fma.s1 f12 = f11, f12, f12 -(p6) fmpy.s1 f13 = f11, f11 - ;; -(p6) fma.s1 f10 = f11, f10, f10 -(p6) fma.s1 f11 = f13, f12, f12 - ;; - sub in1 = r0, in1 -(p6) fma.s1 f10 = f13, f10, f10 -(p6) fnma.s1 f12 = f9, f11, f8 - ;; - setf.sig f9 = in1 -(p6) fma.s1 f10 = f12, f10, f11 - ;; - fcvt.fx.trunc.s1 f10 = f10 - ;; - /* r = q * (-b) + a */ - xma.l f10 = f10, f9, f14 - ;; - /* Transfer result to GP registers. */ - getf.sig ret0 = f10 - br.ret.sptk rp - ;; -END(___moddi3) - .symver ___moddi3, __moddi3@GLIBC_2.2 - -/* __udivdi3 - Compute a 64-bit unsigned integer quotient. - in0 holds the dividend. in1 holds the divisor. */ - -ENTRY(___udivdi3) - .regstk 2,0,0,0 - /* Transfer inputs to FP registers. */ - setf.sig f8 = in0 - setf.sig f9 = in1 - ;; - /* Convert the inputs to FP, to avoid FP software-assist faults. */ - fcvt.xuf.s1 f8 = f8 - fcvt.xuf.s1 f9 = f9 - ;; - /* Compute the reciprocal approximation. */ - frcpa.s1 f10, p6 = f8, f9 - ;; - /* 3 Newton-Raphson iterations. */ -(p6) fnma.s1 f11 = f9, f10, f1 -(p6) fmpy.s1 f12 = f8, f10 - ;; -(p6) fmpy.s1 f13 = f11, f11 -(p6) fma.s1 f12 = f11, f12, f12 - ;; -(p6) fma.s1 f10 = f11, f10, f10 -(p6) fma.s1 f11 = f13, f12, f12 - ;; -(p6) fma.s1 f10 = f13, f10, f10 -(p6) fnma.s1 f12 = f9, f11, f8 - ;; -(p6) fma.s1 f10 = f12, f10, f11 - ;; - /* Round quotient to an unsigned integer. */ - fcvt.fxu.trunc.s1 f10 = f10 - ;; - /* Transfer result to GP registers. */ - getf.sig ret0 = f10 - br.ret.sptk rp - ;; -END(___udivdi3) - .symver ___udivdi3, __udivdi3@GLIBC_2.2 - -/* __umoddi3 - Compute a 64-bit unsigned integer modulus. - in0 holds the dividend (a). in1 holds the divisor (b). */ - -ENTRY(___umoddi3) - .regstk 2,0,0,0 - /* Transfer inputs to FP registers. */ - setf.sig f14 = in0 - setf.sig f9 = in1 - ;; - /* Convert the inputs to FP, to avoid FP software assist faults. */ - fcvt.xuf.s1 f8 = f14 - fcvt.xuf.s1 f9 = f9 - ;; - /* Compute the reciprocal approximation. */ - frcpa.s1 f10, p6 = f8, f9 - ;; - /* 3 Newton-Raphson iterations. */ -(p6) fmpy.s1 f12 = f8, f10 -(p6) fnma.s1 f11 = f9, f10, f1 - ;; -(p6) fma.s1 f12 = f11, f12, f12 -(p6) fmpy.s1 f13 = f11, f11 - ;; -(p6) fma.s1 f10 = f11, f10, f10 -(p6) fma.s1 f11 = f13, f12, f12 - ;; - sub in1 = r0, in1 -(p6) fma.s1 f10 = f13, f10, f10 -(p6) fnma.s1 f12 = f9, f11, f8 - ;; - setf.sig f9 = in1 -(p6) fma.s1 f10 = f12, f10, f11 - ;; - /* Round quotient to an unsigned integer. */ - fcvt.fxu.trunc.s1 f10 = f10 - ;; - /* r = q * (-b) + a */ - xma.l f10 = f10, f9, f14 - ;; - /* Transfer result to GP registers. */ - getf.sig ret0 = f10 - br.ret.sptk rp - ;; -END(___umoddi3) - .symver ___umoddi3, __umoddi3@GLIBC_2.2 - -/* __multi3 - Compute a 128-bit multiply of 128-bit multiplicands. - in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */ - -ENTRY(___multi3) - .regstk 4,0,0,0 - setf.sig f6 = in1 - movl r19 = 0xffffffff - setf.sig f7 = in2 - ;; - and r14 = r19, in0 - ;; - setf.sig f10 = r14 - and r14 = r19, in2 - xmpy.l f9 = f6, f7 - ;; - setf.sig f6 = r14 - shr.u r14 = in0, 32 - ;; - setf.sig f7 = r14 - shr.u r14 = in2, 32 - ;; - setf.sig f8 = r14 - xmpy.l f11 = f10, f6 - xmpy.l f6 = f7, f6 - ;; - getf.sig r16 = f11 - xmpy.l f7 = f7, f8 - ;; - shr.u r14 = r16, 32 - and r16 = r19, r16 - getf.sig r17 = f6 - setf.sig f6 = in0 - ;; - setf.sig f11 = r14 - getf.sig r21 = f7 - setf.sig f7 = in3 - ;; - xma.l f11 = f10, f8, f11 - xma.l f6 = f6, f7, f9 - ;; - getf.sig r18 = f11 - ;; - add r18 = r18, r17 - ;; - and r15 = r19, r18 - cmp.ltu p7, p6 = r18, r17 - ;; - getf.sig r22 = f6 -(p7) adds r14 = 1, r19 - ;; -(p7) add r21 = r21, r14 - shr.u r14 = r18, 32 - shl r15 = r15, 32 - ;; - add r20 = r21, r14 - ;; - add ret0 = r15, r16 - add ret1 = r22, r20 - br.ret.sptk rp - ;; -END(___multi3) - .symver ___multi3, __multi3@GLIBC_2.2 - -#endif --- glibc-20080412T0741/sysdeps/ia64/libgcc-compat.c 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/sysdeps/ia64/libgcc-compat.c 22 Sep 2004 21:21:08 -0000 1.1.2.1 @@ -0,0 +1,84 @@ +/* pre-.hidden libgcc compatibility + Copyright (C) 2002 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + + +#include +#include + +#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) + +typedef int int128_t __attribute__((__mode__(TI))); + +extern long double __divtf3 (long double, long double) attribute_hidden; +long double INTUSE (__divtf3) (long double x, long double y) +{ + return __divtf3 (x, y); +} +symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); + +extern double __divdf3 (double, double) attribute_hidden; +double INTUSE (__divdf3) (double x, double y) +{ + return __divdf3 (x, y); +} +symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); + +extern float __divsf3 (float, float) attribute_hidden; +float INTUSE (__divsf3) (float x, float y) +{ + return __divsf3 (x, y); +} +symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); + +extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; +int64_t INTUSE (__divdi3) (int64_t x, int64_t y) +{ + return __divdi3 (x, y); +} +symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); + +extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; +int64_t INTUSE (__moddi3) (int64_t x, int64_t y) +{ + return __moddi3 (x, y); +} +symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); + +extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; +uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) +{ + return __udivdi3 (x, y); +} +symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); + +extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; +uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) +{ + return __umoddi3 (x, y); +} +symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); + +extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; +int128_t INTUSE (__multi3) (int128_t x, int128_t y) +{ + return __multi3 (x, y); +} +symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); + +#endif --- glibc-20080412T0741/sysdeps/powerpc/powerpc64/Makefile 2 Feb 2006 08:23:44 -0000 1.8 +++ glibc-20080412T0741-fedora/sysdeps/powerpc/powerpc64/Makefile 30 Nov 2006 17:07:38 -0000 1.4.2.5 @@ -30,6 +30,7 @@ ifneq ($(elf),no) # we use -fpic instead which is much better. CFLAGS-initfini.s += -fpic -O1 endif +CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables endif ifeq ($(subdir),elf) --- glibc-20080412T0741/sysdeps/unix/nice.c 15 Aug 2006 05:24:45 -0000 1.7 +++ glibc-20080412T0741-fedora/sysdeps/unix/nice.c 15 Aug 2006 05:53:50 -0000 1.6.2.2 @@ -42,7 +42,12 @@ nice (int incr) __set_errno (save); } - result = setpriority (PRIO_PROCESS, 0, prio + incr); + prio += incr; + if (prio < PRIO_MIN) + prio = PRIO_MIN; + else if (prio >= PRIO_MAX) + prio = PRIO_MAX - 1; + result = setpriority (PRIO_PROCESS, 0, prio); if (result == -1) { if (errno == EACCES) --- glibc-20080412T0741/sysdeps/unix/sysv/linux/check_pf.c 3 Jan 2008 00:24:52 -0000 1.15 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/check_pf.c 3 Jan 2008 20:20:42 -0000 1.3.2.11 @@ -27,13 +27,10 @@ #include #include -#include -#include -#include - #include #include +#include "netlinkaccess.h" #ifndef IFA_F_HOMEADDRESS # define IFA_F_HOMEADDRESS 0 --- glibc-20080412T0741/sysdeps/unix/sysv/linux/dl-osinfo.h 8 Mar 2008 07:33:46 -0000 1.27 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/dl-osinfo.h 14 Mar 2008 17:22:27 -0000 1.14.2.13 @@ -17,9 +17,12 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include #include #include #include +#include +#include #ifndef MIN # define MIN(a,b) (((a)<(b))?(a):(b)) @@ -76,5 +79,31 @@ _dl_setup_stack_chk_guard (void) unsigned char *p = (unsigned char *) &ret; p[sizeof (ret) - 1] = 255; p[sizeof (ret) - 2] = '\n'; +#ifdef HP_TIMING_NOW + hp_timing_t hpt; + HP_TIMING_NOW (hpt); + hpt = (hpt & 0xffff) << 8; + ret ^= hpt; +#endif + uintptr_t stk; + /* Avoid GCC being too smart. */ + asm ("" : "=r" (stk) : "r" (p)); + stk &= 0x7ffff0; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stk <<= (__WORDSIZE - 23); +#elif __WORDSIZE == 64 + stk <<= 31; +#endif + ret ^= stk; + /* Avoid GCC being too smart. */ + p = (unsigned char *) &errno; + asm ("" : "=r" (stk) : "r" (p)); + stk &= 0x7fff00; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stk <<= (__WORDSIZE - 29); +#else + stk >>= 8; +#endif + ret ^= stk; return ret; } --- glibc-20080412T0741/sysdeps/unix/sysv/linux/futimesat.c 3 Feb 2006 05:26:34 -0000 1.6 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/futimesat.c 3 Feb 2006 09:43:55 -0000 1.1.2.7 @@ -37,14 +37,14 @@ futimesat (fd, file, tvp) { int result; + if (file == NULL) + return __futimes (fd, tvp); + #ifdef __NR_futimesat # ifndef __ASSUME_ATFCTS if (__have_atfcts >= 0) # endif { - if (file == NULL) - return __futimes (fd, tvp); - result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); # ifndef __ASSUME_ATFCTS if (result == -1 && errno == ENOSYS) @@ -58,22 +58,7 @@ futimesat (fd, file, tvp) #ifndef __ASSUME_ATFCTS char *buf = NULL; - if (file == NULL) - { - static const char procfd[] = "/proc/self/fd/%d"; - /* Buffer for the path name we are going to use. It consists of - - the string /proc/self/fd/ - - the file descriptor number. - The final NUL is included in the sizeof. A bit of overhead - due to the format elements compensates for possible negative - numbers. */ - size_t buflen = sizeof (procfd) + sizeof (int) * 3; - buf = alloca (buflen); - - __snprintf (buf, buflen, procfd, fd); - file = buf; - } - else if (fd != AT_FDCWD && file[0] != '/') + if (fd != AT_FDCWD && file[0] != '/') { size_t filelen = strlen (file); static const char procfd[] = "/proc/self/fd/%d/%s"; --- glibc-20080412T0741/sysdeps/unix/sysv/linux/netlinkaccess.h 8 Jan 2006 08:21:15 -0000 1.3 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/netlinkaccess.h 10 Dec 2006 10:51:12 -0000 1.1.2.3 @@ -25,6 +25,24 @@ #include +#ifndef IFA_MAX +/* 2.6.19 kernel headers helpfully removed some macros and + moved lots of stuff into new headers, some of which aren't + included by linux/rtnetlink.h. */ +#include +#endif + +#ifndef IFA_RTA +# define IFA_RTA(r) \ + ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifaddrmsg)))) +# define IFA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifaddrmsg)) +#endif + +#ifndef IFLA_RTA +# define IFLA_RTA(r) \ + ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifinfomsg)))) +# define IFLA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifinfomsg)) +#endif struct netlink_res { --- glibc-20080412T0741/sysdeps/unix/sysv/linux/paths.h 15 Nov 2000 23:06:47 -0000 1.11 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/paths.h 22 Sep 2004 21:21:08 -0000 1.11.4.1 @@ -61,7 +61,7 @@ #define _PATH_TTY "/dev/tty" #define _PATH_UNIX "/boot/vmlinux" #define _PATH_UTMP "/var/run/utmp" -#define _PATH_VI "/usr/bin/vi" +#define _PATH_VI "/bin/vi" #define _PATH_WTMP "/var/log/wtmp" /* Provide trailing slash, since mostly used for building pathnames. */ --- glibc-20080412T0741/sysdeps/unix/sysv/linux/tcsetattr.c 10 Sep 2003 19:16:07 -0000 1.16 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/tcsetattr.c 22 Sep 2004 21:21:08 -0000 1.16.2.1 @@ -49,6 +49,7 @@ tcsetattr (fd, optional_actions, termios { struct __kernel_termios k_termios; unsigned long int cmd; + int retval; switch (optional_actions) { @@ -80,6 +81,35 @@ tcsetattr (fd, optional_actions, termios memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], __KERNEL_NCCS * sizeof (cc_t)); - return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); + retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); + + if (retval == 0 && cmd == TCSETS) + { + /* The Linux kernel has a bug which silently ignore the invalid + c_cflag on pty. We have to check it here. */ + int save = errno; + retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); + if (retval) + { + /* We cannot verify if the setting is ok. We don't return + an error (?). */ + __set_errno (save); + retval = 0; + } + else if ((termios_p->c_cflag & (PARENB | CREAD)) + != (k_termios.c_cflag & (PARENB | CREAD)) + || ((termios_p->c_cflag & CSIZE) + && ((termios_p->c_cflag & CSIZE) + != (k_termios.c_cflag & CSIZE)))) + { + /* It looks like the Linux kernel silently changed the + PARENB/CREAD/CSIZE bits in c_cflag. Report it as an + error. */ + __set_errno (EINVAL); + retval = -1; + } + } + + return retval; } libc_hidden_def (tcsetattr) --- glibc-20080412T0741/sysdeps/unix/sysv/linux/i386/clone.S 3 Dec 2006 23:12:36 -0000 1.27 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/i386/clone.S 14 Dec 2006 09:06:34 -0000 1.22.2.6 @@ -120,9 +120,6 @@ L(pseudo_end): ret L(thread_start): - cfi_startproc; - /* Clearing frame pointer is insufficient, use CFI. */ - cfi_undefined (eip); /* Note: %esi is zero. */ movl %esi,%ebp /* terminate the stack frame */ #ifdef RESET_PID @@ -155,7 +152,6 @@ L(nomoregetpid): jmp L(haspid) .previous #endif - cfi_endproc; cfi_startproc PSEUDO_END (BP_SYM (__clone)) --- glibc-20080412T0741/sysdeps/unix/sysv/linux/i386/dl-cache.h 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/i386/dl-cache.h 22 Sep 2004 21:21:08 -0000 1.1.2.1 @@ -0,0 +1,59 @@ +/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. + Copyright (C) 2004 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +static inline int +is_ia64 (void) +{ + unsigned int fl1, fl2; + + /* See if we can use cpuid. */ + __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" + "pushl %0; popfl; pushfl; popl %0; popfl" + : "=&r" (fl1), "=&r" (fl2) + : "i" (0x00200000)); + if (((fl1 ^ fl2) & 0x00200000) == 0) + return 0; + + /* Host supports cpuid. See if cpuid gives capabilities, try + CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we + don't need their CPUID values here, and %ebx may be the PIC + register. */ + __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" + : "=a" (fl1) : "0" (0) : "edx", "cc"); + if (fl1 == 0) + return 0; + + /* Invoke CPUID(1), return %edx; caller can examine bits to + determine what's supported. */ + __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" + : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); + return (fl2 & (1 << 30)) != 0; +} + +#define arch_startup(argc, argv) \ + do { \ + /* On IA-64, try to execute 64-bit ldconfig if possible. \ + This is because the badly designed /emul/ia32-linux hack \ + will cause 32-bit ldconfig to do all sorts of weird things. */ \ + if (is_ia64 ()) \ + execv ("/emul/ia32-linux/../../sbin/ldconfig", \ + (char *const *) argv); \ + } while (0) + +#include_next --- glibc-20080412T0741/sysdeps/unix/sysv/linux/ia64/dl-cache.h 6 Jul 2001 04:56:17 -0000 1.2 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/ia64/dl-cache.h 22 Sep 2004 21:21:09 -0000 1.2.4.1 @@ -22,4 +22,31 @@ #define _dl_cache_check_flags(flags) \ ((flags) == _DL_CACHE_DEFAULT_ID) +#define EMUL_HACK "/emul/ia32-linux" + +#define arch_startup(argc, argv) unlink (EMUL_HACK LD_SO_CACHE) + +#define add_arch_dirs(config_file) \ + do { \ + int save_verbose = opt_verbose; \ + opt_verbose = 0; \ + \ + parse_conf (config_file, EMUL_HACK, true); \ + \ + /* Always add the standard search paths. */ \ + add_system_dir (EMUL_HACK SLIBDIR); \ + if (strcmp (SLIBDIR, LIBDIR)) \ + add_system_dir (EMUL_HACK LIBDIR); \ + \ + char emul_config_file[strlen (config_file) \ + + sizeof EMUL_HACK]; \ + strcpy (mempcpy (emul_config_file, EMUL_HACK, \ + strlen (EMUL_HACK)), config_file); \ + \ + if (! access (emul_config_file, R_OK)) \ + parse_conf (emul_config_file, EMUL_HACK, true); \ + \ + opt_verbose = save_verbose; \ + } while (0) + #include_next --- glibc-20080412T0741/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 22 Sep 2004 21:21:09 -0000 1.1.2.1 @@ -0,0 +1,5 @@ +#ifdef IS_IN_ldconfig +#include +#else +#include +#endif --- glibc-20080412T0741/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 1 Jan 1970 00:00:00 -0000 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 22 Sep 2004 21:21:09 -0000 1.1.2.1 @@ -0,0 +1,5 @@ +#ifdef IS_IN_ldconfig +#include +#else +#include +#endif --- glibc-20080412T0741/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed 17 Jan 2002 06:49:28 -0000 1.2 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed 22 Sep 2004 21:21:09 -0000 1.2.2.1 @@ -1 +1 @@ -s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 \2\3"_ +s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 /emul/ia32-linux\2\3"_ --- glibc-20080412T0741/sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c 6 Jul 2001 04:56:21 -0000 1.4 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c 30 Apr 2008 12:11:31 -0000 1.4.4.1 @@ -54,5 +54,5 @@ semctl (int semid, int semnum, int cmd, va_end (ap); return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, - CHECK_SEMCTL (&arg, semid, cmd)); + CHECK_SEMCTL (&arg, semid, cmd)->array); } --- glibc-20080412T0741/sysdeps/unix/sysv/linux/x86_64/clone.S 3 Dec 2006 23:12:36 -0000 1.7 +++ glibc-20080412T0741-fedora/sysdeps/unix/sysv/linux/x86_64/clone.S 14 Dec 2006 09:06:34 -0000 1.4.2.4 @@ -89,9 +89,6 @@ L(pseudo_end): ret L(thread_start): - cfi_startproc; - /* Clearing frame pointer is insufficient, use CFI. */ - cfi_undefined (rip); /* Clear the frame pointer. The ABI suggests this be done, to mark the outermost frame obviously. */ xorl %ebp, %ebp @@ -116,7 +113,6 @@ L(thread_start): /* Call exit with return value from function call. */ movq %rax, %rdi call HIDDEN_JUMPTARGET (_exit) - cfi_endproc; cfi_startproc; PSEUDO_END (BP_SYM (__clone)) --- libc/math/s_clog10l.c.jj 2005-12-14 11:20:38.000000000 +0100 +++ libc/math/s_clog10l.c 2008-05-05 10:11:11.000000000 +0200 @@ -34,7 +34,15 @@ __clog10l (__complex__ long double x) if (rcls == FP_ZERO && icls == FP_ZERO) { /* Real and imaginary part are 0.0. */ +#ifdef __powerpc64__ + long double t = 0.0; + asm ("" : "+f" (t)); + if (signbit (__real__ x)) + t = M_PIl; + __imag__ result = t; +#else __imag__ result = signbit (__real__ x) ? M_PIl : 0.0; +#endif __imag__ result = __copysignl (__imag__ result, __imag__ x); /* Yes, the following line raises an exception. */ __real__ result = -1.0 / fabsl (__real__ x); --- libc/math/s_catanhl.c.jj 2005-12-14 11:16:38.000000000 +0100 +++ libc/math/s_catanhl.c 2008-05-05 10:22:57.000000000 +0200 @@ -35,14 +35,29 @@ __catanhl (__complex__ long double x) { if (icls == FP_INFINITE) { +#ifdef __powerpc64__ + long double t = M_PI_2l; + asm ("" : "+f" (t)); + __real__ res = __copysignl (0.0, __real__ x); + __imag__ res = __copysignl (t, __imag__ x); +#else __real__ res = __copysignl (0.0, __real__ x); __imag__ res = __copysignl (M_PI_2l, __imag__ x); +#endif } else if (rcls == FP_INFINITE || rcls == FP_ZERO) { __real__ res = __copysignl (0.0, __real__ x); if (icls >= FP_ZERO) +#ifdef __powerpc64__ + { + long double t = M_PI_2l; + asm ("" : "+f" (t)); + __imag__ res = __copysignl (t, __imag__ x); + } +#else __imag__ res = __copysignl (M_PI_2l, __imag__ x); +#endif else __imag__ res = __nanl (""); } --- libc/math/s_cacoshl.c.jj 2006-08-03 22:35:41.000000000 +0200 +++ libc/math/s_cacoshl.c 2008-05-05 10:08:57.000000000 +0200 @@ -48,8 +48,18 @@ __cacoshl (__complex__ long double x) __real__ res = HUGE_VALL; if (icls >= FP_ZERO) +#ifdef __powerpc64__ + { + long double t = 0.0; + asm ("" : "+f" (t)); + if (signbit (__real__ x)) + t = M_PIl; + __imag__ res = __copysignl (t, __imag__ x); + } +#else __imag__ res = __copysignl (signbit (__real__ x) ? M_PIl : 0.0, __imag__ x); +#endif else __imag__ res = __nanl (""); } --- libc/math/s_clogl.c.jj 2005-12-14 11:21:13.000000000 +0100 +++ libc/math/s_clogl.c 2008-05-05 09:56:42.000000000 +0200 @@ -34,7 +34,15 @@ __clogl (__complex__ long double x) if (rcls == FP_ZERO && icls == FP_ZERO) { /* Real and imaginary part are 0.0. */ +#ifdef __powerpc64__ + long double t = 0.0; + asm ("" : "+f" (t)); + if (signbit (__real__ x)) + t = M_PIl; + __imag__ result = t; +#else __imag__ result = signbit (__real__ x) ? M_PIl : 0.0; +#endif __imag__ result = __copysignl (__imag__ result, __imag__ x); /* Yes, the following line raises an exception. */ __real__ result = -1.0 / fabsl (__real__ x); --- libc/fedora/glibc_post_upgrade.c.jj 2008-04-10 21:21:05.000000000 +0200 +++ libc/fedora/glibc_post_upgrade.c 2008-05-05 10:39:24.000000000 +0200 @@ -170,8 +170,8 @@ main (void) /* Check if telinit is available and either SysVInit fifo, or upstart telinit. */ if (access ("/sbin/telinit", X_OK) - || (access ("/dev/initctl", F_OK) - && access ("/sbin/initctl", X_OK))) + || ((!!access ("/dev/initctl", F_OK)) + ^ !access ("/sbin/initctl", X_OK))) _exit (0); /* Check if we are not inside of some chroot, because we'd just timeout and leave /etc/initrunlvl. */