diff -durpN glibc-2.3.3/aclocal.m4 glibc-2.3.4/aclocal.m4 --- glibc-2.3.3/aclocal.m4 2002-11-13 22:59:36.000000000 -0500 +++ glibc-2.3.4/aclocal.m4 2004-07-02 02:45:13.000000000 -0400 @@ -4,6 +4,7 @@ dnl Each sysdep configure.in does GLIBC_ dnl AC_REQUIREs or AC_BEFOREs duplicating their code. dnl define([GLIBC_PROVIDES], [dnl +AC_PROVIDE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_PROVIDE([_AS_ECHO_N_PREPARE])dnl AC_PROVIDE([_AS_CR_PREPARE])dnl AC_PROVIDE([_AS_TR_SH_PREPARE])dnl diff -durpN glibc-2.3.3/argp/argp-fs-xinl.c glibc-2.3.4/argp/argp-fs-xinl.c --- glibc-2.3.3/argp/argp-fs-xinl.c 2003-01-08 01:32:39.000000000 -0500 +++ glibc-2.3.4/argp/argp-fs-xinl.c 2004-10-18 00:17:18.000000000 -0400 @@ -1,5 +1,5 @@ /* Real definitions for extern inline functions in argp-fmtstream.h - Copyright (C) 1997, 2003 Free Software Foundation, Inc. + Copyright (C) 1997, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader . @@ -24,7 +24,7 @@ #define ARGP_FS_EI #undef __OPTIMIZE__ -#define __OPTIMIZE__ +#define __OPTIMIZE__ 1 #include "argp-fmtstream.h" #if 0 diff -durpN glibc-2.3.3/argp/argp.h glibc-2.3.4/argp/argp.h --- glibc-2.3.3/argp/argp.h 2003-11-29 02:19:31.000000000 -0500 +++ glibc-2.3.4/argp/argp.h 2004-09-07 18:23:45.000000000 -0400 @@ -1,5 +1,5 @@ /* Hierarchial argument parsing, layered over getopt. - Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc. + Copyright (C) 1995-1999,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader . @@ -35,6 +35,9 @@ #ifndef __THROW # define __THROW #endif +#ifndef __NTH +# define __NTH(fct) fct __THROW +#endif #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ @@ -558,13 +561,13 @@ extern void *__argp_input (__const struc # endif ARGP_EI void -__argp_usage (__const struct argp_state *__state) __THROW +__NTH (__argp_usage (__const struct argp_state *__state)) { __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); } ARGP_EI int -__option_is_short (__const struct argp_option *__opt) __THROW +__NTH (__option_is_short (__const struct argp_option *__opt)) { if (__opt->flags & OPTION_DOC) return 0; @@ -576,7 +579,7 @@ __option_is_short (__const struct argp_o } ARGP_EI int -__option_is_end (__const struct argp_option *__opt) __THROW +__NTH (__option_is_end (__const struct argp_option *__opt)) { return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; } diff -durpN glibc-2.3.3/argp/argp-help.c glibc-2.3.4/argp/argp-help.c --- glibc-2.3.3/argp/argp-help.c 2003-11-29 02:19:16.000000000 -0500 +++ glibc-2.3.4/argp/argp-help.c 2004-06-01 18:15:24.000000000 -0400 @@ -1,5 +1,5 @@ /* Hierarchial argument parsing help output - Copyright (C) 1995-2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader . @@ -47,6 +47,7 @@ char *alloca (); #include #include #include +#include #ifdef USE_IN_LIBIO # include #endif @@ -452,8 +453,10 @@ make_hol (const struct argp *argp, struc hol->entries = malloc (sizeof (struct hol_entry) * hol->num_entries); hol->short_options = malloc (num_short_options + 1); - assert (hol->entries && hol->short_options - && hol->num_entries <= SIZE_MAX / sizeof (struct hol_entry)); + assert (hol->entries && hol->short_options); +#if SIZE_MAX <= UINT_MAX + assert (hol->num_entries <= SIZE_MAX / sizeof (struct hol_entry)); +#endif /* Fill in the entries. */ so = hol->short_options; @@ -846,8 +849,10 @@ hol_append (struct hol *hol, struct hol char *short_options = malloc (hol_so_len + strlen (more->short_options) + 1); - assert (entries && short_options - && num_entries <= SIZE_MAX / sizeof (struct hol_entry)); + assert (entries && short_options); +#if SIZE_MAX <= UINT_MAX + assert (num_entries <= SIZE_MAX / sizeof (struct hol_entry)); +#endif __mempcpy (__mempcpy (entries, hol->entries, hol->num_entries * sizeof (struct hol_entry)), @@ -1763,7 +1768,8 @@ __argp_error (const struct argp_state *s { char *buf; - __asprintf (&buf, fmt, ap); + if (__asprintf (&buf, fmt, ap) < 0) + buf = NULL; __fwprintf (stream, L"%s: %s\n", state ? state->name : __argp_short_program_name (), @@ -1841,7 +1847,8 @@ __argp_failure (const struct argp_state { char *buf; - __asprintf (&buf, fmt, ap); + if (__asprintf (&buf, fmt, ap) < 0) + buf = NULL; __fwprintf (stream, L": %s", buf); diff -durpN glibc-2.3.3/argp/argp-parse.c glibc-2.3.4/argp/argp-parse.c --- glibc-2.3.3/argp/argp-parse.c 2003-11-29 02:18:50.000000000 -0500 +++ glibc-2.3.4/argp/argp-parse.c 2004-03-09 05:28:13.000000000 -0500 @@ -1,5 +1,5 @@ /* Hierarchial argument parsing, layered over getopt - Copyright (C) 1995-2000, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2000, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader . @@ -42,6 +42,7 @@ char *alloca (); #include #include #include +#include #ifndef _ /* This is for other GNU distributions with internationalized messages. @@ -62,14 +63,6 @@ char *alloca (); # define N_(msgid) (msgid) #endif -#if _LIBC - 0 -#include -#else -#ifdef HAVE_CTHREADS_H -#include -#endif -#endif /* _LIBC */ - #include "argp.h" #include "argp-namefrob.h" @@ -97,14 +90,8 @@ char *alloca (); /* When argp is given the --HANG switch, _ARGP_HANG is set and argp will sleep for one second intervals, decrementing _ARGP_HANG until it's zero. Thus you can force the program to continue by attaching a debugger and setting - it to 0 yourself. - - XXX This variable used to be exported. But there seems to be no - need, at least not inside libc. */ -#ifdef _LIBC -static -#endif -volatile int _argp_hang; + it to 0 yourself. */ +static volatile int _argp_hang; #define OPT_PROGNAME -2 #define OPT_USAGE -3 @@ -223,42 +210,7 @@ find_long_option (struct option *long_op else return -1; } - -/* If we can, we regulate access to getopt, which is non-reentrant, with a - mutex. Since the case we're trying to guard against is two different - threads interfering, and it's possible that someone might want to call - argp_parse recursively (they're careful), we use a recursive lock if - possible. */ - -#if _LIBC - 0 - -__libc_lock_define_initialized_recursive (static, getopt_lock) -#define LOCK_GETOPT __libc_lock_lock_recursive (getopt_lock) -#define UNLOCK_GETOPT __libc_lock_unlock_recursive (getopt_lock) -#else /* !_LIBC */ -#ifdef HAVE_CTHREADS_H - -static struct mutex getopt_lock = MUTEX_INITIALIZER; -#define LOCK_GETOPT mutex_lock (&getopt_lock) -#define UNLOCK_GETOPT mutex_unlock (&getopt_lock) - -#else /* !HAVE_CTHREADS_H */ - -#define LOCK_GETOPT (void)0 -#define UNLOCK_GETOPT (void)0 - -#endif /* HAVE_CTHREADS_H */ -#endif /* _LIBC */ - -/* This hack to allow programs that know what's going on to call argp - recursively. If someday argp is changed not to use the non-reentrant - getopt interface, we can get rid of this shit. XXX */ -void -_argp_unlock_xxx (void) -{ - UNLOCK_GETOPT; -} /* The state of a `group' during parsing. Each group corresponds to a particular argp structure from the tree of such descending from the top @@ -320,6 +272,8 @@ struct parser /* LONG_OPTS is the array of getop long option structures for the union of all the groups of options. */ struct option *long_opts; + /* OPT_DATA is the getopt data used for the re-entrant getopt. */ + struct _getopt_data opt_data; /* States of the various parsing groups. */ struct group *groups; @@ -531,6 +485,7 @@ parser_init (struct parser *parser, cons error_t err = 0; struct group *group; struct parser_sizes szs; + struct _getopt_data opt_data = _GETOPT_DATA_INITIALIZER; szs.short_len = (flags & ARGP_NO_ARGS) ? 0 : 1; szs.long_len = 0; @@ -554,6 +509,7 @@ parser_init (struct parser *parser, cons parser->child_inputs = parser->storage + GLEN; parser->long_opts = parser->storage + GLEN + CLEN; parser->short_opts = parser->storage + GLEN + CLEN + LLEN; + parser->opt_data = opt_data; memset (parser->child_inputs, 0, szs.num_child_inputs * sizeof (void *)); parser_convert (parser, argp, flags); @@ -597,19 +553,16 @@ parser_init (struct parser *parser, cons if (err) return err; - /* Getopt is (currently) non-reentrant. */ - LOCK_GETOPT; - if (parser->state.flags & ARGP_NO_ERRS) { - opterr = 0; + parser->opt_data.opterr = 0; if (parser->state.flags & ARGP_PARSE_ARGV0) /* getopt always skips ARGV[0], so we have to fake it out. As long as OPTERR is 0, then it shouldn't actually try to access it. */ parser->state.argv--, parser->state.argc++; } else - opterr = 1; /* Print error messages. */ + parser->opt_data.opterr = 1; /* Print error messages. */ if (parser->state.argv == argv && argv[0]) /* There's an argv[0]; use it for messages. */ @@ -630,8 +583,6 @@ parser_finalize (struct parser *parser, { struct group *group; - UNLOCK_GETOPT; - if (err == EBADKEY && arg_ebadkey) /* Suppress errors generated by unparsed arguments. */ err = 0; @@ -793,7 +744,8 @@ parser_parse_opt (struct parser *parser, for (group = parser->groups; group < parser->egroup; group++) if (group->short_end > short_index) { - err = group_parse (group, &parser->state, opt, optarg); + err = group_parse (group, &parser->state, opt, + parser->opt_data.optarg); break; } } @@ -802,7 +754,8 @@ parser_parse_opt (struct parser *parser, the user value in order to preserve the sign. */ err = group_parse (&parser->groups[group_key - 1], &parser->state, - (opt << GROUP_BITS) >> GROUP_BITS, optarg); + (opt << GROUP_BITS) >> GROUP_BITS, + parser->opt_data.optarg); if (err == EBADKEY) /* At least currently, an option not recognized is an error in the @@ -848,15 +801,20 @@ parser_parse_next (struct parser *parser if (parser->try_getopt && !parser->state.quoted) /* Give getopt a chance to parse this. */ { - optind = parser->state.next; /* Put it back in OPTIND for getopt. */ - optopt = KEY_END; /* Distinguish KEY_ERR from a real option. */ + /* Put it back in OPTIND for getopt. */ + parser->opt_data.optind = parser->state.next; + /* Distinguish KEY_ERR from a real option. */ + parser->opt_data.optopt = KEY_END; if (parser->state.flags & ARGP_LONG_ONLY) - opt = getopt_long_only (parser->state.argc, parser->state.argv, - parser->short_opts, parser->long_opts, 0); + opt = _getopt_long_only_r (parser->state.argc, parser->state.argv, + parser->short_opts, parser->long_opts, 0, + &parser->opt_data); else - opt = getopt_long (parser->state.argc, parser->state.argv, - parser->short_opts, parser->long_opts, 0); - parser->state.next = optind; /* And see what getopt did. */ + opt = _getopt_long_r (parser->state.argc, parser->state.argv, + parser->short_opts, parser->long_opts, 0, + &parser->opt_data); + /* And see what getopt did. */ + parser->state.next = parser->opt_data.optind; if (opt == KEY_END) /* Getopt says there are no more options, so stop using @@ -872,7 +830,7 @@ parser_parse_next (struct parser *parser here, whatever happens. */ parser->state.quoted = parser->state.next; } - else if (opt == KEY_ERR && optopt != KEY_END) + else if (opt == KEY_ERR && parser->opt_data.optopt != KEY_END) /* KEY_ERR can have the same value as a valid user short option, but in the case of a real error, getopt sets OPTOPT to the offending character, which can never be KEY_END. */ @@ -898,15 +856,15 @@ parser_parse_next (struct parser *parser /* A non-option arg; simulate what getopt might have done. */ { opt = KEY_ARG; - optarg = parser->state.argv[parser->state.next++]; + parser->opt_data.optarg = parser->state.argv[parser->state.next++]; } } if (opt == KEY_ARG) /* A non-option argument; try each parser in turn. */ - err = parser_parse_arg (parser, optarg); + err = parser_parse_arg (parser, parser->opt_data.optarg); else - err = parser_parse_opt (parser, opt, optarg); + err = parser_parse_opt (parser, opt, parser->opt_data.optarg); if (err == EBADKEY) *arg_ebadkey = (opt == KEY_END || opt == KEY_ARG); diff -durpN glibc-2.3.3/argp/argp-xinl.c glibc-2.3.4/argp/argp-xinl.c --- glibc-2.3.3/argp/argp-xinl.c 2003-10-02 18:53:55.000000000 -0400 +++ glibc-2.3.4/argp/argp-xinl.c 2004-10-18 00:17:18.000000000 -0400 @@ -1,5 +1,5 @@ /* Real definitions for extern inline functions in argp.h - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader . @@ -31,7 +31,7 @@ #endif #define ARGP_EI #undef __OPTIMIZE__ -#define __OPTIMIZE__ +#define __OPTIMIZE__ 1 #include "argp.h" /* Add weak aliases. */ diff -durpN glibc-2.3.3/assert/assert.h glibc-2.3.4/assert/assert.h --- glibc-2.3.3/assert/assert.h 2003-08-15 13:54:31.000000000 -0400 +++ glibc-2.3.4/assert/assert.h 2004-10-04 03:45:23.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,1992,1994-2001,2003 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1994-2001,2003,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 @@ -84,33 +84,16 @@ extern void __assert (const char *__asse __END_DECLS -/* For the macro definition we use gcc's __builtin_expect if possible - to generate good code for the non-error case. gcc 3.0 is a good - enough estimate for when the feature became available. */ -# if __GNUC_PREREQ (3, 0) -# define assert(expr) \ - (__ASSERT_VOID_CAST (__builtin_expect (!!(expr), 1) ? 0 : \ - (__assert_fail (__STRING(expr), __FILE__, __LINE__, \ - __ASSERT_FUNCTION), 0))) -# else -# define assert(expr) \ +# define assert(expr) \ (__ASSERT_VOID_CAST ((expr) ? 0 : \ (__assert_fail (__STRING(expr), __FILE__, __LINE__, \ __ASSERT_FUNCTION), 0))) -# endif # ifdef __USE_GNU -# if __GNUC_PREREQ (3, 0) -# define assert_perror(errnum) \ - (__ASSERT_VOID_CAST (__builtin_expect (!(errnum), 1) ? 0 : \ - (__assert_perror_fail ((errnum), __FILE__, __LINE__, \ - __ASSERT_FUNCTION), 0))) -# else -# define assert_perror(errnum) \ +# define assert_perror(errnum) \ (__ASSERT_VOID_CAST (!(errnum) ? 0 : \ (__assert_perror_fail ((errnum), __FILE__, __LINE__, \ __ASSERT_FUNCTION), 0))) -# endif # endif /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__' diff -durpN glibc-2.3.3/CANCEL-FCT-WAIVE glibc-2.3.4/CANCEL-FCT-WAIVE --- glibc-2.3.3/CANCEL-FCT-WAIVE 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/CANCEL-FCT-WAIVE 2004-03-08 00:25:05.000000000 -0500 @@ -0,0 +1,495 @@ +_IO_default_finish +_IO_default_pbackfail +_IO_default_xsgetn +_IO_fgets +_IO_file_open +_IO_file_read +_IO_fprintf +_IO_free_backup_area +_IO_free_wbackup_area +_IO_ftell +_IO_getc +_IO_getline +_IO_getline_info +_IO_gets +_IO_peekc_locked +_IO_printf +_IO_seekoff +_IO_seekpos +_IO_sprintf +_IO_sscanf +_IO_str_pbackfail +_IO_unsave_markers +_IO_unsave_wmarkers +_IO_vfprintf +_IO_vfscanf +_IO_vsprintf +_IO_wdefault_finish +_IO_wdefault_pbackfail +_IO_wdefault_xsgetn +_IO_wfile_seekoff +_IO_wfile_underflow +__asprintf +__assert +__assert_fail +__assert_perror_fail +__backtrace_symbols +__backtrace_symbols_fd +__close +__connect +__dcgettext +__deregister_frame +__deregister_frame_info +__deregister_frame_info_bases +__dgettext +__endmntent +__fork +__fpurge +__freelocale +__getdelim +__getmntent_r +__gmtime_r +__internal_endnetgrent +__internal_getnetgrent_r +__libc_accept +__libc_close +__libc_connect +__libc_fork +__libc_free +__libc_freeres +__libc_fsync +__libc_memalign +__libc_msgrcv +__libc_msgsnd +__libc_msync +__libc_nanosleep +__libc_open +__libc_pause +__libc_pread +__libc_pwrite +__libc_read +__libc_readv +__libc_realloc +__libc_recv +__libc_recvfrom +__libc_recvmsg +__libc_send +__libc_sendmsg +__libc_sendto +__libc_start_main +__libc_system +__libc_tcdrain +__libc_valloc +__libc_wait +__libc_waitpid +__libc_write +__libc_writev +__mbrlen +__mbrtowc +__nanosleep +__newlocale +__nss_group_lookup +__nss_hostname_digits_dots +__nss_hosts_lookup +__nss_lookup_function +__nss_next +__nss_passwd_lookup +__open +__open_catalog +__poll +__printf_fp +__pselect +__read +__res_init +__res_ninit +__select +__send +__setmntent +__sigsuspend +__sigtimedwait +__sigwait +__sigwaitinfo +__strcoll_l +__strerror_r +__strfmon_l +__strftime_l +__strxfrm_l +__uflow +__underflow +__vfscanf +__vsnprintf +__vsscanf +__wait +__waitid +__waitpid +__wcscoll_l +__wcsftime_l +__wcsxfrm_l +__write +__wuflow +__wunderflow +_dl_close +_dl_open +accept +addmntent +addseverity +alphasort +argp_error +argp_failure +argp_state_help +argp_usage +argz_add +argz_add_sep +argz_append +argz_create_sep +argz_delete +argz_insert +argz_replace +asctime +asctime_r +asprintf +backtrace_symbols +backtrace_symbols_fd +btowc +canonicalize_file_name +catclose +catopen +cfree +clearenv +close +closedir +connect +creat +ctime +ctime_r +cuserid +dcgettext +dcngettext +dgettext +dngettext +dprintf +ecvt +ecvt_r +endaliasent +endfsent +endgrent +endhostent +endmntent +endmntent +endnetent +endprotoent +endpwent +endrpcent +endservent +endspent +endttyent +endusershell +envz_add +envz_merge +envz_remove +err +error +error_at_line +errx +ether_hostton +ether_ntoa +ether_ntoa_r +ether_ntohost +exit +fcvt +fcvt_r +fexecve +fgetc +fgetc_unlocked +fgetgrent +fgetgrent_r +fgetpwent +fgetpwent_r +fgets +fgets_unlocked +fgetspent +fgetspent_r +fgetwc +fgetwc_unlocked +fgetws +fgetws_unlocked +fmemopen +fmtmsg +fopen64 +fork +fprintf +free +freelocale +freopen +freopen64 +fscanf +fseek +fseeko +fseeko64 +fstatvfs +fstatvfs64 +fsync +ftell +ftello +ftello64 +fts_children +fts_close +fts_open +fts_read +fwprintf +fwscanf +gcvt +get_current_dir_name +get_nprocs +get_nprocs_conf +getaliasbyname +getaliasent +getc +getc_unlocked +getchar +getchar_unlocked +getcwd +getdate +getdate_r +getdelim +getgrent +getgrgid +getgrnam +getgrouplist +gethostbyaddr +gethostbyname +gethostbyname2 +gethostent +gethostid +getline +getmntent +getmntent_r +getnameinfo +getnetbyaddr +getnetbyname +getnetent +getopt +getopt_long +getopt_long_only +getprotobyname +getprotobynumber +getprotoent +getpt +getpw +getpwent +getpwnam +getpwuid +getrpcbyname +getrpcbynumber +getrpcent +gets +getservbyname +getservbyport +getservent +getspent +getspnam +gettext +getttyent +getttynam +getwc +getwc_unlocked +getwchar +getwchar_unlocked +getwd +glob +globfree +globfree64 +gmtime +gmtime_r +hdestroy +hdestroy_r +herror +hstrerror +iconv +iconv_close +iconv_open +if_freenameindex +if_indextoname +if_nameindex +if_nametoindex +inet6_option_alloc +inet6_option_append +inet_ntoa +initgroups +lckpwdf +localtime +localtime_r +lockf +makecontext +mblen +mbrlen +mbrtowc +mbsnrtowcs +mbsrtowcs +mbstowcs +mbtowc +mcheck +mcheck_pedantic +memalign +mkdtemp +mkstemp +mkstemp64 +mktemp +mktime +msgrcv +msgsnd +msync +mtrace +mtrace +muntrace +nanosleep +newlocale +ngettext +obstack_printf +obstack_vprintf +open +open_memstream +parse_printf_format +pause +perror +poll +posix_fallocate +posix_memalign +posix_openpt +posix_spawn +posix_spawn_file_actions_addclose +posix_spawn_file_actions_adddup2 +posix_spawn_file_actions_addopen +posix_spawn_file_actions_destroy +posix_spawnp +pread +printf +printf_size +pselect +psignal +pthread_exit +putenv +putgrent +putpwent +putspent +pwrite +qecvt +qecvt_r +qfcvt +qfcvt_r +qgcvt +qsort +re_comp +re_compile_pattern +read +readv +realloc +recv +recvfrom +recvmsg +regcomp +regerror +regfree +rewind +scandir +scanf +select +send +send +sendmsg +sendto +setaliasent +setenv +setgrent +sethostent +setlocale +setmntent +setnetent +setprotoent +setpwent +setrpcent +setservent +setspent +setttyent +sgetspent +sigpause +sigsuspend +sigtimedwait +sigwait +sigwaitinfo +sleep +snprintf +sprintf +sprofil +sscanf +statvfs +statvfs64 +strcoll +strcoll_l +strerror +strerror_r +strfmon +strfmon_l +strftime +strftime_l +strsignal +strxfrm +strxfrm_l +swprintf +swscanf +system +tcdrain +tdelete +tempnam +textdomain +timegm +timelocal +tmpfile64 +tmpnam +tmpnam_r +ttyslot +ulckpwdf +usleep +valloc +vasprintf +vdprintf +verr +verrx +vfprintf +vfscanf +vfwprintf +vfwscanf +vprintf +vscanf +vsnprintf +vsprintf +vsscanf +vswprintf +vswscanf +vwarn +vwarnx +vwprintf +vwscanf +wait +waitid +waitpid +warn +warnx +wcrtomb +wcscoll +wcscoll_l +wcsftime +wcsftime_l +wcsnrtombs +wcsrtombs +wcstombs +wcsxfrm +wcsxfrm_l +wctob +wctomb +wordexp +wordfree +wprintf +write +writev +wscanf diff -durpN glibc-2.3.3/CANCEL-FILE-WAIVE glibc-2.3.4/CANCEL-FILE-WAIVE --- glibc-2.3.3/CANCEL-FILE-WAIVE 2003-09-02 05:24:58.000000000 -0400 +++ glibc-2.3.4/CANCEL-FILE-WAIVE 2004-03-08 00:22:50.000000000 -0500 @@ -1,6 +1,8 @@ mkdtemp.os +mktemp.os tmpnam.os tmpnam_r.os +tempnam.os __assert.os assert.os assert-perr.os @@ -31,3 +33,16 @@ fmemopen.os closedir.os hsearch.os hsearch_r.os +catgets.os +digits_dots.os +localealias.os +gconv_conf.os +mtrace.os +tzfile.os +tzset.os +ruserpass.os +mntent_r.os +fstab.os +getttyent.os +nsswitch.os +res_init.os diff -durpN glibc-2.3.3/catgets/gencat.c glibc-2.3.4/catgets/gencat.c --- glibc-2.3.3/catgets/gencat.c 2003-04-05 18:21:00.000000000 -0500 +++ glibc-2.3.4/catgets/gencat.c 2004-05-17 14:37:10.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -231,7 +231,8 @@ more_help (int key, const char *text, vo case ARGP_KEY_HELP_EXTRA: /* We print some extra information. */ return strdup (gettext ("\ -Report bugs using the `glibcbug' script to .\n")); +For bug reporting instructions, please see:\n\ +.\n")); default: break; } @@ -247,7 +248,7 @@ print_version (FILE *stream, struct argp Copyright (C) %s Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2003"); +"), "2004"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } diff -durpN glibc-2.3.3/catgets/Makefile glibc-2.3.4/catgets/Makefile --- glibc-2.3.3/catgets/Makefile 2003-02-22 18:16:47.000000000 -0500 +++ glibc-2.3.4/catgets/Makefile 2004-01-20 18:42:49.000000000 -0500 @@ -1,4 +1,4 @@ -# Copyright (C) 1996-2000, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1996-2000, 2002, 2003, 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 @@ -74,7 +74,7 @@ $(objpfx)tst-catgets.out: $(objpfx)de/li # Generate a non-simple input file. $(objpfx)de.msg: $(..)po/de.po - sed -f xopen-msg.sed $< > $@ + LC_ALL=C sed -f xopen-msg.sed $< > $@ $(objpfx)test-gencat.out: test-gencat.sh $(objpfx)test-gencat \ $(objpfx)sample.SJIS.cat diff -durpN glibc-2.3.3/catgets/nl_types.h glibc-2.3.4/catgets/nl_types.h --- glibc-2.3.3/catgets/nl_types.h 2003-04-19 12:48:37.000000000 -0400 +++ glibc-2.3.4/catgets/nl_types.h 2004-09-17 15:26:21.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1999, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999, 2003, 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 @@ -40,15 +40,15 @@ typedef int nl_item; This function is a possible cancellation point and therefore not marked with __THROW. */ -extern nl_catd catopen (__const char *__cat_name, int __flag); +extern nl_catd catopen (__const char *__cat_name, int __flag) __nonnull ((1)); /* Return translation with NUMBER in SET of CATALOG; if not found return STRING. */ extern char *catgets (nl_catd __catalog, int __set, int __number, - __const char *__string) __THROW; + __const char *__string) __THROW __nonnull ((1)); /* Close message CATALOG. */ -extern int catclose (nl_catd __catalog) __THROW; +extern int catclose (nl_catd __catalog) __THROW __nonnull ((1)); __END_DECLS diff -durpN glibc-2.3.3/ChangeLog glibc-2.3.4/ChangeLog --- glibc-2.3.3/ChangeLog 2003-12-01 03:28:52.000000000 -0500 +++ glibc-2.3.4/ChangeLog 2004-12-20 03:34:53.000000000 -0500 @@ -1,13117 +1,5480 @@ -2003-12-01 Automatic - - * version.h (VERSION): Bump to 2.3.3. - -2003-11-30 Andreas Jaeger - - * stdio-common/vfprintf.c: Do not inline buffered_vfprintf to - decrease stack usage. - -2003-11-30 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/sysdep.h (PSEUDO_ERRVAL) - (PSEUDO_END_ERRVAL, ret_ERRVAL): Define. - -2003-11-29 Ulrich Drepper - - * misc/mntent_r.c (decode_name): Be compatible with util-linux and - recognize \134 as well. - -2003-10-09 H.J. Lu - - * sysdeps/ia64/fpu/fraiseexcpt.c: Don't include . - -2003-10-08 H.J. Lu - - * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Don't include - . - (struct ia64_fpreg): New definition. - - * sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Don't include - . - (ELF_NGREG): New #define. - (ELF_NFPREG): Likewise. - (elf_greg_t): New type. - (elf_gregset_t): Likewise. - (elf_fpreg_t): Likewise. - (elf_fpregset_t): Likewise. - -2003-10-08 H.J. Lu - - * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Include - . - (__ptrace_request): Add PTRACE_GETREGS and PTRACE_SETREGS. - (pt_all_user_regs): New type. - -2003-10-10 Simon Josefsson - - * argp/argp-namefrob.h [!_LIBC]: Include mempcpy.h, strcase.h, - strchrnul.h, strndup.h (from gnulib). - * argp/argp-parse.c: Add alloca.h include snippet verbatim from - Autoconf manual. - * argp/argp-help.c: Replace alloca.h include snipper with verbatim - Autoconf manual version. - * argp/argp.h: Map __restrict to restrict or empty string when - necessary, copied verbatim from posix/regex.h. - -2003-10-09 Steven Munroe - - * Makefile: Allow for c++-types-$(config-machine)-$(config-os).data in - addition to c++-types-$(base-machine)-$(config-os).data. - * scripts/data/c++-types-powerpc-linux-gnu.data: New file. - * scripts/data/c++-types-powerpc64-linux-gnu.data: New file. - -2003-11-28 Ulrich Drepper - - * misc/mntent_r.c (decode_name): Fix decoding of tab, add decoding - of newline. - * manual/sysinfo.texi (mtab): Adjust description accordingly. - Reported by Andries.Brouwer@cwi.nl. - - * sysdeps/x86_64/fpu/libm-test-ulps: Add some more minor changes - to compensate other setup. - -2003-11-27 Andreas Jaeger - - * sysdeps/x86_64/fpu/libm-test-ulps: Add ulps for new atan2 test. - - * math/libm-test.inc (atan2_test): Add test that run infinitly. - Reported by "Willus" . - -2003-11-27 Michael Matz - - * sysdeps/ieee754/dbl-64/mpsqrt.c (fastiroot): Fix 64-bit problem - with wrong types. - -2003-11-28 Jakub Jelinek - - * posix/regexec.c (acquire_init_state_context): Make inline. - Add always_inline attribute. - (check_matching): Add BE macro. Move if (cur_state->has_backref) - into if (dfa->nbackref). - (sift_states_backward): Fix comment. - (transit_state): Add BE macro. Move if (next_state->has_backref) - into if (dfa->nbackref && next_state). Don't check for next_state - != NULL twice. - * posix/regcomp.c (peek_token): Use opr.ctx_type instead of opr.idx - for ANCHOR. - (parse_expression): Only call init_word_char if word context will be - needed. - - * posix/bug-regex11.c (tests): Add new tests. - - * posix/tst-regex.c: Include getopt.h. - (timing): New variable. - (main): Set timing to 1 if --timing argument is present. - Add 2 new tests. - (run_test, run_test_backwards): Handle timing. - -2003-11-27 Jakub Jelinek - - * posix/regex_internal.h (re_string_t): Remove mbs_case field. - Add offsets, valid_raw_len, raw_len, raw_stop, mbs_allocated and - offsets_needed fields. Change icase, is_utf8 and map_notascii - type from int bitfield to unsigned char. - (MBS_ALLOCATED, MBS_CASE_ALLOCATED): Remove. - (build_wcs_upper_buffer): Change prototype to return int. - (re_string_peek_byte_case, re_string_fetch_byte_case): Remove - defines, add prototypes. - * posix/regex_internal.c (re_string_allocate): Don't initialize - stop here. Don't initialize mbs_case. Set valid_raw_len. - Use mbs_allocated instead of MBS_* macros. - (re_string_construct): Don't initialize stop and valid_len here. - Don't initialize mbs_case. Use mbs_allocated instead of MBS_* - macros. Reallocate buffers if build_wcs_upper_buffer converted - too few bytes. Set valid_len to bufs_len only for single byte - no translation and set in that case valid_raw_len as well. - (re_string_realloc_buffers): Reallocate offsets if not NULL. - Use mbs_allocated instead of MBS_ALLOCATED. Don't reallocate - mbs_case. - (re_string_construct_common): Initialize raw_len, mbs_allocated, - stop and raw_stop. - (build_wcs_buffer): Apply pstr->trans before mbrtowc instead of - after it. Set valid_raw_len. Don't set mbs_case. - (build_wcs_upper_buffer): Return REG_NOERROR or REG_ESPACE. - Only use the fast path if !pstr->offsets_needed. Apply pstr->trans - before mbrtowc instead of after it. If upper case character - uses different number of bytes than lower case, goto to the - slow path. Don't call towupper unnecessarily twice. Set - valid_raw_len as well. Handle in the slow path the case if - lower and upper case use different number of characters. - Don't set mbs_case. - (re_string_skip_chars): Use valid_raw_len instead of valid_len. - (build_upper_buffer): Don't set mbs_case. Add BE macro. Set - valid_raw_len. - (re_string_translate_buffer): Set mbs instead of mbs_case. Set - valid_raw_len. - (re_string_reconstruct): Use raw_len/raw_stop to initialize - len/stop. Clear valid_raw_len and offsets_needed when clearing - valid_len. Use mbs_allocated instead of MBS_* macros. - Check original offset against valid_raw_len instead of valid_len. - Remove mbs_case handling. Adjust valid_raw_len together with - valid_len. If is_utf8 and looking for tip context, apply - pstr->trans first. If buffers start with partial multi-byte - character, initialize mbs array as well if mbs_allocated. - Check return value of build_wcs_upper_buffer. - (re_string_peek_byte_case): New function. - (re_string_fetch_byte_case): New function. - (re_string_destruct): Use mbs_allocated instead of MBS_ALLOCATED. - Don't free mbs_case. Free offsets. - * posix/regcomp.c (init_dfa): Only check if charset name is UTF-8 - if mb_cur_max == 6. - * posix/regexec.c (re_search_internal): Initialize input.raw_stop - as well. Use valid_raw_len instead of valid_len when looking - through fastmap. Adjust registers through input.offsets. - (extend_buffers): Allow build_wcs_upper_buffer to fail. - * posix/bug-regex18.c (tests): Enable #ifdefed out tests. Add new - tests. - -2003-11-26 Jakub Jelinek - - * posix/regexec.c (check_subexp_limits): Only check close - subexpression limitation if one is found. Formatting. - (sift_states_backward, check_arrival, check_arrival_add_next_nodes): - Formatting. - * posix/bug-regex11.c (tests): Enable most #ifdefed out tests. - Add new test. - -2003-11-26 Ulrich Drepper - - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_PROT_GROWSUPDOWN): Define for 2.6.1 and up. - * sysdeps/unix/sysv/linux/dl-execstack.c: Omit compatibility code - if __ASSUME_PROT_GROWSUPDOWN is defined. - -2003-11-26 Andreas Jaeger - - * sysdeps/unix/sysv/linux/dl-execstack.c - (_dl_make_stack_executable): Set dl_stack_flags always for - success. - -2003-06-22 Petter Reinholdtsen - - * locale/program/ld-monetary.c: Only check the first three - characters in int_curr_symbol against ISO-4217, to make the - separator character used by a locale independent of the content - in iso-4217.def. - * locale/iso-4217.def: Remove the space character from all - currency values to get the new test code in ld-monetary.c working. - -2003-11-21 David Mosberger - - * elf/soinit.c (_fini): Put _fini() in .init_array section if - HAVE_INITFINI_ARRAY is defined. - -2003-11-25 Ulrich Drepper - - * sysdeps/i386/fpu/bits/mathinline.h: Introduce __libc_sqrtl symbol. - Define it appropriately after last change. Use it where __sqrtl - was used. - -2003-11-25 H.J. Lu - - * sysdeps/i386/fpu/bits/mathinline.h (sqrt): Don't inline - sqrt for gcc 3.3 and above. - -2003-11-25 Ulrich Drepper - - * posix/runptests.c (main): Make errors fatal. - * posix/PTESTS: One test in GA135 and GA136 check functionality - which seems not guaranteed. - -2003-11-25 Jakub Jelinek - - * posix/regexec.c (re_search_internal): If prune_impossible_nodes - returned REG_NOMATCH, set match_last to -1. Don't initialize - pmatch[0] needlessly. Fix comment. - (prune_impossible_nodes): Don't segfault on NULL state_log entry. - (set_regs): Fix comment. - * posix/regcomp.c (parse_bracket_exp): Only set has_plural_match - if adding both SIMPLE_BRACKET and COMPLEX_BRACKET. - (build_charclass_op): Set has_plural_match if adding both - SIMPLE_BRACKET and COMPLEX_BRACKET. - * posix/bug-regex11.c (tests): Fix register values for one commented - out test. Add new tests. - - * posix/regex_internal.c (re_string_allocate): Make sure init_len - is at least dfa->mb_cur_max. - (re_string_reconstruct): If is_utf8, don't fall back into - re_string_skip_chars just because idx points into a middle of - valid UTF-8 character. Instead, set the wcs bytes which correspond - to the partial character bytes to WEOF. - * posix/regexec.c (re_search_internal): Allocate input.bufs_len + 1 - instead of dfa->nodes_len + 1 state_log entries initially. - * posix/bug-regex20.c (main): Uncomment backwards case insensitive - tests. - -2003-11-24 Jakub Jelinek - - * posix/regex_internal.h (re_token_t): Add word_char bit. Add - comment. - (re_dfa_t): Add sb_char field. - (bitset_mask): New function. - * posix/regcomp.c (free_dfa_content): Free sb_char. - (init_dfa): Don't initialize word_char unnecessarily. - Initialize sb_char. - (duplicate_node): Don't duplicate !word_char CHARACTERs with - NEXT_WORD_CONSTRAINT constraint or word_char CHARACTERs with - NEXT_NOTWORD_CONSTRAINT. Return -1 in *new_idx instead. - (duplicate_node_closure): Handle clone_dest == -1 from - duplicate_node. - (peek_token): Initialize word_char bit. - (parse_expression, parse_dup_op): Add comments. - (parse_bracket_exp): Don't set bitmask bits for multi-byte char - starting bytes here at the beginning. Mask off the bits right - before creating SIMPLE_BRACKET. - (build_charclass_op): Likewise. - * posix/regexec.c (group_nodes_into_DFAstates) : Only - set accept bits for single-byte characters. - (group_nodes_into_DFAstates): Don't rely on characters 0 .. 127 - being single byte encoded and the rest multi-byte. - * posix/bug-regex19.c (tests): Add new tests. - (do_mb_tests): Initialize t to *test. - (main): Fail even on do_mb_tests errors. - -2003-11-23 Ulrich Drepper - - * posix/regexec.c: Correct several memory allocation problems. - Add more BE. - * posix/regex_internal.c: Likewise. - * posix/regcomp.c: Likewise. - - * posix/regexec.c: Add const in a number of places. - * posix/regex_internal.h: Make EPSILON_BIT a macro to help - debugging. Its value isn't important. - -2003-11-22 Ulrich Drepper - - * posix/PTESTS: Fix first test of GA143. - -2003-11-21 Ulrich Drepper - - * posix/regex_internal.c (re_dfa_add_node): Add BE, reallocation - isn't likely. - - * locale/programs/charmap.c (charmap_read): If encoding is found - not ASCII compatible, set enc_not_ascii_compatible. - * locale/programs/charmap.h: Declare enc_not_ascii_compatible. - * locale/programs/ld-ctype.c (ctype_startup): If - enc_not_ascii_compatible is set, initialize to_nonascii to 1. - -2003-11-22 Jakub Jelinek - - * elf/rtld.c (process_envvars): Only honor LD_USE_LOAD_BIAS - if !__libc_enable_secure. - - * sysdeps/generic/ldsodefs.h (_dl_use_load_bias): New _rtld_global - field. - * elf/rtld.c (_rtld_global): Initialize _dl_use_load_bias field. - (dl_main): Set GL(dl_use_load_bias) default. - (process_envvars): Set GL(dl_use_load_bias) from LD_USE_LOAD_BIAS. - Add EXTRA_LD_ENVVARS_13. - * elf/dl-support.c (_dl_use_load_bias): New variable. - * elf/dl-load.c (_dl_map_object_from_fd): Mask c->mapstart - with GL(dl_use_load_bias). - * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add - LD_USE_LOAD_BIAS. - * sysdeps/unix/sysv/linux/dl-librecon.h (EXTRA_LD_ENVVARS): Remove. - (EXTRA_LD_ENVVARS_LINUX): Renamed to... - (EXTRA_LD_ENVVARS_13): ... this. Remove case at the beginning. - * sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS): - Don't undefine first. Remove EXTRA_LD_ENVVARS_LINUX. - -2003-11-21 Ulrich Drepper - - * posix/regcomp.c (duplicate_node): Remove unnecessary local variable. - - * posix/regcomp.c (re_dfa_add_tree_node): Make fourth parameter a - pointer. Adjust callers. - - * posix/regcomp.c (fetch_token): Change interface to match - peek_token. This avoid some copying and reduces code size. - -2003-11-21 Jakub Jelinek - - * posix/bug-regex19.c (tests): Add more tests. - - * posix/bug-regex11.c: And one more commented out test. - - * posix/tst-rxspencer.c (mb_tests): Don't run identical multi-byte - tests multiple times unnecessarily. - - * posix/bug-regex19.c (BRE, ERE): Define. - (tests): Add many new tests, remove UTF-8 ones. - (do_one_test, do_mb_tests): New functions. - (main): Rewritten using do_one_test and do_mb_tests. - -2003-11-20 Ulrich Drepper - - * posix/PTESTS: Fix first test in GA143. - -2003-11-20 Jakub Jelinek - - * posix/regex_internal.h (re_dfastate_t): Remove trtable_search. - Add word_trtable. - * posix/regex_internal.c (create_newstate_common, free_state): - Don't free trtable_search. - * posix/regexec.c (check_matching): Remove fl_search argument. - (transit_state_sb): Likewise. #ifdef out as unused. - (build_trtable): Remove fl_search argument. Set state->word_trtable - and state->trtable. Build separate word and non-word tables if - multi-byte and they differ for some character. - (transit_state): Remove fl_search argument. Don't update - state->trtable here. Handle state->word_trtable. - #ifdef out unused call to transit_state_sb. - (re_search_internal): Update check_matching caller. - (group_nodes_into_DFAstates): Don't clear non-ascii chars in accepts - bitmask for multi-byte locales. - * posix/bug-regex19.c (tests): Enable some commented out tests, add - 2 new tests. - * posix/tst-rxspencer.c (mb_tests): Don't test [[=b=]] for now as - multi-byte. Don't run identical multi-byte tests multiple times - unnecessarily. - (main): Check setlocale return value. - * posix/Makefile (tst-rxspencer-ARGS): Add --utf8 argument. - (tst-rxspencer-ENV): Remove MALLOC_TRACE, add LOCPATH. - ($(objpfx)tst-rxspencer-mem): Run another tst-rxspencer test - here, without --utf8 argument but with MALLOC_TRACE. - -2003-11-19 Jakub Jelinek - - * posix/regexec.c (extend_buffers): Don't allocate - twice as big state_log as needed. Don't modify pstr->valid_len - for mb_cur_max == 1 !icase !trans. - - * posix/regcomp.c (free_bin_tree): Removed. - (create_tree): Add dfa argument. Don't call re_malloc for - each tree, instead allocate from str_tree_storage. - (re_dfa_add_tree_node): New function. - (free_dfa_content): Handle freeing if dfa->nodes == NULL - or dfa->state_table == NULL. - (re_compile_internal): Call free_dfa_content if init_dfa - fails. Call free_workarea_compile, re_string_destruct - and free_dfa_content for most of the other failure paths. - (init_dfa): Initialize str_tree_storage_idx. - Don't clear any fields on allocation failure. - (free_workarea_compile): Free str_tree_storage chunks - instead of free_bin_tree (dfa->str_tree). - (parse): Call re_dfa_add_tree_node instead of re_dfa_add_node - followed by create_tree. Add dfa argument to remaining - create_tree calls. Remove new_idx variable. Remove calls - to free_bin_tree. - (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp, - parse_dup_op, parse_bracket_exp, build_charclass_op): Likewise. - (duplicate_tree): Remove calls to free_bin_tree, add dfa - argument to create_tree. - * posix/regex_internal.h (BIN_TREE_STORAGE_SIZE): Define. - (bin_tree_storage_t): New type. - (re_dfa_t): Add str_tree_storage and str_tree_storage_idx - fields. - * posix/Makefile (tests): Add bug-regex21. - (generated): Add bug-regex21-mem, bug-regex21.mtrace, - tst-rxspencer-mem and tst-rxspencer.mtrace. - (tests): Depend on $(objpfx)bug-regex21-mem - and $(objpfx)tst-rxspencer-mem. - (bug-regex21-ENV, tst-rxspencer-ENV): Set. - ($(objpfx)bug-regex21-mem, $(objpfx)tst-rxspencer-mem): New. - * posix/tst-rxspencer.c (main): Add call to mtrace. - Free line at the end. - * posix/bug-regex21.c: New test. - -2003-11-19 Ulrich Drepper - - * posix/bug-regex20.c: Correct invalid UTF-8 sequences. - - * posix/regex_internal.c (build_wcs_upper_buffer): If mbrtowc - fails, just use the byte, do no fancy conversions. - - * posix/regex_internal.h (re_string_first_byte): Use ->valid_len - not ->len. - (re_string_is_single_byte_char): Likewise. - -2003-11-18 Ulrich Drepper - - * posix/regexec.c (get_subexp): After calling get_subexp_sub - reload buf and bkref_str. Little optimization by avoiding memcmp. - -2003-11-14 David Mosberger - - * sysdeps/unix/sysv/linux/ia64/sysdep.h - (GAS_ALIGN_BREAKS_UNWIND_INFO): Define this macro to indicate - that all existing GAS versions have a problem with .align inside - a function. - * sysdeps/ia64/memccpy.S: Work around GAS_ALIGN_BREAKS_UNWIND_INFO bug. - * sysdeps/ia64/memcpy.S: Likewise. - * sysdeps/ia64/memset.S: Likewise. - * sysdeps/ia64/memmove.S: Likewise. Also move the jump-table to - out of .text into .rodata, where it belongs. - - * sysdeps/unix/sysv/linux/ia64/pipe.S: There is no need to - save/restore input-arguments, because they're necessarily - preserved by the kernel to support syscall-restart. - -2003-11-18 Jakub Jelinek - - * posix/regex_internal.h (re_token_type_t): Remove unused ALT, - END_OF_RE_TOKEN_T and SUBEXP. Reorder values. Add OP_UTF8_PERIOD - and EPSILON_BIT. - (IS_EPSILON_NODE): Just test if EPSILON_BIT is set. - (ACCEPT_MB_NODE): Return 1 for OP_UTF8_PERIOD as well. - * posix/regex_internal.c (create_ci_newstate, create_cd_newstate): - Handle OP_UTF8_PERIOD. - (re_string_reconstruct): Set valid_len for single byte char searching - with no translation and case sensitivity. - * posix/regcomp.c (re_compile_fastmap_iter, calc_first): Handle - OP_UTF8_PERIOD. - (re_compile_internal): Don't call optimize_utf8 if preg->translate - != NULL. - (optimize_utf8): Remove BACK_SLASH case. - Transform OP_PERIOD into OP_UTF8_PERIOD if the searching can be - optimized. - (parse_bracket_exp): Don't create SIMPLE_BRACKET if it doesn't have - any bits set and COMPLEX_BRACKET is used. - * posix/regexec.c (transit_state_mb): Fix comment typo. - (group_nodes_into_DFAstates, check_node_accept): Handle - OP_UTF8_PERIOD. - (check_node_accept_bytes): Likewise. Reorder slightly so that - re_string_char_size_at and re_string_elem_size_at are called - only when needed. - * posix/bug-regex20.c (BRE, ERE): Define. - (tests): Use them to make lines shorter. Expect . to be - optimized. Add lots of new tests. - (main): Run (ATM just case sensitive) test with backwards searching - as well. - -2003-11-18 Jakub Jelinek - - * io/bug-ftw4.c: Include string.h. - * posix/fnmatch.c (mbsinit): Remove define. - -2003-11-17 Jakub Jelinek - - * posix/regcomp.c (optimize_utf8): Optimize multi-byte chars as - well. - * posix/bug-regex20.c (tests): Add new tests. Multi-byte char - followed by dup operator is expected to be optimized. - - * posix/regexec.c (check_node_accept_bytes): Move nrules and j - variables to the block where they are only used, initialize - nrules only immediately before using it. - -2003-11-15 Andreas Jaeger - - * sysdeps/x86_64/fpu/s_scalbnl.S: New file. - * sysdeps/x86_64/fpu/s_truncl.S: New file. - * sysdeps/x86_64/fpu/s_nearbyintl.S: New file. - * sysdeps/x86_64/fpu/s_floorl.S: New file. - * sysdeps/x86_64/fpu/s_ilogbl.S: New file. - * sysdeps/x86_64/fpu/e_remainderl.S: New file. - - * math/libm-test.inc (floor_test): Test also ±0.25. - (ceil_test): Test -0.25. - -2003-11-17 Ulrich Drepper - - * sysdeps/posix/getaddrinfo.c: Add support for destination address - selection according to RFC 3484. - -2003-11-15 Ulrich Drepper - - * posix/regex_internal.h: Add forward declaration of re_dfa_t. - Replace last two parameters of re_string_allocate and - re_string_construct with pointer to DFA. - (re_dfa_t): Add map_notascii field. - * posix/regcomp.c (re_compile_internal): Add call of - re_string_construct. - (init_dfa): Initialize mpa_notascii. - * posix/regex_internal.c: Adjust definitions of re_string_allocate - and re_string_construct. - Pass DFA to re_string_construct. Adjust definition. Initialize - map_notascii field. - (build_wcs_upper_buffer): If map_notascii is zero use simplfied - method to map ASCII values to upper case. - * posix/regex.c: Include localeinfo.h. - * posix/regexec.c: Adjust call of re_string_allocate. - - * locale/langinfo.h: Add _NL_CTYPE_MAP_TO_NONASCII. - * locale/localeinfo.h (LIMAGIC): Change value. - * locale/categories.def. Add entry for _NL_CTYPE_MAP_TO_NONASCII. - * locale/C-ctype.h: Likewise. - * locale/programs/ld-ctype.c: Compute whether any mapping maps from - ASCII to non-ASCII value. Write out that value. - - * wcsmbs/mbsinit.c: Undef mbsinit and __mbsinit. - * include/wchar.h: Provide inline versions of mbsinit and __mbsinit. - -2003-11-14 Jakub Jelinek - - * posix/tst-rxspencer.c (check_match): @ without any following - characters must match only end of string. - (main): Fix filename in error message. - -2003-11-12 David Mosberger - - * sysdeps/ia64/dl-machine.h: Force inlining of - elf_machine_runtime_setup(). - -2003-11-13 Andreas Jaeger - - * math/Makefile (CFLAGS-test-float.c): Add -fno-builtin. - (CFLAGS-test-double.c): Likewise. - (CFLAGS-test-ldouble.c): Likewise. - (CPPFLAGS-test-ifloat.c): Likewise. - (CPPFLAGS-test-idouble.c): Likewise. - (CPPFLAGS-test-ildoubl.c): Likewise. - - * math/libm-test.inc (ceil_test): Test ceil (0.25). - -2003-11-04 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ifaddrs.c: Make sure it's the kernel who - sends the netlink data. - * sysdeps/unix/sysv/linux/check_pf.c: Likewise. - -2003-11-13 Jakub Jelinek - - * posix/regcomp.c (optimize_utf8): Optimize even if SIMPLE_BRACKET - with no bits set for >= 0x80 chars is seen. - * posix/bug-regex20.c (tests): Add new tests. Expect [ABC] to be - optimized. - (main): Run all tests with RE_ICASE as well. - -2003-11-13 Ulrich Drepper - - * posix/Makefile: Add rules to build and run tst-rxspencer. - (distribute): Add rxspencer/tests and rxspencer/COPYRIGHT. - * posix/tst-rxspencer.c: New file. - * posix/rxspencer/tests: New file. - * posix/rxspencer/COPYRIGHT: New file. - Patch mostly by Jakub Jelinek. - - * posix/regcomp.c (parse_bracket_exp): Don't check for range if - this is no option given the first token. - - * posix/regcomp.c (parse_bracket_exp): Fix test for EOS after - hyphen in range expression. Return EBRACK in this case. - - * posix/regcomp.c (parse_bracket_element): Reject hyphens unless - we expect them or it's the last element in the bracket expression. - Indicated by new parameter. Adjust all callers. - - * posix/runtests.c (run_a_test): If regcomp failed, reset last_pattern. - Prettier error messages. - - * posix/regcomp.c (parse_dup_op): Fail with REG_BADBR is first - number in {,} expression is larger. - -2003-11-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_TGKILL): - Define appropriately for x86_64. - (__ASSUME_UTIMES): Likewise. - (__ASSUME_CLONE_THREAD_FLAGS): Likewise. - - * sysdeps/x86_64/fpu/s_ceill.S: New file. - -2003-11-13 Ulrich Drepper - - * posix/regcomp.c (parse_expression): In BRE consecutive - duplications are not allowed. - -2003-11-12 Ulrich Drepper - - * posix/regcomp.c (parse_bracket_exp): If end of expression is - seen, return EBRACK error, not BADPAT. - - * posix/regcomp.c (parse_expression): If token is OP_OPEN_DUP_NUM - and RE_CONTEXT_INVALID_DUP syntax flag is set, fail. - * posix/regex.h (RE_CONTEXT_INVALUD_OPS): New macro. - (RE_SYNTAX_POSIX_BASIC): Use RE_CONTEXT_INVALUD_OPS. - - * posix/regcomp.c (parse_sub_exp): In case of not-matching ( ) - return REG_EPAREN. - - * posix/PTESTS: Cleanup. Fix typoes. Correct bugs in 2003.2. - * posix/runptests.c (main): Handle comments. - * posix/PTESTS2C.sed: Handle comments. - -2003-11-12 Jakub Jelinek - - * posix/regcomp.c (optimize_utf8): New function. - (re_compile_fastmap_iter): Use dfa->mb_cur_max > 1 instead - of !icase. - (re_compile_internal): Call optimize_utf8 if not case insensitive - and in UTF-8 locale. - * posix/regex_internal.h: Ifdef out some prototypes if - RE_NO_INTERNAL_PROTOTYPES is defined to shut up warnings. - * posix/Makefile (tests): Add bug-regex20. - (bug-regex20-ENV): Add LOCPATH. - * posix/bug-regex20.c: New test. - -2003-11-12 Jakub Jelinek - - * io/ftw.c (NFTW_NEW_NAME, NFTW_OLD_NAME): Add prototypes. - -2003-11-12 Jakub Jelinek - - * posix/tst-regex.c (umemlen): New variable. - (test_expr): Add expectedicase argument. Test case insensitive - searches as well as backwards searches (case sensitive and - insensitive) too. - (run_test): Add icase argument. Use it to compute regcomp flags. - (run_test_backwards): New function. - (main): Cast read to size_t to avoid warning. Set umemlen. - Add expectedicase arguments to test_expr. - * posix/regex_internal.c (re_string_reconstruct): If is_utf8, - find previous character by walking back instead of converting - all chars from beginning. - -2003-11-12 Jakub Jelinek - - * posix/regex_internal.h (struct re_string_t): Add is_utf8 - and mb_cur_max fields. - (struct re_dfa_t): Likewise. Reorder fields to make structure - smaller on 64-bit arches. - (re_string_allocate, re_string_construct): Add mb_cur_max and - is_utf8 arguments. - (re_string_char_size_at, re_string_wchar_at): Use pstr->mb_cur_max - instead of MB_CUR_MAX. - * posix/regcomp.c (re_compile_fastmap_iter): Use dfa->mb_cur_max - instead of MB_CUR_MAX. - (re_compile_internal): Pass new arguments to re_string_construct. - (init_dfa): Initialize mb_cur_max and is_utf8 fields. - (peek_token, peek_token_bracket): Use input->mb_cur_max instead - of MB_CUR_MAX. - (parse_expression, parse_bracket_exp, parse_charclass_op): Use - dfa->mb_cur_max instead of MB_CUR_MAX. - * posix/regex_internal.c (re_string_construct_common): Add - mb_cur_max and is_utf8 arguments. Initialize fields with them. - (re_string_allocate, re_string_construct): Add mb_cur_max and - is_utf8 arguments, pass them to re_string_construct_common. - Use mb_cur_max instead of MB_CUR_MAX. - (re_string_realloc_buffers): Use pstr->mb_cur_max instead of - MB_CUR_MAX. - (re_string_reconstruct): Likewise. - (re_string_context_at): Use input->mb_cur_max instead of - MB_CUR_MAX. - (create_ci_newstate, create_cd_newstate): Use dfa->mb_cur_max - instead of MB_CUR_MAX. - * posix/regexec.c (re_search_internal): Likewise. - Pass new arguments to re_string_allocate. - (check_matching, transit_state_sb): Use dfa->mb_cur_max instead of - MB_CUR_MAX. - (extend_buffers): Use pstr->mb_cur_max instead of MB_CUR_MAX. - -2003-11-12 Jakub Jelinek - - * posix/Makefile (tests): Add bug-regex19. - (bug-regex19-ENV): Add LOCPATH. - * posix/bug-regex19.c: New test. - -2003-11-11 Jakub Jelinek - - * posix/regcomp.c (re_compile_fastmap_iter): Handle RE_ICASE - with MB_CUR_MAX > 1 locales in the fastmap. - -2003-11-11 Jakub Jelinek - - * posix/regex_internal.c (build_wcs_buffer): Fix comment typo. - (build_wcs_upper_buffer): Likewise. Use towupper for wchar_t instead - of toupper. - * posix/Makefile (tests): Add bug-regex17 and bug-regex18. - (bug-regex17-ENV, bug-regex18-ENV): Add LOCPATH. - * posix/bug-regex17.c: New file - * posix/bug-regex18.c: New file. - -2003-10-08 Thorsten Kukuk - - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (pread, pwrite): - Define __NR_pread/__NR_pwrite if not done in kernel headers - -2003-11-11 Roland McGrath - - * manual/xtract-typefun.awk: Swallow [(){}*] from function names. - - * manual/Makefile (info): Don't depend on dir-add.info. - (libc.dvi libc.pdf libc.info): Depend on dir-add.texi. - (dir-add.info): Target removed, replaced with ... - (dir-add.texi): New target. - (distribute): Add it. - (install): Remove variant with --section arguments. - Let the @dircategory directives do their work. - (mostlyclean): Don't remove dir-add.info here. - (realclean): Remove dir-add.texi here. - * manual/libc.texinfo: @include dir-add.texi - * configure.in: Remove check for old Debian install-info. - * configure: Regenerated. - * config.make.in (OLD_DEBIAN_INSTALL_INFO): Variable removed. - -2003-11-08 Andreas Schwab - - * scripts/data/c++-types-ia64-linux-gnu.data: New file. - -2003-11-10 Carlos O'Donell - - * io/ftwtest-sh: Fix nested sed commands. - -2003-11-10 Jakub Jelinek - - * posix/regex_internal.h (re_string_char_size_at): Don't look beyond - valid_len wide chars. - -2003-11-09 Roland McGrath - - * manual/examples/dir2.c (one): Add const to argument type. - Reported by J de Haan . - -2003-11-07 Ulrich Drepper - - * po/pl.po: Update from translation team. - -2003-11-07 Jakub Jelinek - - * io/ftw.c (NFTW_OLD_NAME, NFTW_NEW_NAME): Define. - (ftw_dir, ftw_startup): Add __attribute ((noinline)). - (NFTW_OLD_NAME, NFTW_NEW_NAME): New functions. - (NFTW_NAME): Only define if !_LIBC, add versioned_symbol - and compat_symbol. - * io/ftw64.c (NFTW_OLD_NAME, NFTW_NEW_NAME): Define. - * io/Versions (libc): Export nftw@@GLIBC_2.3.3 - and nftw64@@GLIBC_2.3.3. - - * io/ftw.h (FTW_ACTIONRETVAL): New flag. - (FTW_CONTINUE, FTW_STOP, FTW_SKIP_SUBTREE, FTW_SKIP_SIBLINGS): New. - * io/ftw.c (ftw_dir): Add old_dir argument. - Clear result if it was FTW_SKIP_SIBLINGS after processing all - dir entries. Change cwd back if old_dir != NULL. - (process_entry): Adjust caller. Don't change cwd back here. - Change FTW_SKIP_SUBTREE result to 0. - (ftw_startup): Adjust ftw_dir caller. - Clear result if it was FTW_SKIP_SUBTREE or FTW_SKIP_SIBLINGS. - * io/ftwtest.c (skip_subtree, skip_siblings): New variables. - (options, main): Add --skip-subtree and --skip-siblings options. - (cb): Use return FTW_CONTINUE instead of return 0. - Handle --skip-subtree and --skip-siblings. - * io/ftwtest-sh: Add tests for FTW_ACTIONRETVAL. - * manual/filesys.texi: Document FTW_ACTIONRETVAL. - -2003-11-04 Jakub Jelinek - - * io/ftw.c (ftw_dir): Close dir if callback with FTW_D type returns - non-zero. - * io/Makefile (tests): Add bug-ftw4. - * io/bug-ftw4.c: New test. - -2003-10-27 Daniel Jacobowitz - - * libio/libioP.h [_IO_USE_OLD_IO_FILE] - (struct _IO_FILE_complete_plus): New type. - * libio/oldiofopen.c (_IO_old_fopen): Use _IO_FILE_complete_plus. - * libio/oldiofdopen.c (_IO_old_fdopen): Likewise. - * libio/oldiopopen.c (struct _IO_proc_file, _IO_old_popen): Likewise. - Call _IO_old_init instead of _IO_init. - -2003-11-03 Ulrich Drepper - - * intl/locale.alias: nb_NO is now the correct name, not no_NO. - - * locale/iso-639.def: Add Blin. - Patch by Daniel Yacob . - -2003-10-31 Steven Munroe - - * sysdeps/powerpc/powerpc32/strncmp.S: New File. - * sysdeps/powerpc/powerpc64/strncmp.S: New File. - -2003-11-01 Randolph Chung - - * sysdeps/unix/sysv/linux/hppa/sysdep.h (LOAD_ARGS_0, LOAD_ARGS_1, - LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4, LOAD_ARGS_5, LOAD_ARGS_6): - Add missing parentheses. - -2003-11-01 Roland McGrath - - * libio/bug-ftell.c (do_test): Add a cast. - -2003-09-26 Daniel Jacobowitz - - * Makerules (shlib.lds): Make sure that ld doesn't try to link - anything while generating the linker script. - -2003-10-31 Roland McGrath - - * locale/lc-ctype.c (_nl_postload_ctype): Update _nl_global_locale's - special members. - -2003-10-29 Ulrich Drepper - - * po/be.po: Update from translation team. - -2003-10-27 Ulrich Drepper - - * elf/rtld.c (map_doit): Pass __RTLD_OPENEXEC in last parameter to - _dl_map_object. - - * elf/sprof.c (load_shobj): Use l_map_start not l_addr to locate - ELF header. - - * inet/rcmd.c (__validuser2_sa): Remove unnecessary code to skip - rest of line. We use getline which means this cannot happen. - -2003-10-26 Ulrich Drepper - - * sysdeps/unix/sysv/linux/internal_statvfs.c (__internal_statvfs): - Avoid infinite loops in case the mounts file is hosed. - * io/Makefile: Add rules to build and run tst-statvfs. - * io/tst-statvfs.c: New file. - - * include/dlfcn.h (__RTLD_OPENEXEC): Define. - * elf/dl-load.c (_dl_map_object_from_fd): Don't allow loading - executables unless __RTLD_OPENEXEC flag is present. - * elf/rtld.c (dl_main): Pass __RTLD_OPENEXEC flag to - _dl_map_object when loading the executable. - - * sysdeps/generic/glob.c (glob): Handle GLOB_BRACE and escaping - correctly. - * posix/globtest.sh: Add tests for GLOB_BRACE and escaping. - - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Default - reverse lookup format for IPv6 addresses is using bitstring and - .ip6.arpa suffix. - * resolv/ns_name.c: Implement encoding and decoding bitstring in - hex format. - -2003-10-23 Jakub Jelinek - - * locale/programs/locale.c (show_info): Fix printing word values on - 64-bit big-endian architectures. - -2003-10-19 Bruno Haible - - * intl/hash-string.c (hash_string): Zero-extend each char from the - string; the old code did a sign-extend on some platforms. - -2003-10-22 Steven Munroe - - * sysdeps/powerpc/powerpc32/Makefile (+cflags, asm-CPPFLAGS): Don't - append options to these. - * sysdeps/powerpc/powerpc64/Makefile (+cflags, asm-CPPFLAGS): Likewise. - -2003-10-18 Carlos O'Donell - - * sysdeps/unix/sysv/linux/hppa/sysdep.h: Fix merge error. - -2003-10-15 Roland McGrath - - * elf/dl-iteratephdr.c [! SHARED] (dl_iterate_phdr): New function. - Fake an entry for the main executable and then call __dl_iterate_phdr. - * elf/Makefile (routines): Remove dl-iteratephdr-static. - (elide-routines.os): Likewise. - (CFLAGS-dl-iterate-phdr-static.c): Variable removed. - * sysdeps/generic/dl-iteratephdr-static.c: File removed. - * sysdeps/unix/sysv/linux/ia64/dl-iteratephdr-static.c: File removed. - -2003-10-15 Jakub Jelinek - - * elf/rtld.c (print_statistics): Print also number of relative - relocations. - -2003-10-12 Carlos O'Donell - - * sysdeps/hppa/sysdep.h: Undef JUMPTARGET before use. - * sysdeps/unix/sysv/linux/hppa/sysdep.h: Define PSEUDO_ERRVAL, - SYSCALL_ERROR_LABEL under all conditions, INTERNAL_SYSCALL_DECL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO, INTERNAL_SYSCALL, - and undef JUMPTARGET before use. - [PIC]: Save pic register around syscall. - * sysdeps/unix/sysv/linux/hppa/sysdep.c (syscall): - Cleanup asm statment. - -2003-10-13 Kaz Kojima - - * sysdeps/unix/sysv/linux/sh/sysdep.h (DO_CALL): Add SYSCALL_INST_PAD - after trapa instruction. - -2003-10-09 Kaz Kojima - - * sysdeps/unix/sysv/linux/sh/syscalls.list: Add waitpid. - -2003-10-10 Carlos O'Donell - - * sysdeps/hppa/Makefile (CFLAGS-malloc.c): Variable removed. - -2003-10-09 Roland McGrath - - * elf/rtld.c (dl_main): Don't set l_name for sysinfo DSO, since there - is no file to name. - -2003-10-08 Jakub Jelinek - - * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): Don't generate - two identical copies of strings. - -2003-10-06 Ulrich Drepper - - * posix/bug-regex11.c: Add some more tests which fail so far. - Disable them. Patch by Paolo Bonzini . - -2003-10-05 Paolo Bonzini - - * posix/bug-regex11.c: Add more backreference-related test cases. - (main): Show the failing regex in the error messages. - * posix/regexec.c (check_dst_limits_calc_pos): - Simplify some nested conditionals. Replace if's with a switch - statement. - (check_dst_limits_calc_pos ): Rename parameter NODE to - FROM_NODE, it shadows a local variable; don't recurse if FROM_NODE - does not change in the recursive invocation, fixing an infinite loop - in the ()\1*\1* regex. - (sift_states_backward): Fix function comment. - * posix/regcomp.c (calc_epsdest): Add an assertion. - -2003-10-06 Ulrich Drepper - - * manual/examples/testopt.c: Fix warnings. Better error message - for missing -c argument. - Patch mostly by Gitonga Marete . - - * timezone/asia: Update from tzdata2003d. - * timezone/australasia: Likewise. - * timezone/backward: Likewise. - * timezone/europe: Likewise. - * timezone/iso3166.tab: Likewise. - * timezone/northamerica: Likewise. - * timezone/southamerica: Likewise. - * timezone/zone.tab: Likewise. - -2003-10-05 Jakub Jelinek - - * sysdeps/ia64/backtrace.c: New file. - * sysdeps/x86_64/backtrace.c: New file. - * sysdeps/generic/unwind.h (_Unwind_Trace_Fn): New type. - (_Unwind_Backtrace): New prototype. - -2003-10-03 Ulrich Drepper - - * sysdeps/i386/elf/bsd-setjmp.S: Use linkonce section for PIC stub. - * sysdeps/i386/elf/setjmp.S: Likewise. - -2003-10-02 Roland McGrath - - * argp/argp-help.c (__argp_short_program_name): Move inside [! _LIBC]. - * argp/argp-namefrob.h - [_LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME] - (__argp_short_program_name): Don't declare fn, define it as a macro. - -2003-08-22 Simon Josefsson - - * argp/argp-fmtstream.h [!__attribute__]: Define to nothing. - - * argp/argp-help.c: Don't include malloc.h, some platforms - complain and it doesn't appear to be used. - [!_LIBC && HAVE_STRERROR_R && !HAVE_DECL_STRERROR_R]: Declare - strerror_r. - [!_LIBC && !HAVE_STRERROR_R && !HAVE_DECL_STRERROR]: Declare - strerror. - (hol_entry_long_iterate): Change __attribute to __attribute__. - (_help, __argp_error, __argp_failure) [!_LIBC && (HAVE_FLOCKFILE - && HAVE_FUNLOCKFILE)]: Protect call to flockfile and funlockfile. - (__argp_basename) [!_LIBC]: New. Taken from LSH, by Niels Möller, - modified after comments from Ulrich Drepper. - (__argp_short_program_name): Ditto. - (__argp_state_help, __argp_error, __argp_failure): Use it. - (__argp_failure): Use strerror when necessary. - - * argp/argp-namefrob.h (__flockfile, __funlockfile, __mempcpy) - (__strchrnul, __strerror_r, __strndup) [!_LIBC]: Remove __-prefix. - (clearerr_unlocked, feof_unlocked, ferror_unlocked) - (fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked) - (fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked) - (putc_unlocked, putchar_unlocked) [!_LIBC && !HAVE_DECL_*]: Map to - non-unlocked functions. - [!_LIBC]: Add prototypes for __argp_basename and - __argp_short_program_name. - - * argp/argp-parse.c (argp_default_parser): Only use - program_invocation{_short,}_name if declared. - (parser_init): Use __argp_short_program_name. - - * argp/argp-xinl.c [_LIBC || HAVE_FEATURES_H]: Add CPP check for - '#include features.h'. - - * argp/argp.h [!__attribute__]: Define to nothing. - -2003-09-26 Paolo Bonzini - - * posix/regcomp.c (parse_sub_exp): Pass RE_CARET_ANCHORS_HERE - for the first token in a subexpression as well. - -2003-10-02 Jakub Jelinek - - * posix/regcomp.c (peek_token): Add 2003-09-20 changes for anchor - handling again. - (parse_reg_exp): Likewise. - * posix/regex.h (RE_CARET_ANCHORS_HERE): Define. - - * posix/bug-regex11.c (tests): Add new tests. - * posix/bug-regex12.c (tests): Add new test. - -2003-10-01 Thorsten Kukuk - - * elf/dl-reloc.c (_dl_allocate_static_tls): Move definition of - variables only used if TLS_DTV_AT_TP is defined into the #if branch. - -2003-10-02 Jeroen Dekkers - - * sysdeps/mach/hurd/malloc-machine.h: Copy the tsd code from - the old thread-m.h header too. - -2003-10-02 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ): Go - back to 131027 since this is what the kernel enforces. - - * inet/getnameinfo.c: Move domain out of nrl_domainname scope and - define it with libc_freeres_ptr. - -2003-10-01 Roland McGrath - - * elf/rtld.c (dl_main): Add cast in last change. - -2003-09-10 Chris Demetriou - - * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Remove - "#if 0" surrounding most of contents. - (SYSCALL_ERROR_LABEL): Define. - (__SYSCALL_CLOBBERS): Add $10. - (internal_syscall7): Remove. - * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise. - -2003-09-30 Ulrich Drepper - - * elf/rtld.c (dl_main): Also set l_map_start. - -2003-09-30 Daniel Jacobowitz - - * elf/rtld.c (dl_main): Set l_libname and l_name for the sysinfo DSO - to work around kernel problem. - -2003-09-27 Wolfram Gloger - - * malloc/malloc.c: Include earlier instead of - "thread-m.h", so that default parameters can be overridden in a - system-specific malloc-machine.h. Remove extra ; from extern "C" - closing brace. - * sysdeps/generic/malloc-machine.h: New file. - * sysdeps/mach/hurd/malloc-machine.h: New file. - * malloc/thread-m.h: Removed. - * malloc/Makefile: Remove CFLAGS-malloc.c parameter addition, it - is in sysdeps/generic/malloc-machine.h now. - -2003-09-29 Ulrich Drepper - - * elf/dl-reloc.c (_dl_allocate_static_tls): Move definition of - variables only used if TLS_TCB_AT_TP is defined into the #if - branch. +2004-12-20 Jakub Jelinek , + Jim Gifford - * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add __extension__ as - well to cover using long long in C90. + [BZ #562] + * sysdeps/mips/Makefile (librt-sysdep_routines): Add. + * sysdeps/unix/mips/rt-sysdep.S: New file. -2003-09-28 Alfred M. Szmidt +2004-12-19 Roland McGrath - * sysdeps/mach/hurd/bits/libc-lock.h (__libc_cleanup_pop): - Redefine and use __libc_cleanup_region_end instead. + * iconv/Makefile (test-iconvconfig): New target. + [$(cross-compiling) != yes] (xtests): Depend on it. -2003-09-29 Thorsten Kukuk + * iconv/iconvconfig.c (nostdlib, output_file, output_file_len): + New variables. + (options, parse_opt, main): Take new options --nostdlib and + --output/-o to set them. Under --nostdlib, skip GCONV_PATH dirs. + (write_output): If output_file is set, write the output there. - * sysdeps/unix/sysv/linux/sys/sysmacros.h: Use __inline and - fix prototypes for picky C++ compilers. +2004-12-19 Andreas Jaeger -2003-09-27 Ulrich Drepper + [BZ #560] + * inet/netinet/in.h: Use __interface_addr instead of __interface. - * sysdeps/unix/sysv/linux/ustat.c (ustat): Set errno to EINVAL if - the device ID is invalid and return -1. - * sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise. + [BZ #573] + * sunrpc/xcrypt.c (passwd2des_internal): Make it hidden instead of + internal linkage. -2003-09-26 Andreas Schwab +2004-12-19 Roland McGrath - * sysdeps/unix/sysv/linux/ia64/getcontext.S: Pass fourth argument to - rt_sigprocmask system call. + * version.h (VERSION): 2.3.4. + * README.template: Various updates. + * README: Regenerated. + * NEWS: Mention ports. + * README-alpha: File removed. -2003-09-25 Roland McGrath + [BZ #416] + * locale/langinfo.h: Comment fixes. - * sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable): - Don't check for zero __libc_stack_end, it should be initialized. - [_STACK_GROWS_DOWN] [PROT_GROWSDOWN]: Try using PROT_GROWSDOWN flag - and fall back if it fails with EINVAL. - [_STACK_GROWS_UP] [PROT_GROWSUP]: Likewise for PROT_GROWSUP. +2004-12-17 Ulrich Drepper -2003-09-25 Jakub Jelinek + * po/ja.po: Update from translation team. - * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include - sysdeps/i386/dl-procinfo.c instead of - sysdeps/unix/sysv/linux/i386/dl-procinfo.c. - * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Avoid using - #include_next. +2004-12-17 Richard Henderson -2003-09-25 Ulrich Drepper + * sysdeps/unix/sysv/linux/alpha/clone.S (__clone): Add support + for NPTL where the PID is stored at userlevel and needs to be + reset when CLONE_THREAD is not used. - * posix/regcomp.c (peek_token): Remove recent changes for anchor - handling again. - (parse_reg_exp): Likewise. - * posix/regex.h: Remove RE_CARET_ANCHORS_HERE. +2004-12-17 Jakub Jelinek - * csu/Makefile ($(objpfx)version-info.h): Fix sed script to handle - banners. + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. - * nis/nis_table.c (nis_list): Always strdup string used with - ibreq->ibr_name. Add several NULL pointer checks. +2004-12-17 Andreas Jaeger - * nis/nss_nisplus/nisplus-alias.c: Add check for NULL return value - of nis_list. - * nis/nss_nisplus/nisplus-ethers.c: Likewise. - * nis/nss_nisplus/nisplus-grp.c: Likewise. - * nis/nss_nisplus/nisplus-hosts.c: Likewise. - * nis/nss_nisplus/nisplus-netgrp.c: Likewise. - * nis/nss_nisplus/nisplus-network.c: Likewise. - * nis/nss_nisplus/nisplus-proto.c: Likewise. - * nis/nss_nisplus/nisplus-publickey.c: Likewise. - * nis/nss_nisplus/nisplus-pwd.c: Likewise. - * nis/nss_nisplus/nisplus-rpc.c: Likewise. - * nis/nss_nisplus/nisplus-service.c: Likewise. - * nis/nss_nisplus/nisplus-spwd.c: Likewise. + * math/libm-test.inc (atan2_test): Compute value with 36 digits. + * sysdeps/alpha/fpu/libm-test-ulps: Adjust for changed result. + * sysdeps/powerpc/fpu/libm-test-ulps: Likewise. + * sysdeps/s390/fpu/libm-test-ulps: Likewise. + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Likewise. + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Likewise. + * sysdeps/x86_64/fpu/libm-test-ulps: Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Define PROT_GROWSDOWN - and PROT_GROWSUP. - * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/cris/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Likewise. +2004-12-16 Ulrich Drepper -2003-09-25 Jakub Jelinek + * stdlib/tst-setcontext.c: Enlarge st1 and st2 arrays. - * misc/syslog.c: Include locale.h. - (vsyslog): Add date always in C locale %h %e %T format. +2004-09-02 Steven Munroe -2003-09-24 Paul Eggert + [BZ #610] + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S + (__novec_getcontext): Fix typo in store of fp29. + (__getcontext): Fix typo in store of fp29. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S + (__novec_swapcontext): Fix typo in store of fp29. + (__swapcontext): Fix typo in store of fp29. - * argp/argp-fmtstream.c (__argp_fmtstream_ensure): Check for - size_t overflow when reallocating storage. - * argp/argp-help.c (make_hol, hol_append): Likewise. - (SIZE_MAX): New macro. +2004-12-17 GOTO Masanori -2003-08-07 Alfred M. Szmidt + * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Fix + vague message. - * sysdeps/mach/hurd/bits/libc-lock.h - (__libc_cleanup_push, __libc_cleanup_pop): New macros. +2004-12-16 Roland McGrath -2003-08-01 Alfred M. Szmidt + * nscd/Makefile ($(objpfx)nscd): Don't depend on $(selinux-LIBS), + which is usually a -lselinux that make will resolve wrongly. - * sysdeps/i386/dl-procinfo.h: New file, contents taken from ... - * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: ... here. - #include_next dl-procinfo.h to get them. - (_DL_HWCAP_COUNT): Moved to sysdeps/i386/dl-procinfo.h. - (_DL_PLATFORMS_COUNT): Likewise. - (_DL_FIRST_PLATFORM): Likewise. - (_DL_HWCAP_PLATFORM): Likewise. - (HWCAP_I386_FPU, HWCAP_I386_VME, HWCAP_I386_DE, HWCAP_I386_PSE, - HWCAP_I386_TSC, HWCAP_I386_MSR, HWCAP_I386_PAE, HWCAP_I386_MCE, - HWCAP_I386_CX8, HWCAP_I386_APIC, HWCAP_I386_SEP, HWCAP_I386_MTRR, - HWCAP_I386_PGE, HWCAP_I386_MCA, HWCAP_I386_CMOV, - HWCAP_I386_FCMOV, HWCAP_I386_MMX, HWCAP_I386_OSFXSR, - HWCAP_I386_XMM, HWCAP_I386_XMM2, HWCAP_I386_AMD3D, - HWCAP_IMPORTANT): Likewise. - (_DL_PROCINFO_H_): Likewise. - (_dl_hwcap_string, _dl_platform_string, _dl_string_hwcap): Likewise. - (_dl_string_platform): Likewise. - * sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Moved to ... - * sysdeps/i386/dl-procinfo.c: ... here, new file. +2004-12-16 Andreas Jaeger -2003-09-24 Ulrich Drepper + * math/math.h: Use #if defined to not receive warnings about + undefined symbols. - * sysdeps/unix/sysv/linux/dl-execstack.c - (_dl_make_stack_executable): Remember that we changed the permission. +2004-12-16 Jakub Jelinek - * sysdeps/ia64/dl-machine.h (RTLD_START): Remove setting of - __libc_stack_end. Patch by David Mosberger. + * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Add support + for NPTL where the PID is stored at userlevel and needs to be reset + when CLONE_THREAD is not used. -2003-09-24 Jakub Jelinek + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h + (SYSCALL_ERROR_HANDLER): If RTLD_PRIVATE_ERRNO, use rtld_errno + instead of errno. + * sysdeps/unix/sysv/linux/sparc/sparc64/socket.S: Include + sysdep-cancel.h instead of sysdep.h. Handle cancellation. + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerate. - * elf/Versions (ld): Export __libc_stack_end@GLIBC_2.1 instead of - __libc_stack_end@GLIBC_PRIVATE. + * sysdeps/ieee754/ldbl-128/e_expl.c: Include stdlib.h. - * sysdeps/generic/dl-sysdep.c (DL_STACK_END): Define if not defined. - (_dl_sysdep_start): Set __libc_stack_end here. - * sysdeps/alpha/dl-machine.h (RTLD_START): Remove setting of - __libc_stack_end. - * sysdeps/arm/dl-machine.h (RTLD_START): Likewise. - * sysdeps/cris/dl-machine.h (RTLD_START): Likewise. - * sysdeps/i386/dl-machine.h (RTLD_START): Likewise. - * sysdeps/m68k/dl-machine.h (RTLD_START): Likewise. - * sysdeps/s390/s390-32/dl-machine.h (RTLD_START): Likewise. - * sysdeps/s390/s390-64/dl-machine.h (RTLD_START): Likewise. - * sysdeps/sh/dl-machine.h (RTLD_START): Likewise. - * sysdeps/x86_64/dl-machine.h (RTLD_START): Likewise. - * sysdeps/ia64/dl-machine.h (DL_STACK_END): Define. - * sysdeps/sparc/sparc32/dl-machine.h (DL_STACK_END): Define. - (RTLD_START): Remove setting of __libc_stack_end. - * sysdeps/sparc/sparc64/dl-machine.h (DL_STACK_END): Define. - (RTLD_START): Remove setting of __libc_stack_end. +2004-12-15 Jakub Jelinek -2003-09-24 Ulrich Drepper + * sysdeps/unix/sysv/linux/gethostid.c: Make bi-arch safe. - * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add gnu_dev_ prefix to - function definitions. Adjust macro expansions accordingly. - * sysdeps/unix/sysv/linux/Versions: Add gnu_dev_ prefix to major, - minor, makedev name. - * sysdeps/unix/sysv/linux/makedev.c: Likewise. +2004-12-15 Steven Munroe -2003-09-24 Jakub Jelinek + * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Correct stack + alignment. Clean up flag bit tests. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Correct stack + alignment. Clean up flag bit tests. Remove redundent SP assignment. + Add TOC register save/restore around function call. - * sysdeps/unix/sysv/linux/sys/sysmacros.h (major, minor, makedev): - Add __THROW. + * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Make no_vmx symbol + local. + * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Make no_vmx symbol + local. + * sysdeps/powerpc/powerpc64/__longjmp-common.S: Make no_vmx symbol + local. + * sysdeps/powerpc/powerpc64/setjmp-common.S: Make no_vmx and + aligned_save_vmx symbol local. -2003-09-24 Jakub Jelinek +2004-12-15 Ulrich Drepper - * nscd/Makefile (others): Add nscd before including ../Rules. + * sysdeps/i386/i486/bits/string.h (__strncat_g): Fix i686 + implementation. -2003-09-24 Ulrich Drepper +2004-09-08 H.J. Lu - * nscd/Makefile: Add rules to build nscd as a PIE. - * configure.in: Check for -fpie and -pie compiler options. - * config.make.in (have-fpie): Define. + * Makeconfig (libunwind): New. + (libgcc_eh): Add $(libunwind). + (gnulib): Always set to -lgcc $(libgcc_eh). + (static-gnulib): Always set to -lgcc -lgcc_eh $(libunwind). + (libc.so-gnulib): New. + * Makerules (LDLIBS-c.so): Use $(libc.so-gnulib) instead of + $(static-gnulib). + * configure.in (libc_cv_cc_with_libunwind): Set to yes if gcc + uses -lunwind for static binaries. -2003-09-23 Ulrich Drepper +2004-06-05 Joseph S. Myers - * sysdeps/unix/sysv/linux/sys/sysmacros.h: Adjust for larger - kernel dev_t size. - * sysdeps/unix/sysv/linux/alpha/sys/sysmacros.h: Removed. - * sysdeps/unix/sysv/linux/sparc/sys/sysmacros.h: Removed. - * sysdeps/unix/sysv/linux/makedev.c: New file. - * sysdeps/unix/sysv/linux/Dist: Add makedev.c. - * sysdeps/unix/sysv/linux/Makefile [subdir=misc] - (sysdep_routines): Add makedev. - * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_2.3.3): Add - major, minor, makedev. - * sysdeps/unix/sysv/linux/ustat.c (ustat): Adjust for 32-bit - kernel dev_t. - * sysdeps/unix/sysv/linux/alpha/ustat.c: Removed. - * sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise. - * sysdeps/unix/sysv/linux/alpha/xmknod.c: Removed. - Code by Alexander Viro . + * malloc/Makefile (install-bin): Remove memusage. + (install-bin-script): Add memusage. -2003-09-23 Ulrich Drepper +2004-12-15 Jakub Jelinek - * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions [libc] - (GLIBC_2.3.3): Add setcontext, getcontext, swapcontext, and - makecontext. - * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Correct change - for include Altivec support for PPC32. It was not compatible. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: Adjust - offsets for ucontext_t change. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Adjust - for ucontext_t change. Add compatibility code. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise. - Patch by Paul Mackerras . + * nis/nis_domain_of_r.c (nis_domain_of_r): Use libnsl_hidden_def, + not libnsl_hidden_proto. -2003-02-25 Randolph Chung + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add support + for NPTL where the PID is stored at userlevel and needs to be reset + when CLONE_THREAD is not used. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise. - * sysdeps/hppa/Makefile: Include compat code in build. - * sysdeps/hppa/libgcc-compat.c: New file. - * sysdeps/hppa/Dist: Add libgcc-compat.c. - * sysdeps/hppa/Versions [GLIBC_2.2]: Add __clz_tab. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S (__clone): Save + and restore r2 around call to fn. -2003-09-23 Roland McGrath +2004-12-15 Andreas Jaeger - * elf/rtld.c (dl_main): In rtld_is_main case, reinitialize - GL(dl_stack_flags) according to rtld's own PT_GNU_STACK. - Move GL(dl_make_stack_executable_hook) initialization up. - * elf/tst-execstack-prog.c: New file. - * elf/Makefile (tests-execstack-yes): Add it. - (LDFLAGS-tst-execstack-prog): New variable. + * sysdeps/ia64/dl-machine.h (elf_machine_rela): Mark auto instead + of static, add always_inline attribute. + (elf_machine_rela_relative): Likewise. + (elf_machine_lazy_rel): Likewise. -2003-09-23 Jakub Jelinek +2004-12-15 Ulrich Drepper - * sysdeps/x86_64/dl-machine.h (RTLD_START): Set __libc_stack_end - before calling _dl_start, using %rip relative access. - Use %rip relative access to _dl_skip_args, _rtld_local._dl_loaded - and _dl_fini. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Add support + for pid caching in nptl. -2003-09-23 Roland McGrath +2004-12-14 Ulrich Drepper - * sysdeps/i386/dl-machine.h (RTLD_START): Set __libc_stack_end before - calling _dl_start, using GOTOFF access. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Add support + for pid caching in nptl. - * configure.in (libc_cv_z_execstack): New check. - * configure: Regenerated. - * config.make.in (have-z-execstack): New variable set by it. - * elf/tst-execstack.c: New file. - * elf/tst-execstack-mod.c: New file. - * elf/tst-execstack-needed.c: New file. - * elf/Makefile (tests-execstack-yes, modules-execstack-yes): New - variables. - (tests, modules-names): Conditionally include them. - (distribute): Add tst-execstack-mod.c here. - ($(objpfx)tst-execstack, $(objpfx)tst-execstack.out): New targets. - (LDFLAGS-tst-execstack, LDFLAGS-tst-execstack-mod): New variables. - ($(objpfx)tst-execstack-needed): New target. - (LDFLAGS-tst-execstack-needed): New variable. +2004-10-18 Maciej W. Rozycki - * sysdeps/generic/ldsodefs.h (struct rtld_global): Add _dl_stack_flags - and _dl_make_stack_executable_hook. Declare _dl_make_stack_executable. - * elf/rtld.c (_rtld_global): Add initializer for _dl_stack_flags. - (dl_main): Reset _dl_stack_flags according to PT_GNU_STACK phdr. - Initialize _dl_make_stack_executable_hook. - * elf/dl-support.c: Define those new variables. - (_dl_non_dynamic_init): Scan phdrs for PT_GNU_STACK. - (_dl_phdr): Fix type. - * elf/dl-load.c (_dl_map_object_from_fd): Grok PT_GNU_STACK phdr and - enable execute permission for the stack if necessary. - * sysdeps/generic/dl-execstack.c: New file. - * elf/Makefile (dl-routines): Add it. - * elf/Versions (ld: GLIBC_PRIVATE): Add _dl_make_stack_executable. - * sysdeps/unix/sysv/linux/dl-execstack.c: New file. + * sysdeps/unix/sysv/linux/mips/bits/socket.h (__cmsg_nxthdr): Use + __NTH instead of __THROW in the inline definition. + * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Likewise. -2003-09-23 Ulrich Drepper + * sysdeps/mips/bits/dlfcn.h (RTLD_DEEPBIND): New macro. - * sysdeps/posix/sprofil.c (pc_to_index): Remove inline marker. + * sysdeps/unix/sysv/linux/mips/bits/mman.h + (PROT_GROWSDOWN, PROT_GROWSUP): New macros. -2003-09-20 Alfred M. Szmidt +2004-10-06 Alan Modra - * sysdeps/generic/utmp_file.c (setutent_file, LOCK_FILE, - UNLOCK_FILE, setutent_file): Use fcntl_not_cancel instead of - __fcntl_nocancel. + * sysdeps/powerpc/powerpc64/ppc-mcount.S (PROF): Don't undef. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S: Invoke CALL_MOUNT. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: Likewise. -2003-09-22 Ulrich Drepper +2004-10-19 Wolfram Gloger - * malloc/malloc.c: Include . + * malloc/hooks.c (mem2chunk_check, top_check): Handle + non-contiguous arena. Reported by Michael Dalton + [BZ #457]. Add further checks for top chunk. -2003-09-20 Paolo Bonzini +2004-12-14 Jakub Jelinek - * posix/regcomp.c (build_word_op): Rename like... - (build_charclass_op): ...this. Accept two extra parameters, - CLASS_NAME and EXTRA. Add EXTRA to the result, not only _. - (peek_token): Accept \s and \S as OP_SPACE and OP_NOTSPACE. - (parse_expression): Replace build_word_op with - build_charclass_op, add new arguments, accept OP_SPACE - and OP_NOTSPACE. - * posix/regex_internal.h (re_token_type_t): Add OP_SPACE - and OP_NOTSPACE. + * sysdeps/posix/sysconf.c (__sysconf_check_spec): Remove leading + underscore from GETCONF_DIR filenames. - * posix/regcomp.c (peek_token): Don't look back for ( or | - to check whether to treat a caret as special. It fails - for the (extended) regex \(^. - (parse, parse_reg_exp): Pass RE_CARET_ANCHORS_HERE to fetch_token. - * posix/regex.h: Define RE_CARET_ANCHORS_HERE. +2004-12-13 Ulrich Drepper - * posix/regexec.c: Check out of bounds value before shifting. + * po/de.po: Update from translation team. - * posix/regex_internal.h: Define __attribute for non-gcc. + * nss/getnssent.c (__nss_getent): Double buffer size each round to + avoid problems with delays for some people's huge entries. + * nss/getXXbyYY.c (FUNCTION_NAME): Likewise. -2003-09-22 Jakub Jelinek +2004-12-13 Jakub Jelinek - * include/atomic.h (atomic_compare_and_exchange_val_rel, - atomic_compare_and_exchange_bool_rel): Swap oldval/newval arguments - to avoid confusion. + * posix/getconf.c (main): Prepend just $GETCONF_DIR/ instead of + $GETCONF_DIR/_ to spec. + * posix/confstr.c (confstr): Remove leading underscores for + _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS. - * sysdeps/unix/opendir.c: Include string.h. +2004-12-12 Ulrich Drepper -2003-09-22 Ulrich Drepper + * elf/dl-load.c (_dl_map_object_from_fd): Fix computation of + mapping start. It must take the actual pagesize into account, not + the alignment in the file. - * timezone/zdump.c: Update from tzcode2003c. - * timezone/zic.c: Likewise. - * timezone/leapseconds: Update from tzdata2003c. +2004-12-11 Ulrich Drepper -2003-09-19 Ulrich Drepper + * malloc/malloc.c (_int_realloc): Add checks for corrupted memory. + (_int_free): Make clear message are result of free() calls. - * elf/Makefile ($(objpfx)librtld.os): Create link map also for - final build to ease quality control. + * malloc/malloc.c (_int_realloc): Remove unnecessary tests for + oldmem and size == 0. - * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): If compiled for - ld.so, don't include NULL buffer pointer handling. +2004-12-10 Ulrich Drepper -2003-09-19 Jakub Jelinek + * malloc/arena.c (arena_get2): Prevent endless loop if arenas and + list lock are taken. - * dlfcn/dlopen.c (dlopen): Add static_link_warning. +2004-12-08 Thorsten Kukuk -2003-09-18 Jakub Jelinek + * nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_getnetgrent_r): + Add check if the value is not an empty string. [BZ #597] - * libio/memstream.c (open_memstream): Use _IO_init instead of - _IO_old_init. +2004-11-29 Jakub Jelinek -2003-09-17 Ulrich Drepper + * stdlib/strtod_l.c (INTERNAL (__STRTOF)): If densize > 2 + and numsize < densize, always shift num up by empty + 1 limbs. - * sysdeps/generic/wordexp.c (eval_expr_val): Use strtol since we - have to recognize octal and hexadecimal numbers as well. Simplify - function, signs are handled in strtol. - * posix/wordexp-test.c: Add tests for octal and hexadecimal - numbers in arithmetic expressions. +2004-12-07 Paolo Bonzini -2003-09-17 Jakub Jelinek + * posix/regexec.c (proceed_next_node): Simplify treatment of epsilon + nodes. Pass the pushed node to push_fail_stack. + (push_fail_stack): Accept a single node rather than an array + of two epsilon destinations. + (build_sifted_states): Only walk non-epsilon nodes. + (check_arrival): Don't pass epsilon nodes to + check_arrival_add_next_nodes. + (check_arrival_add_next_nodes) [DEBUG]: Abort if an epsilon node is + found. + (check_node_accept): Do expensive checks later. + (add_epsilon_src_nodes): Cache result of merging the inveclosures. + * posix/regex_internal.h (re_dfastate_t): Add non_eps_nodes and + inveclosure. + (re_string_elem_size_at, re_string_char_size_at, re_string_wchar_at, + re_string_context_at, re_string_peek_byte_case, + re_string_fetch_byte_case, re_node_set_compare, re_node_set_contains): + Declare as pure. + * posix/regex_internal.c (create_newstate_common): Remove. + (register_state): Move part of it here. Initialize non_eps_nodes. + (free_state): Free inveclosure and non_eps_nodes. + (create_cd_newstate, create_ci_newstate): Allocate the new + re_dfastate_t here. - * elf/Makefile (distribute): Add tst-alignmod.c. - (tests): Add tst-align. - (modules-names): Add tst-alignmod. - (CFLAGS-tst-align.c, CFLAGS-tst-alignmod.c): Add - $(stack-align-test-flags). - ($(objpfx)tst-align): Depend on libdl. - ($(objpfx)tst-align.out): Depend on tst-alignmod.so. - * elf/tst-align.c: New file. - * elf/tst-alignmod.c: New file. - * misc/Makefile (CFLAGS-tst-tsearch.c): Add $(stack-align-test-flags). - * misc/tst-tsearch.c: Include tst-stack-align.h. - (stack_align_check): New array. - (cmp_fn, walk_action): Use TEST_STACK_ALIGN (). - (main): Report error if stack was not enough aligned - in cmp_fn or walk_action. - * stdlib/Makefile (CFLAGS-tst-qsort.c): Add $(stack-align-test-flags). - * stdlib/tst-qsort.c: Include tst-stack-align.h. - (align_check): New var. - (compare): Use TEST_STACK_ALIGN () macro. - (main): Report error if stack was not enough aligned in compare. - * sysdeps/i386/i686/Makefile (stack-align-test-flags): Remove - unneeded -mpreferred-stack-boundary=4. - * sysdeps/x86_64/tst-stack-align.h: New file. +2004-12-09 Ulrich Drepper - * libio/memstream.c (_IO_wmem_jumps): Remove unused structure. - (_IO_wmem_sync, _IO_wmem_finish): Remove unused functions. + * malloc/malloc.c (public_rEALLOc): Add parameter checks. + (_int_free): Provide better error message for invalid pointers. -2003-09-17 Philip Blundell +2004-12-01 Jakub Jelinek - * sysdeps/arm/dl-machine.h (CALL_ROUTINE): Deleted. - (BX): Define. - (ELF_MACHINE_RUNTIME_TRAMPOLINE): Optimise a little. + * posix/tst-regex.c: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 + conditionals instead of defined _POSIX_CPUTIME. + (main): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME + option is available. + * posix/tst-regex.c2: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 + conditionals instead of defined _POSIX_CPUTIME. + (do_test): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME + option is available. + * sysdeps/posix/sysconf.c (__sysconf): If _POSIX_CPUTIME resp. + _POSIX_THREAD_CPUTIME is defined to 0, return -1 for the corresponding + _SC_ argument. - * sysdeps/arm/sysdep.h (DO_RET): New. +2004-12-08 Jakub Jelinek - * sysdeps/unix/sysv/linux/arm/vfork.S: Add #error if __NR_vfork - required but not defined. Improve test of error code. + * elf/ldd.bash.in: When set -o pipefail is available, use that for + piping to cat; when not, don't use the pipe at all. + Pipe to cat in all cases of running the executable. + When direct running exits with code 5, retry running via ${RTLD}. + * elf/rtld.c (process_envvars): If __libc_enable_secure and + mode != normal, exit with exitcode 5. -2003-09-17 Jakub Jelinek +2004-12-07 Jakub Jelinek - * sysdeps/i386/Makefile (stack-align-test-flags): Add - -malign-double -mpreferred-stack-boundary=4. + * sysdeps/posix/sysconf.c (__sysconf_check_spec): Only define + if it will be actually used. -2003-09-17 Ulrich Drepper +2004-12-07 Roland McGrath - * sysdeps/posix/utimes.c (__utimes): Truncate instead of round. - * sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise. + * rt/tst-timer5.c (setup_test): New function. + (TEST_CLOCK_MISSING): Use it to punt test if timer_create does not + support CLOCK_MONOTONIC. -2003-09-15 Jakub Jelinek +2004-12-07 Jakub Jelinek - * sysdeps/i386/Makefile (sysdep-CFLAGS): If not in math or csu - subdir, add -mpreferred-stack-boundary=4, with few exceptions. + * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Add support for + NPTL where the PID is stored at userlevel and needs to be reset when + CLONE_THREAD is not used. Restore gp before calling _exit. -2003-09-17 Jakub Jelinek +2004-12-07 Kaz Kojima - * Makeconfig (stack-align-test-flags): Set. - * stdlib/Makefile (CFLAGS-tst-bsearch.c): Add - $(stack-align-test-flags). - * stdlib/tst-bsearch.c: Include tst-stack-align.h. - (align_check): New var. - (comp): Use TEST_STACK_ALIGN macro. - (do_test): Fail if align_check != 1. - * sysdeps/generic/tst-stack-align.h: New file. - * sysdeps/i386/i686/Makefile (stack-align-test-flags): Add -msse. - * sysdeps/i386/i686/tst-stack-align.h: New file. + * sysdeps/unix/sysv/linux/sh/clone.S: Clear the frame pointer when + starting a new thread. Add support for NPTL where the PID is stored + at userlevel and needs to be reset when CLONE_THREAD is not used. -2003-09-17 Ulrich Drepper +2004-12-01 Jakub Jelinek - * sysdeps/unix/sysv/linux/i386/clone.S: Make sure child gets a - stack which is aligned (mod 16). + * elf/rtld.c (process_envvars): Don't consider LD_SHOW_AUXV + and LD_DYNAMIC_WEAK if __libc_enable_secure. + If __libc_enable_secure, /etc/suid-debug doesn't exist and + program will be actually run, turn off all debugging. + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add LD_DEBUG, + LD_DYNAMIC_WEAK and LD_SHOW_AUXV. -2003-09-17 Uwe Reimann - Hans-Peter Nilsson +2004-12-06 Jakub Jelinek - * sysdeps/cris/dl-machine.h (elf_machine_type_class): Classify - R_CRIS_GLOB_DAT as ELF_RTYPE_CLASS_PLT. Clarify comment. + * time/tzset.c (tzset_internal): If + or - is seen, + but no offset after it, reset offset to 0. [BZ #601] -2003-09-17 Jakub Jelinek +2004-12-06 Ulrich Drepper - * dirent/scandir.c: Include bits/libc-lock.h. - (struct scandir_cancel_struct): New type. - (cancel_handler): New function. - (SCANDIR): Add __libc_cleanup_{push,pop}, save state into - scandir_cancel_struct. + * libio/ioseekpos.c (_IO_seekpos_unlocked): Call _IO_SEEKOFF not + _IO_SEEKPOS, saving one indirect jump. -2003-09-16 Ulrich Drepper + * libio/fileops.c (_IO_new_file_seekoff): Fix optimization of in-buffer + seek. Remove dead code. - * sysdeps/unix/sysv/linux/Dist: Remove internal_statvfs.c. - * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines): - Add internal_statvfs. - * sysdeps/unix/sysv/linux/fstatvfs.c: Call __internal_statvfs - instead of including "internal_statvfs.c". - * sysdeps/unix/sysv/linux/statvfs.c: Likewise. - * sysdeps/unix/sysv/linux/internal_statvfs.c: Make it a real function. - Add code to avoid the stat calls on all the reported mount points - when we can determine mismatch in advance. - * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add AUTOFS_SUPER_MAGIC and - USBDEVFS_SUPER_MAGIC. +2004-12-02 Jakub Jelinek -2003-09-16 Jakub Jelinek + * libio/Makefile (tests): Add bug-ungetc4. + * libio/bug-ungetc4.c: New test. - * posix/Versions (sched_getaffinity, sched_setaffinity): Change - from GLIBC_2.3.2 to GLIBC_2.3.3 symbol version. +2004-12-06 Roland McGrath -2003-09-16 Bruno Haible + * sysdeps/unix/clock_nanosleep.c (clock_nanosleep): Diagnose EINVAL + for CLOCK_THREAD_CPUTIME_ID, not ENOTSUP. + Use SYSDEP_NANOSLEEP handler before validating CLOCK_ID value. - * intl/tst-gettext2.sh: Set GCONV_PATH and LOCPATH only after - invoking msgfmt, not before. + * rt/tst-timer4.c (TEST_CLOCK, TEST_CLOCK_NANOSLEEP): New macros. + Use them throughout in place of CLOCK_REALTIME and nanosleep. + (do_test) [TEST_CLOCK_MISSING]: Call this macro and if it returns + non-null, punt the test with a message using the string returned. + * rt/tst-timer5.c: New file. + * rt/Makefile (tests): Add it. -2003-09-15 Jakub Jelinek +2004-12-01 Paolo Bonzini - * argp/argp.h (argp_parse, __argp_parse): Remove __THROW. - * argp/Makefile (CFLAGS-argp-help.c, CFLAGS-argp-parse.c): Add - $(uses-callbacks). - * dirent/Makefile (CFLAGS-scandir.c, CFLAGS-scandir64.c): Likewise. - * elf/Makefile (CFLAGS-dl-iterate-phdr.c, - CFLAGS-dl-iterate-phdr-static.c): Add $(uses-callbacks). - * elf/dl-iteratephdr.c (cancel_handler): New function. - (__dl_iterate_phdr): Add __libc_cleanup_{push,pop}. - * elf/link.h (dl_iterate_phdr): Remove __THROW. - * io/Makefile (CFLAGS-fts.c): Merge into one assignment. - Add $(uses-callbacks). - (CFLAGS-ftw.c, CFLAGS-ftw64.c): Add $(uses-callbacks). - * misc/Makefile (CFLAGS-tsearch.c, CFLAGS-lsearch.c): Change - $(exceptions) to $(uses-callbacks). - * Makeconfig (uses-callbacks): Set to $(exceptions). - * posix/Makefile (CFLAGS-glob.c, CFLAGS-glob64.c): Add - $(uses-callbacks). - * stdlib/Makefile (CFLAGS-bsearch.c, CFLAGS-msort.c, CFLAGS-qsort.c): + * posix/regcomp.c (free_dfa_content, init_dfa): Remove + references to re_dfa_t's subexps field. + (parse_sub_exp, parse_expression): Do not use it. Use + completed_bkref_map instead. + (create_initial_state, peek_token): Store a backreference \N + with opr.idx = N-1. + * posix/regexec.c (proceed_next_node, check_dst_limits, get_subexp): Likewise. + (check_subexp_limits): Remove useless condition. + * posix/regex_internal.h (re_subexp_t): Remove. + (re_dfa_t): Remove subexps and subexps_alloc field, add + completed_bkref_map. -2003-09-15 Andreas Schwab - - * sysdeps/m68k/setjmp.c: Add hidden_def. - -2003-09-14 Ulrich Drepper - - * libio/memstream.c (open_memstream): Don't allow wide char operations. - - * dirent/dirent.h: Remove __THROW from scandir. - -2003-09-14 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/mmap.S: Use sys_mmap2 if it's known - to be available. - - * sysdeps/unix/sysv/linux/arm/mmap64.S: Optimise code a little. - - * sysdeps/arm/memset.S: Rewrite. - -2003-09-12 Jakub Jelinek +2004-12-05 Roland McGrath - * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New. - (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and - __SLONGWORD_TYPE otherwise. + * Makeconfig: Comment typo fix. -2003-09-14 Ulrich Drepper +2004-11-30 Andreas Schwab - * io/Makefile (CFLAGS-ftw.c): Add -fexceptions. - (CFLAGS-ftw64.c): Likewise. + * nis/ypclnt.c (ypprot_err): Remove unused entries. -2003-09-13 Ulrich Drepper +2004-11-30 Paolo Bonzini - * nscd/Makefile (CFLAGS-nscd_getpw_r.c): Add -fexceptions. - (CFLAGS-nscd_getgr_r.c): Likewise. - (CFLAGS-nscd_gethst_r.c): Likewise. + * posix/regexec.c (check_dst_limits_calc_pos_1): Check for + bkref_idx == -1, and don't recurse in that case. -2003-09-12 Ulrich Drepper +2004-11-30 GOTO Masanori - * sysdeps/unix/sysv/linux/if_index.c: Use only non-cancelable - interfaces. + * posix/confstr.c: Enclose #error message with double quote + for gcc-3.3 and lower. - * grp/Makefile (CFLAGS-getgrgid_r.c, CFLAGS-getgrnam_r.c, - CFLAGS-fgetgrent.c, CFLAGS-fgetgrent_r.c, CFLAGS-putgrent.c, - CFLAGS-initgroups.c, CFLAGS-getgrgid.c): Add -fexceptions. - * inet/Makefile (CFLAGS-either_ntoh.c, CFLAGS-either_hton.c, - CFLAGS-getnetgrent.c, CFLAGS-getnetgrent_r.c): Likewise. - * io/Makefile (CFLAGS-posix_fallocate.c, CFLAGS-posix_fallocate64.c): - Likewise. - * misc/Makefile (CFLAGS-err.c): Likewise. - * posix/Makefile (CFLAGS-getaddrinfo.c, CFLAGS-spawn.c, - CFLAGS-spawnp.c, CFLAGS-spawni.c, CFLAGS-pause.c, CFLAGS-glob.c, - CFLAGS-glob64.c): Likewise. - * pwd/Makefile (CFLAGS-getpw.c): Likewise. - * shadow/Makefile (CFLAGS-fgetspent.c, CFLAGS-fgetspent_r.c, - CFLAGS-putspent.c, CFLAGS-getspnam.c, CFLAGS-getspnam_r.c): Likewise. - * stdio-common/Makefile (CFLAGS-cuserid.c): Likewise. - * sunrpc/Makefile (CFLAGS-openchild.c): Likewise. +2004-12-04 Ulrich Drepper - * stdlib/Makefile (CFLAGS-mkstemp.c): Remove definition. + * sysdeps/unix/sysv/linux/i386/clone.S: Add support for NPTL where + the PID is stored at userlevel and needs to be reset when CLONE_THREAD + is not used. + * sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise. - * libio/stdio.h: Remove __THROW from cuserid prototype. +2004-11-18 Daniel Jacobowitz - * locale/loadarchive.c: Use only non-cancelable interfaces. - * resolv/herror.c (herror): Likewise. + * sysdeps/arm/sysdep.h: Define __USE_BX__ if bx is available. + Use it instead of __THUMB_INTERWORK__. Make RETINSTR take + only a condition and a register. + * sysdeps/arm/dl-machine.h: Use __USE_BX__ instead of + __THUMB_INTERWORK__. + (_dl_start_user): Use BX. + * sysdeps/arm/strlen.S: Use DO_RET. + * sysdeps/unix/arm/brk.S: Likewise. + * sysdeps/unix/arm/fork.S: Likewise. + * sysdeps/unix/arm/sysdep.S: Likewise. + * sysdeps/unix/arm/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/arm/clone.S: Update uses of RETINSTR. + * sysdeps/unix/sysv/linux/arm/mmap.S: Likewise. + * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise. + * sysdeps/unix/sysv/linux/arm/socket.S: Likewise. + * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/arm/vfork.S: Likewise. - * malloc/hooks.c: Before using IO stream mark stream so it uses - only non-cancelable interfaces. - * malloc/malloc.c: Likewise. - * posix/getopt.c: Likewise. +2004-12-02 Roland McGrath + * extra-lib.mk (object-suffixes-$(lib)): Add .oS when + $(lib)-static-only-routines is nonempty. + (extra-objs, o-iterator.mk rule): Filter out .oS from generators. + Add a special rule for .oS objects -> _nonshared.a library. -2003-09-11 Jakub Jelinek +2004-12-01 Jakub Jelinek - * Makerules (LDFLAGS-c.so): Remove -u __register_frame. + * time/mktime.c (__mktime_internal): If SEC_REQUESTED != SEC, + convert T2, not T. + * time/Makefile (tests): Add tst-mktime3. + * time/tst-mktime3.c: New test. -2003-09-12 Ulrich Drepper +2004-12-01 Jakub Jelinek - * stdio-common/stdio_ext.h: Mark most functions with __THROW. + * stdlib/stdlib.h (realpath): Remove nonnull attribute. - * misc/err.h: Remove __THROW from all prototypes. + * posix/fnmatch_loop.c (internal_fnmatch): Clear is_seqval after + normal_bracket label. - * posix/getopt.h (__THROW): Define if not already defined. Add - __THROW to the getopt functions. + * time/tst-mktime2.c (bigtime_test): Initialize tm.tm_isdst to -1. -2003-09-11 Ulrich Drepper +2004-12-01 Roland McGrath - * io/Makefile (CFLAGS-lockf.c): Add -fexceptions. - (CFLAGS-fts.c): Likewise. - * io/fcntl.h: Remove __THROW from lockf prototypes. - * io/fts.h: Remove most __THROW. + * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): + Do $(make-target-directory). -2003-09-11 H.J. Lu +2004-11-29 Roland McGrath - * elf/tls-macros.h (TLS_IE): Add a stop bit for ia64. - (TLS_LD): Likewise. - (TLS_GD): Likewise. + * posix/confstr.c: Avoid punctuation in #error text. -2003-09-11 Jakub Jelinek +2004-11-27 Ulrich Drepper - * libio/fileops.c (_IO_new_file_overflow): Add INTUSE to - _IO_free_backup_area call. + * posix/Makefile (tests): Add tst-sysconf. + * posix/tst-sysconf.c: New file. -2003-09-10 Chris Demetriou + * posix/getconf.c (vars): Add support for _SC_IPV6 and + _SC_RAW_SOCKETS. + * sysdeps/posix/sysconf.c (__sysconf): Add support for _SC_IPV6 + and _SC_RAW_SOCKETS. + * sysdeps/generic/bits/confname.h: Define _SC_IPV6 and + _SC_RAW_SOCKETS. - * sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Fix - syscall invocation. - * sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise. - * sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise. - Also, only assert off_t size is 4 for N32 and O32, and clean up - white space. - * sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise. +2004-11-26 Jakub Jelinek -2003-09-10 Roland McGrath + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. - * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): - Don't use c_ispeed under [! _HAVE_STRUCT_TERMIOS_C_ISPEED]. - Don't use c_ospeed under [! _HAVE_STRUCT_TERMIOS_C_OSPEED]. - * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise. - Reported by Daniel Jacobowitz . +2004-11-26 Kaz Kojima -2003-09-10 Jakub Jelinek + * sysdeps/unix/sysv/linux/mips/pread.c: Include sgidefs.h only if + NO_SGIDEFS_H isn't defined. Don't include sgidefs.h twice. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - * string/Makefile (strop-tests): Add memccpy. - * string/test-memccpy.c: New test. +2004-11-27 Ulrich Drepper -2003-09-09 Jakub Jelinek + * include/dlfcn.h (__libc_dlopen): Add __RTLD_DLOPEN to the mode + parameter. Reported by VY Newsum . - * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): Add - siginfo_t * argument before, change into struct ucontext *. - (SIGCONTEXT_EXTRA_ARGS): Define to _si,. - (GET_PC, GET_FRAME, GET_STACK): Adjust for ctx being a pointer - instead of structure. - * sysdeps/unix/sysv/linux/x86_64/register-dump.h (REGISTER_DUMP): - Likewise. +2004-11-10 Daniel Jacobowitz -2003-09-09 Ulrich Drepper + * libio/iolibio.h (_IO_fclose, _IO_new_fclose, _IO_old_fclose, + _IO_fflush, _IO_fgetpos, _IO_fgetpos64, _IO_fgets, _IO_fopen, + _IO_old_fopen, _IO_new_fopen, _IO_fopen64, __fopen_internal, + _IO_fprintf, _IO_fputs, _IO_fsetpos, _IO_fsetpos64, _IO_ftell, + _IO_fread, _IO_fwrite, _IO_gets, _IO_printf, _IO_puts, _IO_scanf, + _IO_fflush_internal, _IO_ftell_internal, _IO_fputs_internal) + _IO_fwrite_internal): Remove incorrect __THROW. + * libio/libioP.h (_IO_default_xsputn, _IO_wdefault_xsputn, + _IO_default_xsgetn, _IO_wdefault_xsgetn, _IO_default_write, + _IO_default_read, _IO_getline, _IO_getline_info, _IO_getwline, + _IO_getwline_info, _IO_file_read_internal, _IO_sgetn_internal, + _IO_wdo_write_internal, _IO_do_write_internal, + _IO_getline_info_internal, _IO_getline_internal, + _IO_vfprintf_internal, _IO_putc_internal, _IO_read, _IO_write, + _IO_close): Likewise. - * string/stratcliff.c (main): Check memccpy. +2004-11-26 Jakub Jelinek -2003-04-11 Jes Sorensen + * posix/Makefile (install-others): Add $(inst_libexecdir)/getconf. + (CFLAGS-sysconf.c): Add -D_GETCONF_DIR. + (CFLAGS-getconf.c): New. + ($(inst_libexecdir)/getconf): New. + * posix/confstr.c (confstr): Use __sysconf to query specifications + that don't have _POSIX_V6_* macros defined. Use __*_{C,LD}FLAGS + macros defined in bits/environments.h. + * sysdeps/posix/sysconf.c: Include stdlib.h, string.h and + sys/stat.h. + (__sysconf_check_spec): New routine. + (__sysconf): Use it. + * posix/getconf.c (specs): Change into structure array. + (main): If -v is not given, try to get default from + $(libexecdir)/getconf/default. If specification is not + supported by this getconf, try to execute + $(libexecdir)/getconf/$(specification). + * sysdeps/unix/bsd/bsd4.4/freebsd/bits/environments.h: New file. + * sysdeps/unix/sysv/linux/s390/bits/environments.h: New file. + * sysdeps/unix/sysv/linux/powerpc/bits/environments.h: New file. + * sysdeps/unix/sysv/linux/sparc/bits/environments.h: New file. + * sysdeps/unix/sysv/linux/i386/bits/environments.h: New file. + * sysdeps/unix/sysv/linux/x86_64/bits/environments.h: New file. + * sysdeps/generic/bits/environments.h (__ILP32_OFFBIG_CFLAGS): + Define. - * sysdeps/ia64/memccpy.S: When recovering for src_aligned and the - character is found during recovery, use correct register when - determining the position of the found character. + * stdlib/stdlib.h (setenv): Use nonnull only for second argument. + (unsetenv): Remove. -2003-04-01 Jes Sorensen +2004-11-23 Paolo Bonzini - * sysdeps/ia64/memccpy.S: Use speculatively loads for readahead to - avoid segfaults when reading from unmapped pages. For aligned - reload and continue, for misaligned, roll back and use byte copy. - Save ar.ec on entry and restore on exit. + * posix/regcomp.c (analyze_tree): Always call calc_epsdest. + (calc_inveclosure): Use re_node_set_insert_last. + (parse_dup_op): Lower X{1,5} to (X(X(X(XX?)?)?)?)? + rather than X?X?X?X?X?. + * posix/regex_internal.h (re_node_set_insert_last): New declaration. + * posix/regex_internal.c (re_node_set_insert_last): New function. + * posix/PCRE.tests: Add testcases. -2003-09-09 Chris Demetriou +2004-11-25 Ulrich Drepper - * sysdeps/unix/mips/sysdep.h (PSEUDO_END): Undef before defining. + * dlfcn/dlfcn.h: Remove nonnull attribute from dlopen. -2003-09-08 Chris Demetriou + * posix/confstr.c (confstr): Return appropriate strings for + _CS_LFS_LINTFLAGS, _CS_LFS64_CFLAGS, and _CS_LFS64_LINTFLAGS. - * sysdeps/mips/mips64/n32/Implies: Move ieee754/ldbl-128 to - the top of the list. - * sysdeps/mips/mips64/n64/Implies: Likewise. +2004-11-05 Maciej W. Rozycki -2003-09-08 Roland McGrath + * sysdeps/mips/dl-machine.h: Include . Use _ABIO32, + _ABIN32 and _ABI64 for ABI selection throughout. + * sysdeps/mips/elf/start.S: Likewise. + * sysdeps/mips/mips64/__longjmp.c: Likewise. + * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. + * sysdeps/mips/mips64/bsd-setjmp.S: Likewise. + * sysdeps/mips/mips64/setjmp.S: Likewise. + * sysdeps/mips/mips64/setjmp_aux.c: Likewise. + * sysdeps/mips/sys/regdef.h: Likewise. + * sysdeps/mips/sys/ucontext.h: Likewise. + * sysdeps/unix/mips/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/kernel-features.h: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/procfs.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise. - * sysdeps/unix/sysv/linux/speed.c - (cfsetospeed): Only set c_ospeed under [_HAVE_STRUCT_TERMIOS_C_OSPEED]. - (cfsetispeed): Only set c_ispeed under [_HAVE_STRUCT_TERMIOS_C_ISPEED]. - * sysdeps/unix/sysv/linux/bits/termios.h - (_HAVE_STRUCT_TERMIOS_C_ISPEED, _HAVE_STRUCT_TERMIOS_C_OSPEED): Define. - * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise. + * sysdeps/mips/atomicity.h: Use _ABIO32, _ABIN32 and _ABI64 for + ABI selection throughout. + * sysdeps/mips/bits/setjmp.h: Likewise. + * sysdeps/mips/fpu/bits/mathdef.h: Likewise. + * sysdeps/mips/machine-gmon.h: Likewise. + * sysdeps/mips/sys/asm.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/tas.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/user.h: Likewise. -2003-09-08 Ulrich Drepper + * sysdeps/mips/sgidefs.h: Prevent from being + included by kernel headers and undo its settings if already + included. Define _ABIO32, _ABIN32 and _ABI64 if missing and use + them to define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32 and + _MIPS_SIM_ABI64 for compatibility. + * sysdeps/unix/sysv/linux/mips/Makefile: Use _ABIO32, _ABIN32 and + _ABI64 for ABI selection in generated syscall-list.h + * sysdeps/unix/sysv/linux/mips/configure.in: Use _ABIO32, _ABIN32 + and _ABI64 for ABI selection in generated asm-unistd.h. + * sysdeps/unix/sysv/linux/mips/configure: Regenerate. - * sysdeps/unix/sysv/linux/x86_64/register-dump.h: Undo last change. - * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Correct + an inverted _MIPS_SIM conditional. -2003-09-08 Jakub Jelinek +2004-11-23 Alexandre Oliva - * sysdeps/generic/bits/types.h (__quad_t): Make long int if 64-bit. - (__u_quad_t): Make unsigned long int if 64-bit. - (__SQUAD_TYPE): Make long int if 64-bit. - (__UQUAD_TYPE): Make unsigned long int if 64-bit. - * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove. + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Use free + range even if it doesn't match exactly. -2003-09-08 Ulrich Drepper +2004-11-23 Jakub Jelinek - * Makefile (tests): Run check-c++-types.sh if possible. - * scripts/check-c++-types.h: New file. - * scripts/data/c++-types-i386-linux-gnu.data: New file. + * nss/nss_files/files-XXX.c (internal_getent): If parse_line returned + -1, also do H_ERRNO_SET (NETDB_INTERNAL). -2003-09-08 Andreas Jaeger +2004-11-22 Ulrich Drepper - * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump): - Use struct sigcontext. + * sysdeps/i386/fpu_control.h: Add volatile to the asms. + Patch by Alexander Stohr. - * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): - Use struct sigcontext. - (GET_PC): Adopt. - (GET_FRAME): Likewise. - (GET_STACK): Likewise. +2004-11-22 Jakub Jelinek -2003-09-08 Wolfram Gloger + * nscd/nscd_getai (__nscd_getai): Avoid memory and file descriptor + leaks. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Free air. - * malloc/malloc.c (sYSMALLOc): Move foreign sbrk accounting into - contiguous case. Bug report from Prem Gopalan . - (mALLOPt): Avoid requirement of C99. +2004-11-15 Maciej W. Rozycki -2003-09-08 Ulrich Drepper + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h (__SI_MAX_SIZE): + Define appropriately based on __WORDSIZE. + [struct siginfo] (__pad0): Add for explicit padding. - * libio/bug-ftell.c: Include . - (main): Mark cp as const. + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Formatting fixes + throughout. -2003-09-07 Jakub Jelinek +2004-11-22 Ulrich Drepper - * sysdeps/unix/sysv/linux/syscalls.list (fcntl): Remove. - * sysdeps/unix/sysv/linux/x86_64/fcntl.c: Remove. + * dirent/dirent.h: Add nonnull attributes. + * dlfcn/dlfcn.h: Likewise. -2003-09-05 Roland McGrath +2004-11-20 Jakub Jelinek - * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Fill in c_ispeed - and c_ospeed fields. - * sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Set c_ospeed field. - (cfsetispeed): Set c_ispeed field. - * sysdeps/unix/sysv/linux/tcsetattr.c (IBAUD0): Define unconditionally - to match corresponding speed.c code. + * sysdeps/ieee754/k_standard.c: Document code 50. + (__kernel_standard) : Avoid raising div-by-zero + exception again. -2003-09-06 Ulrich Drepper +2004-11-19 H.J. Lu - * libio/wfileops.c (_IO_wfile_underflow): Mark beginning of the - narrow character buffer. - * libio/Makefile: Add rules to build and run bug-ftell. - * libio/bug-ftell.c: New file. + [BZ #552] + * math/libm-test.inc (tgamma_test): Update tgamma (0) and + tgamma (-0). + * sysdeps/generic/w_tgamma.c (__tgamma): Properly handle |x| == 0. + * sysdeps/generic/w_tgammaf.c (__tgammaf): Likewise. + * sysdeps/generic/w_tgammal.c (__tgammal): Likewise. + * sysdeps/ieee754/dbl-64/e_gamma_r.c (__ieee754_gamma_r): Likewise. + * sysdeps/ieee754/flt-32/e_gammaf_r.c: Likewise. + * sysdeps/ieee754/ldbl-128/e_gammal_r.c: Likewise. + * sysdeps/ieee754/ldbl-96/e_gammal_r.c: Likewise. + * sysdeps/ieee754/k_standard.c (__kernel_standard): Handle + tgamma (0) and tgamma (-0). - * stdio-common/vfprintf.c: Don't use the first grouping number twice. +2004-11-20 Ulrich Drepper - * stdio-common/vfscanf.c (vfscanf): Fix recognition of characters - matching the decimal point and possibly leading the thousands - separator. This caused the recognition of thousands separators to - always fail. + * time/tzfile.c (__tzfile_read): Avoid open for checking whether + the file we already use changed. -2003-09-05 Ulrich Drepper + * misc/syslog.c: Remove !USE_IN_LIBIO code. - * libio/fileops.c (_IO_new_file_overflow): Handle switching to - write mode from read in backup buffer. - * libio/Makefile (tests): Add bug-ungetc2. - * libio/bug-ungetc2.c: New file. +2004-11-20 Jakub Jelinek -2003-09-05 Roland McGrath + * signal/signal.h (__sysv_signal, sysv_signal, signal, bsd_signal, + ssignal): Remove __nonnull attribute. - * nss/getXXbyYY.c (FUNCTION_NAME): Remove unused variable. +2004-11-20 Kaz Kojima -2003-09-04 Roland McGrath + * sysdeps/unix/sysv/linux/sh/sys/procfs.h: New file. - * sysdeps/mach/hurd/mmap.c (__mmap): If io_map fails with MIG_BAD_ID, - EOPNOTSUPP, or ENOSYS, change it to ENODEV. +2004-11-20 Ulrich Drepper -2003-09-04 H.J. Lu + * signal/signal.h: Add nonnull attributes. - * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ): - Fix a typo. + * signal/signal.h: Add deprecated attributes to sigstack, + sigpause, sigblock, sigsetmask, siggetmask. -2003-09-05 Andreas Jaeger +2004-11-20 Jakub Jelinek - * sysdeps/i386/bits/string.h (__memrchr): Do addition in assembler - to make it conforming C. - * sysdeps/i386/i486/bits/string.h (__memrchr): Likewise. + * sysdeps/unix/sysv/linux/bits/socket.h (SCM_RIGHTS): Avoid + comma at the end of enum if __USE_BSD is not defined. - * sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Change - prototype to use variable argument lists and get the possible one - argument via va_arg. - * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Likewise. - * sysdeps/unix/sysv/linux/x86_64/fcntl.c: New. +2004-11-19 Ulrich Drepper -2003-09-04 Ulrich Drepper + * malloc/malloc.c (_int_malloc): Check for corruption of chunk + which is about to be returned. - * posix/unistd.h: Add back __THROW to sysconf, pathconf, fpathconf. + * malloc/malloc.c (_int_free): Add a few more cheap tests for + corruption. - * sysdeps/unix/sysv/linux/pathconf.c (__statfs_filesize_max): - Report correct value for vxfs. - * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define VXFS_SUPER_MAGIC. +2004-11-17 Randolph Chung - * gmon/gmon.c: Use only not-cancelable syscalls to write profiling - data. + * sysdeps/hppa/dl-machine.h (TRAMPOLINE_TEMPLATE): Add unwind + annotations. - * sysdeps/generic/utmp_file.c: Use not-cancelable syscalls all - over the place. It would be allowed to have these functions as - cancellation points but the cleanup would be ugly and a lot of - work. +2004-11-18 Jakub Jelinek - * sysdeps/generic/not-cancel.h (fcntl_not_cancel): Define. - * sysdeps/unix/sysv/linux/not-cancel.h (fcntl_not_cancel): Define. + [BZ #544] + * posix/regex.h (RE_NO_SUB): New define. + * posix/regex_internal.h (OP_DELETED_SUBEXP): New. + (re_dfa_t): Add subexp_map. + * posix/regcomp.c (struct subexp_optimize): New type. + (optimize_subexps): New routine. + (re_compile_internal): Call it. + (re_compile_pattern): Set preg->no_sub to 1 if RE_NO_SUB. + (free_dfa_content): Free subexp_map. + (calc_inveclosure, calc_eclosure): Skip OP_DELETED_SUBEXP nodes. + * posix/regexec.c (re_search_internal): If subexp_map + is not NULL, duplicate registers as needed. + * posix/Makefile: Add rules to build and run tst-regex2. + * posix/tst-regex2.c: New test. + * posix/rxspencer/tests: Fix last two tests (\0 -> \1). + Add some new tests for nested subexpressions. - * include/fcntl.h (__fcntl_nocancel): Declare. - * sysdeps/unix/sysv/linux/fcntl.c: New file. - * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Only enable - cancellation if absolutely needed. - (__fcntl_nocancel): Define. +2004-11-18 Ulrich Drepper - * posix/unistd.h (gethostid): Remove __THROW. Clarify comment. - * sysdeps/unix/sysv/linux/Makefile (CFLAGS-gethostid.c): Add - -fexceptions. - * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Use - extend_alloca. + * libio/libio.h (_IO_FLAGS2_FORTIFY): Renamed from + _IO_FLAGS2_CHECK_PERCENT_N. + * debug/fprintf_chk.c: Adjust all users. + * debug/printf_chk.c: Likewise. + * debug/vfprintf_chk.c: Likewise. + * debug/vprintf_chk.c: Likewise. + * debug/vsnprintf_chk.c: Likewise. + * debug/vsprintf_chk.c: Likewise. + * stdio-common/vfprintf.c: Likewise. Detect missing %N$ formats. + * debug/tst-chk1.c: Test detection of missing %N$ formats. - * resolv/res_init.c (__res_nclose): Use close_not_cancel_no_status - instead of __close. +2004-11-15 Jakub Jelinek - * nss/getXXbyYY.c (FUNCTION_NAME): Add a few casts. Remove - unnecessary errno handling. + * posix/bug-regex24.c: Include string.h. - * nss/getXXbyYY_r.c (INTERNAL): Use better variable name. - Initialize it in all cases. Change it to be a bit more like the - code we had before. + * nis/nis_clone_obj.c (nis_clone_object): Rename out3 label to out2 + and out2 to out. Remove out label. Formatting. -2003-09-04 Jakub Jelinek +2004-11-15 Ulrich Drepper - * libio/fileops.c (_IO_file_read, _IO_new_file_write): Add - __builtin_expect. - (_IO_file_open): Likewise. Use close_not_cancel. + * include/stdio.h: Do not mark __libc_message as noreturn. + * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Add loop to + fool gcc. Include . + * sysdeps/posix/libc_fatal.c (__libc_fatal): Add loop to fool gcc. + (__libc_message): Fix typo. -2003-09-04 Ulrich Drepper +2004-11-13 Ulrich Drepper - * libio/libio.h: Define _IO_FLAGS2_NOTCANCEL. - * libio/fileops.c [_LIBC]: Remove close macro. - (_IO_file_open): If _IO_FLAGS2_NOTCANCEL is set, use open_not_cancel. - (_IO_new_file_open): Recognize 'c' flag in mode string. - (_IO_file_read): If _IO_FLAGS2_NOTCANCEL is set use read_not_cancel. - (_IO_new_file_write): If _IO_FLAGS2_NOTCANCEL is set use - write_not_cancel. - * iconv/gconv_conf.c: Use fopen with 'c' mode flag. - * inet/rcmd.c: Likewise. - * inet/ruserpass.c: Likewise. - * intl/localealias.c: Likewise. - * malloc/mtrace.c: Likewise. - * misc/getpass.c: Likewise. - * misc/getttyent.c: Likewise. - * misc/mntent_r.c: Likewise. - * misc/getusershell.c: Likewise. - * nss/nsswitch.c: Likewise. - * resolv/res_hconf.c: Likewise. - * resolv/res_init.c: Likewise. - * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. - * time/getdate.c: Likewise. - * time/tzfile.c: Likewise. - * misc/fstab.h: Undo last change. - * misc/mntent.h: Likewise. - * misc/Makefile: Remove CFLAGS-mntent_r.c, CFLAGS-mntent.c, and - CFLAGS-fstab.c definition. + * malloc/malloc.c (malloc_state): stat_lock_* elements need only + be defined if THREAD_STATS is defined. Remove pad0_ since it does + not align with cache line sizes in general anyway. -2003-09-04 Jakub Jelinek +2004-11-13 Jakub Jelinek - * sysdeps/generic/unwind.h (_Unwind_GetBSP): Add prototype. + * elf/rtld.c (print_statistics): Avoid segfaults if not all namespaces + are used. Fix computation of num_relative_relocations on RELA + architectures other than IA-64 and Alpha. -2003-09-03 Ulrich Drepper +2004-11-13 Ulrich Drepper - * nss/getXXbyYY_r.c (INTERNAL): Explicitly set errno and avoid - returning ERANGE if this wasn't intended. + * malloc/malloc.c (_int_free): Use munmap_chunk for handling + mmaped memory. -2003-09-03 Jakub Jelinek +2004-11-12 Ulrich Drepper - * intl/loadmsgcat.c (open, close, read, mmap, munmap): Define as - function-like macros. + * malloc/malloc.c (_int_free): Remove test for NULL parameter. + (_int_realloc): Call _int_free only if memory parameter is not NULL. -2003-09-03 Ulrich Drepper + * sysdeps/unix/sysv/linux/libc_fatal.c: Add new function __libc_message + which performs the printing and simple format string handling. The + string is written to tty, stderr, syslog in this order, stopping after + the first successful output. + (__libc_fatal): Call __libc_message. + * include/stdio.h: Declare __libc_message. + * malloc/malloc.c (malloc_printerr): Use __libc_message. + * debug/chk_fail.c: Also print message with __libc_message. + * debug/test-strcpy_chk.c: Ensure that debug messages are not printed + to the terminal or stderr. + * debug/tst-chk1.c: Likewise. - * grp/Makefile (CFLAGS-getgrent_r.c): Add -fexceptions. - (CFLAGS-getgrent.c): Likewise. - * pwd/Makefile (CFLAGS-getpwent_r.c): Add -fexceptions. - (CFLAGS-getpwent.c): Likewise. - * shadow/Makefile (CFLAGS-getspent_r.c): Add -fexceptions. - (CFLAGS-getspent.c): Likewise. + * posix/Makefile: Remove gpl2lgpl variable. - * inet/Makefile: Add -fexceptions to CFLAGS for the various - getXXent and getXXbyYY functions. +2004-11-12 Martin Schwidefsky - * locale/loadlocale.c: Use not-cancelable variants of open, close, - and read. + * elf/elf.h: Add 20 bit relocations R_390_*20. -2003-09-02 Jakub Jelinek +2004-11-12 Jakub Jelinek - * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove - rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, rt_sigqueueinfo and - rt_sigpending. - * sysdeps/unix/sysv/linux/alpha/sigaction.c (__syscall_rt_sigaction): - New prototype. - * sysdeps/unix/sysv/linux/arm/syscalls.list (__syscall_*): Remove - unused __syscall_ stubs. - * sysdeps/unix/sysv/linux/arm/Makefile (sysdep_routines): Remove - rt_*. - * sysdeps/unix/sysv/linux/cris/Makefile: Removed. - * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list - (__syscall_recvfrom, __syscall_sendto): Remove unused aliases. - * sysdeps/unix/sysv/linux/mips/syscalls.list (__syscall_*): Remove - unused __syscall_ stubs. - * sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines): Remove rt_*. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list - (__syscall_*): Remove unused __syscall_ stubs. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list - (__syscall_*): Likewise. - * sysdeps/unix/sysv/linux/powerpc/Makefile (sysdep_routines): Remove - rt_*. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__syscall_*): - Remove unused __syscall_ stubs. - * sysdeps/unix/sysv/linux/sh/Makefile (sysdep_routines): Remove rt_*. - * sysdeps/unix/sysv/linux/rt_sigaction.c: Removed. - * sysdeps/unix/sysv/linux/rt_sigpending.c: Removed. - * sysdeps/unix/sysv/linux/rt_sigprocmask.c: Removed. - * sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: Removed. - * sysdeps/unix/sysv/linux/rt_sigreturn.c: Removed. - * sysdeps/unix/sysv/linux/rt_sigsuspend.c: Removed. - * sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Removed. - * sysdeps/unix/sysv/linux/s_pread64.c: Removed. - * sysdeps/unix/sysv/linux/s_pwrite64.c: Removed. - * sysdeps/unix/sysv/linux/alpha/gethostname.c: Remove unused - __syscall_* prototypes. - * sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Likewise. - * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. - * sysdeps/unix/sysv/linux/i386/fchown.c: Likewise. - * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getmsg.c: Likewise. - * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise. - * sysdeps/unix/sysv/linux/i386/lockf64.c: Likewise. - * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/i386/putmsg.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setuid.c: Include linux/posix_types.h. * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setregid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/fxstat.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/m68k/chown.c: Likewise. - * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/ustat.c: Likewise. - * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/execve.c: Likewise. - * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise. - * sysdeps/unix/sysv/linux/reboot.c: Likewise. - * sysdeps/unix/sysv/linux/_exit.c: Likewise. - * sysdeps/unix/sysv/linux/ftruncate64.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/gai_sigqueue.c: Likewise. - * sysdeps/unix/sysv/linux/readahead.c: Likewise. - * sysdeps/unix/sysv/linux/getcwd.c: Likewise. - * sysdeps/unix/sysv/linux/sigwait.c: Likewise. - * sysdeps/unix/sysv/linux/getdents.c: Likewise. - * sysdeps/unix/sysv/linux/readv.c: Likewise. - * sysdeps/unix/sysv/linux/getpriority.c: Likewise. - * sysdeps/unix/sysv/linux/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/ipc_priv.h: Likewise. - * sysdeps/unix/sysv/linux/llseek.c: Likewise. - * sysdeps/unix/sysv/linux/sysctl.c: Likewise. - * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/mmap64.c: Likewise. - * sysdeps/unix/sysv/linux/ustat.c: Likewise. - * sysdeps/unix/sysv/linux/poll.c: Likewise. - * sysdeps/unix/sysv/linux/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/writev.c: Likewise. - * sysdeps/unix/sysv/linux/pread.c: Likewise. - * sysdeps/unix/sysv/linux/ptrace.c: Likewise. - * sysdeps/unix/sysv/linux/sigpending.c: Likewise. - * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/sigqueue.c: Likewise. - * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. - * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. - * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. - * sysdeps/unix/sysv/linux/truncate64.c: Likewise. - * sysdeps/unix/sysv/linux/xmknod.c: Likewise. - * sysdeps/unix/sysv/linux/xstat64.c: Likewise. - -2003-09-02 Jakub Jelinek - - * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Revert last change. - * sysdeps/unix/sysv/linux/powerpc/syscalls.list: New file. - * sysdeps/unix/sysv/linux/sparc/syscalls.list: New file. - -2003-09-02 Ulrich Drepper - - * stdio-common/Makefile (CFLAGS-vprintf.c): Add -fexceptions. - - * intl/loadmsgcat.c: For _LIBC, call not cancelable versions of - open, close, and read. + * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Also define - *_nocancel name. +2004-11-12 Andreas Schwab - * sysdeps/unix/sysv/linux/i386/syscalls.list: Add waitpid. + * nis/ypclnt.c (ypprot_err): Fix "minor optimizations". - * libio/Makefile (CFLAGS-oldtmpfile.c): Add -fexceptions. - * sysdeps/generic/tmpfile.c (tmpfile): Use __unlink instead of remove. - * libio/oldtmpfile.c (__old_tmpfile): Likewise. +2004-11-12 Ulrich Drepper - * misc/Makefile (CFLAGS-getusershell.c): Add -fexceptions. + * posix/Makefile (tests): Add bug-regex24. + * posix/bug-regex24.c: New file. - * io/Makefile (CFLAGS-statfs.c): Add -fexceptions. - (CFLAGS-fstatfs.c): Likewise. - (CFLAGS-statvfs.c): Likewise. - (CFLAGS-fstatvfs.c): Likewise. +2004-11-12 Paolo Bonzini -2003-09-01 Ulrich Drepper + * posix/regexec.c (check_dst_limits_calc_pos_1): Use the map to + cut recursive paths. Make exit condition more precise. + (match_ctx_add_entry): Initialize the map. + * posix/regex_internal.h (struct re_backref_cache_entry): Add a map of + reachable subexpression nodes from each backreference cache entry. - * misc/Makefile (CFLAGS-getsysstats.c): Add -fexceptions. - * posix/unistd.h: Remove __THROW from pathconf, fpathconf, - sysconf. - * posix/Makefile (CFLAGS-sysconf.c): Add -fexceptions. - (CFLAGS-pathconf.c): Likewise. - (CFLAGS-fpathconf.c): Likewise. +2004-11-10 Jakub Jelinek - * misc/Makefile (CFLAGS-fstab.c): Add -fexceptions. - * misc/fstab.h: Remove all __THROW. - * misc/Makefile (CFLAGS-mntent.c): Add -fexceptions. - (CFLAGS-mntent_r.c): Likewise. - * misc/mntent.h: Remove most __THROW. + * sysdeps/unix/sysv/linux/setreuid.c: Remove sys/syscall.h, + sys/types.h, linux/posix_types.h, sysdep.h and pthread-functions.h + includes. Include setxid.h. Use INLINE_SETXID_SYSCALL macro + instead of INLINE_SYSCALL, kill the HAVE_PTR__NPTL_SETXID guarded + snippets. + * sysdeps/unix/sysv/linux/setegid.c: Likewise. + * sysdeps/unix/sysv/linux/setuid.c: Likewise. + * sysdeps/unix/sysv/linux/seteuid.c: Likewise. + * sysdeps/unix/sysv/linux/setgid.c: Likewise. + * sysdeps/unix/sysv/linux/setresuid.c: Likewise. + * sysdeps/unix/sysv/linux/setresgid.c: Likewise. + * sysdeps/unix/sysv/linux/setregid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setegid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/seteuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setregid.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/setreuid.c: Likewise. + Formatting. Change signed int into int. + * sysdeps/unix/sysv/linux/alpha/setresuid.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/setresgid.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/setregid.c: Likewise. + * sysdeps/unix/sysv/linux/syscalls.list (setresuid, setresgid): + Remove. + * sysdeps/unix/setxid.h: New file. - * misc/Makefile (CFLAGS-mkstemp.c): Add -fexceptions. - (CFLAGS-mkstemp64.c): Likewise. + * Rules (binaries-static): Add xtests-static. + * Makeconfig (run-program-prefix): Filter also xtests-static. - * sysdeps/generic/wordexp.c (parse_comm): Disable cancellation - around call to exec_comm. - * posix/wordexp.h: Remove __THROW from wordexp. - * posix/Makefile (CFLAGS-wordexp.c): Add -fexceptions. +2004-11-09 Paul Eggert since it is marked as an obsolescent + interface. Include , , and instead. + (TYPE_BITS, TYPE_FLOATING, TYPE_SIGNED): New macros. + (subtract): New static function, that works correctly without + double-rounding, even on hosts with 64-bit time_t. Also cater + to hosts with padding bits. + (__difftime): Use it. Use DBL_MANT_DIG and LDBL_MANT_DIG to + determine whether floating types are wide enough: the old + test (which used sizeof) could in theory report the wrong results + on hosts with padding bits in floating-point values. - * libio/Makefile (CFLAGS-oldiofopen.c): Add -fexceptions. - (CFLAGS-iofopen.c): Likewise. - (CFLAGS-iofopen64.c): Likewise. +2004-11-11 Simon Josefsson - * stdlib/fmtmsg.c (fmtmsg): Disable cancellation around output - functions. - * stdlib/Makefile (CFLAGS-fmtmsg.c): Add -fexceptions. - * stdlib/fmtmsg.h: Remove __THROW from fmtmsg. + [BZ #542] + * sysdeps/generic/strtok_r.c [HAVE_CONFIG_H]: Include config.h. + [!_LIBC]: Include strtok_r.h (in gnulib), map __strtok_r to + strtok_r and __rawmemchr to strch. + (__strtok_r): Use C89 prototype. + [weak_alias]: Move calls to libc_hidden_def and weak_alias into + this #ifdef. - * stdlib/stdlib.h: Remove __THROW from posix_openpt and getpt. - * login/Makefile (CFLAGS-getpt.c): Add -fexceptions. +2004-11-10 Paul Eggert -2003-09-01 Thorsten Kukuk + [BZ #541] + * time/mktime.c (SHR): New macro, which is a portable + substitute for >> that should work even on Crays. + (TIME_T_MIDPOINT, ydhms_diff, __mktime_internal): Use it. + Problem reported by Mark D. Baushke in + . - * nis/nss_compat/compat-spwd.c (getspnam_plususer): Return - NSS_STATUS_SUCCESS if entry was found. - (getspent_next_file): Store user in blacklist after entry - was found, use innetgr. +2004-11-09 Paolo Bonzini -2003-09-01 Jakub Jelinek + * posix/regexec.c (match_ctx_free_subtops): Remove, merge into... + (match_ctx_clean): ... this function. + (match_ctx_free): Call match_ctx_clean. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c: New. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c: New. + * posix/regexec.c (transit_state): Remove the check for + out-of-bounds buffers. + (check_matching): Check here for out-of-bounds buffers. + (re_search_internal): Store into match_kind a set of bits + indicating which incantation of fastmap scanning must be + used. Use a switch statement instead of multiple ifs. + Exit the final "for (;;)" with goto free_return unless + the match succeeded, thus simplifying some conditionals. - * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Fix tls offset - computation for TCB_AT_TP. Support l_firstbyte_offset != 0 for - DTV_AT_TP, optimize. + * posix/regex_internal.c (re_string_reconstruct, + re_string_context_at): Add several branch predictions for + case-sensitive matching and no transition table being used. -2003-08-31 Kaz Kojima +2004-11-10 Ulrich Drepper - * sysdeps/unix/sysv/linux/sh/Versions: Add posix_fadvise64 and - posix_fallocate64 at GLIBC_2.3.3. - * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO_ERRVAL): Define. - (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise. + * posix/tst-waitid.c: Don't use error to print error message, they + won't end up in the .out file. -2003-08-08 H.J. Lu +2004-11-09 Ulrich Drepper - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove __syscall_ - functions. + * nscd/nscd-client.h (libc_locked_map_ptr): Add new first + parameter, used as class for definition. + * nscd/nscd_getpw_r.c: Adjust for libc_locked_map_ptr change. + (pw_map_free): Ensure no crash after memory is freed. + * nscd/nscd_getgr_r.c: Likewise. Make map externally visible. + * nscd/nscd_gethst_r.c: Likewise. + * nscd/nscd_getai.c: Use map from nscd_gethost.c. + * nscd/nscd_initgroups.c: Use map from nscd_getgr.c. -2003-08-31 Ulrich Drepper + * nscd/nscd_getai.c: Add some checks to detect corrupt databases. + * nscd/nscd_getgr_r.c: Likewise + * nscd/nscd_gethst_r.c: Likewise. + * nscd/nscd_getpw_r.c: Likewise - * libio/libioP.h (_IO_acquire_lock_fct): Define as inline function. - Code by Richard Henderson. +2004-11-09 Jakub Jelinek -2003-08-31 Philip Blundell + * posix/regcomp.c (calc_eclosure_iter): Don't access + dfa->edests[node].elems[0] if dfa->edests[node].nelem == 0. + * posix/rxspencer/tests: Add 5 new tests. - * sysdeps/unix/sysv/linux/arm/Versions: Add posix_fadvise64 and - posix_fallocate64 at GLIBC_2.3.3. +2004-11-09 Ulrich Drepper -2003-08-31 Ulrich Drepper + * sysdeps/unix/sysv/linux/ifaddrs.c: Determine sin6_scope_id field + value correctly. Patch by Mitsuru Kanda . - * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET. - * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp. +2004-11-04 Jakub Jelinek -2003-08-30 Jakub Jelinek + * libio/fileops.c (_IO_new_file_seekoff): If mode is 0 and + fp->_offset == _IO_pos_BAD, just call _IO_SYSSEEK (fp, 0, dir) + and if successful set fp->_offset. + * libio/Makefile (tests): Add bug-ungetc3. + * libio/bug-ungetc3.c: New test. - * sysdeps/generic/sysdep.h (cfi_window_save, CFI_WINDOW_SAVE): Define. - * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Allow file to be - included multiple times. - * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Pass - ptid, tls, ctid arguments to the kernel. - * sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c (__getpagesize): - Use INTERNAL_SYSCALL instead of __syscall_getpagesize. - * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c - (__libc_sigaction): Use INLINE_SYSCALL instead of - __syscall_rt_sigaction. - * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list - (__syscall_getgroups, __syscall_getpagesize, __syscall__llseek, - __syscall_setfsgid, __syscall_setfsuid, __syscall_setgid, - __syscall_setgroups, __syscall_setregid, __syscall_setreuid, - __syscall_ipc, __syscall_setuid, __syscall_rt_sigaction, - __syscall_rt_sigpending, __syscall_rt_sigprocmask, - __syscall_rt_sigqueueinfo, __syscall_rt_sigsuspend, - __syscall_rt_sigtimedwait): Remove unneeded syscall stubs. - * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (sysdep_routines): - Remove rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, - rt_sigqueueinfo, rt_sigaction and rt_sigpending. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h - (__CLONE_SYSCALL_STRING): Define. - * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Add - CFI directives. - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h - (__CLONE_SYSCALL_STRING): Define. - * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_CLONE_SYSCALL): - Define. - * sysdeps/unix/sysv/linux/sparc/system.c: New file. +2004-11-03 Marcus Brinkmann -2003-08-30 Ulrich Drepper + * sysdeps/gnu/_G_config.h (_G_HAVE_MREMAP): Define symbol. + * sysdeps/mach/hurd/_G_config.h: New file. + * libio/fileops.c (mmap_remap_check) [__linux__]: Replaced with + [_G_HAVE_MREMAP]. - * sunrpc/rpc/clnt.h: Remove a few __THROW. - * sunrpc/Makefile (CFLAGS-auth_unix.c): Add -fexceptions. - (CFLAGS-key_call.c): Likewise. - (CFLAGS-pmap_rmt.c): Likewise. - (CFLAGS-clnt_perr.c): Likewise. - * sunrpc/rpc/auth.h: Remove serveral __THROW. +2004-11-08 Ulrich Drepper - * inet/Makefile (CFLAGS-gethstbyad_r.c): Add -fexceptions. - (CFLAGS-gethstbynm_r.c): Likewise. - (CFLAGS-gethstbynm2_r.c): Likewise. - (CFLAGS-rcmd.c): Likewise. - * resolv/Makefile (CFLAGS-res_hconf.c): Add -fexceptions. + * posix/regcomp.c (utf8_sb_map): Define. + (free_dfa_content): Don't free dfa->sb_char if it's a pointer to + utf8_sb_map. + (init_dfa): Use utf8_sb_map instead of initializing memory when the + encoding is UTF-8. - * argp/Makefile (CFLAGS-argp-help.c): Add -fexceptions. - (CFLAGS-argp-fmtstream.c): Likewise. - * argp/argp.h: Remove a number of __THROW. +2004-11-03 Paolo Bonzini - * misc/sys/syslog.h (vsyslog): Remove __THROW. + * posix/regcomp.c (init_dfa): Get the codeset name outside glibc as + well. Check if it is spelled UTF8 as well as UTF-8, and check + case-insensitively. Set dfa->map_notascii manually when outside + glibc. + * posix/regex_internal.c (build_wcs_upper_buffer) [!_LIBC]: Enable + optimizations based on map_notascii. + * posix/regex_internal.h [HAVE_LANGINFO_H || HAVE_LANGINFO_CODESET + || _LIBC]: Include langinfo.h. - * misc/Makefile (CFLAGS-getpass.c): Add -fexceptions. - * misc/getpass.c (getpass): Add cleanup handler to ensure the - stream is closed even if the thread is canceled. - (call_fclose): New function. - * posix/unistd.h: Remove __THROW from getpass prototype. + * posix/regex_internal.h (struct re_backref_cache_entry): Add "more" + field. + * posix/regexec.c (check_dst_limits): Hoist computation of the source + and destination bkref_idx out of the loop. Pass it to + check_dst_limits_calc_pos. + (check_dst_limits_calc_pos_1): New function, containing the recursive + loop of check_dst_limits_calc_pos; uses the "more" field of + struct re_backref_cache to control the loop. + (check_dst_limits_calc_pos): Store into "boundaries" the position + relative to lim's start and end positions. Do not accept eclosures, + accept bkref_idx instead. Call check_dst_limits_calc_pos_1 to do the + work. + (sift_states_bkref): Use the "more" field of struct re_backref_cache + to control the loop. A big "if" was turned into a continue and the + function was reindented. + (get_subexp): Use the "more" field of struct re_backref_cache + to control the loop. + (match_ctx_add_entry): Initialize the bkref_ents' "more" field. + (search_cur_bkref_entry): Return -1 if out of bounds. - * posix/Makefile (CFLAGS-getopt.c): Add -fexceptions. + * posix/regexec.c (empty_set): Remove. + (sift_states_backward): Remove cur_src variable. Move inner loop + to build_sifted_states. + (build_sifted_states): Extract from sift_states_backward. Do not + use empty_set. + (update_cur_sifted_state): Do not use empty_set. Special case + dest_nodes->nelem == 0. - * signal/signal.h (psignal): Remove __THROW. - * stdio-common/Makefile (CFLAGS-psignal.c): Add -fexceptions. + * posix/regex_internal.h (struct re_backref_cache_entry): Remove flag + field. + (struct re_sift_context_t): Remove cur_bkref, cls_subexp_idx, + check_subexp fields. Move limits last. + * posix/regexec.c (match_ctx_clear_flag): Remove. + (sift_ctx_init): Remove check_subexp parameter. Do not set removed + fields. Callers adjusted. + (expand_bkref_cache): Remove last_str parameter. Callers adjusted. + (re_search_internal): Remove fast_translate variable. + (update_cur_sifted_state): Pass candidates as the final parameter + to sift_states_bkref. + (sift_states_bkref): Change last unused parameter to be "candidates", + do not fetch candidates into a local variable. + Remove dead test for "node == sctx->bkref", and the cur_bkref_idx + variable. + Remove loops that set/reset the flag field of backref cache entries. + (check_arrival_add_next_nodes): Use a signed int to hold the return + value of re_node_set_insert. + (group_nodes_into_DFAstates): Likewise. + (match_ctx_add_entry): Do not set the flag field of the new entry. - * misc/Makefile (CFLAGS-error.c): Define. - * misc/error.c (error): Disable cancellation handling around the - actual output. The message should in any case be printed. - (error_at_line): Likewise. +2004-11-05 Roland McGrath - * misc/error.h: Protect parameter names with leading __. + * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Define + _dl_sysinfo_dso under [NEED_DL_SYSINFO_DSO] as well. + * elf/rtld.c (dl_main): Set up GLRO(dl_sysinfo_dso) under + [NEED_DL_SYSINFO_DSO] as well. + * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Always include + AT_SYSINFO and AT_SYSINFO_EHDR in name table. + (_dl_sysdep_start) [NEED_DL_SYSINFO_DSO]: Match AT_SYSINFO_EHDR. + * elf/dl-support.c (_dl_sysinfo_dso): Define also under + [NEED_DL_SYSINFO_DSO]. + (_dl_aux_init) [NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO]: + Match AT_SYSINFO_EHDR and set GL(dl_sysinfo_dso). -2003-08-28 Carlos O'Donell +2004-11-05 Roland McGrath - * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop. + * manual/errno.texi (Error Codes): Revert last change for now. + * sysdeps/gnu/errlist.c: Regenerated. -2003-08-29 Jakub Jelinek +2004-11-04 Roland McGrath - * libio/iofgetpos64.c (_IO_new_fgetpos64): Move lock release to the - end. + * Makeconfig (link-libc, rpath-dirs): Remove AIX cruft definitions. + (LDFLAGS-rpath-ORIGIN, LDFLAGS-soname-fname): Likewise. + (LDFLAGS-rdynamic, LDFLAGS-Bsymbolic): Likewise. + ($(common-objpfx)gnu/lib-names.stmp): Likewise. -2003-08-29 Ulrich Drepper +2004-11-01 Jakub Jelinek - * libio/stdio.h: Remove a few more __THROW. + * sysdeps/unix/sysv/linux/x86_64/sys/procfs.h [__WORDSIZE == 32] + (elf_fpxregset_t): New type. + (struct elf_prpsinfo): If __WORDSIZE == 32, change pr_[ug]id type + to unsigned short int. + * sysdeps/unix/sysv/linux/x86_64/sys/user.h + (struct user_fpregs_struct): Fix comment. + * sysdeps/i386/fpu/bits/mathdef.h (float_t, double_t): If + __FLOAT_EVAL_METHOD__ is defined and 0, typedef to float resp. double. + * sysdeps/x86_64/fpu/bits/mathdef.h: Include bits/wordsize.h. + (float_t, double_t): If -m32 and not -mfpmath=sse, typedef to + long double. + * sysdeps/x86_64/fpu/bits/fenv.h: Include bits/wordsize.h. + (fenv_t): Remove __mxcsr field for -m32. -2003-08-29 Jakub Jelinek +2004-11-04 Jakub Jelinek - * libio/Makefile: Compile fputc.c, fputwc.c, freopen64.c, freopen.c, - fseek.c, fseeko64.c, fseeko.c, ftello64.c, ftello.c, fwide.c, getc.c, - getchar.c, getwc.c, getwchar.c, iofclose.c, iofflush.c, iofgetpos64.c, - iofgetpos.c, iofgets.c, iofgetws.c, iofputs.c, iofputws.c, iofread.c, - iofsetpos64.c, iofsetpos.c, ioftell.c, iofwrite.c, iogetdelim.c, - iogetline.c, iogets.c, iogetwline.c, ioputs.c, ioseekoff.c, - ioseekpos.c, iosetbuffer.c, iosetvbuf.c, ioungetc.c, ioungetwc.c, - oldfileops.c, oldiofclose.c, oldiofgetpos64.c, oldiofgetpos.c, - oldiofsetpos64.c, oldiofsetpos.c, peekc.c, putc.c, putchar.c, putwc.c, - putwchar.c and rewind.c with exceptions. - * sysdeps/generic/bits/stdio-lock.h (_IO_acquire_lock, - _IO_release_lock): Define. - * libio/fileops.c (_IO_new_file_underflow): Use it. - * libio/fputc.c (fputc): Likewise. - * libio/fputwc.c (fputwc): Likewise. - * libio/freopen64.c (freopen64): - * libio/freopen.c (freopen): Likewise. - * libio/fseek.c (fseek): Likewise. - * libio/fseeko64.c (fseeko64): Likewise. - * libio/fseeko.c (fseeko): Likewise. + * libio/ftello.c (ftello): Don't subtract save_end - save_base + if pos is _IO_pos_BAD. * libio/ftello64.c (ftello64): Likewise. - * libio/ftello.c (ftello): Likewise. - * libio/fwide.c (fwide): Likewise. - * libio/getc.c (_IO_getc): Likewise. - * libio/getchar.c (getchar): Likewise. - * libio/getwc.c (_IO_getwc): Likewise. - * libio/getwchar.c (getwchar): Likewise. - * libio/iofclose.c (_IO_new_fclose): - * libio/iofflush.c (_IO_fflush): Likewise. - * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise. * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. - * libio/iofgets.c (_IO_fgets): Likewise. - * libio/iofgetws.c (fgetws): Likewise. - * libio/iofputs.c (_IO_fputs): Likewise. - * libio/iofputws.c (fputws): Likewise. - * libio/iofread.c (_IO_fread): Likewise. - * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise. - * libio/iofsetpos.c (_IO_new_fsetpos): Likewise. - * libio/ioftell.c (_IO_ftell): Likewise. - * libio/iofwrite.c (_IO_fwrite): Likewise. - * libio/iogetdelim.c (_IO_getdelim): Likewise. - * libio/iogets.c (_IO_gets): Likewise. - * libio/ioputs.c (_IO_puts): Likewise. - * libio/ioseekoff.c (_IO_seekoff): Likewise. - * libio/ioseekpos.c (_IO_seekpos): Likewise. - * libio/iosetbuffer.c (_IO_setbuffer): Likewise. - * libio/iosetvbuf.c (_IO_setvbuf): Likewise. - * libio/ioungetc.c (_IO_ungetc): Likewise. - * libio/ioungetwc.c (ungetwc): Likewise. - * libio/oldiofclose.c (_IO_old_fclose): Likewise. - * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise. + * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise. * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise. - * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise. - * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise. - * libio/peekc.c (_IO_peekc_locked): Likewise. - * libio/putc.c (_IO_putc): Likewise. - * libio/putchar.c (putchar): Likewise. - * libio/putwc.c (putwc): Likewise. - * libio/putwchar.c (putwchar): Likewise. - * libio/rewind.c (rewind): Likewise. - * libio/wfileops.c (_IO_wfile_underflow): Likewise. - -2003-08-29 Ulrich Drepper - - * signal/signal.h: sighold, sigrelse, sigignore, sigset were - available in XPG4.2. - -2003-08-27 Phil Knirsch - Jakub Jelinek - - * sunrpc/svc.c (svc_getreqset): Fix fds_bits reading on 64-bit - big endian arches. Don't read beyond end of fds_bits array. - -2003-04-27 Bruno Haible - - * manual/message.texi (Advanced gettext functions): Add information - about Korean, Portuguese, Latvian. Gaeilge is also known as Irish. - Add section about Lithuanian, reported by Ricardas Cepas - . - Add information about Croatian. - Ukrainian is like Russian, reported by Andy Rysin . - Remove remark about continuation lines that is not true for PO files. - Fix formula for Slovenian, reported by Roman Maurer - . - -2003-08-27 Ulrich Drepper - - * math/math_private.h: Declare __copysignf. - * sysdeps/ieee754/flt-32/s_scalbnf.c: Use __copysignf instead of - copysignf. - - * sysdeps/x86_64/fpu/bits/mathinline.h: Define __signbitf, - __signbit, and __signbitl inline functions. - - * sysdeps/unix/sysv/linux/x86_64/__start_context.S: Use - HIDDEN_JUMPTARGET instead of JUMPTARGET to call exit(). - - * sysdeps/x86_64/bsd-_setjmp.S [PIC]: Jump to __GI___sigsetjmp. - * sysdeps/x86_64/setjmp.S: Add libc_hidden_def for __sigsetjmp. - -2003-08-27 Jakub Jelinek - - * inet/inet_mkadr.c (inet_makeaddr): Optimize. - -2003-08-27 Ulrich Drepper - - * include/stdio.h: Add declarations for __builtin_fwrite and - __builtin_fwrite_unlocked. - -2003-08-27 Jakub Jelinek - - * sysdeps/unix/opendir.c (__opendir): Make sure even struct dirent64 - fits into allocation. Add padding on 32-bit arches so that - dirp->data is enough aligned for struct dirent64. - Avoid clearing of the buffer, just clear DIR structure. - -2003-08-26 Ulrich Drepper - - * nss/nsswitch.c: Add libc_hidden_def for __nss_lookup_function. - * nss/nsswitch.h: Add libc_hidden_proto for __nss_lookup_function. - -2003-08-26 Steven Munroe - - * sysdeps/powerpc/powerpc64/elf/Makefile: New file. - -2003-08-26 Jakub Jelinek - - * login/programs/utmpdump.c (print_entry): Cast tv_usec to long - to match format string. - * sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (union semun): Add - __old_buf. - (__new_semctl): Shut up warning. - * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h - (_dl_string_hwcap): Add __attribute__ ((always_inline)). - -2003-08-26 Jakub Jelinek - - * elf/ldconfig.c (search_dir): When checking for GNU-style .so - link file use the real file name, not the resolved name we got by - following the symlinks. - -2003-08-25 Ulrich Drepper - - * libio/oldfileops.c (_IO_old_file_init): Initialize _mode field - if the object size is large enough. - -2003-08-25 Jakub Jelinek - - * elf/ldconfig.c (search_dir): Treat symlink as regular file - if it won't point to itself unless it is .so symlink for the linker. - -2003-08-25 Ulrich Drepper - - * libio/libio.h (_IO_fwide): In the mode==0 optimization, don't - use _mode if _IO_fwide_maybe_incompatible. - * libio/iofwide.c (_IO_fwide): Move the test for mode == 0 after - the compatibility test. - -2003-08-25 Jakub Jelinek - - * elf/cache.c (save_cache): Don't write beyond end of file_entries - buffer. - Duplicate last old cache entry if the count would be odd. - -2003-08-25 Andreas Jaeger - - * sysdeps/unix/sysv/linux/posix_fadvise64.c: Cast arguments of - __LONG_LONG_PAIR to long. - -2003-08-25 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_ERRVAL): Define. - (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise. - -2003-08-18 Alfred M. Szmidt - - * sysdeps/generic/bits/libc-lock.h (__libc_cleanup_pop): Redefine - and use __libc_cleanup_region_end instead. - -2003-08-25 Ulrich Drepper - - * elf/ldconfig.c (search_dir): Revert patch of 2003-7-21. - -2003-08-22 Ulrich Drepper - - * io/fcntl.h (posix_fallocate): Change type of third parameter to - off_t. - (posix_fallocate64): Change type of third parameter to off64_t. - * sysdeps/generic/posix_fallocate.c: Adjust for type change. - * sysdeps/posix/posix_fallocate.c: Likewise. - * sysdeps/generic/posix_fallocate64.c: Likewise. - * sysdeps/posix/posix_fallocate64.c: Likewise. Add compatibility - code for 32-bit platforms. - * sysdeps/unix/sysv/linux/i386/Versions: Add new version for - posix_fallocate64. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/Versions: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise. - -2003-08-19 Ulrich Drepper - - * string/bits/string2.h (__STRING2_COPY_TYPE): Add attribute to - the type, not to name. - - * stdio-common/test-vfprintf.c (main): Don't write temporary file - into source directory. - - * malloc/malloc.c (_int_free): Add cheap test for some invalid - block sizes. - - * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo in - syscall name. - -2003-08-18 Ulrich Drepper - - * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Fold EISDIR error - into EINVAL. - -2003-08-18 H.J. Lu - - * sysdeps/ia64/dl-machine.h (elf_machine_rela): Use _dl_reloc_bad_type. - (elf_machine_lazy_rel): Likewise. - -2003-08-18 Art Haas + * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise. + * libio/ioftell.c (_IO_ftell): Likewise. + Cast to long int instead of off_t when checking for overflow. - * malloc/malloc.h: Remove unneeded ';' where closing the C++ - extern block. +2004-11-04 Richard Henderson -2003-08-18 Ulrich Drepper + * sysdeps/unix/sysv/linux/alpha/register-dump.h (regnames): Align. + (linefeed): Remove. + (register_dump): Rewrite to generate into a flat buffer instead + of into iovecs. - * sysdeps/ia64/dl-fptr.h (ELF_MACHINE_LOAD_ADDRESS): Support - loading big binaries where @gprel(sym) cannot be handled in 'add' - but instead has to be used with 'movl'. +2004-11-02 Jakub Jelinek -2003-08-17 Juergen Kreileder - Andreas Jaeger + * debug/tst-chk1.c (ret): New volatile variable. + (CHK_FAIL_END): Remove redundant ret setting. + (do_test): Remote ret variable. - * sysdeps/x86_64/bits/byteswap.h: New file. +2004-01-03 Paolo Bonzini -2003-08-17 Andreas Jaeger + * posix/regex_internal.h (__regfree) [!_LIBC]: Define to regfree. - * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo. +2004-11-03 Marcus Brinkmann -2003-08-16 Jakub Jelinek + * sysdeps/generic/utime.c: Include . - * sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_ERRVAL, - PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define. - * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_ERRVAL, - PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define. - * sysdeps/unix/alpha/sysdep.h (PSEUDO_ERRVAL, - ret_ERRVAL, PSEUDO_END_ERRVAL): Define. - * sysdeps/unix/mips/sysdep.h (PSEUDO_ERRVAL, - ret_ERRVAL, PSEUDO_END_ERRVAL): Define. - * sysdeps/unix/sparc/sysdep.h (PSEUDO_ERRVAL, - ret_ERRVAL): Define. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_ERRVAL, - PSEUDO_END_ERRVAL, ret_ERRVAL): Define. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (PSEUDO_ERRVAL, - PSEUDO_END_ERRVAL, ret_ERRVAL): Define. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (PSEUDO_ERRVAL): - Define. - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_ERRVAL, - PSEUDO_END_ERRVAL, ret_ERRVAL): Define. - * sysdeps/unix/sysdep.h (PSEUDO_END_ERRVAL): Define. + * sysdeps/generic/sysconf.c: Include and . - * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64, - posix_fadvise64_64): Remove. - * sysdeps/unix/sysv/linux/alpha/syscalls.list (posix_fadvise64): Add - V flag. - * sysdeps/unix/sysv/linux/ia64/syscalls.list (posix_fadvise64): - Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list - (posix_fadvise64): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list - (posix_fadvise64): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list - (posix_fadvise64): Likewise. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list (posix_fadvise64): - Likewise. - * sysdeps/unix/sysv/linux/i386/posix_fadvise64_64.S: Moved to... - * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: ...here. - (__posix_fadvise64_l64): Fix a typo in fadvise64 syscall invocation. - (__posix_fadvise64_l32): New function. - * sysdeps/unix/sysv/linux/i386/Makefile: Revert last change. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions (libc): Export - posix_fadvise64@@GLIBC_2.3.3. - * sysdeps/unix/sysv/linux/s390/s390-32/Versions (libc): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (libc): Likewise. - * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Return - error value. - * sysdeps/unix/sysv/linux/posix_fadvise64.c: New file. + * sysdeps/generic/tempname.c (__path_search): Add missing argument + TRY_TMPDIR. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h - (SYSCALL_ERROR_HANDLER): Use TLS errno/__libc_errno if USE___THREAD. +2004-10-31 Mariusz Mazur -2003-08-15 Jakub Jelinek + * sysdeps/unix/sysv/linux/alpha/setregid.c: New file. + * sysdeps/unix/sysv/linux/alpha/setresgid.c: New file. + * sysdeps/unix/sysv/linux/alpha/setresuid.c: New file. + * sysdeps/unix/sysv/linux/alpha/setreuid.c: New file. - * sysdeps/sparc/sparc32/dl-machine.h (WEAKADDR): Remove. - (elf_machine_matches_host): Remove weak extern stuff. - Use GL(dl_hwcap) unconditionally and GL(dl_hwcap_mask) if SHARED. - (elf_machine_runtime_setup, sparc_fixup_plt): Remove weak extern - stuff. Use GL(dl_hwcap) unconditionally. +2004-10-27 Derek R. Price -2003-08-16 Alan Modra + [BZ #487] This change is imported from gnulib. + * time/mktime.c (not_equal_tm) [DEBUG]: Remove redundant check. - * sysdeps/powerpc/powerpc64/elf/start.S: Add a nop after - __libc_start_main branch. +2004-10-24 Paul Eggert -2003-08-16 Jakub Jelinek , - Andreas Jaeger + [BZ #473] + * time/tst-mktime.c (main): Don't assume that mktime fails + when given time stamps before 1970. It returns negative + time_t values instead, for compatibility with BSD. - * sysdeps/generic/posix_fadvise.c (posix_fadvise): Return ENOSYS - instead of setting errno. - * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise. + * time/tst-mktime2.c: New file. + * time/Makefile (tests): Add it. -2003-08-16 Andreas Jaeger + [BZ #473] Import from gnulib. Revamp to avoid several problems near + time_t extrema, and on hosts with 64-bit time_t and 32-bit int. + This fixes Debian bug 177940. + * time/mktime.c (TIME_T_MIDPOINT): New macro. + (ydhms_diff): Renamed from ydhms_tm_diff, with a new signature, + which avoids overflow problems on hosts with 64-bit time_t and + 32-bit int. All callers changed. Now an inline function. + Verify at compile-time that long int is wide enough to avoid + these overflow problems. + (guess_time_tm): New function. + (__mktime_internal): Use it. Avoid overflow when computing yday on + hosts with 64-bit long and 32-bit int. Remove tests for 69; + no longer needed. Use if rather than #ifdef for LEAP_SECONDS_POSSIBLE + so that the code is checked by more compilers. + Do not rely on floating point to probe: stick to integer arithmetic, + to avoid potential porting problems. + Repair potential overflow correctly in the Southern Hemisphere. + (localtime_offset): Add a FIXME for the case where time_t is unsigned. - * sysdeps/generic/posix_fadvise.c (posix_fadvise): Adjust prototype. - * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise. +2004-10-30 Andreas Schwab -2003-08-15 Ulrich Drepper + * sysdeps/m68k/dl-machine.h (elf_machine_rela) + (elf_machine_rela_relative, elf_machine_lazy_rel): Mark auto + instead of static. - * io/fcntl.h (posix_fadvise64): Change type of third parameter to - off_t. - * sysdeps/unix/sysv/linux/posix_fadvise.c: Adjust definition. - * sysdeps/unix/make-syscalls.sh: Recognize V prefix to the parameter - description indicating the error value is returned, not -1. - * sysdeps/unix/sysv/linux/kernel-features.h: Add definition of - __ASSUME_FADVISE64_64_SYSCALL. - * sysdeps/unix/sysv/linux/syscalls.list: Don't define madvise and - posix_madvise in one file. Have posix_madvise defined with error - value returned. - Define posix_fadvise64_64 entry. Add version info to posix_fadvise64 - entry. - * sysdeps/unix/sysv/linux/i386/posix_fadvise.S: New file. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PSEUDO_ERRVAL, - PSEUDO_END_ERRVAL, and ret_ERRVAL. - * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/i386/Versions [GLIBC_2.3.3]: Add - posix_fadvise64. +2004-10-30 Andreas Schwab - * posix/Makefile (routines): Add posix_madvise. - * sysdeps/generic/madvise.c: Don't define posix_madvise. - * sysdeps/generic/posix_madvise.c: New file. - * sysdeps/unix/sysv/aix/posix_madvise.c: New file. - * sysdeps/unix/sysv/linux/i386/Makefile [subdir=io] (subdir_routines): - Add posix_fadvise64_64. + * sysdeps/unix/sysv/linux/waitid.c: Include for NULL. -2003-08-15 Jakub Jelinek +2004-10-30 Ulrich Drepper - * assert/assert.h (assert_perror): Use __builtin_expect for gcc >= - 3.0, not for !gcc or gcc < 3.0. + * malloc/malloc.c (_int_free): Use unique comments for the error + cases. -2003-08-11 Carlos O'Donell +2004-10-28 Roland McGrath - * dlfcn/default.c (main): Cast dlsym loaded value to same type as main. - Address passed to test_in_mod1 and test_in_mod2 without casting. - * dlfcn/defaultmod1.c: Change prototype of test_in_mod1. - (test_in_mod1): Cast dlsym loaded value to same type as mainp. - * dlfcn/defaultmod2.c: Change prototype of test_in_mod2. - (test_in_mod2): Cast dlsym loaded value to same type as mainp. + * sysdeps/mach/hurd/i386/tls.h (_hurd_tls_fork): Use i386_thread_state + instead of machine_thread_state. -2003-08-15 Jakub Jelinek +2004-10-28 Roland McGrath - * sysdeps/sparc/sparc32/elf/configure.in (libc_cv_sparc32_tls): - Change quotes before using []. + * sysdeps/unix/sysv/linux/syscalls.list: Remove setaltroot. - * sysdeps/unix/sysv/linux/sparc/sys/user.h: New file. +2004-10-28 Ulrich Drepper - * sysdeps/sparc/sparc32/bits/atomic.h (__sparc32_atomic_lock): - Renamed to... - (__sparc32_atomic_locks): ...this. Change into 64-byte array. - (__sparc32_atomic_do_lock, __sparc32_atomic_do_unlock): Add addr - argument. Select one of 64 locks from address bits. - (atomic_compare_and_exchange_val_acq, - atomic_compare_and_exchange_bool_acq): Pass memory address to - __sparc32_atomic_do_{,un}lock. + * elf/dl-open.c (dl_open_worker): Remove reference to glibcbug script. -2003-08-14 Ulrich Drepper +2004-10-27 Ulrich Drepper - * assert/assert.h (assert): Use !! in front of expression to allow - use of pointers. + * elf/dl-load.c (_dl_map_object): Use cache_rpath to check for + existing rpath in main executable, not explicit test. - * iconvdata/cp932.c: Fixed checking of a few border of code areas. - Changed conversion of JIS X 0201 from using a table to calculating. - * iconvdata/euc-jp-ms.c: Fixed conversion table and rewrote - conversion routine. Changed CHARSET_NAME definition from EUCJP-MS to - EUC-JP-MS. - * iconvdata/tst-tables.sh: Add CP932 and EUC-JP-MS. - * iconvdata/CP932.irreversible: New file. - * iconvdata/EUC-JP-MS.irreversible: New file. - Patch by MORIYAMA Masayuki . +2004-10-27 Jakub Jelinek -2003-08-13 Ulrich Drepper + * include/resolv.h (_res_opcodes): New extern. + Add libresolv_hidden_proto. + * resolv/res_debug.c (_res_opcodes): Remove. + (__p_class_syms, __p_type_syms): Add libresolv_hidden_proto + and libresolv_hidden_data_def. Remove attribute_hidden. + * resolv/res_mkquery (_res_opcodes): Remove. + * resolv/res_data.c (_res_opcodes): Remove attribute_hidden. + Add libresolv_hidden_data_def. - * sysdeps/unix/sysv/linux/i386/syscalls.list: Add time syscall. +2004-10-27 Ulrich Drepper - * elf/Makefile: Use LC_ALL=C in a few cases where we call external - text processing tools. + * elf/dl-open.c (_dl_open): Don't allow explicitly opening a DSO + into an empty namespace. - * sysdeps/pthread/aio_misc.h (struct waitlist): Don't add caller_pid - element unless BROKEN_THREAD_SIGNALS is defined. - (struct requestlist): Likewise. - * sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Don't fill in - caller_pid of new request unless BROKEN_THREAD_SIGNALS is defined. - * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise. - * sysdeps/pthread/aio_notify.c (__aio_notify_only): Remove caller_pid - parameter unless BROKEN_THREAD_SIGNALS is defined. Adjust callers. - Pass current PID to __aio_sigqueue. - * sysdeps/pthread/lio_listio.c (lio_listio): Adjust __aio_notify_only - call. Don't initialize caller_pid field of waitlist element. + * elf/dl-fini.c (_dl_fini): Fix search for map in maps array. + Reverse order of namespaces. + * elf/Makefile: Add rules to build and run tst-dlmopen3. + * elf/tst-dlmopen3.c: New file. + * elf/tst-dlmopen1mod.c: Add check whether constructor runs. -2003-08-12 Jakub Jelinek +2004-10-27 Jakub Jelinek - * libio/libioP.h (_IO_vtable_offset): Define. - * libio/freopen.c (freopen): Use it. - * libio/ioputs.c (_IO_puts): Likewise. - * libio/freopen64.c (freopen64): Likewise. - * libio/genops.c (__underflow, __uflow, _IO_flush_all_lockp): - Likewise. - * libio/iofclose.c (_IO_new_fclose): Likewise. - * libio/iofputs.c (_IO_fputs): Likewise. - * libio/ioftell.c (_IO_ftell): Likewise. - * libio/iofwrite.c (_IO_fwrite): Likewise. - * libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise. - * libio/iosetbuffer.c (_IO_setbuffer): Likewise. - * stdio-common/vfprintf.c (ORIENT, vfprintf): Likewise. - * stdio-common/vfscanf.c (ORIENT): Likewise. + * sysdeps/generic/glob.c (globfree): Clear gl_pathv after freeing it. + * posix/Makefile: Add rules to build and run bug-glob2 test. + * posix/bug-glob2.c: New test. -2003-08-11 Ulrich Drepper +2004-10-27 Roland McGrath - * assert/assert.h: Use __builtin_expect in assert and - assert_perror definitions if possible. + * sysdeps/mach/hurd/i386/tls.h (HURD_TLS_DESC_DECL): New macro. + (_hurd_tls_init): Use it. + (_hurd_tls_fork): New function. + * sysdeps/mach/hurd/fork.c (__fork) [USE_TLS]: Call it. -2003-08-07 Jakub Jelinek +2004-10-26 Roland McGrath - * sysdeps/generic/ldsodefs.h (_rtld_global): Add - _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive. - * elf/rtld.c (rtld_lock_default_lock_recursive, - rtld_lock_default_unlock_recursive): New functions. - (dl_main): Initialize _dl_rtld_lock_recursive and - _dl_rtld_unlock_recursive. + * sysdeps/mach/hurd/i386/tls.h (_hurd_tls_init): Initialize TCB->tcb. -2003-08-05 Jakub Jelinek +2004-10-26 Jakub Jelinek - * elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to - config_file directories instead of prepending. + * sysdeps/gnu/netinet/udp.h (struct udphdr): Use u_int16_t + type instead of uint16_t. Formatting. -2003-08-02 Ulrich Drepper +2004-10-25 Roland McGrath - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_CLONE_STOPPED. + * login/openpty.c (openpty): Add libutil_hidden_def. -2003-08-01 Ulrich Drepper + * nss/nss_files/files-parse.c (nss_files_parse_hidden_def): Define to + either libc_hidden_def or libnss_files_hidden_def, not hidden_def. + This file is also compiled into libnss_hesiod by #include. - * sysdeps/generic/bits/libc-lock.h - (__libc_cleanup_push,__libc_cleanup_pop): Define even here. +2004-10-25 Roland McGrath -2003-08-01 Roland McGrath + * sysdeps/unix/bsd/hp: Directory and all files removed. + These are now in the ports repository. + * sysdeps/unix/bsd/osf: Likewise. + * sysdeps/unix/bsd/sequent: Likewise. + * sysdeps/unix/bsd/sony: Likewise. + * sysdeps/unix/bsd/ultrix4: Likewise. + * sysdeps/unix/sysv/aix: Likewise. + * sysdeps/unix/sysv/hpux: Likewise. + * sysdeps/unix/sysv/irix4: Likewise. + * sysdeps/unix/sysv/isc2.2: Likewise. + * sysdeps/unix/sysv/minix: Likewise. + * sysdeps/unix/sysv/sco3.2.4: Likewise. + * sysdeps/unix/sysv/sco3.2: Likewise. + * sysdeps/unix/sysv/sysv4: Likewise. - * sysdeps/mach/hurd/getdents.c: Just use sysdeps/generic/getdents.c. + * configure.in (ASM_LINE_SEP): Move this setting to ... + * sysdeps/hppa/configure.in: ... here, new file. + * sysdeps/hppa/configure: New generated file. + * configure: Regenerated. -2003-07-31 Jakub Jelinek +2004-10-25 Kaz Kojima - * sysdeps/generic/bits/types.h (__ssize_t): Use __SSIZE_T_TYPE - instead of __SWORD_TYPE. - * sysdeps/generic/bits/typesizes.h (__SSIZE_T_TYPE): Define. - * sysdeps/mach/hurd/bits/typesizes.h (__SSIZE_T_TYPE): Define. - * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h (__SSIZE_T_TYPE): - Define. - * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE): - Define. - * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE): - Define. - * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file. + * sysdeps/sh/dl-machine.h: Include sysdep.h. + (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add CFI directives. + (elf_machine_runtime_setup): Add always_inline attribute. + (_dl_start_user): Pass the correct environ. + (elf_machine_rela): Replace static inline by auto inline, add + always_inline attribute. + (elf_machine_rela_relative): Likewise. + (elf_machine_lazy_rel): Likewise. - * dlfcn/dlerror.c (once): New. - (dlerror): Call __libc_once. - (_dlerror_run): Remove once. +2004-10-24 Ulrich Drepper - * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext): - Sync with 2.5.7 and 2.5.73 kernel changes. + * nis/nis_call.c: Pretty printing. Minor cleanups. + * nis/nis_addmember.c (nis_addmember): Add assert to check buffer + bounds. - * dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings. - * elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd - formats to size_t. - * elf/dl-lookup.c (_dl_debug_bindings): Likewise. - * elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid. - * elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2. - * gmon/tst-sprofil.c (main): Add parens to shut up warning. - * iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer - difference argument. - * stdio-common/tst-wc-printf.c (main): Cast arguments with %C - format to wint_t. - * stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use - %d format and cast expected value to int. - * sysdeps/generic/libc-start.c (STATIC): Add - __attribute__((always_inline) if LIBC_START_MAIN is already defined. - * sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t - to ieee_float_shape_type. - (__sqrt): Avoid type punning. - * sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t - to ieee_float_shape_type. - (__sqrtf): Avoid type punning. - * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define - refsym if in dl-conflict.c. - * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf. - (__new_semctl): Shut up warning. - * sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf. - (__new_semctl): Shut up warning. - * sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines. - Change old into union of __old_shmid_ds and __old_shminfo structs. - Adjust all users. - * wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t. + * resolv/nss_dns/dns-host.c: Avoid using PLTs. + * include/libc-symbols.h: Define hidden attribute macros for + libnss_nisplus and libutil. + * include/utmp.h: Add libutil_hidden_proto for login_tty. + * login/login_tty.c: Add libutil_hidden_def. + * nis/nisplus-parser.h: Add libnss_nisplus_hidden_proto for parsers. + * nis/nss_nisplus/nisplus-parser.c: Add libnss_nisplus_hidden_def. + * include/pty.h: New file. + * include/rpcsvc/yp.h: New file. + * include/rpcsvc/ypclnt.h: New file. + * include/rpcsvc/ypupd.h: New file. + * include/libc-symbols.h: Define hidden attribute macros for libnsl. + * include/rpcsvc/nislib.h: Use libnsl_hidden_proto for various + functions. + * nis/nis_add.c: Add libnsl_hidden_def. Minor optimizations. + * nis/nis_call.c: Likewise. + * nis/nis_clone_obj.c: Likewise. + * nis/nis_defaults.c: Likewise. + * nis/nis_domain_of_r.c: Likewise. + * nis/nis_error.c: Likewise. + * nis/nis_file.c: Likewise. + * nis/nis_free.c: Likewise. + * nis/nis_local_names.c: Likewise. + * nis/nis_lookup.c: Likewise. + * nis/nis_modify.c: Likewise. + * nis/nis_print.c: Likewise. + * nis/nis_remove.c: Likewise. + * nis/nis_subr.c: Likewise. + * nis/nis_table.c: Likewise. + * nis/nis_util.c: Likewise. + * nis/yp_xdr.c: Likewise. + * nis/ypclnt.c: Likewise. + * nis/ypupdate_xdr.c: Likewise. - * sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and - modtime computation. - * sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise. - * sysdeps/posix/utimes.c (__utimes): Likewise. + * resolv/res_send.c (send_dg): Cope with failures. -2003-07-30 Jakub Jelinek + * include/libc-symbols.h: Define hidden attribute macros for + libnss_files. + * include/netdb.h: Use libnss_files_hidden_proto for the parsers + defined in libnss_files, not libc_hidden_proto. + * include/netinet/ether.h: Likewise. + * include/rpc/netdb.h: Likewise. + * nss/nss_files/files-parse.c: Use hidden_def in parser definitions + instead of libc_hidden_def. + * nss/nss_files/files-netgrp.c: Add libnss_files_hidden_def to + _nss_netgroup_parseline definition. - * elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value, - call dl_signal_error directly. If already relocated, call - GL(dl_init_static_tls) directly, otherwise queue it for later. - (CHECK_STATIC_TLS): Undo 2003-07-24 change. - * elf/rtld.c (dl_main): Initialize GL(dl_init_static_tls). - * elf/dl-open.c (dl_open_worker): Call GL_dl_init_static_tls - for all static TLS initializations delayed in _dl_allocate_static_tls. - * elf/dl-support.c (_dl_init_static_tls): New variable. - * include/link.h (struct link_map): Add l_need_tls_init. - * sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_init_static_tls. - (_dl_nothread_init_static_tls): New prototype. - (_dl_allocate_static_tls): Adjust prototype. +2004-10-23 Roland McGrath - * elf/tls-macros.h (VAR_INT_DEF): Add alignment directive. + * sysdeps/mach/hurd/i386/tls.h (_hurd_tls_init): Don't return early + after an RPC succeeds. -2003-07-31 Alexandre Oliva + * sysdeps/vax, sysdeps/unix/bsd/vax: Directories and all files removed. + These are now in the ports repository. + * sysdeps/tahoe, sysdeps/unix/bsd/tahoe: Likewise. + * sysdeps/cris, sysdeps/unix/sysv/linux/cris: Likewise. + * sysdeps/am29k, sysdeps/i860, sysdeps/i960, sysdeps/m88k: Likewise. + * sysdeps/standalone, sysdeps/z8000: Likewise. - * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela, - elf_machine_rel_relative, elf_machine_rela_relative): Don't assume - reloc_addr is aligned. - * sysdeps/alpha/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela, - elf_machine_rel_relative, elf_machine_rela_relative): Adjust. - * sysdeps/cris/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/hppa/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela, - elf_machine_rel_relative, elf_machine_rela_relative): Adjust. - * sysdeps/ia64/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/m68k/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/mips/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/powerpc/powerpc64/dl-machine.h - (elf_machine_rela_relative, elf_machine_rela): Adjust. - * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/sh/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. - * sysdeps/x86_64/dl-machine.h (elf_machine_rela, - elf_machine_rela_relative): Adjust. +2004-10-23 Ulrich Drepper -2003-07-29 Ulrich Drepper + * resolv/res_send.c (send_dg): Combine write and read to socket + into one loop. - * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Restore - alignment of TCB used before the last change so that it matches - ld's output for IE code. +2004-10-22 Roland McGrath -2003-07-29 Jakub Jelinek + * Makefile (%.bz2, %.gz): Move these pattern rules ... + * Makerules: ... to here. - * include/ctype.h (__ctype_b_loc, __ctype_toupper_loc, - __ctype_tolower_loc): Avoid "dereferencing type-punned pointer will - break strict-aliasing rules" warnings. +2001-10-31 Alexandre Oliva -2003-07-29 Roland McGrath + * elf/elf.h: Add R_MN10300_* relocation numbers. - * elf/Makefile: Revert accidental changes in last commit. - * elf/dl-support.c: Likewise. +2004-10-22 Paul Eggert - * rt/tst-timer2.c: New file. - * rt/Makefile (tests): Add it. + [BZ #471] Fix imported from gnulib. + * time/mktime.c (leapyear, ydms_tm_diff): Year is of type + long int, not int, to avoid problems when tm_year == INT_MAX + and tm_mon > 12. + (__mktime_intenral): Compute year using long int arithmetic, + not int arithmetic, to avoid problems on hosts where time_t + and long are 64 bits but int is 32. -2003-07-25 Jakub Jelinek + [BZ #468] Import a fix from gnulib. + * time/mktime.c [! DEBUG]: Do not include . + It's needed only if DEBUG is nonzero. - * elf/dl-support.c (_dl_hwcap): Add nocommon attribute. + [BZ #470] Import fix from gnulib. + * time/mktime.c [!_LIBC] (__mktime_internal): Define to + mktime_internal, to avoid clashes with any __mktime_internal + function defined in the standard library. -2003-07-29 Roland McGrath + [BZ #469] Imported from gnulib. + * time/mktime.c (__isleap): Remove; all uses replaced by: + (leapyear): New function, which avoids overflow by not adding + 1900 to year before testing whether it is a leap year. - * elf/Makefile (tests) [$(build-shared) = yes]: - Depend on $(test-modules). - * dlfcn/Makefile: Likewise. + [BZ #472] Imported from gnulib. + * time/mktime.c (Local Variables): Remove -DHAVE_TIME_R_POSIX; + no longer used. -2003-07-28 Roland McGrath +2004-10-22 Ulrich Drepper - * sysdeps/generic/bits/types.h (__STD_TYPE): New macro. - Use that instead of `typedef' when using __*_TYPE macros in rhs. + * resolv/res_send.c: Remove compatibility code which is unused in + glibc and probably bitrotten. - * elf/tst-tls14.c [USE_TLS && HAVE___THREAD]: Conditionalize on this. - * elf/tst-tlsmod14a.c: Likewise. + * debug/execinfo.h: Remove __THROW from backtrace prototype. - * sysdeps/unix/sysv/linux/sys/sysctl.h: Include - before . +2004-10-22 Jakub Jelinek -2003-07-27 Ulrich Drepper + * sysdeps/i386/Makefile (CFLAGS-backtrace.c): Add -fexceptions. + * sysdeps/i386/backtrace.c: Include , , + and . Remove include. + (struct trace_arg): New type. + (unwind_backtrace, unwind_getip, unwind_getcfa, unwind_getgr): New + fn pointers resp. macros. + (init, backtrace_helper): New functions. + (__backtrace): Rewritten to use _Unwind_Backtrace first and fall + back to frame pointer walking. - * sysdeps/unix/sysv/syscalls.list: time syscall never fails. - * sysdeps/unix/sysv/linux/x86_64/time.S: time syscall never fails. - * sysdeps/unix/sysv/i386/time.S: time syscall never fails. - * sysdeps/unix/syscalls.list: umask syscall never fails. +2004-10-22 Ulrich Drepper -2003-07-27 Andreas Jaeger + * sysdeps/unix/sysv/linux/Versions: Things are still in flux, it + seems. Undo last additions. - * sysdeps/unix/sysv/linux/init-first.c: Mark init as used. +2004-10-21 Ulrich Drepper -2003-07-25 Jakub Jelinek + * posix/execvp.c (execvp): Also ignore ENODEV and ETIMEDOUT errno + values. - * sysdeps/unix/sysv/linux/a.out.h: Replace with i386 version. - Include bits/a.out.h. - * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add - bits/a.out.h. - * sysdeps/unix/sysv/linux/bits/a.out.h: New file. - * sysdeps/unix/sysv/linux/i386/bits/a.out.h: New file. - * sysdeps/unix/sysv/linux/m68k/bits/a.out.h: New file. - * sysdeps/unix/sysv/linux/x86_64/bits/a.out.h: New file. - * sysdeps/unix/sysv/linux/alpha/a.out.h: New file. - * sysdeps/unix/sysv/linux/alpha/bits/a.out.h: New file. - * sysdeps/unix/sysv/linux/sparc/a.out.h: New file. - * sysdeps/unix/sysv/linux/sparc/bits/a.out.h: New file. +2004-10-20 Roland McGrath -2003-07-24 Jakub Jelinek + * Makeconfig ($(common-objpfx)shlib-versions.v.i): Check also + $(config-sysdirs) for shlib-versions files. - * sysdeps/pthread/aio_cancel.c (aio_cancel): Return AIO_ALLDONE - if aiocbp != NULL and has already completed. Return -1/EINVAL if - aiocbp->aio_fildes does not match fildes. + * Makeconfig ($(common-objpfx)soversions.i): Replace shell loop with + use of ... + * scripts/soversions.awk: ... this new file. Collect lib info and + match any DEFAULT line before emitting anything, so DEFAULT can come + later in the concatenation of shlib-versions files. -2003-07-24 Ulrich Drepper + * manual/errno.texi (Error Codes): Add ENOKEY, EKEYEXPIRED, + EKEYREVOKED, EKEYREJECTED. + * sysdeps/unix/sysv/linux/Versions (libc: GLIBC_2.3.4): New errlist. + * sysdeps/gnu/errlist.c: Regenerated - * timezone/zic.c (rpytime): Replace cheap overflow check with a - functioning one. + * sysdeps/gnu/errlist-compat.awk: Don't bail if Versions gives a count + higher than ERR_MAX reports. Instead, emit a #define ERR_MAX. + * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.h): New target. + (generated): Add errlist-compat.h. + * sysdeps/gnu/errlist.awk: Make output #include to + define ERR_MAX and use that for table size. - * include/link.h (struct link_map): Add l_tls_firstbyte_offset field. - * sysdeps/generic/dl-tls.c [TLS_TCB_AT_TP] (_dl_determine_tlsoffset): - Fix calculation of offsets to take misalignment of first byte in - file into account. - * elf/dl-load.c (_dl_map_object_from_fd): Initialize - l_tls_firstbyte_offset field. - * elf/rtld.c (_dl_start_final, _dl_start, dl_main): Likewise. - * elf/dl-reloc.c (_dl_allocate_static_tls): Change return type to int. - Take l_tls_firstbyte_offset information into account. - (CHECK_STATIC_TLS): _dl_allocate_static_tls can fail now. - * sysdeps/generic/ldsodefs.h: Adjust _dl_allocate_static_tls prototype. - * elf/Makefile: Add rules to build and run tst-tls14. - * elf/tst-tls14.c: New file. - * elf/tst-tlsmod14a.c: New file. - * elf/tst-tlsmod14b.c: New file. +2004-10-20 Ulrich Drepper -2003-07-23 Jakub Jelinek + * sysdeps/unix/sysv/linux/syscalls.list: Add entries for setaltroot, + key_add, key_request, and keyctl syscalls. + * sysdeps/unix/sysv/linux/Versions: Export them. - * sysdeps/pthread/lio_listio.c (LIO_OPCODE_BASE): Define. - (lio_listio): Use it. - * sysdeps/pthread/lio_listio64.c: Include lio_listio.c instead of - after few defines to avoid duplication. +2004-10-19 Roland McGrath -2003-07-22 Jakub Jelinek + * sysdeps/mach/readonly-area.c: New file. - * include/stdio.h (__libc_fatal): Add libc_hidden_proto. - * include/dlfcn.h (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose): - Likewise. - * elf/dl-libc.c (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose): - Add libc_hidden_def. - * sysdeps/generic/libc_fatal.c (__libc_fatal): Likewise. - * sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise. - * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Likewise. - * elf/Versions (libc): Export __libc_dlopen_mode@@GLIBC_PRIVATE, - __libc_dlsym@@GLIBC_PRIVATE and __libc_dlclose@@GLIBC_PRIVATE. - * libio/Versions (libc): Export __libc_fatal@@GLIBC_PRIVATE. - * sysdeps/generic/unwind-dw2.c: Readd #ifs removed during last - change. - * sysdeps/generic/unwind.inc: Removed. +2004-10-19 Ulrich Drepper - * include/resolv.h (__resp): Declare. Define to __libc_resp - if in libc.so. - (_res): If USE___THREAD, define to (*__resp). - * resolv/res_libc.c (_res): Normal .bss variable with compat_symbol - even if USE___THREAD. - (__resp): New __thread variable. - (__libc_resp): New alias. - * resolv/Versions (libc): Export _res@GLIBC_2.0 even if - USE_TLS && HAVE___THREAD. Export __resp@@GLIBC_PRIVATE. - * sysdeps/generic/res-state.c (__res_state): Return __resp - if USE___THREAD. + * elf/Versions [ld, GLIBC_PRIVATE]: Add _dl_debug_state. + * elf/dl-debug.c (_dl_debug_state): Add rtld_hidden_def. + * sysdeps/generic/ldsodefs.h (_dl_debug_state): Don't mark as + hidden but use rtld_hidden_proto. -2003-07-22 H.J. Lu +2004-10-19 Alfred M. Szmidt - * elf/dl-support.c (_dl_hwcap): New variable. - (_dl_aux_init): Initialize GL(dl_hwcap) for static binaries. + * sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ... + (__readonly_area): ... this. - * sysdeps/i386/fpu/fclrexcpt.c: Include , - and . - (__feclearexcept): Clear MXCSR if needed. - * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. +2004-10-18 Jakub Jelinek - * sysdeps/i386/fpu_control.h (_FPU_GETCW, _FPU_SETCW): Document - that newer hardware needs more than these macros. + * sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking + destlen only every 4 bytes. - * sysdeps/i386/setfpucw.c: New file. +2004-10-19 Ulrich Drepper -2003-07-22 Jakub Jelinek + * nss/getent.c (hosts_keys): Let inet_pton decide whether the + string is an address or not. - * elf/Makefile (CFLAGS-ldconfig.c): Define IS_IN_ldconfig. - * elf/ldconfig.c: Include dl-procinfo.c. - (PROCINFO_CLASS): Define. - * sysdeps/generic/ldsodefs.h (PROCINFO_CLASS): Define. - * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: New file. - * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: New file. - * sysdeps/unix/sysv/linux/i386/dl-procinfo.c (PROCINFO_CLASS): - Define if not yet defined. Use it instead of EXTERN. Undefine - at the end of the file. - * sysdeps/unix/sysv/linux/arm/dl-procinfo.c (PROCINFO_CLASS): - Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c - (PROCINFO_CLASS): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c - (PROCINFO_CLASS): Likewise. +2004-10-19 Jakub Jelinek -2003-07-22 H.J. Lu + * elf/dl-addr.c (_dl_addr): Don't look at STT_TLS symbols. + Use DL_SYMBOL_ADDRESS to set dli_saddr. - * elf/ldconfig.c (main): Issue a fatal error if relative path - is used to build cache. + * debug/Makefile (catchsegv): Prefix $LIB with a backslash. -2003-07-22 Ulrich Drepper +2004-10-19 Ulrich Drepper - * elf/readlib.c (process_file): Avoid possible overflow in assignment. + * debug/Makefile ($(objpfx)catchsegv): To support multilib + platforms, use $LIB in path to slibdir. -2003-07-21 Art Haas +2004-10-19 Jakub Jelinek - * manual/charset.texi (Converting a Character): Fix example code so a - valid pointer is returned. + * debug/catchsegv.sh: Update copyright year. + Use mktemp to create segv_output file. -2003-07-22 Andreas Jaeger +2004-10-18 Jakub Jelinek - * elf/readlib.c (process_file): Check that file is a shared - object. + * elf/dl-libc.c (__libc_dlsym_private, __libc_register_dl_open_hook): + New functions. + (__libc_dlopen_mode): Call __libc_register_dl_open_hook and + __libc_register_dlfcn_hook. + * dlfcn/Makefile (routines, elide-routines.os): Set. + Add rules to build and test tststatic2. + * dlfcn/tststatic2.c: New test. + * dlfcn/modstatic2.c: New test module. + * dlfcn/dladdr.c: Call _dlfcn_hook from libdl.so if not NULL. + Define __ prefixed routine in libc.a and in libdl.a just call it. + * dlfcn/dladdr1.c: Likewise. + * dlfcn/dlclose.c: Likewise. + * dlfcn/dlerror.c: Likewise. + * dlfcn/dlinfo.c: Likewise. + * dlfcn/dlmopen.c: Likewise. + * dlfcn/dlopen.c: Likewise. + * dlfcn/dlopenold.c: Likewise. + * dlfcn/dlsym.c: Likewise. + * dlfcn/dlvsym.c: Likewise. + * dlfcn/sdladdr.c: New file. + * dlfcn/sdladdr1.c: New file. + * dlfcn/sdlclose.c: New file. + * dlfcn/sdlerror.c: New file. + * dlfcn/sdlinfo.c: New file. + * dlfcn/sdlopen.c: New file. + * dlfcn/sdlsym.c: New file. + * dlfcn/sdlvsym.c: New file. + * dlfcn/Versions (libdl): Export _dlfcn_hook@GLIBC_PRIVATE. + * include/dlfcn.h (DL_CALLER_DECL, DL_CALLER RETURN_ADDRESS): Define. + (struct dlfcn_hook): New type. + (_dlfcn_hook): New extern decl. + (__dlopen, __dlclose, __dlsym, __dlerror, __dladdr, __dladdr1, + __dlinfo, __dlmopen, __libc_dlsym_private, + __libc_register_dl_open_hook, __libc_register_dlfcn_hook): New + prototypes. + (__dlvsym): Use DL_CALLER_DECL. + * include/libc-symbols.h: Define libdl_hidden_proto and friends. - * elf/sofini.c (__FRAME_END__): Use attribute used so that gcc - will not optimize it away. - (__DTOR_END__): Likewise. - (__CTOR_END__): Likewise. + * malloc/arena.c (_dl_open_hook): Extern decl. + (ptmalloc_init): Don't call _dl_addr when dlopened from statically + linked programs but don't use brk for them either. - * include/libc-symbols.h (_elf_set_element): Use attribute used so - that gcc will not optimize it away. - (link_warning): Likewise. +2004-10-18 Roland McGrath -2003-07-22 Ulrich Drepper + * dlfcn/bug-dlsym1.c (main): Remove bogus setenv call. - * wcsmbs/wcpncpy.c (__wcpncpy): Correct destination pointer handling. - * wcsmbs/Makefile (tests): Add tst-wcpncpy. - * wcsmbs/tst-wcpncpy.c: New file. +2004-10-18 Ulrich Drepper -2003-07-21 Ulrich Drepper + * elf/dl-open.c (dl_open_worker): Avoid dereferencing map in + statically linked code if there might none be found. - * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_STOPPED): Define. +2004-10-06 Maciej W. Rozycki - * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Reverse use of - stmxcsr and ldmxcsr. + * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h + (__SYSCALL_CLOBBERS): Add "memory". + * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h + (__SYSCALL_CLOBBERS): Likewise. + * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h + (__SYSCALL_CLOBBERS): Likewise. - * Makerules (build-module-helper): Add -z defs unless explicitly said - not to do it. - * dlfcn/Makefile: Define various *-no-z-defs variables for test DSOs - which has undefined symbols. - * elf/Makefile: Likewise. +2004-10-17 Ulrich Drepper - * sysdeps/i386/fpu/fedisblxcpt.c: Use dl_hwcap, not dl_hwcap_mask. - * sysdeps/i386/fpu/feenablxcpt.c: Likewise. - * sysdeps/i386/fpu/feholdexcpt.c: Likewise. - * sysdeps/i386/fpu/fesetround.c: Likewise. - * sysdeps/i386/fpu/ftestexcept.c: Likewise. + * include/libc-symbols.h: Define libresolv_hidden_proto and friends. + * include/resolv.h: Add libresolv_hidden_proto for symbols defined, + used, and exported in libresolv. + * resolv/base64.c: Add libresolv_hidden_def. + * resolv/gethnamaddr.c: Likewise. + * resolv/ns_name.c: Likewise. + * resolv/ns_netint.c: Likewise. + * resolv/res_comp.c: Likewise. + * resolv/res_data.c: Likewise. + * resolv/res_debug.c: Likewise. + * resolv/res_mkquery.c: Likewise. + * resolv/res_query.c: Likewise. + * resolv/res_send.c: Likewise. -2003-07-21 HJ Lu +2004-10-15 Jakub Jelinek - * elf/ldconfig.c (search_dir): Treat symlink as regular file - if it won't point to itself. + * elf/dl-minimal.c (__chk_fail): New. Add rtld_hidden_def. + * sysdeps/unix/sysv/linux/readonly-area.c: New file. + * sysdeps/i386/i686/memmove.S (__memmove_chk): Add checking + routine. + * sysdeps/i386/i686/memcpy.S (__memcpy_chk): Likewise. + * sysdeps/i386/i686/mempcpy.S (__mempcpy_chk): Likewise. + * sysdeps/i386/i686/memset.S (__memset_chk): Likewise. + * sysdeps/i386/i686/memmove-chk.S: New file. + * sysdeps/i386/i686/memcpy-chk.S: Likewise. + * sysdeps/i386/i686/mempcpy-chk.S: Likewise. + * sysdeps/i386/i686/memset-chk.S: Likewise. + * sysdeps/generic/strcat-chk.c (__strcat_chk): Don't __chk_fail + if exactly fitting into buffer. + * sysdeps/generic/strncat-chk.c (__strncat_chk): Likewise. + * sysdeps/generic/readonly-area.c: New file. + * sysdeps/generic/strncpy-chk.c (__strncpy_chk): Only test + destlen once. + * sysdeps/x86_64/memset.S (__memset_chk): Add checking routine. + * sysdeps/x86_64/memcpy.S (__memcpy_chk): Likewise. + * sysdeps/x86_64/mempcpy.S (__memcpy_chk): Define to __mempcpy_chk. + * sysdeps/x86_64/memcpy-chk.S: New file. + * sysdeps/x86_64/mempcpy-chk.S: Likewise. + * sysdeps/x86_64/memset-chk.S: Likewise. + * sysdeps/x86_64/strcpy-chk.S: Likewise. + * sysdeps/x86_64/stpcpy-chk.S: Likewise. + * argp/argp-xinl.c (__OPTIMIZE__): Define to 1 instead of nothing. + * argp/argp-fs-xinl.c (__OPTIMIZE__): Likewise. + * debug/tst-chk1.c: New test. + * debug/tst-chk2.c: Likewise. + * debug/tst-chk3.c: Likewise. + * debug/test-strcpy_chk.c: Likewise. + * debug/test-stpcpy_chk.c: Likewise. + * debug/vsprintf_chk.c (__vsprintf_chk): If flags > 0, request + _IO_FLAGS2_CHECK_PERCENT_N. Add libc_hidden_def. + * debug/Makefile (routines): Add printf_chk, fprintf_chk, vprintf_chk, + vfprintf_chk, gets_chk and readonly-area. + (CFLAGS-*_chk.c): Set. + (tests): Add tst-chk1, tst-chk2, tst-chk3, test-strcpy_chk and + test-stpcpy_chk. + * debug/vprintf_chk.c: New file. + * debug/printf_chk.c: Likewise. + * debug/vfprintf_chk.c: Likewise. + * debug/fprintf_chk.c: Likewise. + * debug/gets_chk.c: Likewise. + * debug/chk_fail.c (__chk_fail): Add libc_hidden_def. + * debug/snprintf_chk.c (__snprintf_chk): Fix order of arguments + passed to __vsnprintf_chk. + * debug/Versions (libc): Export __printf_chk, __fprintf_chk, + __vprintf_chk, __vfprintf_chk and __gets_chk @GLIBC_2.3.4. + * debug/vsnprintf_chk.c (__vsnprintf_chk): Don't call + __vsnprintf, instead create a temporary file with + _IO_strn_jumps jumptable. If flags > 0, request + _IO_FLAGS2_CHECK_PERCENT_N. Add libc_hidden_def. + * libio/Makefile (headers): Add bits/stdio2.h. + * libio/stdio.h: Include if __USE_FORTIFY_LEVEL. + (sprintf, snprintf, vsprintf, vsnprintf): Remove defines. + * libio/strfile.h (_IO_strnfile): New type. + (_IO_strn_jumps): New extern. + * libio/vsnprintf.c (_IO_strnfile): Remove. + (_IO_strn_jumps): Remove static. + * libio/bits/stdio2.h: New file. + * libio/vswprintf.c (_IO_strnfile): Rename type to... + (_IO_wstrnfile): ...this. Adjust all uses. + * libio/libio.h (_IO_FLAGS2_CHECK_PERCENT_N): Define. + * stdio-common/vfprintf.c (STR_LEN): Define. + (vfprintf): Add readonly_format variable. + Handle _IO_FLAGS2_CHECK_PERCENT_N. + (buffered_vfprintf): Copy _flags2. + * include/stdio.h (__sprintf_chk, __snprintf_chk, __vsprintf_chk, + __vsnprintf_chk, __printf_chk, __fprintf_chk, __vprintf_chk, + __vfprintf_chk): New prototypes. + (__vsprintf_chk, __vsnprintf_chk): Add libc_hidden_proto. + * include/string.h (__memcpy_chk, __memmove_chk, __mempcpy_chk, + __memset_chk, __strcpy_chk, __stpcpy_chk, __strncpy_chk, __strcat_chk, + __strncat_chk): New prototypes. + * include/bits/string3.h: New file. + * include/sys/cdefs.h (__chk_fail): Add libc_hidden_proto + and rtld_hidden_proto. + * string/Makefile (headers): Add bits/string3.h. + * string/bits/string3.h (bcopy, bzero): New defines. + (memset, memcpy, memmove, strcpy, strncpy, strcat, strncat): Change + macros so that inlines are used only if unknown destination size + or side-effects in destination argument. + (mempcpy, stpcpy): Likewise. Protect with #ifdef __USE_GNU. -2003-07-20 Ulrich Drepper +2004-09-16 Ulrich Drepper - * sysdeps/ia64/hp-timing.h (REPEAT_READ): Cast to long int not to int. + * debug/Makefile (routines): Add *_chk. + * debug/Versions (libc): Export __chk_fail, __memcpy_chk, + __memmove_chk, __mempcpy_chk, __memset_chk, __stpcpy_chk, + __strcat_chk, __strcpy_chk, __strncat_chk, __strncpy_chk, + __sprintf_chk, __vsprintf_chk, __snprintf_chk, __vsnprintf_chk + @GLIBC_2.3.4. + * debug/chk_fail.c: New file. + * debug/snprintf_chk.c: Likewise. + * debug/sprintf_chk.c: Likewise. + * debug/vsnprintf_chk.c: Likewise. + * debug/vsprintf_chk.c: Likewise. + * include/features.h (_FORTIFY_SOURCE): Document, handle. + (__USE_FORTIFY_LEVEL): Define. + (__GNUC_PREREQ): Move to earlier location. + * include/sys/cdefs.h (__chk_fail): New prototype. + * libio/bits/stdio.h (sprintf, vsprintf, snprintf, vsnprintf): + Define if __USE_FORTIFY_LEVEL. + * misc/sys/cdefs.h (__bos, __bos0): Define. + * string/string.h: Include if __USE_FORTIFY_LEVEL. + * bits/string/string3.h: New header. + * sysdeps/generic/memcpy_chk.c: New file. + * sysdeps/generic/memmove_chk.c: Likewise. + * sysdeps/generic/mempcpy_chk.c: Likewise. + * sysdeps/generic/memset_chk.c: Likewise. + * sysdeps/generic/stpcpy_chk.c: Likewise. + * sysdeps/generic/strcat_chk.c: Likewise. + * sysdeps/generic/strcpy_chk.c: Likewise. + * sysdeps/generic/strncat_chk.c: Likewise. + * sysdeps/generic/strncpy_chk.c: Likewise. -2003-07-20 Andreas Jaeger +2004-10-17 Roland McGrath - * iconvdata/cp932.c (BODY): STANDARD_ERR_HANDLER is now called - STANDARD_TO_LOOP_ERR_HANDLER. - * iconvdata/euc-jp-ms.c (BODY): Likewise. + * manual/memory.texi (Page Lock Functions): Typo fix. + Reported by Carlos Maziero -2003-07-19 Ulrich Drepper +2004-10-16 Alfred M. Szmidt - * sysdeps/unix/sysv/linux/bits/sched.h (__CPU_ZERO): Fix typo. + * sysdeps/mach/hurd/Makefile (link-libc-static): Use + `$(static-gnulib') instead of `$(gnulib)'. - * sysdeps/unix/sysv/linux/syscalls.list: Remove affinity syscalls. +2004-10-17 Ulrich Drepper -2003-07-16 Daniel Jacobowitz - Andreas Jaeger + * sunrpc/rpc_clntout.c: Avoid including rcsid into binary. + * sunrpc/rpc_cout.c: Likewise. + * sunrpc/rpc_hout.c: Likewise. + * sunrpc/rpc_main.c: Likewise. + * sunrpc/rpc_parse.c: Likewise. + * sunrpc/rpc_sample.c: Likewise. + * sunrpc/rpc_scan.c: Likewise. + * sunrpc/rpc_svcout.c: Likewise. + * sunrpc/rpc_tblout.c: Likewise. + * sunrpc/rpc_util.c: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/shm.h (SHMLBA): Define to - 256K, remove unneeded declaration of __getpagesize. +2004-10-15 Jakub Jelinek -2003-07-16 Andreas Schwab + * sysdeps/unix/sysv/linux/i386/sysdep.h (PUSHARGS_6, DOARGS_6, + POPARGS_6, _PUSHARGS_6, _DOARGS_6, _POPARGS_6): Define. + * sysdeps/unix/sysv/linux/i386/syscall.S (syscall): Handle 6 argument + syscalls. - * sysdeps/unix/sysv/linux/futimes.c: Include . +2004-10-15 Ulrich Drepper -2003-07-15 Ulrich Drepper + * nscd/nscd.h (_PATH_NSCD_PASSWD_DB): Move to /var/db. + (_PATH_NSCD_GROUP_DB): Likewise. + (_PATH_NSCD_HOSTS_DB): Likewise. + (_PATH_NSCD_XYZ_DB_TMP): New #define, point to /var/run. + * nscd/connections.c (nscd_init): Non-persistent database files + are created with the _PATH_NSCD_XYZ_DB_TMP path. + * nscd/nscd.init: Create /var/db/nscd if necessary. - * io/test-utime.c (main): Make test yet more robust. +2004-10-15 Richard Henderson -2003-07-14 Ulrich Drepper + * sysdeps/unix/sysv/linux/alpha/register-dump.h: New file. + * sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h (SIGCONTEXT): Add + _code argument, pass sigcontext by pointer. + (SIGCONTEXT_EXTRA_ARGS): Likewise. + (GET_PC, GET_FRAME, GET_STACK): Expect ctx as pointer. - More cancellation handling fixups. - * sysdeps/unix/sysv/linux/not-cancel.h: Add waitpid_not_cancel. - * sysdeps/generic/not-cancel.h: Likewise. - * catgets/open_catalog.c: Use not-cancelable syscalls. - * time/Makefile (CFLAGS-getdate.c): Add -fexceptions. - * sysdeps/unix/sysv/linux/llseek.c: Must not be cancelable. - * sysdeps/unix/syscalls.list: Don't mark lseek as cancelable. - * dlfcn/dlfcn.h: Mark dlopen with __THROW again. - * io/fcntl.h: Don't mark posix_fallocate with __THROW. - * libio/fileops.c: Use not-cancelable syscalls for fclose. - * libio/iopopen.c: Use no-cancelable syscalls. - * libio/stdio.h: Mark popen and pclose with __THROW again. - * misc/Makefile (CFLAGS-syslog.c): Add -fexceptions. - * misc/syslog.c: Fix locking and cancellation cleanup handling. - * posix/unistd.h: Mark ttyname and ttyname_r again with __THROW. - * stdio-common/Makefile (CFLAGS-tmpfile.c, CFLAGS-tmpfile64.c, - CFLAGS-tempname.c): Add -fexceptions. - * stdlib/Makefile (CFLAGS-mkstemp.c): Add -fexceptions. - * string/string.h: Mark strerror and strerror_r with _THROW again. - * sysdeps/generic/unwind.inc: New file. Copied from gcc. - * sysdeps/generic/unwind-dw2.c: Update from gcc version. Remove - #ifs since we now need all the code compiled. - * sysdeps/posix/spawni.c: Use close_not_cancel instead of close. - * sysdeps/unix/closedir.c: Use not-cancelable syscalls. - * sysdeps/unix/opendir.c: Likewise. +2004-10-14 Richard Henderson - * iconvdata/Makefile (modules): Add CP932 and EUC-JP-MS. - Add rule for EUC-JP-MS dependency. - * iconvdata/cp932.c: New file. - * iconvdata/eucjp-ms.c: New file. - * iconvdata/gconv-modules: Add entries for CP932 and EUC-JP-MS. - Patch by MORIYAMA Masayuki . + * sysdeps/alpha/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative, elf_machine_lazy_rel): Mark auto + instead of static. -2003-07-15 Jakub Jelinek + * sysdeps/unix/sysv/linux/adjtime.c (ADJTIME): Use prototype + style definition. + * sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIME): If + __ASSUME_TIMEVAL64, define __adjtime directly rather than + via strong_alias. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S (__socket): Add - cfi directives. +2004-10-14 Ulrich Drepper -2003-07-14 Franz Sirl + * nscd/Makefile: When using compilers without -fpie support, also + link with -lselinux if necessary. + Patch by Arkadiusz Miskiewicz . - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_FIXED_CLONE_SYSCALL): New macro. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Use it. + * nscd/connections.c (nscd_init): Remove file if not persistent + and not shared. Patch by Jerome Borsboom . - * sysdeps/unix/sysv/linux/utimes.c: Include sysdep.h. +2004-10-14 Jakub Jelinek -2003-07-14 Ulrich Drepper + * sysdeps/unix/sysv/linux/i386/setresuid.c: Handle + defined __NR_setresuid32 && !defined __NR_setresuid. + * sysdeps/unix/sysv/linux/i386/setresgid.c: Handle + defined __NR_setresgid32 && !defined __NR_setresgid. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_TGKILL for Alpha appropriately. + * sysdeps/sparc/fpu/bits/mathinline.h (__signbitf, __signbit, + __signbitl, sqrtf, sqrt, sqrtl, fdim, fdimf): Use __NTH macro. -2003-07-12 Ulrich Drepper + * sysdeps/generic/errno-loc.c: Don't undef #errno + if RTLD_PRIVATE_ERRNO. + * include/errno.h (__errno_location): If RTLD_PRIVATE_ERRNO, + add attribute_hidden. - * sysdeps/unix/sysv/linux/bits/statfs.h (_STATFS_F_FRSIZE): Define. - * sysdeps/unix/sysv/linux/alpha/bits/statfs.h (_STATFS_F_FRSIZE): - Likewise. - * sysdeps/unix/sysv/linux/s390/bits/statfs.h (_STATFS_F_FRSIZE): + * dlfcn/dlinfo.c (dlinfo_doit): Replace iteration over GL(dl_loaded) + chain with iteration over all namespaces' _ns_loaded chains. + * sysdeps/powerpc/powerpc32/dl-machine.c (__elf_preferred_address): Likewise. + * sysdeps/mips/dl-machine.h (elf_machine_runtime_link_map): Likewise. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_UTIMES for x86 and kernels > 2.5.75. - - * sysdeps/unix/sysv/linux/futimes.c (__futimes): Handle case with - second parameter == NULL. - * sysdeps/unix/sysv/linux/utimes.c: New file. - -2003-07-12 Jakub Jelinek - - * sysdeps/unix/sysv/linux/futimes.c: Include kernel-features.h. - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_UTIMES): Fix - a typo. - -2003-07-12 Ulrich Drepper - - * time/sys/time.h: Namespace cleanup. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_UTIMES for the architectures which always had the syscall. - * sysdeps/unix/sysv/linux/futimes.c: New file. - -2003-07-12 Kaz Kojima - - * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR - register across CENABLE and CDISABLE. - -2003-07-11 Jakub Jelinek - - * sysdeps/unix/sysv/linux/sigwait.c: Include string.h. - * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. - * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. - * sysdeps/unix/sysv/linux/sleep.c (__sleep): Cast value to unsigned - int before assigning to max to avoid warnings. - -2003-07-11 Jakub Jelinek - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S (__socket): Add - cfi directives. - * sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise. - -2003-07-10 Jakub Jelinek - - * sysdeps/powerpc/powerpc64/elf/start.S: Set section flags of - .data.rel.ro.local to "aw". - -2003-07-10 Ulrich Drepper - - * sysdeps/m68k/Makefile: Remove CLFAGS-.oS addition. - * Makeconfig (CFLAGS-.oS): Use PIC-ccflag instead of pic-ccflag. - (PIC-ccflag): Define. - -2003-07-04 Jakub Jelinek - - * sysdeps/s390/s390-32/elf/start.S: Emit position independent code - if PIC. - * sysdeps/s390/s390-64/elf/start.S: Likewise. - -2003-07-07 Jakub Jelinek - - * sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address) - into .data.rel.ro.local section if PIC to avoid DT_TEXTREL. - -2003-07-07 Ulrich Drepper - - * sysdeps/unix/sysv/linux/kernel-features.h: Version - __ASSUME_CORRECT_SI_PID and __ASSUME_TGKILL if possible. - - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Adjust for - compilation with HAVE_AUX_SECURE defined. - -2003-07-05 Richard Henderson - - * sysdeps/alpha/elf/initfini.c: Avoid .ent/.end. - -2003-07-03 Ulrich Drepper - - * configure.in: Also check for .cfi_rel_offset pseudo-op. - -2003-07-03 Jakub Jelinek - - * sysdeps/unix/sysv/linux/prof-freq.c (__profile_frequency): Fix a - typo. - -2003-07-03 Ulrich Drepper - - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_CLKTCK): - Define. - * sysdeps/unix/sysv/linux/prof-freq.h: New file. - -2003-07-02 Jakub Jelinek - - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Protect new_sysinfo - decl and use with #ifdef NEED_DL_SYSINFO. - -2003-07-02 Ulrich Drepper - - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't set - GL(dl_sysinfo) unles GL(dl_sysinfo_dso) is also set. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_VSYSCALL only for 2.5.69 and up since this is when the - vsyscall DSO was added. + * elf/rtld.c (_dl_start): Fix one last dl_loaded. + * elf/dl-load.c (_dl_map_object_from_fd): Avoid definition of + label when it is not needed. + * elf/dl-close.c (_dl_close): Typo: & -> &&. - * posix/bits/posix1_lim.h (_POSIX_NGROUPS_MAX): Define to 8 or 0 - depending on selected standard. - (NGROUPS_MAX): Define to 8 if not defined. +2004-10-12 Jakub Jelinek -2003-07-02 Andreas Jaeger + * sysdeps/generic/segfault.c: Include alloca.h and stdint.h. + Don't include frame.h. + (CURRENT_STACK_FRAME, INNER_THAN, ADVANCE_STACK_FRAME): Remove. + (catch_segfault): Use backtrace function. - * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: New file. + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Fix comment. + * sysdeps/unix/sysv/linux/ia64/register-dump.h: New file. + * sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h (GET_PC): Return sc_ip + field. -2003-05-04 H.J. Lu +2004-10-13 Ulrich Drepper - * malloc/arena.c (arena_get2): Add atomic_write_barrier. - * malloc/thread-m.h: Include . - (atomic_full_barrier): Provide default. - (atomic_read_barrier): Likewise. - (atomic_write_barrier): Likewise. - * sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define. + Add support for namespaces in the dynamic linker. + * dlfcn/Makefile (libdl-routines): Add dlmopen. + * dlfcn/Versions [libdl, GLIBC_2.3.4]: Add dlmopen. + * dlfcn/dlfcn.h: Define Lmid_t, LM_ID_BASE, and LM_ID_NEWLM. + Declare dlmopen. Document RTLD_DI_LMID. + * dlfcn/dlinfo.c: Handle RTLD_DI_LMID. + * dlfcn/dlmopen.c: New file. + * dlfcn/dlopen.c: Pass new parameter to _dl_open. + * dlfcn/dlopenold.c: Likewise. + * elf/dl-addr.c: Adjust for removal of GL(dl_loaded). + * elf/dl-caller.c: Likewise. + * elf/dl-close.c: Likewise. + * elf/dl-conflict.c: Likewise. + * elf/dl-debug.c: Likewise. + * elf/dl-lookup.c: Likewise. + * elf/dl-sym.c: Likewise. + * elf/dl-version.c: Likewise. + * elf/do-lookup.h: Likewise. + * elf/rtld.c: Likewise. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h: Likewise. + * elf/dl-depsc: Likewise. Add new parameter to _dl_map_object. + * elf/dl-fini.c: Call destructors in all namespaces. + * elf/dl-iteratephdr.c: Compute total nloaded. Adjust for removal of + GL(dl_loaded). + * elf/dl-libc.c: Pass new parameter to _dl_open. Adjust for removal + of GL(dl_loaded). + * elf/dl-load.c (_dl_map_object_from_fd): Don't load ld.so a second + time. Reuse the one from the main namespace in all others. + Pass new parameter to _dl_new_object. + Adjust for removal of GL(dl_loaded). + * elf/dl-object.c: Take new parameter. Use it to initialize l_ns. + Adjust for removal of GL(dl_loaded). + * elf/dl-open.c (_dl_open): Take new parameter. + Adjust for removal of GL(dl_loaded). + * elf/dl-support.c: Replace global _dl_loaded etc variables with + _dl_ns variable. + * include/dlfcn.h: Adjust prototype of _dl_open. + Define __LM_ID_CALLER. + * include/link.h: Add l_real, l_ns, and l_direct_opencount elements. + * sysdeps/generic/dl-tls.c: Bump TLS_STATIC_SURPLUS. Since libc is + using TLS we need memory appropriate to the number of namespaces. + * sysdeps/generic/ldsodefs.h (struct rtld_global): Replace _dl_loaded, + _dl_nloaded, _dl_global_scope, _dl_main_searchlist, and + _dl_global_scope_alloc with _dl_ns element. Define DL_NNS. + Adjust prototypes of _dl_map_object and member in rtld_global_ro. + * malloc/malloc.c: Include . + * malloc/arena.c (ptmalloc_init): If libc is not in primary namespace, + never use brk. + * elf/Makefile: Add rules to build and run tst-dlmopen1 and + tst-dlmopen2. + * elf/tst-dlmopen1.c: New file. + * elf/tst-dlmopen1mod.c: New file. + * elf/tst-dlmopen2.c: New file. -2003-06-30 Ulrich Drepper + * elf/dl-close.c: Improve reference counting by tracking direct loads. + * elf/dl-lookup.c (add_dependency): Likewise. + * elf/dl-open.c (dl_open_worker): Likewise. + * elf/rtld.c (dl_main): Likewise. - * sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET. +2004-09-09 GOTO Masanori -2003-06-30 Richard Henderson + [BZ #77] + * elf/dl-close.c: Count down l_opencount to check not only for + l_reldeps, but also l_initfini. - * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int): - Invert the sense of the return value. - (__arch_exchange_16_int): Fix paste-o. - (__arch_exchange_{32,64}_int): Fix think-o. +2004-10-13 Ulrich Drepper - * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly. + * elf/dl-close.c (_dl_close): Update bug reporting instructions. -2003-06-30 Richard Henderson +2004-10-11 Ulrich Drepper - * include/sys/resource.h (__getrusage): Mark hidden. - * include/sys/time.h (__settimeofday, __setitimer, __utimes): Likewise. - * include/sys/wait.h (__wait4): Likewise. + * timezone/asia: Update from tzdata2004e. + * timezone/southamerica: Likewise. + * timezone/private.h: Update from tzcode2004e. + * timezone/zdump.c: Likewise. -2003-06-17 Guido Guenther + * stdio-common/vfscanf.c: Add support for reading localized + digits. Patch mainly by Hamed Malek . - * sysdeps/unix/sysv/linux/mips/xstatconv.c: Handle STAT_IS_KERNEL_STAT - case. - (xstat_conv): Rename to __xstat_conv and remove static inline. - (xstat64_conv): Likewise. + * resolv/res_init.c (res_thread_freeres): Reset _res.options. + [BZ #434] -2003-06-29 Ulrich Drepper + * resolv/res_send.c (send_dg): Use nonblocking sockets. Add + appropriate poll/select calls and restart operation if necessary. + Also handle EINTR. - * sysdeps/unix/sysv/linux/sleep.c (__sleep): Handle parameter - values which cannot be handled in one nanosleep call. + * elf/tst-dlopenrpath.c (do_test): Enable code which was disabled + for debugging. -2003-06-25 Alfred M. Szmidt + * elf/dl-sym.c (do_sym): Avoid using global variable. - * sysdeps/generic/bits/in.h (IPV6_HOPOPTS, IPV6_DSTOPTS): New macros. - (IPV6_RXHOPOPTS, IPV6_RXDSTOPTS): Use them. + * elf/dl-addr.c (_dl_addr): Really use match everywhere. - * sysdeps/generic/ifreq.h (__if_nextreq) [_HAVE_SA_LEN]: Typo fix. +2004-10-09 Andreas Schwab -2003-06-04 Thorsten Kukuk + * sysdeps/m68k/memcopy.h (WORD_COPY_BWD): Remove use of cast as + lvalue. - * sysdeps/unix/sysv/linux/net/if_arp.h: Sync with kernel header, - fix typo. + * sysdeps/m68k/fpu/bits/mathinline.h: Remove __THROW from inline + definitions. -2003-06-26 Steven Munroe +2004-10-07 Andreas Schwab - * sysdeps/unix/sysv/linux/xstatconv.h [!STAT_IS_KERNEL_STAT]: - Conditionalize function definitions that use struct kernel_stat. - * sysdeps/unix/sysv/linux/fxstat.c: Remove __syscall_fstat extern. - * sysdeps/unix/sysv/linux/lxstat.c: Remove __syscall_lstat extern. - * sysdeps/unix/sysv/linux/xstat.c: Remove __syscall_stat extern. + * misc/sys/uio.h: Change __vector to __iovec to avoid clash with + altivec. -2003-06-28 Ulrich Drepper +2004-10-06 Alan Modra - * sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop): Add real - implementation. + * gmon/Makefile (CFLAGS-mcount.c): Move before inclusion of "Rules". + * sysdeps/powerpc/powerpc64/Makefile (CFLAGS-mcount.c): Add + -msoft-float. + * sysdeps/powerpc/powerpc64/sysdep.h (SAVE_ARG, REST_ARG): New macros. + (CALL_MCOUNT): Replace with a gas macro implementation. + (EALIGN): Delete PROF version. + * sysdeps/powerpc/powerpc64/__longjmp-common.S: Invoke CALL_MCOUNT. + * sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Likewise. + * sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise. + * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise. + * sysdeps/powerpc/powerpc64/memcpy.S: Likewise. + * sysdeps/powerpc/powerpc64/memset.S: Likewise. + * sysdeps/powerpc/powerpc64/stpcpy.S: Likewise. + * sysdeps/powerpc/powerpc64/strchr.S: Likewise. + * sysdeps/powerpc/powerpc64/strcmp.S: Likewise. + * sysdeps/powerpc/powerpc64/strcpy.S: Likewise. + * sysdeps/powerpc/powerpc64/strlen.S: Likewise. + * sysdeps/powerpc/powerpc64/strncmp.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_llround.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_rint.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_round.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Likewise. + * sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Likewise. -2003-06-07 Thorsten Kukuk + * sysdeps/powerpc/powerpc64/setjmp-common.S: Add extra entry point + past _mcount call. + * sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Use it. + * sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise. - * nis/nss_compat/compat-grp.c: Remove unused nis_first variable. - (getgrent_next_file): Don't store group name to early in blacklist. +2004-10-06 Ulrich Drepper - * nis/nss_compat/compat-pwd.c (internal_getpwuid_r): Save strlen result - and use memcpy instead of strcpy. + * resolv/res_mkquery.c (res_nmkquery): Reject randombits value if + low 16 bits are zero. -2003-06-28 Ulrich Drepper +2004-10-06 Jakub Jelinek - * nis/nss_compat/compat-grp.c: Optimize several little things. Use - stream unlocked. - * nis/nss_compat/compat-initgroups.c: Likewise. - * nis/nss_compat/compat-pwd.c: Likewise. - * nis/nss_compat/compat-spwd.c: Likewise. + * posix/tst-getaddrinfo2.c: Include stdlib.h and string.h. + (do_test): Use %p instead of 0x%08X to print a pointer. -2003-06-27 Thorsten Kukuk + * malloc/malloc.c: Include stdio-common/_itoa.h. - * nis/nss_compat/compat-initgroups.c: Don't use our own NIS/NIS+ - functions, dlopen corresponding NSS module instead. +2004-10-05 Ulrich Drepper -2003-06-27 Jeroen Dekkers + * elf/rtld.c (dl_main): Use _dl_debug_printf instead of _dl_printf + for prelink message. - * sysdeps/mach/hurd/alpha/init-first.c: Remove call to __libc_init. - * sysdeps/mach/hurd/i386/init-first.c: Likewise. - * sysdeps/mach/hurd/mips/init-first.c: Likewise. - * sysdeps/mach/hurd/powerpc/init-first.c: Likewise. +2004-10-05 Jakub Jelinek -2003-06-27 Ulrich Drepper + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Include dl-sysdep.h. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. - * rt/Makefile (CFLAGS-librt-cancellation.c): Define. +2004-10-05 Ulrich Drepper -2003-06-26 Roland McGrath + * grp/initgroups.c: Remove duplicate group IDs. + * grp/compat-initgroups.c: Likewise. + * nscd/initgrcache.c: Likewise. - * sysdeps/mach/configure.in: Barf rather than define NO_CREATION_TIME. - * sysdeps/mach/configure: Regenerated. - * sysdeps/mach/hurd/times.c (times_init): Function removed. - (__times): Assume `creation_time' field is available. - * sysdeps/mach/hurd/Makefile [$(subdir) = csu] (sysdep_routines): - Don't append set-init. - * sysdeps/mach/hurd/set-init.c: File removed. +2004-10-05 Jakub Jelinek -2003-06-26 Roland McGrath + * sysdeps/unix/sysv/linux/x86_64/sysconf.c (__sysconf): Return 200112L + for _SC_CPUTIME or _SC_THREAD_CPUTIME. - * elf/elf.h (AT_SECURE): New macro. - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Grok it, - set __libc_enable_secure. - (_dl_show_auxv): Add AT_SECURE to name table. - * elf/dl-support.c (_dl_aux_init): Grok AT_SECURE, set - __libc_enable_secure and __libc_enable_secure_decided. - * sysdeps/unix/sysv/linux/ldsodefs.h - [__ASSUME_AT_SECURE] (HAVE_AUX_SECURE): Define it. - * sysdeps/unix/sysv/linux/kernel-features.h - [__LINUX_KERNEL_VERSION >= 132426] (__ASSUME_AT_SECURE): Define it. + * nscd/Makefile (nscd-cflags): Set to -DIS_IN_nscd=1, plus + -fpie if building PIE. + (CFLAGS-*.c): Use it. -2003-06-26 Ulrich Drepper + * nscd/Makefile (relro-LDFLAGS): Add -Wl,-z,now if have-z-relro. + ($(objpfx)nscd): Add $(relro-LDFLAGS). - * io/test-utime.c: If _STATBUF_ST_NSEC is defined, adjust lower - boundary test to take rounding of nanoseconds into account. + * sysdeps/unix/sysv/linux/i386/sysconf.c: Include hp-timing.h. + (__sysconf): Return -1 for _SC_CPUTIME or _SC_THREAD_CPUTIME if + !HP_TIMING_AVAIL. - * sysdeps/unix/sysv/linux/bits/stat.h: Define _STATBUF_ST_NSEC. - * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/m68k/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise. +2004-10-05 Ulrich Drepper -2003-06-26 Andreas Schwab + * nscd/Makefile (distribute): Remove TODO. + * nscd/TODO: Removed. - * sysdeps/m68k/fpu/bits/mathinline.h: Don't inline frexp. - * sysdeps/m68k/fpu/s_frexp.c: Put implementation here. - * sysdeps/m68k/fpu/s_frexpl.c: Fix to handle unnormalized numbers. +2004-10-04 Ulrich Drepper -2003-06-17 Thorsten Kukuk + * nscd/gai.c: Define __no_netlink_support if NEED_NETLINK is + defined and __ASSUME_NETLINK_SUPPORT is zero. + * sysdeps/unix/sysv/linux/Makefile (CFLAGS-gai.c): Add + -DNEED_NETLINK. - * nis/Makefile: Remove NIS/NIS+ files from nss_compat module. - * nis/nss_compat/compat-grp.c: Don't use our own NIS/NIS+ functions, - dlopen corresponding NSS module instead. - * nis/nss_compat/compat-pwd.c: Likewise. - * nis/nss_compat/compat-spwd.c: Likewise. - * nis/nss_compat/compat-initgroups.c: Disabled for now. - * nss/Versions: Export __nss_lookup_function. + * malloc/mtrace.pl: Avoid calling location unless it is needed for + output. Patch by Edward Bishop . -2003-06-19 Daniel Jacobowitz + * nscd/Makefile (CFLAGS-gai.c): Add -fpie. - * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features - for the SH architecture. +2004-10-04 H.J. Lu -2003-06-25 Thorsten Kukuk + * sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c + (clock_getcpuclockid): Add missing retval. - * csu/Makefile: Use CPPFLAGS to find correct linux/version.h. + * sysdeps/unix/sysv/linux/ia64/sysconf.c (linux_sysconf): Fix a typo. -2003-06-25 Andreas Jaeger +2004-10-04 Roland McGrath - * stdlib/tst-strtod.c (main): Declare constant long double as - suggested by Jakub Jelinek and Andreas Schwab. + * include/errno.h [RTLD_PRIVATE_ERRNO] (errno): Rename the real symbol + to rtld_errno. + * sysdeps/generic/errno.c [RTLD_PRIVATE_ERRNO] (rtld_errno): Define it, + and don't define any other errno names. + * sysdeps/unix/alpha/sysdep.h [RTLD_PRIVATE_ERRNO]: Use rtld_errno in + place of errno. + * sysdeps/unix/i386/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + * sysdeps/unix/x86_64/sysdep.S: Likewise. - * posix/tst-nanosleep.c: Include for nanosleep - declaration. + * sysdeps/generic/errno.c [! USE___THREAD] (errno): Use `nocommon' + attribute instead of `section'. - * stdio-common/tst-fphex.c: Fix format string. +2004-10-04 Ulrich Drepper - * posix/transbug.c: Include for memset and strlen - declarations. + * sysdeps/unix/sysv/linux/ia64/sysconf.c: New file. + * sysdeps/unix/sysv/linux/ia64/Dist: Add has_cpuclock.c. + * sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c: Move actual + testing code to... + * sysdeps/unix/sysv/linux/ia64/has_cpuclock.c: ...here. New file. + * sysdeps/unix/sysv/linux/i386/sysconf.c: Add dynamic check for + _SC_CPUTIME and _SC_THREAD_CPUTIME. - * stdio-common/tst-sprintf.c: Include for free declaration. + * nscd/connections.c (start_threads): Use sysconf in case + _POSIX_CLOCK_SELECTION or _POSIX_MONOTONIC_CLOCK is not greater zero. - * stdlib/tst-strtod.c (main): Pass long double value. + * nscd/Makefile (nscd-modules): Add gai. + * nscd/gai.c: New file. + * nscd/nscd.c: Remove getaddrinfo stub definition. - * test-skeleton.c: Include for nanosleep declaration. + * assert/assert.h: Give up on using __builtin_expect. -2003-06-25 Ulrich Drepper + * elf/rtld.c (dl_main): Only skip => output in ldd mode if both + strings are identical. - * include/time.h: Don't define CLOCK_IDFIELD_SIZE if _ISOMAC is - defined. +2004-03-18 Jakub Jelinek -2003-06-11 Jakub Jelinek + * malloc/arena.c (aligned_heap_area): New variable. + (new_heap): If aligned_heap_area != NULL, attempt to use that + first. If HEAP_MAX_SIZE << 1 area is already HEAP_MAX_SIZE bytes + aligned, remember the second half in aligned_heap_area. + (delete_heap): Clear aligned_heap_area if deleting the area right + before aligned_heap_area. - * elf/Versions (libc): Add _dl_open_hook@GLIBC_PRIVATE. - * elf/dl-libc.c (struct dl_open_hook): New. - (_dl_open_hook): New variable. - (do_dlsym_private): New function. - (__libc_dlopen_mode) [!SHARED]: Lookup _dl_open_hook@GLIBC_PRIVATE - and initialize it if found. - (__libc_dlopen_mode) [SHARED]: If _dl_open_hook is non-NULL, - call dlopen_mode hook. - (__libc_dlsym) [SHARED]: If _dl_open_hook is non-NULL, - call dlsym hook. - (__libc_dlclose) [SHARED]: If _dl_open_hook is non-NULL, - call dlclose hook. +2004-10-03 Juerg Billeter -2003-06-25 Ulrich Drepper + * nscd/nscd_initgroups.c (__nscd_getgrouplist): Return -1 if nscd + can't be used. [BZ #424] - * sysdeps/unix/sysv/linux/cris/sysdep.h (INLINE_SYSCALL): Cast - result to long int so that extensions to long long int work. - Patch by Uwe Reimann . +2004-10-03 Ulrich Drepper -2003-06-19 Jakub Jelinek + Dynamically create new threads if necessary. + * nscd/connections.c (fd_ready): If no thread available for processing + the request, create a new one unless the limit is reached. + (start_threads): Check errors from pthread_create. + * nscd/nscd.h: Declare max_nthreads. + * nscd/nscd_conf.c: Parse max-nthreads entry. + * nscd/nscd.conf: Add max-threads entry. + * nscd/nscd_stat.c: Print current and maximum number of threads. - * elf/ldconfig.c (main): Use add_system_dir instead of add_dir. - * sysdeps/generic/dl-cache.h (add_system_dir): Define. - * sysdeps/unix/sysv/linux/x86_64/dl-cache.h: Include sparc - dl-cache.h. - * sysdeps/unix/sysv/linux/s390/dl-cache.h: New file. - * sysdeps/unix/sysv/linux/mips/dl-cache.h: New file. - * sysdeps/unix/sysv/linux/powerpc/dl-cache.h: New file. - * sysdeps/unix/sysv/linux/sparc/dl-cache.h: New file. + Implement paranoia mode. + * nscd/connections.c (nscd_init): Mark database and socket descriptors + as close on exec. + (restart): New function. + (restart_p): New function. + (nscd_run): Add missing descrement of nready in case readylist is + empty. + (main_loop_poll): Call restart_p and restart. + (main_loop_epoll): Likewise. + (begin_drop_privileges): Save original UID and GID. + * nscd/nscd.c: Define new variables paranoia, restart_time, + restart_interval, oldcwd, old_gid, old_uid. + (main): Disable paranoia mode if we are not forking. + (check_pid): When re-execing, the PID file contains the same PID as + the current process. Do not fail in this case. + * nscd/nscd.conf: Add paranoia and restart-interval entries. + * nscd/nscd.h: Define RESTART_INTERVAL. Declare new variables. + * nscd/nscd_conf.c: Parse paranoia and restart-internal configurations. + * nscd/nscd_stat.c: Print paranoia and restart-internal values. -2003-06-19 Jakub Jelinek + * nscd/connections.c: Implement alternative loop for main thread + which uses epoll. + * sysdeps/unix/sysv/linux/Makefile [subdir=nscd] + (CFLAGS-connections.c): Add -DHAVE_EPOLL. - * test-skeleton.c (timeout_handler): If waitpid returned 0, - retry once after a second. If killed == 0, assume - WTERMSIG (status) == SIGKILL. +2004-10-02 Ulrich Drepper -2003-06-18 Roland McGrath + * nscd/Makefile (CFLAGS-initgrcache.c): Add to CFLAGS-* variables, + don't replace old content. - * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Catch uninitialized - elements in the table instead of printing an empty name string. + * nscd/connections.c: Rewrite handling of incoming connections. All + are handled by one thread which then hands off the descriptors for the + real work to the worker threads. + * nscd/Makefile: Link nscd with librt. -2003-06-05 Roland McGrath + * nscd/selinux.c: Pretty printing. - * elf/elf.h (PT_GNU_STACK): New macro. + * nscd/dbg_log.c (dbg_log): Don't add unnecessary newline to + output. Let syslog do the formatting if debug_level == 0. -2003-06-24 Ulrich Drepper + * nscd/nscd_helper.c (get_mapping): No need to check timestamp if + nscd_certainly_running is nonzero. - * include/time.h: Define CLOCK_IDFIELD_SIZE. - * sysdeps/posix/clock_getres.c: Recognize thread CPU clock IDs. - * sysdeps/unix/clock_gettime.c: Likewise. - * sysdeps/unix/clock_settime.c: Likewise. - * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Adjust for new - clock id for thread CPU clocks. +2004-10-02 Simon Josefsson - * sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Add support - for the fstatfs64 syscall. - * sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Add support for - the statfs64 syscall. + [BZ #420] + * sysdeps/generic/memmem.c [!_LIBC]: Define __builtin_expect, to + make the file usable inside gnulib. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_STATFS64 appropriately. +2004-10-01 Ulrich Drepper - * sysdeps/unix/sysv/linux/internal_statvfs.c: Use f_frsize field - from statfs structure if it has been filled in. + * malloc/malloc.c (public_vALLOc): Add missing use of hooks. + (public_pVALLOc): Likewise. - * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_frsize - field. - (struct statfs64): Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise. + * nscd/nscd_initgroups.c (__nscd_getgrouplist): Always add the + group the caller provided unless there is a real problem. -2003-06-24 Richard Henderson + * posix/bug-glob1.c (prepare): Fix creation of symlink. - * sysdeps/unix/sysv/linux/alpha/syscalls.list (pread, pwrite): Use - the 64-bit syscall name. +2004-09-30 Ulrich Drepper - * sysdeps/alpha/setjmp.S (_setjmp, setjmp): Mark .prologue. + * posix/Makefile: Add rules to build and run bug-glob1. + * posix/bug-glob1.c: New file. - * sysdeps/alpha/fpu/bits/mathinline.h: Honor - __LIBC_INTERNAL_MATH_INLINES. Implement __signbitf, __signbit. + * iconv/iconv_prog.c (main): Print progress information to stderr. - * sysdeps/unix/sysv/linux/alpha/clone.S: Use HIDDEN_JUMPTARGET. - * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use - libc_hidden_def. - * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/setfpucw.c: Use libc_hidden_proto - on them. + * nscd/nscd.c (termination_handler): Reset timestamp so that + clients immediately stop using the database. - * sysdeps/alpha/bits/atomic.h: New file. + * nscd/nscd-client.h (__nscd_get_map_ref): Drop volatile from last + parameter. + (__nscd_drop_map_ref): Change second parameter to be a reference to + a variable. Update variable when cycle count changed. + * nscd/nscd_helper.c (__nscd_get_map_ref): Remove volatile here, too. + * nscd/nscd_getai.c: Correctly use __nscd_drop_map_ref. Reinitialize + all variables and avoid memory leak in case of retries. + * nscd/nscd_getgr_r.c: Likewise. + * nscd/nscd_gethst_r.c: Likewise. + * nscd/nscd_getpw_r.c: Likewise. + * nscd/nscd_initgroups.c: Likewise. -2003-06-24 Andreas Schwab + * nscd/nscd.h: Add declaration of addinitgroups and + readdinitgroups. - * sysdeps/m68k/fpu/libm-test-ulps: Update. +2004-09-30 Andreas Jaeger -2003-06-24 Andreas Jaeger + * nscd/Makefile (CFLAGS-nscd_initgroups.c): Set to -fpie. + (CFLAGS-initgrcache.c): Set to -fexceptions. - * sysdeps/unix/sysv/linux/x86_64/stat.h (_STAT_VER_LINUX): Avoid - redeclaration with 32-bit code. +2004-09-29 Ulrich Drepper -2003-05-19 Ed Connell + * sysdeps/generic/glob.c (glob_in_dir): Don't blindly trust + readdir results; for symlinks or files of unknown type check using + stat whether the file exists. - * sysdeps/unix/sysv/linux/i386/getcontext.S (getcontext): Retain - floating point mask. - * sysdeps/i386/fpu/fegetenv.c (fegetenv): Likewise. + * posix/tst-gnuglob.c (find_file): Handle leading "./". Fix + recognition of files. -2003-06-23 Ulrich Drepper +2004-09-29 Jakub Jelinek - * sysdeps/pthread/aio_misc.h: Mark __aio_requests_mutex, - __aio_enqueue_request, __aio_find_req, __aio_find_req_fd, - __aio_free_request, __aio_notify, and __aio_sigqueue as hidden. + * time/tzfile.c (tzfile_mtime): New variable. + (__tzfile_read): Reread the file if mtime is different. - * sysdeps/pthread/aio_suspend.c (aio_suspend): Set errno to the result - of pthread_cond_wait if there was an error. Use pthread_cleanup_* - instead of __libc_cleanup_region_*. +2004-09-28 Jakub Jelinek -2003-06-20 Richard Henderson + * sysdeps/alpha/fpu/bits/mathinline.h (__fdimf, __fdim, fdimf, fdim): + Handle +inf/+inf. + * sysdeps/powerpc/fpu/bits/mathinline.h (fdim, fdimf): Likewise. + * sysdeps/sparc/fpu/bits/mathinline.h (fdim, fdimf): Likewise. - * sysdeps/unix/make-syscalls.sh: Implement ! prefix for strong aliases. - * sysdeps/unix/sysv/linux/alpha/syscalls.list (open, open64): New. +2004-09-29 Ulrich Drepper -2003-06-20 Richard Henderson + * nscd/nscd_gethst_r.c (nscd_gethst_r): Use correct constant for + testing result of __nscd_get_map_ref. - * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL1): Use __builtin_expect. - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ST_INO_64_BIT) - Unset for alpha. - (__ASSUME_TIMEVAL64): Set for alpha. - * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove - adjtimex, osf_sigprocmask, old_adjtimex. - * sysdeps/unix/sysv/linux/alpha/adjtime.c: Use INLINE_SYSCALL, - __ASSUME_TIMEVAL64. Reorg tv64 functions to avoid uninit variable. - * sysdeps/unix/sysv/linux/alpha/getitimer.S: Use __ASSUME_TIMEVAL64. - * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Streamline - PIC code sequence. - * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/sigaction.c: New file. - * sysdeps/unix/sysv/linux/alpha/sigprocmask.c: Use INLINE_SYSCALL. - * sysdeps/unix/sysv/linux/alpha/ustat.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/xmknod.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove osf_sigprocmask, - sys_ustat, sys_mknod, adjtimex, old_adjtimex. - * sysdeps/unix/sysv/linux/alpha/sysdep.h (INLINE_SYSCALL): Don't - defer to __syscall_name; error for rt_sigaction. - * sysdeps/unix/sysv/linux/alpha/xstatconv.c: Include kernel_stat.h. +2004-09-29 Jakub Jelinek -2003-06-18 Ulrich Drepper + * sysdeps/i386/fpu/s_fdim.S (__fdim): Handle +inf/+inf. + * sysdeps/i386/fpu/s_fdimf.S (__fdimf): Likewise. + * sysdeps/i386/fpu/s_fdiml.S (__fdiml): Likewise. - * malloc/malloc.c (public_mALLINFo): Initialize malloc if it - hasn't happened yet. +004-09-29 Ulrich Drepper - * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump): - Fix completely broken implementation. The second parameter is of - type struct ucontext*. + * grp/initgroups.c: Move compat_call implementation... + * grp/compat-initgroups.c: ...to here. New file. + * grp/Makefile (distribute): Add compat-initgroups.c. + (CFLAGS-initgroups.c): Add -DUSE_NSCD=1. + * mscd/initgrcache.c: New file. + * nscd/nscd_initgroups.c: New file. + * nscd/Makefile (routines): Add nscd_initgroups. + (nscd-modules): Add initgrcache. + * nscd/cache.c (prune_cache): Add support for INITGROUPS entries. + * nscd/connections.c: Handle INITGROUPS requests. + * nscd/nscd-client.h: Define INITGROUPS, initgr_response_header. + Add initgrdata element to struct datahead. Fix typo in comment. + * nscd/nscd_proto.h: Declare __nscd_getgrouplist. Fix parameter + type in __nscd_getgrgrid_r. + * nscd/selinux.c (perms): Add INITGROUPS entry. - * sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup): Always - inline. + * nscd/nscd_getai.c: No need to include . - * sysdeps/i386/i686/dl-hash.h: Don't inline _dl_elf_hash. - * sysdeps/generic/dl-hash.h: Likewise. + * sunrpc/get_myaddr.c (get_myaddress): Account for interfaces without + assigned addresses. + * sunrpc/pmap_clnt.c (__get_myaddress): Likewise. + * sunrpc/pmap_rmt.c (getbroadcastnets): Likewise. + * sunrpc/clnt_udp.c (is_network_up): Likewise. - * sysdeps/generic/memcmp.c: Remove inline from - memcmp_common_alignment and memcmp_not_common_alignment definition. + * nscd/nscd.c: Define getaddrinfo hidden so that it is never found + outside. - * intl/localealias.c (read_alias_file): Determine whether line is - read incompletely early, before we modify the line. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (si_segvflags): + Renamed from si_flags due to conflict with si_flags from . -2003-06-17 Jakub Jelinek +2004-09-28 Ulrich Drepper - * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela) - : Don't segfault on undefined symbols. + * nscd/nscd_getai.c: Use NO_MAPPING instead of MAP_FAILED for test + of failing __nscd_get_map_ref. Fix a few typos. -2003-06-17 Paul Mackerras + * sysdeps/unix/sysv/linux/sigwait.c (do_sigwait): Make sure + SIGSETXID is not blocked. + * sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise. + * sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Likewise. + * sysdeps/generic/sigfillset.c (sigfillset): Don't set SIGSETXID. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: New file. - * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Adjust. + * sunrpc/get_myaddr.c (get_myaddress): Fix test for failing + getifaddrs call. + * sunrpc/pmap_clnt.c (__get_myaddress): Likewise. + * sunrpc/pmap_rmt.c (getbroadcastnets): Likewise. + * sunrpc/Makefile (xtests): Add tst-getmyaddr. + * sunrpc/tst-getmyaddr.c: New file. -2003-06-17 Jakub Jelinek + * malloc/arena.c (ptmalloc_init): Allow MALLOC_CHECK_==0 to + disable all checking. - * posix/regcomp.c (build_word_op): Use alnum instead of alpha class. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (si_flags): Add + support to get this value. -2003-06-17 Ulrich Drepper +2004-09-28 Jakub Jelinek - * sysdeps/unix/clock_nanosleep.c (clock_nanosleep): nanosleep - takes care of enabling cancellation. + * io/utime.h (utime): Allow second argument to be NULL. - * sysdeps/pthread/aio_suspend.c (aio_suspend): Make aio_suspend - cancelable. It's not correct to disable cancellation. Instead of - a cleanup handler. +2004-09-28 Ulrich Drepper - * sysdeps/unix/sysv/linux/sigtimedwait.c: If SIGCANCEL is defined - and part of the incoming set, create a temporary set without this - signal. - * sysdeps/unix/sysv/linux/sigwait.c: Likewise. - * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + * sysdeps/posix/getaddrinfo.c (gaih_inet): If NAME is a numerical IP + address and AI_CANONNAME is set, return copy of NAME as ai_canonname. - * sysdeps/unix/sysv/linux/sleep.c: Use CANCELLATION_P if defined before - returning because seconds==0. Add __builtin_expect. +2004-09-27 Andreas Jaeger -2003-06-16 Ulrich Drepper + * sysdeps/i386/dl-machine.h (elf_machine_rela_relative): Replace + static inline by auto inline, add always_inline attribute. + (elf_machine_rel): Likewise. + (elf_machine_rela): Likewise. + (elf_machine_lazy_rel): Likewise. + (elf_machine_lazy_rela): Likewise. + (elf_machine_rel_relative): Likewise. - * sysdeps/unix/sysv/linux/i386/socket.S: Add unwind information. +2004-09-27 Ulrich Drepper - * sysdeps/unix/sysv/linux/wait.c (__libc_wait): Fix type of result - variable. + * sunrpc/xdr_intXX_t.c: Add xdr_quad_t and xdr_u_quad_t aliases. + * sunrpc/rpc/xdr.h: Declare xdr_quad_t and xdr_u_quad_t. + * sunrpc/rpc_parse.c (get_type): Use "quad_t" for TOK_HYPER. + Otherwise isvectordef will loop infinitely if typedef hyper int64_t + is seen. + (unsigned_dec): Use "u_quad_t" for similar reasons. + * sunrpc/Versions: Export xdr_quad_t and xdr_u_quad_t. -2003-06-16 Thorsten Kukuk +2004-09-27 Roland McGrath - * include/libc-symbols.h: Add static_link_warning macro. - * grp/initgroups.c: Print linker warning if this function - is called in a static linked binary. - * nss/getXXbyYY.c: Likewise. - * nss/getXXbyYY_r.c: Likewise. - * nss/getXXent.c: Likewise. - * nss/getXXent_r.c: Likewise. - * sysdeps/posix/getaddrinfo.c: Likewise. + * sysdeps/generic/bits/waitstatus.h (__WIFSIGNALED): Simplify bit + twiddling in last change. -2003-06-16 Bruno Haible + * posix/tst-waitid.c (do_test): Add tests for waitpid with WCONTINUED. - * iconvdata/gconv-modules (ISO-8859-15): Add aliases ISO_8859-15, - LATIN-9. - (ISO-8859-16): Add aliases ISO_8859-16:2001, ISO_8859-16. - (IBM1047): Add alias IBM-1047. - (GBK): Add aliases MS936, WINDOWS-936. + [BZ #409] + * posix/sys/wait.h [__WIFCONTINUED] (WIFCONTINUED): New macro. + * stdlib/stdlib.h [__WIFCONTINUED] (WIFCONTINUED): New macro. + * sysdeps/generic/bits/waitstatus.h (__W_CONTINUED): New macro. + [WCONTINUED] (__WIFCONTINUED): New macro. + (__WIFSIGNALED): Rewritten to exclude __W_CONTINUED value, and have no + branches. -2003-06-16 Jakub Jelinek + * sysdeps/unix/sysv/linux/waitid.c (do_waitid): Add fifth argument to + all three syscall uses, not just one! - * sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Define even if - defined __ASSUME_STAT64_SYSCALL && defined XSTAT_IS_XSTAT64. - (__xstat64_conv): Change xstat_conv to __xstat_conv. +2004-09-26 Richard Henderson -2003-06-16 Ulrich Drepper + * sysdeps/alpha/alphaev6/memcpy.S: Mark .prologue. + * sysdeps/unix/alpha/sysdep.h (LEAF, ENTRY): Align entry points + to 16 byte boundaries. - * locale/iso-639.def: Update from current official ISO 639. +2004-09-26 Ulrich Drepper - * math/tgmath.h (__TGMATH_UNARY_IMAG_ONLY): Removed. + * elf/readlib.c (process_file): Before complaining about too-short + file, check that it potentially be an ELF file. Also complain about + empty files. [BZ #151]. -2003-06-15 Andreas Jaeger + * scripts/test-installation.pl: Fix ld.so recognition for new + LD_TRACE_LOADED_OBJECTS output format. + Patch by [BZ #407]. - * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Correct setting - of MXCSR. - * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Likewise. - * sysdeps/i386/fpu/feholdexcpt.c (feholdexcept): Likewise. - Reported by Arnaud Desitter . + * elf/dl-support.c (_dl_non_dynamic_init): Fix cleaning of + environment. [BZ #384] - * math/tgmath.h (carg): Handle real arguments. - (conj): Likewise. - (cproj): Likewise. - (cimag): Likewise. - (creal): Likewise. + * sunrpc/clnt_udp.c (is_network_up): Use getifaddrs instead of ioctl. + * sunrpc/get_myaddr.c (get_myaddress): Likewise. + * sunrpc/pmap_clnt.c (__get_myaddress): Likewise. + * sunrpc/pmap_rmt.c (getbroadcastnets): Likewise. Change interface + to avoid buffer overrun and remove now useless parameters. + (clnt_broadcast): Adjust caller. [BZ #381]. - * math/Makefile (CFLAGS-test-tgmath-ret.c): New. - (tests): Add test-tgmath-ret. - * math/test-tgmath-ret.c: New file. + * sysdeps/generic/s_fdim.c: Handle +inf/+inf + * sysdeps/generic/s_fdimf.c: Likewise. + * sysdeps/generic/s_fdiml.c: Likewise. + * sysdeps/i386/i686/fpu/s_fdim.S: Likewise. + * sysdeps/i386/i686/fpu/s_fdimf.S: Likewise. + * sysdeps/i386/i686/fpu/s_fdiml.S: Likewise. + * sysdeps/powerpc/fpu/s_fdim.c: Likewise. + * sysdeps/powerpc/fpu/s_fdimf.c: Likewise. + * sysdeps/x86_64/fpu/s_fdiml.S: Likewise. + * math/libm-test.inc (fdim_test): Add test case. [BZ #376]. - * math/tgmath.h (ilogb): Return always an int. + * sysdeps/generic/bits/types.h: Fix __SQUAD_TYPE and __UQUAD_TYPE + for compilers without __GLIBC_HAVE_LONG_LONG. [BZ #362] -2003-06-16 Ulrich Drepper + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Remove incorrect + requirement on socktype and protocol. + (gaih_inet): If numeric port number is given, return records for all + possible socket types. + * posix/tst-getaddrinfo2.c: New file. + * posix/Makefile (tests): Add tst-getaddrinfo2. [BZ #358] - * elf/rtld.c (dl_main): Use l_map_start not l_addr in Phdr - computation so that prelinking works. +2004-09-25 Ulrich Drepper -2003-06-15 Ulrich Drepper + * locale/loadlocale.c (_nl_intern_locale_data): Recognize LC_CTYPE + data where _nl_value_type_LC_CTYPE does not contain the type + information. Add range checks. + Reported by John Lumby [BZ #356]. - * elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic - linker's map. - * elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the - dynamic linker's map. + * libio/vasprintf.c (_IO_vasprintf): Fix condition to decide + whether to realloc or not. + Reported by Pavel Kankovsky [BZ #346]. - Fix cancellation point handling wrt exception based cleanup. - * io/Makefile: Compile fcntl.c, poll.c, and lockf.c with exceptions. - * misc/Makefile: Compile pselect.c, readv.c, writev.c, and usleep.c - with exceptions. - * posix/Makefile: Compile pread.c, pread64.c, pwrite.c, pwrite64.c, - sleep.c, wait.c, waitid.c, and waitpid.c with exceptions. - * rt/Makefile: Compile aio_suspend.c and clock_nanosleep.c with - exceptions. - * signal/Makefile: Compile sigpause.c, sigsuspend.c, sigtimedwait.c, - sigwait.c, and sigwaitinfo.c with exceptions. - * stdlib/Makefile: Compile system.c with exceptions. - * sysvipc/Makefile: Compile msgrcv.c and msgsnd.c with exceptions. - * termios/Makefile: Compile tcdrain.c with exceptions. - * sysdeps/generic/lockf.c: Add comment explaining the cancellation - situation. - * sysdeps/generic/pselect.c: Likewise. - * sysdeps/posix/sigpause.c: Likewise. - * sysdeps/posix/system.c: Likewise. - * sysdeps/posix/waitid.c: Likewise. - * sysdeps/unix/sysv/linux/sleep.c: Likewise. - * sysdeps/unix/sysv/linux/usleep.c: Likewise. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Major rewrite of - INTERNAL_SYSCALL to not use push inside asm statement so that - unwind info is correct around the syscall. - * sysdeps/unix/clock_nanosleep.c: Add cancellation support. - * sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise. + * intl/dcigettext.c (DCIGETTEXT): Protect tfind/tsearch calls. + * intl/dcigettext.c (_nl_find_msg): Call _nl_load_domain also if + decided < 0. + * intl/finddomain.c (_nl_find_domain): Likewise. + * intl/loadmsgcat.c (_nl_load_domain): Set decided to 1 only once we + are done. First set to -1 to signal initialization is ongoing. + Protect against concurrent callers with recursive lock. + * intl/finddomain.c (_nl_find_domain): Protect calls to + _nl_make_l10nflist. [BZ #322] -2003-06-15 Andreas Jaeger + * sysdeps/posix/getaddrinfo.c (getaddrinfo): If determinination of + source address fails, initialized source_addr_len field so that + duplicate address recognition does not copy junk. - * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): - Add CFI directives. +2004-09-25 Jakub Jelinek -2003-06-15 Guido Guenther + * sysdeps/unix/sysv/linux/i386/setuid.c (__setuid): Remove second + result declaration. - * sysdeps/unix/sysv/linux/mips/Makefile: Add missing endif and - create $(objpfx). +2004-09-22 Andreas Schwab -2003-06-14 Ulrich Drepper + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Adjust whitespace. - * sysdeps/unix/sysv/linux/check_pf.c (__check_pf): Use __close, - not close. +2004-09-24 Ulrich Drepper - * inet/inet6_option.c (inet6_option_alloc): Add libc_hidden_def. - * include/netinet/in.h (inet6_option_alloc): Add libc_hidden_proto - definition. + * misc/daemon.c (daemon): Don't succeed if /dev/null cannot be + opened. - * inet/netinet/ip6.h (IP6OPT_PAD1, IP6OPT_PADN): Define. - * inet/netinet/in.h: Add prototypes for inet6_option_* functions. - * inet/Makefile (routines): Add inet6_option. - * inet/inet6_option.c: New file. - * inet/Versions [GLIBC_2.3.3] (libc): Add inet6_option_space, - inet6_option_init, inet6_option_append, inet6_option_alloc, - inet6_option_next, and inet6_option_find. + * nis/ypclnt.c (do_ypcall): Add one missing unlock. Simplify the + code a bit. -2003-06-13 Ulrich Drepper + * misc/daemon.c (daemon): Define errno in case /dev/null is not + the correct device. - * inet/netinet/ip6.h (struct ip6_ext): Define. + * nis/ypclnt.c (yp_bind_file): Optimize a bit. Minimal cleanups. - * sysdeps/unix/sysv/linux/sys/param.h (howmany): Optimize for gcc. +2004-09-23 Andreas Jaeger - Fixing gcc 3.3 warnings, part II. - * argp/argp-help.c (hol_entry_long_iterate): Always inline. - * elf/dl-load.c (cache_rpath): Don't inline. - * iconvdata/cns11642l2.h: Always inline all functions. - * iconvdata/iso-ir-165.h: Likewise. - * locale/Makefile (aux): Add coll-lookup. - * locale/coll-lookup.c: New file. - * locale/coll-lookup.h (collidx_table_lookup): Do not define here. - (collseq_table_lookup): Likewise. - * locale/weightwc.h: Adjust collidx_table_lookup calls for name change. - * posix/fnmatch_loop.c: Adjust collseq_table_lookup calls for name - change. - * posix/regcomp.c: Likewise. - * posix/regexec.c: Likewise. - * locale/programs/3level.h (*_get): Always inline. - * locale/programs/locfile.h: Move definition of handle_copy to... - * locale/programs/locfile.c: ...here. - * locale/programs/ld-collate.c (obstack_int32_grow): Always inline. - (obstack_int32_grow_fast): Likewise. - (utf8_encode): Likewise. - (find_element): Avoid aliasing problems. - (insert_value): Likewise. - (collate_read): Likewise. - * nss/getent.c (print_hosts): Don't inline - (print_networks): Likewise. - (print_shadow): Likewise. - (build_doc): Likewise. - * nss/nss_files/files-parse.c [ENTDATA] (parser_stclass): Don't - inline. - * posix/regcomp.c (re_set_fastmap): Always inline. - (seek_collating_symbol_entry): Likewise. + * locale/weight.h (findidx): Remove static, it's not supported + anymore with GCC 4.0 in a block scope. + * locale/weightwc.h (findidx): Likewise. + * posix/regcomp.c (seek_collating_symbol_entry): Likewise. (lookup_collation_sequence_value): Likewise. (build_range_exp): Likewise. (build_collating_symbol): Likewise. - * posix/regexec.c (acquire_init_state_context): Don't inline. - (clean_state_log_if_need): Likewise. - * resolv/res_send.c (eConsIovec): Rewrite to not return struct and - adjust all callers. - (evConsTime): Likewise. - (evAddTime): Likewise. - (evSubTime): Likewise. - (evNowTime): Likewise. - (evTimeSpec): Removed. - (__libc_res_nsend): Avoid aliasing problem. - * sysdeps/unix/sysv/linux/ifreq.h: Move old_siocgifconf definition to.. - * sysdeps/unix/sysv/linux/ifreq.c: ...here. - * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_dl_string_hwcap): - Always inline. - (_dl_string_platform): Likewise. - * wctype/wchar-lookup.h (wctype_table_lookup): Always inline. - (wcwidth_table_lookup): Likewise. - (wctrans_table_lookup): Likewise. - - * sysdeps/unix/sysv/linux/sys/epoll.h: Include . - -2003-06-12 Ulrich Drepper - - * wcsmbs/wchar.h: Define wint_t in std namespace, too [PR libc/5034]. - -2003-05-29 Jim Meyering - - * time/strftime.c (my_strftime) [!defined _NL_CURRENT - && HAVE_STRFTIME]: Use underlying_strftime for %r. - Suggested by Daniel Yacob . - -2003-06-12 Steven Munroe - - * sysdeps/powerpc/powerpc64/dl-machine.h (RTLD_START): Replace - @got notation with @toc. - * sysdeps/powerpc/powerpc64/sysdep.h (CALL_MCOUNT): Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Likewise. - -2003-06-12 Ulrich Drepper + * iconv/iconvconfig.c (write_output): Likewise. + * elf/do-rel.h (elf_dynamic_do_rel): Likewise. - * sysdeps/posix/getaddrinfo.c (gaih_inet): Set no_inet6_date also - if only PF_INET address is needed. + * sysdeps/x86_64/dl-machine.h (elf_machine_rela_relative): Remove + static, add always_inline attribute. + (elf_machine_rela): Likewise. + (elf_machine_lazy_rel): Likewise. - * nss/getXXbyYY_r.c: Make sure we always return a nonzero value in - case of an error. + * elf/dynamic-link.h (elf_get_dynamic_info): Make static dependend + on !RESOLVE so that it's not defined in local scope. - * scripts/config.guess: Update from upstream version. - * scripts/config.sub: Likewise. +2004-09-23 Kaz Kojima -2003-06-12 Jakub Jelinek + * sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL_NCS): Define. - * locale/programs/ld-time.c (time_output): Also copy the era format, - not only the name. +2004-09-23 Thorsten Kukuk -2003-06-12 H.J. Lu + * sysdeps/unix/sysv/linux/sys/mount.h: Sync MS_RMT_MASK flag + and BLK* ioctls with linux kernel headers. - * posix/transbug.c (run_test): Return 1 for failure. - (do_test): Compare only if run_test is successful. +2004-09-23 Ulrich Drepper -2003-06-12 Simon Josefsson + * sysdeps/generic/bits/dlfcn.h: Add RTLD_DEEPBIND. + * elf/dl-object.c (_dl_new_object): Add new parameter mode. If mode + has RTLD_DEEPBIND set add local searchlist before global scope. + * sysdeps/generic/ldsodefs.h (_dl_new_object): Adjust prototype. + * elf/rtld.c: Adjust callers of _dl_new_object. + * elf/dl-load.c: Likewise. + (_dl_map_object_from_fd): If RTLD_DEEPBIND is used, don't do anything + for DF_SYMBOLIC. + * elf/dl-open.c (dl_open_writer): Pass RTLD_DEEPBIND flag on to + _dl_map_object_deps. + * elf/tst-deep1.c: New file. + * elf/tst-deep1mod1.c: New file. + * elf/tst-deep1mod2.c: New file. + * elf/tst-deep1mod3.c: New file. + * elf/Makefile: Add rules to build and run new tests. - * argp/argp.h [!__THROW]: Define if undefined. + * elf/dl-deps.c: Pretty printing. -2003-06-12 Ulrich Drepper +2004-09-23 Jakub Jelinek - * sysdeps/unix/sysv/linux/cris/sysdep.h: Fix handling of syscalls with - more than four parameters. - Patch by Uwe Reimann . + * sysdeps/unix/alpha/sysdep.h (inline_syscall[0-6]): Change name + argument to numbers from syscall names. + (INLINE_SYSCALL1): Pass __NR_##name to inline_syscall##nr. + (INTERNAL_SYSCALL_NCS): Renamed from... + (INTERNAL_SYSCALL_1): ... this. Use INTERNAL_SYSCALL_NCS. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h + (INTERNAL_SYSCALL_NCS): Define. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h + (INTERNAL_SYSCALL_NCS): Likewise. + * sysdeps/unix/sysv/linux/sparc/sysdep.h (inline_syscall[0-6]): + Change name argument to numbers from syscall names. + (INLINE_SYSCALL, INTERNAL_SYSCALL): Adjust. + (INTERNAL_SYSCALL_NCS): Define. -2003-06-12 Jakub Jelinek +2004-09-22 Ulrich Drepper - * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file. - * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: New file. - * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: New file. + * malloc/malloc.c (malloc_printerr): Use syslog if writev failed. - * stdio-common/printf-parsemb.c: Include stdlib.h and sys/param.h. + * string/string.h: Add __nonnull annotations. + * stdlib/stdlib.h: Likewise. -2003-06-12 Roland McGrath +2004-09-20 H.J. Lu - * Makerules ($(objpfx)stubs): Rewrite sed magic. + * sysdeps/unix/sysv/linux/ia64/sysdep.h (DO_INLINE_SYSCALL): + Renamed to ... + (DO_INLINE_SYSCALL_NCS): This. + (DO_INLINE_SYSCALL): New. + (INLINE_SYSCALL): Updated. + (INTERNAL_SYSCALL_NCS): Updated. -2003-02-28 Isamu Hasegawa +2004-09-21 Ulrich Drepper - * posix/regcomp.c (parse_expression): Deliver translation to - build_word_op, and build_charclass. - (build_charclass): Apply translation for character classes too. - (build_word_op): Deliver translation to build_charclass. - * posix/transbug.c: New file. - * posix/Makefile (tests): Add transbug. + * elf/sprof.c (load_shobj): Add support for reading symbol table + from debuginfo file. -2003-06-04 Paolo Bonzini + * elf/ldd.bash.in: Fix syntax errors. - * posix/regexec.c (group_nodes_into_DFAstates): Check for - NEXT_ENDBUF_CONSTRAINT. Move check for constraints which do a - 'continue' before the others. +2004-09-20 Ulrich Drepper -2003-06-11 Ulrich Drepper + * sysdeps/unix/sysv/linux/dl-execstack.c + (_dl_make_stack_executable): Remove some duplication. - * dirent/scandir.c (SCANDIR): Reset errno after calling selector - function [PR libc/5045]. + * nscd/nscd.c (options): Mark S option as hidden. + (parse_opt): When S option is used, print warning message. + * nscd/grpcache.c (adgrptbyX): Don't handle secure mode. + * nscd/hstcache.c (addhstbyX): Don't handle secure mode. + * nscd/aicache.c (addhstaiX): Don't handle secure mode. + * nscd/pwdcache.c (addpwbyX): Don't handle secure mode. - * sysdeps/i386/bits/byteswap.h (__bswap_32): Use bswap instruction - also for P4. +2004-09-20 Roland McGrath - * time/tzfile.c: Add a couple of __builtin_expect. + * elf/dl-load.c (__stack_prot): Only use PROT_GROWSUP/PROT_GROWSDOWN + in initializer #if defined. - Remove warnings gcc 3.3 shows. - * argp/argp-help.c (hol_entry_short_iterate): Don't inline. - * elf/dl-load.c (fillin_rpath): Likewise. - (add_path): Likewise. - * elf/dl-version.c (find_needed): Always inline. - * elf/do-lookup.c (FCT): Don't inline. - * iconv/Makefile: Extend vpath to intl subdir. - (iconvconfig-modules): Add hash-string. - * iconv/gconv_charset.h (strip): Don't inline. - (upstr): Always inline. - Move __gconv_compare_alias prototype to... - * iconv/gconv_int.h: ...here. - * iconv/gconv_db.c: Don't include gconv_charset.h. - * iconv/gconv_conf.c (add_alias): Don't inline. - (insert_module): Likewise. - * iconv/gconv_simple.c (internal_ucs4_loop): Always inline. - (internal_ucs4_loop_unaligned): Likewise. - (internal_ucs4_loop_single): Likewise. - (ucs4_internal_loop): Likewise. - (ucs4_internal_loop_unaligned): Likewise. - (ucs4_internal_loop_single): Likewise. - (internal_ucs4le_loop): Always inline. - (internal_ucs4le_loop_unaligned): Likewise. - (internal_ucs4le_loop_single): Likewise. - (ucs4le_internal_loop): Likewise. - (ucs4le_internal_loop_unaligned): Likewise. - (ucs4le_internal_loop_single): Likewise. - * iconv/loop.c: Always inline the defined functions. - * iconvdata/cns11642.h: Likewise. - * iconvdata/cns11642l1.h: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/gb2312.h: Likewise. - * iconvdata/jis0201.h: Likewise. - * iconvdata/jis0208.h: Likewise. - * iconvdata/jis0212.h: Likewise. - * iconvdata/jisx0213.h: Likewise. - * iconvdata/ksc5601.h: Likewise. - * iconvdata/utf-7.c (base64): Don't inline. - * include/libc-symbols.h (symbol_set_first_element): Add cast - (symbol_set_end_p): Likewise. - * include/set-hooks (RUN_HOOK): Likewise. - * inet/Makefile (aux): Add ifreq. - * intl/Makefile (aux): Add some entries from routines. Add - hash-string. - * intl/hash-string.c: New file. - * intl/hash-string.h: Remove hash_string definition. Declare - __hash_string. - * iconv/gconv_cache.c (find_module_idx): Adjust hash_string caller. - * iconv/iconvconfig.c (new_name): Likewise. - * intl/dcigettext.c (_nl_find_msg): Likewise. - * intl/loadmsgcat.c (_nl_load_domain): Likewise. - * io/ftw.c (open_dir_stream): Always inline. - (process_entry): Don't inline. - * locale/findlocale.c: Include gconv_int.h. - * locale/setlocale.c (new_composite_name): Don't inline. - * locale/weight.h (findidx): Always inline. - * locale/weightwc.h (findidx): Likewise. - * locale/programs/linereader.c (lr_ignore_rest): Define here. - * locale/programs/linereader.h (lr_ignore_rest): Don't define here, - just declare it. - (lr_getc): Always inline. - (lr_ungetc): Likewise. - * nss/nss_files/files-parse.c (parse_list): Likewise. - * stdio-common/Makefile (aux): Add printf-parsemb and - printf-parsewc. - * stdio-common/_itoa.h (_itoa_word): Always inline. - (_fitoa_word, _fitoa): Don't define here, only declare. - * stdio-common/_itoa.c (_iftoa_word): Add here. - (_fitoa): Likewise. - * stdio-common/_itowa.h (_itowa_word): Always inline. - * stdio-common/printf-parse.h (read_int): Don't inline. - (find_spec): Don't define. - Declare __find_specmb and __find_specwc. - (parse_one_spec): Don't define. - Declare __parse_one_specmb and __parse_one_specwc. - * stdio-common/printf-parsemb.c: New file. - * stdio-common/printf-parsewc.c: New file. - * stdio-common/vfprintf.c: Update calls to find_spec and - parse_one_spec for new names. - * stdio-common/printf-prs.c: Likewise. Define DONT_NEED_READ_INT. - * stdlib/Makefile (aux): Add grouping and groupingwc. - * stdlib/grouping.c: New file. - * stdlib/groupingwc.c: New file. - * stdlib/grouping.h (correctly_grouped_prefix): Don't define here. - Just prototype. - * stdlib/rpmatch.c (try): Don't inline. - * stdlib/strtod.c (round_and_return): Don't line. - (str_to_mpn): Likewise. - (__mpn_lshift_1): Always inline. Optimize only for constant count. - Adjust for name change of correctly_grouped_prefix. - * sysdeps/generic/strtol.c: Adjust for name change of - correctly_grouped_prefix. - * string/strxfrm.c (utf8_encode): Don't inline. - * sysdeps/generic/dl-cache.c: Define _dl_cache_libcmp. - * sysdeps/generic/dl-cache.h: Just declare _dl_cache_libcmp. - * sysdeps/generic/ifreq.c: New file. - * sysdeps/unix/sysv/linux/ifreq.c: New file. - * sysdeps/generic/ifreq.h (__ifreq): Only declare here. - * sysdeps/unix/sysv/linux/ifreq.h: Likewise. - * sysdeps/generic/ldsodefs.h (_dl_name_match_p): Always inline. - * sysdeps/generic/unwind-dw2-fde.c (start_fde_sort): Don't inline. - (fde_split): Likewise. - (fde_merge): Likewise. - (end_fde_sort): Likewise. - (init_object): Likewise. - (binary_search_unencoded_fdes): Likewise. - (binary_search_single_encoding_fdes): Likewise. - (binary_search_mixed_encoding_fdes): Likewise. - * sysdeps/generic/wordexp.c (w_addchar): Don't inline. - * sysdeps/i386/dl-machine.c (elf_machine_runtime_setup): Always inline. - * sysdeps/posix/sprofil.c (profil_count): Don't inline. - * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines): - Add xstatconv. - * sysdeps/unix/sysv/linux/xstatconv.h: New file. - * sysdeps/unix/sysv/linux/xstatconv.c: Don't inline the function. - Export them. Prepend __ to name. - * sysdeps/unix/sysv/linux/Dist: Add xstatconv.h. - * sysdeps/unix/sysv/linux/fxstat.c: Adjust for name change of - conversion functions. - * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/xstat64.c: Likewise. - * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. - * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max, - __statfs_filesize_max, __statfs_symlinks): Define here. __ prepended - to name. Change callers. - * sysdeps/unix/sysv/linux/pathconf.h (__statfs_link_max, - __statfs_filesize_max, __statfs_symlinks): Don't define here, just - declare. - * sysdeps/unix/sysv/linux/fpathconf.c: Change all callers. - * time/tzfile.c (decode): Always inline. - * wcsmbs/wcsnrtombs.c: Change type of inbuf to unsigned char*. - Remove cast in tomb function call. - * wcsmbs/wcsrtombs.c Likewise. - * wcsmbs/wcstob.c: Introduce new temp variable to take pointer in - tomb function call. +2004-09-18 Paul Eggert -2003-06-10 Ulrich Drepper + [BZ #391] + * stdlib/getsubopt.c: Merge fixes from gnulib. + (__strchrnul) [!_LIBC]: Define and include "strchrnul.c". + (getsubopt): Use prototypes, not K&R style. + Fix bug: memcmp(A,B,N) was being invoked on a memory block B + whose size might be smaller than N. Use strncmp to avoid the bug. - * po/zh_CN.po: Update from translation team. +2004-09-20 Ulrich Drepper -2003-06-10 Jakub Jelinek + * configure.in: If selinux has not explictly been requested, don't + comment on it missing. - * sysdeps/unix/sysv/linux/bits/in.h (IPV6_V6ONLY, IPV6_JOIN_ANYCAST, - IPV6_LEAVE_ANYCAST, IPV6_IPSEC_POLICY, IPV6_XFRM_POLICY): Define. + * elf/dl-load.c: Define __stack_prot. + * sysdeps/unix/sysv/linux/dl-execstack.c: Don't define + __stack_prot here, just declare it. -2003-06-10 Ulrich Drepper +2004-09-20 Jakub Jelinek - * inet/Makefile (aux): Add check_pf. - * include/ifaddrs.h: Add prototype for __check_pf. - * sysdeps/generic/check_pf.c: New file. - * sysdeps/unix/sysv/linux/check_pf.c: New file. - * sysdeps/unix/sysv/linux/ifaddrs.h (__no_netlink_support): Renamed - from no_netlink_support. Export. - * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't call getifaddrs, - call __check_pf. + * configure.in (libc_cv_z_relro): Only set to yes if linker script + contains DATA_SEGMENT_RELRO_END. - * sysdeps/generic/ifaddrs.h: Add libc_hidden_def. +2004-09-20 Ulrich Drepper - * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't leak memory - from getifaddr calls. + * elf/dl-load.c (_dl_map_object_from_fd): Add some error checking. + Reorder code slightly. + * elf/rtld.c (dl_main): No need to check whether l_info[DT_HASH] + is non-null, _dl_setup_hash will do that. -2003-06-09 Jakub Jelinek +2004-09-19 Ulrich Drepper - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_SETRESGID_SYSCALL): Define. - * sysdeps/unix/sysv/linux/setegid.c: Use __ASSUME_SETRESGID_SYSCALL - instead of __ASSUME_SETRESUID_SYSCALL. - (setegid): Only use setresgid32 inline syscall if __NR_setresgid32 is - defined. - * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Only use setresgid32 - inline syscall if __NR_setresuid32 is defined. - * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use - __ASSUME_SETRESGID_SYSCALL instead of __ASSUME_SETRESUID_SYSCALL. - * sysdeps/unix/sysv/linux/i386/setregid.c: Backout last changes. + * sysdeps/unix/sysv/linux/setegid.c [HAVE_PTR__NPTL_SETXID]: Call + callback to set IDs in all other threads as well. + * sysdeps/unix/sysv/linux/seteuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setegid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/seteuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setuid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c (setegid): Protect - code handling non-existant setresgid32 syscall with - #if __ASSUME_SETRESGID_SYSCALL == 0. - -2003-06-09 Andreas Schwab - - * sunrpc/Makefile (generated): Remove rpc-proto.c, rpc-proto.d. - ($(rpcsvc:%.x=$(objpfx)x%$o)): Don't depend on - $(objpfx)rpc-proto.d. - (rpcsvc-dt-files, rpcsvc-depfiles): Define. Include - $(rpcsvc-depfiles) instead of $(objpfx)rpc-proto.d. - ($(objpfx)rpc-proto.d, $(objpfx)rpc-proto.c): Remove rules. - -2003-06-08 Ulrich Drepper - - * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Use setresuid32 - syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is - defined drop compatibility code. - * sysdeps/unix/sysv/linux/setegid.c (setegid): Use setresgid32 - syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is - defined drop compatibility code. - * sysdeps/unix/sysv/linux/i386/seteuid.c (seteuid): Use - setresuid32 syscall directly if possible. - * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use - setresgid32 syscall directly if possible. - * sysdeps/unix/sysv/linux/i386/setregid.c (__setregid): Make POSIX - compliant. Don't change sgid. - * sysdeps/unix/sysv/linux/i386/setreuid.c (__setreuid): Make POSIX - compliant. Don't change suid. - - * config.h.in: Add have-forced-unwind. - * configure.in: Add AC_SUBST(libc_cv_forced_unwind). - -2003-06-07 Ulrich Drepper - - * test-skeleton.c (main): If EXPECTED_STATUS is defined check that - returned status from child matches. - - * Makeconfig (gnulib): Add -lgcc_eh once again. - -2003-06-06 Ulrich Drepper - - * test-skeleton.c (main): Use TEMP_FAILURE_RETRY with waitpid. - - * sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Only allow - %edx for first parameter. This means no pushl and therefore the - unwind info isn't screwed up. - -2003-06-04 Richard Henderson - - * sysdeps/alpha/dl-machine.h (RTLD_START): Fix top-of-stack backtrace. - * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. - * sysdeps/alpha/elf/start.S: Likewise. Remove pointless allocation. - * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Use standard ldgp - entry sequence and explicit relocs. Add unwind info for sigreturn - and rt_sigreturn. - * configure.in (libc_cv_asm_cfi_directives): Test .cfi_remember_state. - - * sysdeps/unix/sysv/linux/alpha/syscalls.list (semtimedop): New. - Annotate some parameters. - * sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_semtimedop): New. - - * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Fix typo in conversion. - - * include/libc-symbols.h (symbol_set_declare): Use arrays - of unspecified size. - -2003-06-04 Jakub Jelinek - - * config.make.in (ASFLAGS-config): New. - * Makeconfig (ASFLAGS): Append $(ASFLAGS-config). - * configure.in (libc_cv_as_noexecstack): New check. - (ASFLAGS_config): Substitute. - -2003-06-04 Jakub Jelinek - - * sysdeps/i386/fpu/bits/mathinline.h (log1p, asinh, acosh, atanh, - hypot, logb): Protect with #ifdef __FAST_MATH__. - -2003-06-04 Thorsten Kukuk - - * sysdeps/i386/fpu/bits/mathinline.h (ldexpf, ldexpl): Protect with - #ifdef __FAST_MATH__. - -2003-06-03 Ulrich Drepper - - * sysdeps/generic/glob.c [HAVE_D_TYPE] (glob_in_dir): Also allow - DT_LNK entries if GLOB_ONLYDIR is set [PR libc/5043]. - * posix/globtest.sh: Adjust for this change. - - * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_open): Call getsockname - to get the actual PID value used in the records passed up. - (getifaddrs): Don't initialize nh.pid here. - -2003-06-02 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_receive): Minor - optimization. - - * po/zh_CN.po: Update from translation team. - - * posix/getconf.c (main): Also recognize names without the - _POSIX_ prefix. - - * elf/Makefile (CFLAGS-dl-lookup.c): Define. - -2003-06-02 Bernd Schmidt - - * sysdeps/i386/fpu/bits/mathinline.h (sqrt, __sqrtl, ldexp, - ldexpf, ldexpl): Only define if __FAST_MATH__. - -2003-06-02 Richard C. Bilson - - Replace hard-coded offsets into struct sigcontext with generated file. - * sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: New file. - * sysdeps/unix/sysv/linux/ia64/Makefile - [$(subdir) = stdlib] (gen-as-const-headers): Add it. - * sysdeps/unix/sysv/linux/ia64/ucontext_i.h: Include it instead of - defining SC_* macros here. - -2003-06-02 Jakub Jelinek - - * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_PID): Remove. - -2003-06-01 Jakub Jelinek - - * sysdeps/i386/dl-machine.h: Include . - -2003-06-01 Ulrich Drepper - - * test-skeleton.c (main): Request getopt to not reorder the - command line. - - * elf/Makefile (CFLAGS-dl-runtime.c): Define. - - * wcsmbs/wcpncpy.c (__wcpncpy): Fix broken implementation to match - stpncpy. - -2003-05-31 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h (SA_NOCLDWAIT): Define. - -2003-05-31 Jakub Jelinek - - * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_plt_conflict): - New function. - (elf_machine_rela) : Avoid - RESOLVE_CONFLICT_FIND_MAP. If RESOLVE_CONFLICT_FIND_MAP is defined, - call elf_machine_plt_conflict instead of elf_machine_fixup_plt. - -2003-05-31 Ulrich Drepper - - * sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add - CFI directives. - - * csu/Makefile: Fix Makefile warnings regarding Scrt1.o. - - * libio/fileops.c (_IO_file_open): Don't mark as inline. - - * sysdeps/ia64/elf/initfini.c (gmon_initializer): Mark with - attribute used. - -2003-05-30 Ulrich Drepper - - * scripts/config.guess: Update from master copy. - * scripts/config.sub: Likewise. - -2003-05-30 Guido Guenther - - * sysdeps/mips/mips64/bsd-_setjmp.S: Include for - SETUP_GP64 and friends. - * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Fix register - names in internal_syscall{6,7}. - * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/mips/pread.c [_MIPS_SIM == _ABI64]: Fix - number of syscall arguments. - * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - -2003-05-30 Andreas Jaeger - - * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): - Add CFI directives. - - * sysdeps/unix/sysv/linux/x86_64/sigaction.c (RESTORE2): Add CFI - directives. - - * sysdeps/generic/sysdep.h: Add CFI_* macros for C files. - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): - Add CFI directives. - -2003-05-30 Jakub Jelinek - - * sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with - SHARED. - -2003-05-11 Andreas Schwab - - * Makerules: Always use -MP together with -MD. - (sed-remove-dotot): Substitute $(..) also at start of line. - ($(stdio_lim:h=st)): Use -MD instead of SUNPRO_DEPENDENCIES. - Generated defines with a single compiler call. - Use $(sed-remove-dotdot). - * mach/Makefile ($(objpfx)mach-syscalls.mk): Use -MD instead - of DEPENDENCIES_OUTPUT, and use $(sed-remove-objpfx). - * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): - Use -MD instead of SUNPRO_DEPENDENCIES, and use $(sed-remove-objpfx). - * sysdeps/unix/sysv/linux/mips/Makefile - ($(objpfx)syscall-%.h): Likewise. - -2003-05-28 Roland McGrath - - * malloc/malloc.h [! __GNUC__] (__const): Define if undefined. - -2003-05-26 Aldy Hernandez - - * soft-fp/soft-fp.h (FP_EX_UNDERFLOW): Define to 0. - -2003-05-28 Roland McGrath - - * sysdeps/unix/sysv/linux/ia64/setcontext.S: Pass fourth argument to - rt_sigprocmask system call. - * sysdeps/unix/sysv/linux/ia64/ucontext_i.h (SC_MASK): Fix value. - From Peter A. Buhr . - -2003-05-28 Ulrich Drepper - - * include/libc-symbols.h: Define hidden attribute for real also if - LIBC_NONSHARED is defined. Patch by Jakub Jelinek. - - * csu/Makefile: Add rules to build Scrt1.o. - * sysdeps/i386/elf/start.S: Make code compilable with SHARED. - * sysdeps/x86_64/elf/start.S: Likewise. - -2003-05-27 Jakub Jelinek - - * stdio-common/vfprintf.c (process_arg, process_string_arg): Use - pa_int/pa_u_int instead of pa_short_int, pa_u_short_int and pa_char. - * stdio-common/printf-parse.h (union printf_arg): Remove pa_char, - pa_short_int, pa_u_short_int and pa_float. - -2003-05-26 Jakub Jelinek - - * libio/strops.c (_IO_str_init_static): Change into a wrapper around - _IO_str_init_static_internal. - (_IO_str_init_static_internal): Moved from _IO_str_init_static, - change size argument to _IO_size_t, don't limit sprintf to 64M. - (_IO_str_init_readonly): Call _IO_str_init_static_internal. - * libio/wstrops.c (_IO_wstr_init_static): Change size argument to - _IO_size_t, don't limit swprintf to 256M. - (_IO_wstr_init_readonly): Remove. - * libio/libioP.h (_IO_str_init_static_internal, _IO_wstr_init_static): - Adjust prototypes. - (_IO_wstr_init_readonly): Remove prototype. - * libio/iovsprintf.c (_IO_vsprintf): Use - _IO_str_init_static_internal instead of INTUSE(_IO_str_init_static). - * libio/iovsscanf.c (_IO_vsscanf): Likewise. - * libio/memstream.c (open_memstream): Likewise. - * libio/obprintf.c (_IO_obstack_vfprintf): Likewise. - * libio/vasprintf.c (_IO_vasprintf): Likewise. - * libio/vsnprintf.c (_IO_vsnprintf): Likewise. - * stdio-common/tst-sprintf.c (main): Add new test. - -2003-05-26 Ulrich Drepper - - * stdio-common/vfprintf.c (vfprintf): Be bug-compatible with some - other implementation in respect of multiple uses of parameter with - different types. - -2003-05-25 Ulrich Drepper - - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_FUTEX_REQUEUE for >= 2.5.70. - -2003-05-22 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: Add CFI - directives. - * sysdeps/unix/sysv/linux/x86_64/time.S: Likewise. - * sysdeps/x86_64/strtok.S: Likewise. - -2003-05-20 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Change SI_ASYNCNL - to -60 and define SI_TKILL. - -2003-05-21 H.J. Lu - - * math/test-fenv.c (feexcp_nomask_test): Fix comment. - (feexcp_mask_test): Likewise. - -2003-05-21 Ulrich Drepper - - * locale/programs/locale.c (main): Fix typo in last patch. - - * csu/elf-init.c: Mark __preinit_array_start, __preinit_array_end, - __init_array_start, __init_array_end, __fini_array_start, and - __fini_array_end as hidden. - -2003-05-21 Petter Reinholdtsen - - * locale/programs/locale.c (main): Report an error if setlocale() - fails [PR libc/2254]. - -2003-05-21 Jakub Jelinek - - * sysdeps/unix/sysv/linux/s390/system.c: New file. - -2003-05-21 Jakub Jelinek - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (LOADARGS_0, - LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, - LOADARGS_6): Don't error if syscall argument is a string literal. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (LOADARGS_0, - LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, - LOADARGS_6): Likewise. - -2003-05-21 Andreas Jaeger - - * sysdeps/generic/sysdep.h (cfi_offset, cfi_startproc, - cfi_endproc, cfi_def_cfa, cfi_def_ccfa_register, - cfi_def_cfa_offset, cfi_adjust_cfa_offset, cfi_offset): Define. - - * sysdeps/x86_64/sysdep.h (CALL_MCOUNT): Add cfi directives. - (ENTRY): Likewise. - (END): Likewise. - - * configure.in: Test for asm cfi directives. - - * config.h.in: Add HAVE_ASM_CFI_DIRECTIVES. - -2003-05-17 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/syscall.S: Revert last patch. - - * rt/tst-clock_nanosleep.c: Include for clock_nanosleep. - -2003-05-16 Ulrich Drepper - - * rt/Makefile (tests): Add tst-clock_nanosleep. - * rt/tst-clock_nanosleep.c: New file. - * posix/Makefile (tests): Add tst-nanosleep. - * posix/tst-nanosleep.c: New file. - - * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Fix definition. - - * include/features.h (__USE_XOPEN2K): Define also for - _POSIX_C_SOURCE>=200112L. - - * sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Fold - SI_TKILL code into SI_USER. - * sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise. - - * sysdeps/posix/sigpause.c (do_sigpause): Use sigdelset after all. - -2003-05-15 Jakub Jelinek - - * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): - Remove sym argument, always use refsym. - (__process_machine_rela): Adjust callers. - * sysdeps/powerpc/powerpc64/dl-machine.c (_dl_reloc_overflow): - Likewise. - * sysdeps/powerpc/powerpc32/dl-machine.h (_dl_reloc_overflow): - Adjust prototype. - * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise. - -2003-05-15 Ulrich Drepper - - * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Fix typo - (DL_NEED_SYSINFO -> NEED_DL_SYSINFO). If aux value is not known - print numeric values. - -2003-05-12 Thorsten Kukuk - - * inet/netinet/igmp.h: Sync with Linux Kernel 2.5.69 and *BSD. - -2003-05-14 Andreas Schwab - - * sysdeps/unix/sysv/linux/ia64/umount.c: New file. - -2003-05-14 Jakub Jelinek - - * elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope - even if no DT_NEEDED is present. - -2003-05-13 David Mosberger - - * sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix the fix from - 2003-03-27: setjmp is NOT a leaf-routine (due to the call to - __sigjmp_save) so we can't keep the saved unat value in a scratch - register (r16). Use loc2 instead. - -2003-05-13 Ulrich Drepper - - * csu/Makefile: Do compile elf-init with PIC flag since in dynamic - binaries it has to be relocatable. - - * sysdeps/unix/sysv/linux/waitpid.c: Use waitpid syscall is available. - -2003-05-12 Steven Munroe - - * sysdeps/powerpc/bits/atomic.h - (__arch_compare_and_exchange_bool_8_rel): Define. - (__arch_compare_and_exchange_bool_16_rel): Define. - (__ARCH_REL_INSTR): Define if not already defined. - (__arch_atomic_exchange_and_add_32): Add "memory" to clobber list. - (__arch_atomic_decrement_if_positive_32): - Add "memory" to clobber list. - (__arch_compare_and_exchange_val_32_acq): Remove release sync. - (__arch_compare_and_exchange_val_32_rel): Define. - (__arch_atomic_exchange_32): Remove. - (__arch_atomic_exchange_32_acq): Define. - (__arch_atomic_exchange_32_rel): Define. - (atomic_compare_and_exchange_val_rel): Define. - (atomic_exchange_acq): Use __arch_atomic_exchange_*_acq forms. - (atomic_exchange_rel): Define. - * sysdeps/powerpc/powerpc32/bits/atomic.h - (__arch_compare_and_exchange_bool_32_acq): Remove release sync. - (__arch_compare_and_exchange_bool_32_rel): Define. - (__arch_compare_and_exchange_bool_64_rel): Define. - (__arch_compare_and_exchange_val_64_rel): Define. - (__arch_atomic_exchange_64): Remove. - (__arch_atomic_exchange_64_acq): Define. - (__arch_atomic_exchange_64_rel): Define. - * sysdeps/powerpc/powerpc64/bits/atomic.h - (__arch_compare_and_exchange_bool_32_rel): Define. - (__arch_compare_and_exchange_bool_64_acq): Remove release sync. - (__arch_compare_and_exchange_bool_64_rel): Define. - (__arch_compare_and_exchange_val_64_acq): Remove release sync. - (__arch_compare_and_exchange_val_64_rel): Define. - (__arch_atomic_exchange_64): Remove. - (__arch_atomic_exchange_64_acq): Define. - (__arch_atomic_exchange_64_rel): Define. - (__arch_atomic_exchange_and_add_64): Add "memory" to clobber list. - (__arch_atomic_decrement_if_positive_64): - Add "memory" to clobber list. - [!UP](__ARCH_REL_INSTR): Define as lwsync. - -2003-05-11 Andreas Schwab - - * io/Makefile ($(objpfx)ftwtest.out): Use absolute file names. - -2003-05-11 Ulrich Drepper - - * time/tst-strftime.c (do_test): Add tests for - flag. - -2003-05-11 Jim Meyering - - * time/strftime.c (my_strftime): Let the `-' (no-pad) flag affect - the space-padded-by-default conversion specifiers, %e, %k, %l. - -2003-05-11 Andreas Schwab - - * sysdeps/generic/sched_setaffinity.c: Fix parameter name. - -2003-05-10 Ulrich Drepper - - * sysdeps/generic/bits/sched.h: Define cpu_set_t only if not - already defined and when really needed. - * sysdeps/unix/sysv/linux/bits/sched.h: Likewise. - -2003-05-09 Thorsten Kukuk - - * sysdeps/unix/sysv/linux/netinet/igmp.h: Don't include kernel - headers, add defines from kernel header, move it from here... - * inet/netinet/igmp.h: ... to here. - * inet/Makefile (headers): Add netinet/igmp.h. - * sysdeps/unix/sysv/linux/Makefile: Remove netinet/igmp.h. - * sysdeps/unix/sysv/linux/Dist: Remove netinet/igmp.h. - -2003-05-10 Ulrich Drepper - - * sysdeps/pthread/lio_listio64.c (lio_listio64): If SIG == NULL, - use dummy sigevent structure with SIGEV_NONE [PR libc/5015]. - -2003-05-09 Thorsten Kukuk - - * libio/bits/stdio.h: Sync prototypes with libio/stdio.h - (remove __THROW from possible cancellation points). - -2003-05-10 Ulrich Drepper - - * posix/sched.h (CPU_SETSIZE): Define. - -2003-05-09 Ulrich Drepper - - * Makeconfig (gnulib): Remove -lgcc_eh again. - - * posix/sched.h: Change prototypes of sched_getaffinity and - sched_setaffinity. Define CPU_SET, CPU_CLR, CPU_ISSET, and CPU_ZERO. - * sysdeps/generic/sched_getaffinity.c: Adjust definition. - * sysdeps/generic/sched_setaffinity.c: Likewise. - * sysdeps/generic/bits/sched.h: Define __CPU_SETSIZE, __NCPUBITS, - __CPUELT, __CPUMASK, cpu_set_t, __cpu_mask, __CPU_ZERO, __CPU_SET, - __CPU_CLR, and __CPU_ISSET. - * sysdeps/unix/sysv/linux/bits/sched.h: Likewise. - * sysdeps/unix/sysv/linux/sched_getaffinity.c: New file. - * sysdeps/unix/sysv/linux/sched_setaffinity.c: New file. - - * include/atomic.h (atomic_exchange_acq): Renamed from atomic_exchange. - (atomic_exchange_rel): New #define. - * sysdeps/ia64/bits/atomic.h: Likewise. - * sysdeps/i386/i486/bits/atomic.h (atomic_exchange_acq): Renamed from - atomic_exchange. - * sysdeps/m68k/m68020/bits/atomic.h: Likewise. - * sysdeps/powerpc/bits/atomic.h: Likewise. - * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: Likewise. - * sysdeps/sparc/sparc64/bits/atomic.h: Likewise. - * sysdeps/x86_64/bits/atomic.h: Likewise. - * csu/tst-atomic.c: Use atomic_exchange_acq instead of atomic_exchange. - - * sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c: New file. - -2003-05-08 Ulrich Drepper - - * malloc/thread-m.h: Remove special handling of thread_atfork if - HAVE_register_atfork_malloc is defined. - -2003-05-07 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/syscall.S: Add DWARF2 unwind - information. - -2003-05-06 Ulrich Drepper - - * libio/oldiofdopen.c (_IO_old_fdopen): Use _IO_old_init not _IO_init. - * libio/oldiofopen.c (_IO_old_fopen): Likewise. - * libio/libioP.h: Declare _IO_old_init. - * libio/genops.c (_IO_no_init): Split in two. New function - _IO_old_init. - -2003-05-05 Ulrich Drepper - - * sysdeps/generic/enbl-secure.c (__libc_enable_secure_decided): New - variable. - (__libc_init_secure): Don't do anything if __libc_enable_secure_decided - is nonzero. - * include/unistd.h: Declare __libc_enable_secure_decided. - * elf/dl-support.c (_dl_aux_init): Recognize AT_UID, AT_EUID, AT_GID, - and AT_EGID. If all found, set __libc_enable_secure and - __libc_enable_secure_decided. - - * sysdeps/generic/libc-start.c [!SHARED]: Call - __libc_check_standard_fds after __libc_init_first. - -2003-05-05 Roland McGrath + * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise. + * sysdeps/unix/sysv/linux/setuid.c: New file. + * sysdeps/unix/sysv/linux/setgid.c: New file. + * sysdeps/unix/sysv/linux/setreuid.c: New file. + * sysdeps/unix/sysv/linux/setregid.c: New file. + * sysdeps/unix/sysv/linux/setresuid.c: New file. + * sysdeps/unix/sysv/linux/setresgid.c: New file. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Define INTERNAL_SYSCALL_NCS. + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c: Use x86 version. + * sysdeps/unix/sysv/linux/sparc/sparc32/seteuid.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/setresgid.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc32/setresuid.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Remove setresgid + and setresuid. + * nscd/aicache.c: Use pthread_seteuid_np instead of seteuid. + * nscd/grpcache.c: Likewise. + * nscd/hstcache.c: Likewise. + * nscd/pwdcache.c: Likewise. - * Makerules (common-before-compile): New variable. - ($(common-objpfx)%.make): Depend on that instead of $(before-compile). - ($(common-objpfx)%.h $(common-objpfx)%.h.d): Likewise. Move this rule - to after all setting of before-compile. + * resolv/res_mkquery.c (res_nmkquery): Fix typo. -2003-05-05 Jakub Jelinek +2004-09-18 Ulrich Drepper - * sysdeps/ia64/bits/atomic.h (__arch_compare_and_exchange_val_8_acq, - __arch_compare_and_exchange_val_16_acq): Cast 0 to mem's type. - * sysdeps/powerpc/powerpc32/bits/atomic.h - (__arch_compare_and_exchange_val_64_acq): Likewise. - * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h - (__arch_compare_and_exchange_val_8_acq, - __arch_compare_and_exchange_val_16_acq, - __arch_compare_and_exchange_val_64_acq): Likewise. - * sysdeps/sparc/sparc64/bits/atomic.h - (__arch_compare_and_exchange_val_8_acq, - __arch_compare_and_exchange_val_16_acq): Likewise. - * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq, - __arch_compare_and_exchange_val_16_acq, - __arch_compare_and_exchange_val_64_acq): Likewise. - * sysdeps/unix/sysv/linux/sh/bits/atomic.h - (__arch_compare_and_exchange_val_64_acq): Likewise. - * sysdeps/s390/s390-64/backtrace.c (__backtrace): Add cast to shut - up warning. - * sysdeps/s390/fpu/fegetenv.c (fegetenv): Likewise. + * sysdeps/unisx/sysv/linux/dl-execstack.c: Get protection flag + from memory. + * elf/dl-load.c (_dl_map_object_from_fd): Add PROT_EXEC flag to + __stack_flags. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h - (INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0): - Return long instead of int. - (INTERNAL_SYSCALL_ERROR_P): Cast val to unsigned long, replace - 0xfffff001u with -4095UL. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Do not use + gethostbyname3_r if we are not looking for the canonical name. -2003-05-05 Andreas Jaeger + * resolv/res_mkquery.c (res_nmkquery): Randomize request ID every + time. - * sysdeps/x86_64/fpu_control.h: New from i386. +2004-09-18 Roland McGrath - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (__NR_semtimedop): - Define if not defined. + * sysdeps/unix/sysv/linux/waitid.c (do_waitid): Pass fifth argument to + system call. - * sunrpc/Makefile (generated-dirs): New variable. - * resolv/Makefile (generated): New variable. +2004-09-17 Ulrich Drepper -2003-05-04 Roland McGrath + * include/link.h (struct link_map): Add l_used element. + * sysdeps/generic/ldsodefs.h: Define DL_DEBUG_UNUSED. + * elf/rtld.c (process_dl_debug): Recognize unused. + (dl_main): When unused debug flag is set check for unused direct + dependencies. + When printing dependencies and SONAME starts with /, omit the SONAME => + part. + * elf/dl-lookup.c (_dl_lookup_symbol_x): Mark object in which the + symbol has been found as used. + * elf/ldd.bash.in: Add -u option. - * csu/Makefile ($(csu-dummies) target rule): Don't use a temp C file. - Depend on $(before-compile). +2004-09-18 Jakub Jelinek - * csu/Makefile ($(objpfx)crt%.o): Replace implicit rule with a static - pattern rule. The implicit rule could be ruled out when $(objpfx) - didn't exist at the time of its consideration (ugh!). + * sysdeps/unix/sysv/linux/nscd_setup_thread.c (setup_thread): + Do nothing if __NR_set_tid_address is not defined. [BZ #390] - * Makerules (+make-deps): Fix target matching. - Use $(sed-remove-dotdot). +2004-09-17 Ulrich Drepper -2003-05-03 Ulrich Drepper + * sysdeps/posix/getaddrinfo.c: Use gethostbyname3_r NSS function + in case it is available. - * nscd/nscd.c (main): Parse config file right after parsing - parameters. Then, if get_stats is true, call receive_print_stats. - Drop parameter from nscd_init call. - (get_stats): New variable. - (parse_opt): Set get_stats, don't call receive_print_stats here. - * nscd/nscd.h: Declare dbs, stat_user, and stat_uid. Adjust nscd_init - prototype. - * nscd/connections.c (stat_user, stat_uid): New variables. - (dbs): Make global. - (nscd_init): Don't read configuration file here. Drop parameter. - (handle_request): Cleanup handling of non-database lookup requests. - * nscd/nscd_conf.c (nscd_parse_file): Recognize stat-user entry. - Get UID of the specified user. Use xstrdup instead of strdup. - * nscd/nscd_stat.c (receive_print_stats): Check UID. If not zero, - check stat_user. - * nscd/Makefile (nscd-modules): Add xstrdup. - * nscd/nscd.conf: Document stat-user entry. +2004-09-17 Jakub Jelinek -2003-05-03 H.J. Lu + * nscd/nscd.c (parse_opt): Write arg string instead of (void *) + key to the socket. - * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_semtimedop): Define - if not defined. +2004-09-17 Ulrich Drepper -2003-04-22 Roland McGrath + * misc/sys/cdefs.h: Define __nonnull using nonnull function attribute + for gcc 3.3 and higher. + * io/fcntl.h: Add __nonnull where appropriate. + * io/ftw.h: Likewise. + * io/utime.h: Likewise. + * io/sys/poll.h: Likewise. + * io/sys/sendfile.h: Likewise. + * io/sys/stat.h: Likewise. + * io/sys/statfs.h: Likewise. + * io/sys/statvfs.h: Likewise. + * posix/unistd.h: Likewise. + * catgets/nl_types.h: Likewise. + * crypt/crypt.h: Likewise. + * debug/execinfo.h: Likewise. - * elf/elf.h (AT_SYSINFO_EHDR): New macro, replaces AT_SYSINFO_EH_FRAME. - * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove - dl_sysinfo_eh_frame member, add dl_sysinfo_dso member instead. - * elf/dl-support.c: Update defn. - * sysdeps/generic/libc-start.c: Don't call __register_frame_info_bases. - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]: - Set GL(dl_sysinfo_dso) from AT_SYSINFO_EHDR. - (_dl_show_auxv): Grok AT_SYSINFO_EHDR, not AT_SYSINFO_EH_FRAME. - * elf/rtld.c (dl_main) [NEED_DL_SYSINFO]: If GL(dl_sysinfo_dso) is - set, set up a link_map for the preloaded, prelinked object. +2004-09-16 Ulrich Drepper -2003-05-03 Roland McGrath + * posix/glob.h: Remove cruft to make header usable outside glibc. + The maintenance headache is too big. - * sysdeps/gnu/Makefile (generated): Append errlist-compat.c here, ... - * stdio-common/Makefile: ... not here. + * configure.in: Add test for required SELinux features. + * config.make.in: Add have-selinux entry. + * config.h.in: Add HAVE_SELINUX entry. + * nscd/Makefile (nscd-modules): Add selinux. + (CFLAGS-selinux.c): Add -fpie. + Define selinux-LIBS and use in link line. + * nscd/connections.c (handle_request): Check access SELinux permissions + before processing request. + * nscd/nscd.c (main): Initialize selinux_enabled and stop avc thread. + * nscd/nscd_stat.c: Transmit and print AVC statistics. + * nscd/selinux.c: New file. + * nscd/selinux.h: New file. + Patch mostly by Matthew Rickard . - * csu/Makefile ($(objpfx)initfini.s): Depend on $(before-compile). - * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): Likewise. +2004-09-16 Jakub Jelinek -2003-05-02 Ulrich Drepper + * nscd/nscd_helper.c (__nscd_unmap, get_mapping): Use __munmap + instead of munmap. - * sysdeps/unix/sysv/linux/s390/semtimedop.c: New file. + * nscd/Makefile (CFLAGS-aicache.c): Set to -fpie. - * sysdeps/unix/sysv/linux/alpha/ipc_priv.h (IPCOP_semtimedop): Define. +2004-09-16 Thorsten Kukuk - * sysdeps/generic/dl-fptr.c (_dl_make_fptr): Use 0 not NULL for - comparing ftab elements. - (_dl_unmap): Fix typo in test. - (_dl_make_fptr): Fix typos introduced in last change. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Check + __nss_not_use_nscd_hosts variable if nscd should be used or not. - * sysdeps/generic/dl-fptr.c: Put back one optimization from the - original patch. Use non-exported symbols. Mark translatable - strings. Pretty printing. +2004-09-16 Ulrich Drepper -2003-05-02 Roland McGrath + * nscd/nscd_proto.h: Define NSS_NSCD_RETRY. + Add __nscd_getai prototype. + * nss/getXXbyYY_r.c: Remode definition of NSS_NSCD_RETRY. + * nscd/nscd-client.h: Remove __nscd_getai prototype. + * nscd/nscd_getai.c: Include nscd_proto.h. - * Makerules (do-stamp): Do $(make-target-directory). + * elf/ldd.bash.in: Add support for SELinux environments. + Patch by Stephen Smalley . -2003-04-07 H.J. Lu +2004-09-16 Roland McGrath - * sysdeps/generic/dl-fptr.c: Modify to remove the lock. + * configure.in (--with-headers): Let argument contain a : separated + list of directories to use, not just one. + * configure: Regenerated. -2003-04-03 H.J. Lu +2004-09-15 Richard Henderson - * sysdeps/ia64/dl-fptr.c: Moved to ... - * sysdeps/generic/dl-fptr.c: Here. + * sysdeps/alpha/fpu/libm-test-ulps: Update. + * scripts/data/c++-types-alpha-linux-gnu.data: New file. - * sysdeps/generic/dl-fptr.h: New. - * sysdeps/ia64/dl-fptr.h: New. +2004-09-15 Ulrich Drepper - * sysdeps/ia64/dl-symaddr.c: Moved to ... - * sysdeps/generic/dl-symaddr.c: here. + * nscd/aicache.c: Prefer using gethostbyname3_r NSS callback to also + get ttl and canonical name. Use these two values. + * resolv/Versions: Export _nss_dns_gethostbyname3_r from libnss_dns. + * resolv/nss_dns/dns-host.c (getanswer_r): Take two new parameters. + If nonnull fill with TTL and pointer to canonical name respectively. + (_nss_dns_gethostbyaddr_r): Pass NULL in new parameters of getanswer_r. + (_nss_dns_gethostbyname2_r): Just wrapper around + _nss_dns_gethostbyname3_r. + (_nss_dns_gethostbyname3_r): Renamed from _nss_dns_gethostbyname2_r. + Take two new parameters which as passed to getanswer_r. - * sysdeps/ia64/dl-machine.h: Include . - (IA64_BOOT_FPTR_TABLE_LEN): Removed. - (ia64_fdesc): Likewise. - (ia64_fdesc_table): Likewise. - (__ia64_make_fptr): Likewise. - (__ia64_init_bootstrap_fdesc_table): Replace __ia64_boot_fptr_table - with _dl_boot_fptr_table. - (elf_machine_runtime_setup): Replace `struct ia64_fdesc' with - `struct fdesc'. - (elf_machine_rela): Replace __ia64_make_fptr with _dl_make_fptr. + * nscd/Makefile (rountines): Add nscd_getai. + (nscd-modules): Add aicache. + * nscd/aicache.c: New file. + * nscd/nscd_getai.c: New file. + * nscd/cache.c (prune_cache): Handle GETAI request type. + * nscd/connections.c: Add GETAI support in request handling. + * nscd/nscd-client.h (request_type): Add GETAI. + Define ai_response_header and struct nscd_ai_result types. + (struct datahead): Add aidata field. + Declare __nscd_getai. + * nscd/nscd.c: Add getaddrinfo definition to catch problems. + * nscd/nscd.h: Declare addhstai and readdhstai. -2003-05-01 Roland McGrath + * sysdeps/posix/getaddrinfo.c: Add support for using cached results. + * posix/Makefile (CFLAGS-getaddrinfo.c): Add -DUSE_NSCD. - * sysdeps/generic/bp-thunks.h: Protect includes with [!__ASSEMBLER__]. - * sysdeps/unix/sysv/linux/i386/bp-thunks.h: Likewise. + * nscd/nscd-client.h (struct datahead): Use uint8_t instead of bool. - * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): - Use $(make-target-directory). - * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Likewise. +2004-09-14 Ulrich Drepper - * Makerules (compile-mkdep-flags): New variable, pass -MD -MF $@.d. - (compile-command.S): Don't use ifndef. Append $(compile-mkdep-flags). - (compile-command.s, compile-command.c): Likewise. - ($(objpfx)%.d): All such pattern rules removed. - ($(+sysdir_pfx)sysd-rules): Don't generate them. - ($(common-objpfx)dummy.d): Target removed. - (make-dummy-dep): Variable removed. - (generate-md5): Likewise. - (%.d: %.dt): New pattern rule. - (+depfiles): Use $(wildcard) function to get just existing *.d files - and .d files for existing *.dt files. - (common-clean): Remove all *.d and *.dt files. - (before-compile): Add $(objpfx). when it doesn't exist, - regardless of $(no_deps). - * elf/rtld-Rules ($(objpfx)rtld-%.d): All such pattern rules removed. - (rtld-depfiles): Use .os.d instead of .d names. - Include existing *.d files and .d files for existing *.dt files. + * misc/sys/cdefs.h: Remove debugging text from __P and __PMT. - * Makerules ($(common-objpfx)%.make): Protect with [! subdir]. - Use -MD, -MT and -MF flags instead of SUNPRO_DEPENDENCIES variable. +2004-09-13 Ulrich Drepper - * sysdeps/unix/Makefile ($(common-objpfx)s-%.d): Remove compat.h hack. - Do s-*.d includes only if we have some syscall routines in this subdir. + * misc/sys/cdefs.h: Restore old definition of __P. + * csu/munch.awk: Remove uses of __P and __PMT. + * gmon/gmon.c: Likewise. + * hesiod/hesiod.h: Likewise. + * include/stdio.h: Likewise. + * io/fts.c: Likewise. + * libio/genops.c: Likewise. + * libio/libioP.h: Likewise. + * libio/fileops.c: Likewise. + * libio/iolibio.h: Likewise. + * libio/libio.h: Likewise. + * libio/memstream.c: Likewise. + * libio/oldfileops.c: Likewise. + * libio/oldstdfiles.c: Likewise. + * libio/iopopen.c: Likewise. + * libio/vsnprintf.c: Likewise. + * libio/vswprintf.c: Likewise. + * libio/wgenops.c: Likewise. + * libio/oldiopopen.c: Likewise. + * locale/programs/xmalloc.c: Likewise. + * locale/programs/xstrdup.c: Likewise. + * malloc/mtrace.c: Likewise. + * misc/getttyent.c: Likewise. + * misc/getusershell.c: Likewise. + * nis/rpcsvc/ypupd.h: Likewise. + * posix/fnmatch.h: Likewise. + * posix/glob.h: Likewise. + * resolv/arpa/nameser.h: Likewise. + * resolv/gethnamaddr.c: Likewise. + * resolv/resolv.h: Likewise. + * resolv/inet_net_ntop.c: Likewise. + * resolv/inet_net_pton.c: Likewise. + * resolv/res_init.c: Likewise. + * resolv/nss_dns/dns-network.c: Likewise. + * stdio-common/vfprintf.c: Likewise. + * stdio-common/reg-printf.c: Likewise. + * sysdeps/generic/chflags.c: Likewise. + * sysdeps/generic/fchflags.c: Likewise. + * sysdeps/generic/glob.c: Likewise. + * sysdeps/generic/printf_fphex.c: Likewise. + * sysdeps/generic/memcmp.c: Likewise. + * sysdeps/generic/memcopy.h: Likewise. + * sysdeps/generic/morecore.c: Likewise. + * sysdeps/generic/sstk.c: Likewise. + * sysdeps/posix/sigvec.c: Likewise. + * sysdeps/posix/ttyname_r.c: Likewise. + * sysdeps/standalone/arm/bits/errno.h: Likewise. + * sysdeps/standalone/standalone.h: Likewise. + * sysdeps/standalone/i386/force_cpu386/brdinit.c: Likewise. + * sysdeps/standalone/i386/force_cpu386/_exit.c: Likewise. + * sysdeps/unix/arm/start.c: Likewise. + * sysdeps/unix/bsd/sigaction.c: Likewise. + * sysdeps/unix/bsd/sun/m68k/sigtramp.c: Likewise. + * sysdeps/unix/bsd/sun/sparc/sigtramp.c: Likewise. + * sysdeps/unix/bsd/sun/sunos4/wait4.c: Likewise. + * sysdeps/unix/bsd/ultrix4/mips/sigvec.c: Likewise. + * sysdeps/unix/bsd/ultrix4/sysconf.c: Likewise. + * sysdeps/unix/sparc/start.c: Likewise. + * sysdeps/unix/sysv/getdents.c: Likewise. + * sysdeps/unix/sysv/irix4/fpathconf.c: Likewise. + * sysdeps/unix/sysv/irix4/getgroups.c: Likewise. + * sysdeps/unix/sysv/irix4/getpriority.c: Likewise. + * sysdeps/unix/sysv/irix4/getrusage.c: Likewise. + * sysdeps/unix/sysv/irix4/pathconf.c: Likewise. + * sysdeps/unix/sysv/irix4/setgroups.c: Likewise. + * sysdeps/unix/sysv/irix4/sigtramp.c: Likewise. + * sysdeps/unix/sysv/irix4/start.c: Likewise. + * sysdeps/unix/sysv/irix4/sysconf.c: Likewise. + * sysdeps/unix/sysv/sco3.2.4/__setpgid.c: Likewise. + * sysdeps/unix/sysv/sco3.2.4/getgroups.c: Likewise. + * sysdeps/unix/sysv/sysv4/__getpgid.c: Likewise. + * sysdeps/unix/sysv/sysv4/__setpgid.c: Likewise. + * sysdeps/unix/sysv/sysv4/getpgid.c: Likewise. + * sysdeps/unix/sysv/sysv4/setpgid.c: Likewise. + * sysdeps/unix/sysv/sysv4/sethostname.c: Likewise. + * sysdeps/unix/sysv/sysv4/setsid.c: Likewise. + * sysdeps/unix/sysv/sysv4/sysconf.c: Likewise. + * sysdeps/unix/sysv/sysv4/waitpid.c: Likewise. + * sysdeps/unix/sysv/sysv4/solaris2/getdents.c: Likewise. + * time/tzset.c: Likewise. + * time/strftime_l.c: Likewise. + * time/strptime_l.c: Likewise. + * crypt/md5.h: Likewise. - * include/libc-symbols.h (libc_freeres_ptr): Use %nobits instead of - @nobits. The former is accepted by gas on any ELF platform. +2004-09-13 Andreas Jaeger -2003-05-01 Ulrich Drepper + * configure.in: Support GCC 4.x. + * configure: Regenerated. - * sysdeps/unix/sysv/linux/semtimedop.c: New file. +2004-09-13 Thorsten Kukuk - * malloc/malloc.c (mSTATs): Call ptmalloc_init if necessary. + * nscd/nscd_stat.c: Don't access dbs[cnt].head for disabled services. -2003-04-29 Andreas Schwab + * nscd/nscd.init: Fix path to socket. - * string/test-strcat.c (do_one_test): Fix attribute name. +2004-09-12 Ulrich Drepper -2003-04-30 Alexandre Oliva + * nscd/nscd_helper.c (get_mapping): Correctly check cmsg length. + Avoid file descriptor leak in case of size mismatch. - * sysdeps/unix/sysv/linux/mips/sys/ucontext.h (ucontext): Make - uc_flags long for all ABIs. + * nscd/nscd-client.h: Fix database structure layout for biarch. + * nscd/mem.c (gc): Add casts to avoid warnings. -2003-04-30 Andreas Jaeger + * nss/getent.c: Don't preconstruct help message. Do it only when + needed. - * sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h - (DR_CONTROL_RESERVED): Use correct value for 64-bit. - Reported by Andrew Derrick Balsa . - Add bi-arch support. + * locale/programs/locale.c: Simplify help message printing. -2003-04-30 Ulrich Drepper +2004-09-12 Roland McGrath - * malloc/malloc.c (mEMALIGn): Define alias __memalign_internal. - (__posix_memalign): Use __memalign_internal instead of memalign. + * sysdeps/mach/hurd/i386/init-first.c (init1) [! SHARED]: Add decls + missing in last change. -2003-04-29 Roland McGrath +2004-09-11 Thorsten Kukuk - * configure.in: Search for AUTOCONF unconditionally. - Just don't complain about missing it under --without-cvs. + * nis/nss_compat/compat-grp.c: Check that buflen is greater zero + before writing data into the buffer with negative offset. + * nis/nss_compat/compat-initgroups.c: Likewise. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c Likewise. - * include/libc-symbols.h (__symbol_set_attribute): New macro, - give hidden for [SHARED] and weak for [! SHARED]. - (symbol_set_declare): Use that. Never need weak_extern these days. - * Makerules ($(common-objpfx)shlib.lds): Go back to using PROVIDE. - Depend on $(..)Makerules. +2004-09-12 Ulrich Drepper -2003-04-29 Ulrich Drepper + * misc/syslog.c (vsyslog): Fix copying of PID in case of + out-of-memory situation. [BZ #365]. - * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Use __ protected - variants of socket, bind, recvmsg, and sendto. + * sysdeps/alpha/fpu/bits/mathinline.h: Use __NTH instead of + __THROW in inline function definitions. - * sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word. + * posix/spawn.h [__USE_GNU]: Define POSIX_SPAWN_USEVFORK. + * posix/spawnattr_setflags.c: Check whether any unknown bit is set + in FLAGS parameter and fail if this is the case. + * sysdeps/posix/spawni.c: Use vfork if POSIX_SPAWN_USEVFORK flag is + set. - * include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset. - * signal/sigaddset.c: Add libc_hidden_def. - * signal/sigdelset.c: Likewise. + * nscd/pwdcache.c (cache_addpw): Sync also negative results to disk. + * nscd/grpcache.c (cache_addgr): Likewise. + * nscd/hstcache.c (cache_addhst): Likewise. -2003-04-29 Jakub Jelinek +2004-09-11 Roland McGrath - * sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move - to the end of the file. + * sysdeps/mach/hurd/i386/init-first.c (init1) [! SHARED]: + Set _dl_phdr and _dl_phnum. + (init1): When bootstrap task, bail early and never examine *D. - * configure.in: Change __oline__ to $LINENO. - (HAVE_BUILTIN_REDIRECTION): New check. - * config.h.in (HAVE_BUILTIN_REDIRECTION): Add. - * include/libc-symbols.h (libc_hidden_builtin_proto, - libc_hidden_builtin_def, libc_hidden_builtin_weak, - libc_hidden_builtin_ver): Define. - * include/string.h (memchr, memcpy, memmove, memset, strcat, strchr, - strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr, - strspn, strstr): Add libc_hidden_builtin_proto. - * intl/plural.y: Include string.h. - * sysdeps/alpha/alphaev6/memchr.S (memchr): Add - libc_hidden_builtin_def. - * sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise. - * sysdeps/alpha/alphaev6/memset.S (memset): Likewise. - * sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise. - * sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise. - * sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise. - * sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise. - * sysdeps/alpha/memchr.S (memchr): Likewise. - * sysdeps/alpha/memset.S (memset): Likewise. - * sysdeps/alpha/strcat.S (strcat): Likewise. - * sysdeps/alpha/strchr.S (strchr): Likewise. - * sysdeps/alpha/strcmp.S (strcmp): Likewise. - * sysdeps/alpha/strcpy.S (strcpy): Likewise. - * sysdeps/alpha/strlen.S (strlen): Likewise. - * sysdeps/alpha/strncmp.S (strncmp): Likewise. - * sysdeps/alpha/strncpy.S (strncpy): Likewise. - * sysdeps/alpha/strrchr.S (strrchr): Likewise. - * sysdeps/arm/memset.S (memset): Likewise. - * sysdeps/arm/strlen.S (strlen): Likewise. - * sysdeps/generic/memchr.c (memchr): Likewise. - * sysdeps/generic/memcpy.c (memcpy): Likewise. - * sysdeps/generic/memmove.c (memmove): Likewise. - * sysdeps/generic/memset.c (memset): Likewise. - * sysdeps/generic/strcat.c (strcat): Likewise. - * sysdeps/generic/strchr.c (strchr): Likewise. - * sysdeps/generic/strcmp.c (strcmp): Likewise. - * sysdeps/generic/strcpy.c (strcpy): Likewise. - * sysdeps/generic/strcspn.c (strcspn): Likewise. - * sysdeps/generic/strlen.c (strlen): Likewise. - * sysdeps/generic/strncmp.c (strncmp): Likewise. - * sysdeps/generic/strncpy.c (strncpy): Likewise. - * sysdeps/generic/strpbrk.c (strpbrk): Likewise. - * sysdeps/generic/strrchr.c (strrchr): Likewise. - * sysdeps/generic/strspn.c (strspn): Likewise. - * sysdeps/generic/strstr.c (strstr): Likewise. - * sysdeps/i386/i486/strcat.S (strcat): Likewise. - * sysdeps/i386/i486/strlen.S (strlen): Likewise. - * sysdeps/i386/i586/memcpy.S (memcpy): Likewise. - * sysdeps/i386/i586/memset.S (memset): Likewise. - * sysdeps/i386/i586/strchr.S (strchr): Likewise. - * sysdeps/i386/i586/strcpy.S (strcpy): Likewise. - * sysdeps/i386/i586/strlen.S (strlen): Likewise. - * sysdeps/i386/i686/memcpy.S (memcpy): Likewise. - * sysdeps/i386/i686/memmove.S (memmove): Likewise. - * sysdeps/i386/i686/memset.S (memset): Likewise. - * sysdeps/i386/i686/strcmp.S (strcmp): Likewise. - * sysdeps/i386/memchr.S (memchr): Likewise. - * sysdeps/i386/memset.c (memset): Likewise. - * sysdeps/i386/strchr.S (strchr): Likewise. - * sysdeps/i386/strcspn.S (strcspn): Likewise. - * sysdeps/i386/strlen.c (strlen): Likewise. - * sysdeps/i386/strpbrk.S (strpbrk): Likewise. - * sysdeps/i386/strrchr.S (strrchr): Likewise. - * sysdeps/i386/strspn.S (strspn): Likewise. - * sysdeps/ia64/memchr.S (memchr): Likewise. - * sysdeps/ia64/memcpy.S (memcpy): Likewise. - * sysdeps/ia64/memmove.S (memmove): Likewise. - * sysdeps/ia64/memset.S (memset): Likewise. - * sysdeps/ia64/strcat.S (strcat): Likewise. - * sysdeps/ia64/strchr.S (strchr): Likewise. - * sysdeps/ia64/strcmp.S (strcmp): Likewise. - * sysdeps/ia64/strcpy.S (strcpy): Likewise. - * sysdeps/ia64/strlen.S (strlen): Likewise. - * sysdeps/ia64/strncmp.S (strncmp): Likewise. - * sysdeps/ia64/strncpy.S (strncpy): Likewise. - * sysdeps/m68k/memchr.S (memchr): Likewise. - * sysdeps/m68k/strchr.S (strchr): Likewise. - * sysdeps/mips/mips64/memcpy.S (memcpy): Likewise. - * sysdeps/mips/mips64/memset.S (memset): Likewise. - * sysdeps/mips/memcpy.S (memcpy): Likewise. - * sysdeps/mips/memset.S (memset): Likewise. - * sysdeps/powerpc/powerpc32/memset.S (memset): Likewise. - * sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise. - * sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise. - * sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise. - * sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise. - * sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise. - * sysdeps/powerpc/powerpc64/memset.S (memset): Likewise. - * sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise. - * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise. - * sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise. - * sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise. - * sysdeps/powerpc/strcat.c (strcat): Likewise. - * sysdeps/sparc/sparc32/memchr.S (memchr): Likewise. - * sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise. - * sysdeps/sparc/sparc32/memset.S (memset): Likewise. - * sysdeps/sparc/sparc32/strcat.S (strcat): Likewise. - * sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise. - * sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise. - * sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise. - * sysdeps/sparc/sparc32/strlen.S (strlen): Likewise. - * sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise. - * sysdeps/sparc/sparc64/memchr.S (memchr): Likewise. - * sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise. - * sysdeps/sparc/sparc64/memset.S (memset): Likewise. - * sysdeps/sparc/sparc64/strcat.S (strcat): Likewise. - * sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise. - * sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise. - * sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise. - * sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise. - * sysdeps/sparc/sparc64/strlen.S (strlen): Likewise. - * sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise. - * sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise. - * sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise. - * sysdeps/sparc/sparc64/strspn.S (strspn): Likewise. - * sysdeps/sh/memcpy.S (memcpy): Likewise. - * sysdeps/sh/memset.S (memset): Likewise. - * sysdeps/sh/strlen.S (strlen): Likewise. - * sysdeps/s390/s390-32/memchr.S (memchr): Likewise. - * sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise. - * sysdeps/s390/s390-32/memset.S (memset): Likewise. - * sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise. - * sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise. - * sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise. - * sysdeps/s390/s390-64/memchr.S (memchr): Likewise. - * sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise. - * sysdeps/s390/s390-64/memset.S (memset): Likewise. - * sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise. - * sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise. - * sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise. - * sysdeps/x86_64/memcpy.S (memcpy): Likewise. - * sysdeps/x86_64/memset.S (memset): Likewise. - * sysdeps/x86_64/strcat.S (strcat): Likewise. - * sysdeps/x86_64/strchr.S (strchr): Likewise. - * sysdeps/x86_64/strcmp.S (strcmp): Likewise. - * sysdeps/x86_64/strcpy.S (strcpy): Likewise. - * sysdeps/x86_64/strcspn.S (strcspn): Likewise. - * sysdeps/x86_64/strlen.S (strlen): Likewise. - * sysdeps/x86_64/strspn.S (strspn): Likewise. - * string/string-inlines.c: Move... - * sysdeps/generic/string-inlines.c: ...here. - (__memcpy_g, __strchr_g): Remove. - (__NO_INLINE__): Define before including , - undefine after. Include bits/string.h and bits/string2.h. - * sysdeps/i386/i486/string-inlines.c: New file. - * sysdeps/i386/string-inlines.c: New file. - * sysdeps/i386/i486/Versions: Remove. - All GLIBC_2.1.1 symbols moved... - * sysdeps/i386/Versions (libc): ...here. +2004-09-11 Alfred M. Szmidt -2003-04-29 Ulrich Drepper + * sysdeps/mach/hurd/i386/tls.h (__i386_set_gdt) [!HAVE_I386_SET_GDT]: + Cast THR, SEL and DESC to `void'. - * sysdeps/i386/fpu/Makefile: New file. - * sysdeps/i386/fpu/fedisblxcpt.c: Also set SSE control word. - * sysdeps/i386/fpu/feenablxcpt.c: Likewise. - * sysdeps/i386/fpu/feholdexcpt.c: Likewise. - * sysdeps/i386/fpu/fesetround.c: Also set SSE rounding mode - [PR libc/4987]. +2004-09-11 Ulrich Drepper -2003-04-28 Ulrich Drepper + * nscd/connections.c (nscd_run): Call setup_thread only for enabled + databases. - * nscd/nscd_getgr_r.c: Compact code a bit. Add some __builtin_expect. - * nscd/nscd_getpw_r.c: Likewise. - * nscd/nscd_gethst_r.c: Likewise. + * sysdeps/unix/bsd/bsd4.4/bits/socket.h: Use __NTH for __cmsg_nxthdr. -2003-04-27 Ulrich Drepper +2004-09-10 Ulrich Drepper - * nscd/pwdcache.c: Initialize .version element in result. + * nscd/nscd.c (pagesize_m1): New variable. + (main): Initialize it. + * nscd/nscd.h: Declare pagesize_m1. + * nscd/hstcache.c: Pass correctly aligned address to msync. * nscd/grpcache.c: Likewise. * nscd/pwdcache.c: Likewise. -2003-04-27 Andreas Schwab - - * Makeconfig ($(common-objpfx)sysd-sorted): Fix for running in - subdirectory. - -2003-04-27 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/semtimedop.S: New file. - -2003-04-27 Ulrich Drepper - - * nscd/connections.c (client_queued): New variable. - (nscd_run): Revamp the loop. Don't call poll except for cleanup - threads. Keep track of the number of delays caused because of busy - worker threads. - * nscd/nscd.h: Declare client_queued. - * nscd/nscd_stat.c: Transmit and print client_queued information. - - * locale/programs/locale.c (show_info): Use '\177' instead of CHAR_MAX. - - * Makerules ($(common-objpfx)shlib.lds): Don't use PROVIDE to - define __start_libc_freeres_ptrs and __stop___libc_freeres_ptrs. - -2003-04-26 Ulrich Drepper - - * elf/dl-close.c [USE_TLS && TLS_TCB_AT_TP] (_dl_close): Reimplement - tracking of freed memory in static TLS block. - * elf/Makefile: Add rules to build and run tst-tls13. - * elf/tst-tls13.c: New file. - * elf/tst-tlsmod13.c: New file. - * elf/tst-tlsmod13a.c: New file. - - * elf/tst-tls8.c: Adjust types of variables to avoid warnings. - - * elf/dl-reloc.c: Pretty printing. - -2003-04-26 Roland McGrath - - * Makerules ($(common-objpfx)shlib.lds): New target. - (common-generated): Add it. - (build-shlib, build-module): Use that instead of generating every time. - ($(common-objpfx)libc.so): Depend on it. - (lib%.so rule): Likewise. - (build-module-helper-objlist): Remove %.lds. - (LDSEDCMD-c.so): Variable removed. - * iconvdata/extra-module.mk ($(objpfx)$(mod).so): - Depend on $(common-objpfx)shlib.lds. - * dlfcn/Makefile ($(test-modules)): Likewise. +2004-09-10 Kaz Kojima -2003-04-26 Roland McGrath + * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Decrement + __nwaiters. If pthread_cond_destroy has been called and this is + the last waiter, signal pthread_cond_destroy caller and avoid + using the pthread_cond_t structure after unlock. + * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise. - * sysdeps/mach/hurd/tmpfile.c: Remove USE_IN_LIBIO conditionals. +2004-09-10 Ulrich Drepper -2003-04-26 Andreas Schwab + * sysdeps/unix/sysv/linux/kernel-features.h: Don't define + __ASSUME_CLONE_STOPPED. - * elf/dl-close.c (remove_slotinfo): Fix missing parens. +2004-09-10 Jakub Jelinek -2003-04-25 Ulrich Drepper + * misc/sys/cdefs.h (__REDIRECT_NTH): Change order of __THROW and + __asm__ for C++. [BZ #377] - * nscd/cache.c (cache_search): Keep track of how many chain links - we searched and update table statistics. - (cache_add): Keep track of how many values are in the table. - (prune_cache): Likewise. Keep track of locking success. - Print messages about removed entries in separate pass. - * nscd/connections.c (handle_request): Don't print debug message here. - The caller will do it. Keep track of locking success. - (nscd_run): Print debug message. Also print PID of the client process. - * nscd/nscd.c (start_time): New variable. - (main): Remember start time. - * nscd/nscd.h: Declare start_time. - (struct database): Add more members for new statistics. - * nscd/nscd_stat.c: Add support for sending, receiving, and printing - of new statistics. +2004-09-10 Ulrich Drepper - * sysdeps/posix/getaddrinfo.c: Include . + * nscd/nscd_stat.c: Improve output by also printing .shared and + .persistent. -2003-04-22 Jakub Jelinek + * nscd/connections.c: Allow cache sharing to be really disabled. - * include/link.h (NO_TLS_OFFSET): Define to 0 if not defined. - * elf/dl-close.c (_dl_close): Use NO_TLS_OFFSET. - * elf/dl-object.c (_dl_new_object): Initialize l_tls_offset to - NO_TLS_OFFSET. - * elf/rtld.c (_dl_start_final, _dl_start): Likewise. - * elf/dl-reloc.c (CHECK_STATIC_TLS): Use NO_TLS_OFFSET. - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Likewise. - * sysdeps/powerpc/dl-tls.h (TLS_TPREL_VALUE): Don't subtract - TLS_TCB_SIZE. +2004-09-10 Jakub Jelinek -2003-04-24 Ulrich Drepper + * malloc/malloc.c (_int_free): Only do arena boundary check for + contiguous arenas. - * nss/getent.c: Implement alternative host database lookup via - getaddrinfo. +2004-09-10 Kazuhiro Inaoka - * include/ifaddrs.h: New file. - * include/netdb.h: Move definitions of AI_V4MAPPED, AI_ALL, and - AI_ADDRCONFIG... - * resolv/netdb.h: ...here. - * sysdeps/gnu/ifaddrs.c. Use libc_hidden_def where appropriate. - * sysdeps/unix/sysv/linux/ifaddrs.c: Likewise. - * sysdeps/posix/getaddrinfo.c: Implement AI_V4MAPPED, AI_ALL, and - AI_ADDRCONFIG. + * stdlib/longlong.h [__M32R__] (add_ssaaaa, sub_ddmmss): Fix broken + instruct operands. + * elf/elf.h: Add R_M32R_* relocs. -2003-04-24 Roland McGrath +2004-09-09 Ulrich Drepper - * elf/dl-reloc.c (_dl_allocate_static_tls): Add internal_function. + * misc/sys/cdefs.h: Despite what the gcc manual says, gcc 3.2 + seems not to support the nothrow attribute. Use it only for gcc + 3.3 and higher. -2003-04-24 Jakub Jelinek + * malloc/hooks.c (top_check): Print top chunk corruption as normal + error message. - * elf/dl-reloc.c (allocate_static_tls): Rename to... - (_dl_allocate_static_tls): ... this function. No longer static. - (CHECK_STATIC_TLS): Adjust. - * sysdeps/generic/ldsodefs.h (_dl_allocate_static_tls): New prototype. - * sysdeps/powerpc/powerpc32/dl-machine.h (__process_machine_rela): - Add SYM_MAP argument. - (elf_machine_rela): Adjust caller. Declare SYM_MAP unconditionally. - Check if SYM_MAP != NULL for R_PPC_DTPREL32. Only handle 32-bit - TLS relocs here. #ifdef out relocs which never appear in - .gnu.conflict section from dl-conflict.c processing. - * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): - Add SYM_MAP argument. Handle 16-bit TLS relocs here. + * malloc/malloc.c (malloc_printerr): Don't make informational + message look like error message. - * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): #ifdef - out relocs which never appear in .gnu.conflict section from - dl-conflict.c processing. - * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/i386/dl-machine.h (elf_machine_rela): Likewise. - Use r_type in RESOLVE macro. +2004-09-09 Andreas Jaeger -2003-04-23 Ulrich Drepper + * nscd/Makefile (CFLAGS-nscd_setup_thread.c): Set to -fpie. - * nis/ypclnt.c (__yp_bind): Expect YPDB parameter to always be != - NULL. Remove code made redundant by this assumption. - (__yp_unbind): Add call to free. Adjust all callers. +2004-09-08 Ulrich Drepper - * nis/ypclnt.c (yp_all): Free the dom_binding object after - unbinding it. + * sysdeps/unix/sysv/linux/bits/socket.h (__SCM_CONNECT): Removed. - * grp/initgroups.c (getgrouplist): Don't copy too much into the - user buffer if more groups are found than fit into it. + * malloc/malloc.c (_int_free): Add inexpensive double free and + memory corruption tests. + (malloc_printf_nc): Renamed to malloc_printerr. Second parameter + is no format string anymore. Don't use stdio. Adjust all callers. + * malloc/hooks.c: Adjust malloc_printf_nc callers. - * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Use - extend_alloca. +2004-09-08 Roland McGrath -2003-04-23 Jakub Jelinek + * malloc/mcheck.c: Don't use __P. + Use prototypes definitions for static functions. - * sysdeps/posix/getaddrinfo.c (gaih_inet): Check for rc == ERANGE, - not rc == errno. Use extend_alloca. +2004-09-08 Ulrich Drepper - * elf/tst-tls12.c (main): Fix declaration. - * elf/tst-tls10.c (dummy): Make hidden instead of static. - * elf/tst-tlsmod7.c (dummy): Likewise. - * elf/tst-tlsmod8.c (dummy): Likewise. - * elf/tst-tlsmod9.c (dummy): Likewise. + * sysdeps/ia64/fpu/bits/mathinline.h: Use __NTH instead of __THROW. -2003-04-22 Roland McGrath +2004-09-08 Ulrich Drepper + Jakub Jelinek - * sysdeps/unix/sysv/linux/not-cancel.h: Put parens around macro args. - (open_not_cancel): Make last argument non-optional. - * sysdeps/generic/check_fds.c (check_one_fd): Update caller. - * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Likewise. - * iconv/gconv_cache.c (__gconv_load_cache): Likewise. + * nscd/nscd-client.h: Add a few #includes. - * include/tls.h: Protect against multiple inclusion. + * nscd/Makefile (nscd-modules): Add nscd_setup_thread. + * nscd/connections.c (nscd_run): Call setup_thread for maintenance + threads. + * nscd/nscd-client.h (struct database_pers_head): Add + nscd_certainly_running field. + * nscd/nscd.h: Declare setup_thread. + * nscd/nscd_helper.c (__nscd_get_map_ref): Avoid the time test if + nscd_certainly_running is nonzero. + * sysdeps/generic/nscd_setup_thread.c: New file. + * sysdeps/unix/sysv/linux/nscd_setup_thread.c: New file. -2003-04-22 Ulrich Drepper +2004-09-08 Ulrich Drepper - * nscd/nscd-client.h: Add declaration for __nscd_open_socket. - * nscd/nscd_gethst_r.c (__nscd_open_socket): Renamed from - open_socket. Not static anymore. - (nscd_gethst_r): Use __nscd_open_socket. - * nscd/nscd_getgr_r.c (open_socket): Removed. - (nscd_getgr_r): Use __nscd_open_socket. - * nscd/nscd_getpw_r.c (open_socket): Removed. - (nscd_getpw_r): Use __nscd_open_socket. + * nscd/connections.c: Implement r/o sharing of nscd's cache with client + processes via shared memory. + * nscd/nscd-client.h: Likewise. + * nscd/nscd.h: Likewise. + * nscd/nscd_conf.c: Likewise. + * nscd/nscd_getgr_r.c: Likewise. + * nscd/nscd_getpw_r.c: Likewise. + * nscd/nscd_gethst_r.c: Likewise. + * nscd/nscd.conf: Add new config parameters. + * nscd/Makefile (aux): Add nscd_helper. + * nscd/nscd_helper.c: New file. + * nscd/mem.c (gc): Indicate beginning and end of the gc cycle. - * nscd/nscd.c (main): Change type of fdn to long int and use strtol. - * nscd/connections.c (handle_request): Add cast to avoid warning. + * nscd/hstcache.c: Simplify a lot. We cache only the request itself, + no derived information. + * connections.c (nscd_init): Fix bug in testing size of the persistent. -2003-04-21 Ulrich Drepper + * nis/Makefile (aux): Add nis_hash. + * nis/nis_hash.c: New file. Split out from nis_util.c. + * nis/nis_util.c: Move __nis_hash code in separate file. - * signal/sigfillset.c: Moved to... - * sysdeps/generic/sigfillset.c: ...here. If SIGCANCEL is defined - do not set the corresponding bit. + * csu/tst-atomic.c: Improve atomic_increment_val test which would + not have found a ppc bug. - * sysdeps/unix/sysv/linux/sigprocmask.c: Prevent changing mask for - SIGCANCEL. - * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Define SI_TKILL. - * sysdeps/unix/sysv/linux/bits/siginfo.h: Define SI_TKILL. - * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Define SI_TKILL. - * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Define SI_TKILL. - * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Define SI_TKILL. + * sysdeps/s390/fpu/bits/mathinline.h: Remove unnecessary includes. -2003-04-20 Ulrich Drepper + * malloc/arena.c: Remove __MALLOC_P uses. + * malloc/malloc.c: Likewise. - * sysdeps/unix/sysv/linux/not-cancel.h (open_not_cancel): Cast - first syscall parameter to const char*. + * malloc/mtrace.c: Remove __P uses. + * malloc/mcheck-init.c: Likewise. -2003-04-19 Ulrich Drepper +2004-09-07 Jakub Jelinek - * intl/Makefile ($(objpfx)msgs.h): Use C locale for sed run. + * sysdeps/powerpc/powerpc64/configure.in: New file. + * config.h.in (USE_PPC64_OVERLAPPING_OPD): Add. + * configure.in (HAVE_ASM_GLOBAL_DOT_NAME): Remove. + * sysdeps/powerpc/powerpc64/sysdep.h: Formatting. + (OPD_ENT, BODY_LABEL, ENTRY_1, ENTRY_2, END_2, DOT_PREFIX, + BODY_PREFIX): Define. + (ENTRY, DOT_LABEL, END, TRACEBACK, END_GEN_TB, EALIGN): Support + HAVE_ASM_GLOBAL_DOT_NAME or no dot symbols, + USE_PPC64_OVERLAPPING_OPD or never overlapping .opd entries. + * sysdeps/powerpc/powerpc64/dl-machine.h: Include sysdep.h. + (TRAMPOLINE_TEMPLATE, RTLD_START): Use the new sysdep.h macros. - * configure.in: Add AC_PROG_CXX. - * config.make.in (CXX): Define. +2004-09-07 Ulrich Drepper - * sysdeps/i386/i686/hp-timing.h (HP_TIMING_PRINT): Change type of - __len to size_t to avoid warnings. + * malloc/malloc.h: Don't define __THROW if it is already defined. -2003-04-18 Jes Sorensen + * sysdeps/powerpc/bits/atomic.h (atomic_increment): Define. + (atomic_decrement): Define. - * libc/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Sync with Linux - 2.5.67. - * libc/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. + * sysdeps/powerpc/bits/atomic.h: Implement atomic_increment_val and + atomic_decrement_val. + * sysdeps/powerpc/powerpc32/bits/atomic.h: Likewise. + * sysdeps/powerpc/powerpc64/bits/atomic.h: Likewise. -2003-04-19 Ulrich Drepper + * csu/tst-atomic.c (do_test): Add tests of atomic_increment_val + and atomic_decrement_val. - * stdlib/cxa_finalize.c (__cxa_finalize): Don't call - UNREGISTER_ATFORK if d == NULL. + * include/atomic.h: Define atomic_increment_val, atomic_decrement_val, + and atomic_delay is not already defined. + * sysdeps/i386/i486/bits/atomic.h: Define atomic_delay. + * sysdeps/x86_64/bits/atomic.h: Likewise. - * catgets/nl_types.h: Remove __THROW marker from cancellation points. + * miscd/sys/cdefs.h (__NTH): New macro. + (__THROW): Define using nothrow attribute for C code and gcc >= 3.2. + (__REDIRECT_NTH): New macro. + * argp/argp.h: Use __NTH and __REDIRECT_NTH where necessary. + * ctype/ctype.h: Likewise. * dirent/dirent.h: Likewise. - * dlfcn/dlfcn.h: Likewise. - * grp/grp.h: Likewise. - * iconv/iconv.h: Likewise. * io/fcntl.h: Likewise. - * io/ftw.h: Likewise. - * libio/stdio.h: Likewise. + * io/sys/sendfile.h: Likewise. + * io/sys/stat.h: Likewise. + * io/sys/statfs.h: Likewise. + * io/sys/statvfs.h: Likewise. + * libio/bits/stdio.h: Likewise. * misc/sys/mman.h: Likewise. - * misc/sys/select.h: Likewise. - * misc/sys/syslog.h: Likewise. - * misc/sys/uio.h: Likewise. - * posix/spawn.h: Likewise. * posix/unistd.h: Likewise. - * posix/sys/wait.h: Likewise. - * pwd/pwd.h: Likewise. - * resolv/netdb.h: Likewise. + * resource/sys/resource.h: Likewise. * rt/aio.h: Likewise. - * shadow/shadow.h: Likewise. * signal/signal.h: Likewise. - * socket/sys/socket.h: Likewise. * stdlib/stdlib.h: Likewise. - * streams/stropts.h: Likewise. + * string/argz.h: Likewise. * string/string.h: Likewise. - * sysdeps/gnu/utmpx.h: Likewise. - * sysvipc/sys/msg.h: Likewise. - * termios/termios.h: Likewise. - * time/time.h: Likewise. + * sysdeps/generic/inttypes.h: Likewise. + * sysdeps/i386/fpu/bits/mathinline.h: Likewise. + * sysdeps/powerpc/fpu/bits/mathinline.h: Likewise. + * sysdeps/s390/fpu/bits/mathinline.h: Likewise. + * sysdeps/x86_64/fpu/bits/mathinline.h: Likewise. + * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/bits/sys/sysmacros.h: Likewise. * wcsmbs/wchar.h: Likewise. - * iconv/gconv_cache.c: Include and use non-cancelable - functions. - * misc/daemon.c: Likewise. - * sysdeps/generic/backtracesymsfd.c: Likewise. - * sysdeps/generic/check_fds.c: Likewise. - * sysdeps/unix/sysv/linux/gethostid.c: Likewise. - * sysdeps/unix/sysv/linux/not-cancel.h: New file. - * sysdeps/generic/not-cancel.h: New file. - * csu/Makefile (distribute): Add not-cancel.h. - * sysdeps/unix/sysv/linux/fatal-prepare.h: New file. - * sysdeps/unix/sysv/linux/Makefile: Define FATAL_PREPARE_INCLUDE - for assert.c and assert-perr.c to include . - * sysdeps/unix/sysv/linux/Dist: Add fatal-prepare.h. - * sysdeps/posix/remove.c (remove): Rewrite. No need to restore - errno and unlink first. - - * io/ftw.c (ftw_dir): In all places assume fchdir is available. - -2003-04-18 Ulrich Drepper + * sysdeps/generic/glob.c: Use __PMT isntead of __P where appropriate. - * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Use - INTERNAL_SYSCALL instead of INLINE_SYSCALL. + * resolv/gethnamaddr.c (getanswer): Remove __P use in variable + definition. -2003-04-17 Ulrich Drepper + * io/sys/poll.h: Remove __THROW from poll prototype, it's a + cancellation point. - * sysdeps/unix/sysv/linux/Makefile: Remove db2 directory handling. + * io/fts.c (fts_open): Remove uses of __P. - * malloc/Makefile (CFLAGS-malloc.c): Define DEFAULT_TOP_PAD to 128k. - * sysdeps/unix/sysv/linux/Makefile (CFLAGS-malloc.c): Add to, not - replace. + * include/stdlib.h: No need to use __THROW in this header. - * signal/Makefile (tests): Add tst-sigsimple. - * signal/tst-sigsimple.c: New file. +2004-09-06 Roland McGrath -2003-04-16 Jakub Jelinek + * sysdeps/mach/hurd/dl-sysdep.c (__writev): Does use assert on FD + validity, since __assert_fail gets to here anyway. Just fail. - * elf/Makefile (distribute): Add tst-tlsmod{[7-9],1[0-2]}.c and - tst-tls10.h. - (tests): Add tst-tls1[0-2]. - (modules-names): Add tst-tlsmod{[7-8],1[0-2]}. - ($(objpfx)tst-tlsmod8.so): Depend on tst-tlsmod7.so. - ($(objpfx)tst-tlsmod10.so): Depend on tst-tlsmod9.so. - ($(objpfx)tst-tlsmod12.so): Depend on tst-tlsmod11.so. - ($(objpfx)tst-tls10): Depend on tst-tlsmod8.so. - ($(objpfx)tst-tls11): Depend on tst-tlsmod10.so. - ($(objpfx)tst-tls12): Depend on tst-tlsmod12.so. - * elf/tst-tls10.c: New test. - * elf/tst-tls11.c: New test. - * elf/tst-tls12.c: New test. - * elf/tst-tls10.h: New file. - * elf/tst-tlsmod7.c: New file. - * elf/tst-tlsmod8.c: New file. - * elf/tst-tlsmod9.c: New file. - * elf/tst-tlsmod10.c: New file. - * elf/tst-tlsmod11.c: New file. - * elf/tst-tlsmod12.c: New file. +2004-09-06 Ulrich Drepper -2003-04-15 Steven Munroe + * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix problem with + AF_UNSPEC lookup with AI_CANONNAME of name which has only IPv6 + addresses. - * sysdeps/powerpc/bits/atomic.h: Moved ppc32/64 specific code to ... - * sysdeps/powerpc/powerpc32/bits/atomic.h: New file. - * sysdeps/powerpc/powerpc64/bits/atomic.h: New file. +2004-09-05 Richard Henderson -2003-04-17 Ulrich Drepper + * sysdeps/alpha/fpu/fraiseexcpt.c: Remove file. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_IEEE_RAISE_EXCEPTION): New. + * sysdeps/unix/sysv/linux/alpha/fraiseexcpt.c: New file. + * sysdeps/unix/sysv/linux/alpha/kernel_sysinfo.h: New file. + * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use it. + * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. - * posix/regex.h: Include . +2004-09-05 Richard Henderson - * signal/sigrelse.c (sigrelse): Use sigdelset and not __sigdelset. - The signal number must be checked. - * signal/sighold.c (sighold): Use sigaddset and not __sigaddset. - The signal number must be checked [PR libc/5004]. + * sysdeps/alpha/div.S: Save and restore FPCR around fp operations. + * sysdeps/alpha/divl.S, sysdeps/alpha/divq.S, sysdeps/alpha/divqu.S, + sysdeps/alpha/ldiv.S, sysdeps/alpha/reml.S, sysdeps/alpha/remq.S, + sysdeps/alpha/remqu.S: Likewise. + * sysdeps/alpha/div_libc.h (FRAME): Increase to 64. - * sysdeps/unix/sysv/linux/system.c: If compiled without threads - don't do anything fancy. +2004-09-05 Ulrich Drepper - * sysdeps/generic/bits/libc-lock.h: Define - __rtld_lock_define_initialized_recursive. + * nscd/cache.c (cache_add): Correctly log GETHOSTBYADDR and + GETHOSTBYADDRv6 requests. - * nss/getXXbyYY_r.c [USE_NSCD] (REENTRANT_NAME): Only retry - contacting nscd if NOT_USENSCD_NAME > 0. - * nss/nsswitch.c (__nss_disable_nscd): New function. - * nss/nsswitch.h: Declare it. - * nss/Versions [GLIBC_PRIVATE]: Export __nss_disable_nscd. - * nscd/nscd.c (main): Call __nss_disable_nscd. +2004-09-04 Ulrich Drepper -2003-04-16 Ulrich Drepper + * nscd/pwdcache.c (cache_addpw): Use correct key length in + cache_add calls. + * nscd/grpcache.c (cache_addgr): Likewise. - * stdio-common/perror.c (perror): We don't need to set the offset - to _IO_pos_bad, this is how streams are initialized. +2004-09-03 Alfred M. Szmidt - * locale/programs/ld-time.c (TESTARR_ELEM): Make i unsigned. - (time_output): If necessary, allocate new buffer for .name string if - padding is required. + * sysdeps/mach/hurd/i386/tls.h (THREAD_DTV): Changed type of _DTV + to `dtv_t *'. - * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Check lengths - before copying. This might leave holes in the list. Adjust - pointers if necessary. - (netlink_receive): Allocate only one block. - (free_netlink_handle): Adjust appropriately. - (getifaddrs): Lots of cleanups. +2004-09-03 Ulrich Drepper - * string/test-strncpy.c (do_one_test): Mark start and stop as - possibly unused. - * string/test-memchr.c: Likewise. - * string/test-memcmp.c: Likewise. - * string/test-memcpy.c: Likewise. - * string/test-memmove.c: Likewise. - * string/test-memset.c: Likewise. - * string/test-strcat.c: Likewise. - * string/test-strchr.c: Likewise. - * string/test-strcmp.c: Likewise. - * string/test-strcpy.c: Likewise. - * string/test-strlen.c: Likewise. - * string/test-strncmp.c: Likewise. - * string/test-strpbrk.c: Likewise. - * string/test-strrchr.c: Likewise. - * string/test-strspn.c: Likewise. + * nscd/nscd.c (parse_opt): Use writev instead of two write for + invalidate command. -2003-04-15 Roland McGrath +2004-09-02 Ulrich Drepper - * libio/fileops.c (_IO_file_close_it): Macro tweak to avoid warning. + * nscd/connections.c (nscd_run): Check early for invalid request types. - * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO]: Add decl for - INTUSE(__register_frame_info_bases). +2004-09-02 Roland McGrath -2003-04-15 Ulrich Drepper + * sysdeps/mach/hurd/i386/tls.h (TLS_INIT_TP_EXPENSIVE): New macro. + (INSTALL_NEW_DTV, THREAD_DTV): Rewritten to fetch the right word. + (THREAD_SELF): New macro. - * elf/elf.h: Define AT_SYSINFO_EH_FRAME. - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Handle - AT_SYSINFO_EH_FRAME. Adjust string width. - (_dl_show_auxv):Display AT_SYSINFO_EH_FRAME value. - * sysdeps/generic/ldsodefs.h [NEED_DL_SYSINFO] (struct rtld_global): - Add _dl_sysinfo_eh_frame field. - * elf/dl-support.c [NEED_DL_SYSINFO]: Define _dl_sysinfo_eh_frame. - * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO] Define eh_obj - variable. - [NEED_DL_SYSINFO] (LIBC_START_MAIN): Call __register_frame_info_bases - if _dl_sysinfo_eh_frame is non-NULL. +2004-09-02 Steven Munroe - * Makeconfig (gnulib): Add -lgcc_eh. + [BZ #357] + * stdlib/tst-setcontext.c (test_stack): Added test for stack clobber. + (main): Call test_stack. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S + (__getcontext): Push stack frame then save parms in local frame. + Improve instruction scheduling. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S + (__swapcontext): Likewise. - * config.h.in: Define HAVE_FORCED_UNWIND. +2004-09-01 Andreas Schwab -2003-04-15 Steven Munroe + * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h [g++ >= 3.5]: Use + __builtin_offsetof. - * sysdeps/powerpc/powerpc64/strcmp.S: Convert to full 64-bit. - * sysdeps/powerpc/powerpc64/strcpy.S: Likewise. +2004-09-01 Jakub Jelinek -2003-04-15 Jakub Jelinek + [BZ #361] + * posix/fnmatch_loop.c (FCT): For backslash between brackets, branch + to normal_bracket after fetching the next character. + * posix/tst-fnmatch.input: Add 25 new tests. + Reported by Markus Oberhumer . - * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Avoid - checking R_PPC_RELATIVE, R_PPC_NONE and whether relocation is - against local symbol in conflict processing. +2004-09-01 Ulrich Drepper -2003-04-15 Steven Munroe + * elf/rtld.c (dl_main): First check existence of ld.so.preload + with access. - * sysdeps/powerpc/bits/atomic.h - [__powerpc64] (__arch_compare_and_exchange_val_64_acq): Define. - [! __powerpc64] (__arch_compare_and_exchange_val_64_acq): Defined - as abort stub. - (__arch_compare_and_exchange_val_32_acq): Define. - (atomic_compare_and_exchange_val_acq): Define. +2004-09-01 Roland McGrath -2003-04-15 Ulrich Drepper + * sysdeps/unix/sysv/linux/bits/waitflags.h + (WSTOPPED, WEXITED, WCONTINUED, WNOWAIT): New macros. + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_WAITID_SYSCALL): + New macro. + * sysdeps/unix/sysv/linux/waitid.c: New file. Use new syscall when + available, or fall back to the waitpid-based generic code. - * include/atomic.h: Pretty printing. +2004-08-14 Alfred M. Szmidt -2003-04-14 Ulrich Drepper + * sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Let gcc + clobber the `ebp' register. + * sysdeps/mach/hurd/i386/Makefile (CFLAGS-init-first.c): Removed. + Reverts change from 2004-05-07 by Jeroen Dekkers. - * stdio-common/vfscanf.c: Add casts to avoid warnings. + * sysdeps/mach/hurd/i386/init-first.c (init): Changed the type of + NEWSP from `void *' to `int *'. Changed all casts accordingly. -2003-04-14 Jakub Jelinek +2004-08-31 Jakub Jelinek - * sysdeps/i386/i486/bits/atomic.h: Rename LOCK to LOCK_PREFIX. - * sysdeps/x86_64/bits/atomic.h: Likewise. + * wcsmbs/wcsmbsload.c (__wcsmbs_getfct): Move attribute_hidden + before return type. + * locale/localename.c (__current_locale_name): Likewise. -2003-04-14 Ulrich Drepper +2004-08-30 Roland McGrath - * sysdeps/unix/sysv/linux/i386/sysdep.h: Change PUSHARGS_1 and - POPARGS_1 to emit labels for the mov instructions. + * scripts/extract-abilist.awk: If `lastversion' variable defined, omit + later sets from output. + * Makerules (check-abi): Pass option to set that with value of + LIB-abi-frozen variable if one is set. -2003-04-14 Jakub Jelinek + * abilist/libcidn.abilist: New file (empty). - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (ret_NOERRNO): Define. +2004-08-30 Jakub Jelinek -2003-04-14 Roland McGrath + * posix/bits/posix1_lim.h (_POSIX_CHILD_MAX, _POSIX_OPEN_MAX): If + not __USE_XOPEN2K, use the Unix98 mandated values. - * sysdeps/generic/unwind-dw2.c (_Unwind_GetCFA): Add a cast to silence - compiler warning. +2004-08-27 Roland McGrath - * sysdeps/generic/unwind-pe.h: Fix decl hacks broken in merge. + * configure.in (usetls): Default to yes. + * configure: Regenerated. -2003-04-14 Ulrich Drepper +2004-08-26 Roland McGrath - * string/strxfrm.c (STRXFRM): Terminate rulearr at correct - position. Reported by jreiser@BitWagon.com. + * configure.in (add_ons_automatic): New variable, set to yes or no + indicating --enable-add-ons with no explicit list. + (running add-on fragments): Allow a fragment to modify $libc_add_on + and have that affect its place in the list of add-ons to use. + * configure: Regenerated. -2003-04-13 Ulrich Drepper +2004-08-26 Ulrich Drepper - * sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version. - * sysdeps/generic/unwind-dw2-fde.h: Likewise. - * sysdeps/generic/unwind-dw2.c: Likewise. - * sysdeps/generic/unwind-pe.h: Likewise. + * nscd/cache.c: Major rewrite. The data is now optionally kept in + a mmaped memory region which is automatically mirrored on disk. + This implements persistent data storage. The Memory handled + needed to be completely revamped, it now uses a garbage collection + mechanism instead of malloc. + * nscd/connections.c: Likewise. + * nscd/nscd.c: Likewise. + * nscd/nscd.h: Likewise. + * nscd/nscd_conf.c: Likewise. + * nscd/nscd_stat.c: Likewise. + * nscd/grpcache.c: Likewise. + * nscd/hstcache.c:: Likewise. + * nscd/pwdcache.c:: Likewise. + * nscd/Makefile: Add rules to build mem.c. + * nscd/mem.c: New file. + * nscd/nscd.conf: Describe new configuration options. -2003-04-13 Alexandre Oliva +2004-08-26 Kaz Kojima - * sysdeps/unix/sysv/linux/mips/profil-counter: New. - * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Port to n32/n64. - * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: New. - * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Port to n32/n64. - (mcontext_t): Make it match the 32-bit mips kernel in o32. - * sysdeps/unix/sysv/linux/mips/sys/user.h: Bring in constants from - the mips and mips64 headers. - (struct user): Port to n32/n64. + * sysdeps/unix/sysv/linux/mips/pread.c: Include sgidefs.h only if + NO_SGIDEFS_H isn't defined. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. -2003-04-12 Ulrich Drepper + * sysdeps/unix/sysv/linux/sh/pread.c: Define NO_SGIDEFS_H and + _MIPS_SIM. + * sysdeps/unix/sysv/linux/sh/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/sh/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise. - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add cast to - avoid warning. +2004-08-26 Ulrich Drepper - * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): If - __ASSUME_VSYSCALL is defined don't add restorer. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_VSYSCALL for 2.5.53. + * nscd/connections.c (nscd_run): atomic_increment was not missing. -2003-04-11 Ulrich Drepper + * sysdeps/gnu/Makefile (libdl-sysdep_routines): Don't add eval. + Patch by Greg Schafer. - * sysdeps/generic/libc-start.c: Cleanup MAIN_AUXVEC_ARG handling. - Remove HAVE_CANCELBUF code. Replace with code using the new - initializers for unwind-based cleanup handling. - * sysdeps/generic/unwind.h: Update from latest gcc version. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Define labels in a few - places to allow unwind data generation. - * sysdeps/i386/bits/setjmp.h: Allow file to be included multiple times. - * sysdeps/x86_64/bits/setjmp.h: Likewise. - * sysdeps/sh/bits/setjmp.h: Likewise. - * sysdeps/powerpc/bits/setjmp.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise. - * sysdeps/alpha/bits/setjmp.h: Likewise. +2004-08-25 Richard Henderson -2003-04-11 Roland McGrath + * sysdeps/alpha/elf/start.S (_start): Use $15 as frame unwind + instead of $31. Zero $15. + * sysdeps/unix/sysv/linux/alpha/clone.S (thread_start): Likewise. - * csu/tst-empty.c: New file. - * csu/Makefile (tests, tests-static): Add it. +2004-08-25 Ulrich Drepper -2003-04-11 Jakub Jelinek + * sysdeps/powerpc/powerpc64/bits/atomic.h + (__arch_compare_and_exchange_bool_32_acq): Fix case where oldval + is negative. + (__arch_compare_and_exchange_bool_32_rel): Likewise. - * string/test-strcmp.c (do_random_tests): Test whether return value - has been promoted to wordsize if the ABI requires caller to do so. - * string/test-strncmp.c (do_random_tests): Likewise. - * string/test-memcmp.c (do_random_tests): Likewise. + * nscd/connections.c: Make socket nonblocking so that threads + don't get stuck on accept. Fix locking. - * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Sign extend rRTN - before returning. + * nscd/grpcache.c (cache_addgr): Use copy of original key in hash + entry with alternative key. + * nscd/pwdcache.c (cache_addpw): Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c - (__fe_nomask_env): Try prctl even if __ASSUME_NEW_PRCTL_SYSCALL - is not defined, but the prctl constants are. +2004-08-25 Richard Sandiford - * string/tester.c (test_strcmp): Fix a typo. + * sysdeps/mips/dl-machine.h (_dl_start_user): Don't set + __libc_stack_end. -2003-04-09 Ulrich Drepper +2004-08-23 Ulrich Drepper - * sysdeps/alpha/fpu/bits/mathdef.h: Remove FLT_EVAL_METHOD definition. - * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise. + * sysdeps/gnu/netinet/udp.h: Cosmetic changes. Remove unnecessary + __BEGIN_DECLS/__END_DECLS. -2003-04-08 Alexandre Oliva +2004-08-23 Andreas Jaeger - * sysdeps/mips/sys/regdef.h (t4,t5,t6,t7): Renamed to t0..t3 on - NewABI. - (ta0, ta1, ta2, ta3): Defined to t4..t7 on o32, and a4..a7 on - NewABI. - * sysdeps/mips/mips64/memcpy.S: Adjust register naming - conventions. - * sysdeps/mips/mips64/memset.S: Likewise. - * sysdeps/unix/mips/sysdep.S (__syscall_error) [_LIBC_REENTRANT]: - Use t0 instead of t4 as temporary. + [BZ #341] + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (O_NOATIME): Define. + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/cris/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/sh/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (O_NOATIME): Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (O_NOATIME): Likewise. -2003-04-07 Ulrich Drepper +2004-08-21 Ulrich Drepper - * elf/ldconfig.c (parse_conf): Ignore leading whitespace. Use - feof_unlocked instead of feof. - (add_dir): Ignore trailing whitespace. + * malloc/hooks.c (DEFAULT_CHECK_ACTION): Moved to malloc.c. + (check_action): Likewise. + When printing error messages, use malloc_printf_nc now instead of + fiddling with the streams cancellation flag in every place. + * malloc/malloc.c (DEFAULT_CHECK_ACTION): New definition. Change + default to 3. + (check_action): New variable. + (unlink): Print error message and eventually terminate in case list + is corrupted. + (malloc_printf_nc): New function. Use it in _int_free. + Change proposed by Arjan van de Ven. -2003-04-07 Jakub Jelinek + * dlfcn/Makefile: Don't build eval.c anymore. - * posix/bug-regex4.c (main): Cap RANGE and STOP arguments to - sum of SIZE1 and SIZE2 arguments. +2004-08-20 Roland McGrath -2003-04-06 Ulrich Drepper + * csu/Makefile ($(objpfx)version-info.h): Use printf in place + of echo -e for POSIX.2 portability. + Reported by Paul Jarc . - * iconv/iconv_prog.c (process_block): Don't print message about - invalid input if the -c option is used. - (main): Correctly append IGNORE string for -c option. +2004-08-19 Ulrich Drepper -2002-04-06 Kaz Kojima + * sysdeps/posix/getaddrinfo.c (gaih_inet): Minor optimizations in + list generation. - * sysdeps/sh/bits/atomic.h: Moved to ... - * sysdeps/unix/sysv/linux/sh/bits/atomic.h: ... here. Add comments. - (__arch_compare_and_exchange_val_*_acq): Add parens around macro - arguments. - (atomic_bit_set, atomic_bit_test_set): Likewise. - (atomic_exchange_and_add): Likewise. Don't evaluate VALUE argument - twice. - (atomic_add, atomic_add_negative, atomic_add_zero): Likewise. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use + getcanonname_r function if AI_CANONNAME flag is not set in + request. -2003-04-06 Roland McGrath + * nis/nss_compat/compat-initgroups.c (getgrent_next_nss): + Initialize mysize with limits only if latter is >= 0. Use mysize + in malloc call. - * sysdeps/unix/sysv/linux/i386/swapcontext.S: Rewrite register - restoration as done for setcontext yesterday. +2004-08-19 Jakub Jelinek -2003-04-06 Jakub Jelinek + * sysdeps/posix/getaddrinfo.c (gaih_inet): Cast canon to (char *) + to avoid warning. - * elf/rtld.c: Revert 2003-03-14 change. - * elf/dl-conflict.c (_dl_resolve_conflicts): Move - #if ! ELF_MACHINE_NO_RELA conditional into the routine. + * resolv/nss_dns/dns-canon.c (_nss_dns_getcanonname_r): Initialize + status to NSS_STATUS_UNAVAIL. -2003-04-05 Ulrich Drepper +2004-08-19 Ulrich Drepper - * sunrpc/xdr.c (xdr_string): Catch nodesize == 0 [PR libc/4999]. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Use h->h_name in the + cannoname lookup since it has the FQDN even if the original NAME + value has not. - * sysdeps/ieee754/ldbl-96/e_gammal_r.c (__ieee754_gammal_r): - Always initialize *signgamp before returning an error. +2004-08-18 Ulrich Drepper -2003-04-05 Roland McGrath + * sysdeps/posix/getaddrinfo.c (gaih_inet): Store NAME parameter + pointer in new variable ORIG_NAME and use this pointer when + determination of canonical name failed, not the possibly IDN + translated value of NAME. - * sysdeps/unix/sysv/linux/i386/setcontext.S: Rewrite to avoid writing - below the stack pointer even if switching to the same context we are - running right now. +2004-08-17 Ulrich Drepper -2003-04-05 Ulrich Drepper + * resolv/resolv.h (RES_DEFAULT): Add RES_NOIP6DOTINT. + * resolv/res_init.c (res_setoptions): Recognize ip6-dotint option. + Reset RES_NOIP6DOTINT flag in this case.. - * catgets/gencat.c (read_input_file): Make sure that \n is not - alone on the line before testing for continuation. + * sysdeps/posix/getaddrinfo.c: Fix memory handling of + ai_canonname. - * math/test-tgmath.c (compile_test): Initialize c. +2004-08-16 Ulrich Drepper -2003-04-05 Alexandre Oliva + * resolv/nss_dns/dns-canon.c (_nss_dns_getcanonname_r): Don't use + CNAME records, we better follow the chain of CNAME records which + can be accomplished with A/AAAA lookups. - * sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c: New. - * sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c: New. - * sysdeps/unix/sysv/linux/kernel-features.h: fcntl64 is available - on mips n32. - * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Explain why - XSTAT_IS_XSTAT64 must not be used for mips n64. Use 64-bit data - structure on n32 as well. - * sysdeps/unix/sysv/linux/mips/bits/stat.h: Use POSIX-compliant - data types on n32 and n64. +2004-08-15 Roland McGrath -2003-04-05 Ulrich Drepper + * sysdeps/unix/sysv/linux/bits/resource.h (enum __rusage_who): + Remove __RUSAGE_BOTH constant and RUSAGE_BOTH macro. + * sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise. - * libio/fileops.c (_IO_new_file_fopen): Don't free step data right - after getting them. +2004-08-15 Roland McGrath - * malloc/thread-m.h [PTHREAD_MUTEX_INITIALIZER]: If - HAVE_register_atfork_malloc is defined use __register_atfork_malloc - instead of __register_atfork. + * sysdeps/i386/i686/Makefile (elide-routines.os): Append hp-timing to + this, not ... + (static-only-routines): ... this. + * sysdeps/ia64/Makefile: Likewise. + * sysdeps/sparc/sparc32/sparcv9/Makefile: Likewise. + * sysdeps/sparc/sparc64/Makefile: Likewise. + * sysdeps/x86_64/Makefile: Likewise. + * sysdeps/i386/i686/hp-timing.c: Revert copyright terms change. + * sysdeps/ia64/hp-timing.c: Likewise. + * sysdeps/sparc/sparc32/sparcv9/hp-timing.c: Likewise. + * sysdeps/sparc/sparc64/hp-timing.c: Likewise. -2003-04-05 Jakub Jelinek + * csu/elf-init.c: Update copyright terms including special exception + for these trivial files, which are statically linked into executables + that use dynamic linking for the significant library code. + * io/fstat.c: Likewise. + * io/fstat64.c: Likewise. + * io/lstat.c: Likewise. + * io/lstat64.c: Likewise. + * io/stat.c: Likewise. + * io/stat64.c: Likewise. + * stdlib/atexit.c: Likewise. + * sysdeps/alpha/elf/initfini.c: Likewise. + * sysdeps/alpha/elf/start.S: Likewise. + * sysdeps/arm/elf/start.S: Likewise. + * sysdeps/cris/elf/start.S: Likewise. + * sysdeps/generic/initfini.c: Likewise. + * sysdeps/generic/mknod.c: Likewise. + * sysdeps/hppa/elf/initfini.c: Likewise. + * sysdeps/hppa/elf/start.S: Likewise. + * sysdeps/i386/elf/start.S: Likewise. + * sysdeps/i386/i686/hp-timing.c: Likewise. + * sysdeps/ia64/elf/initfini.c: Likewise. + * sysdeps/ia64/elf/start.S: Likewise. + * sysdeps/ia64/hp-timing.c: Likewise. + * sysdeps/m68k/elf/start.S: Likewise. + * sysdeps/mach/start.c: Likewise. + * sysdeps/mips/elf/start.S: Likewise. + * sysdeps/powerpc/powerpc32/elf/start.S: Likewise. + * sysdeps/powerpc/powerpc64/elf/start.S: Likewise. + * sysdeps/s390/s390-32/elf/start.S: Likewise. + * sysdeps/s390/s390-32/initfini.c: Likewise. + * sysdeps/s390/s390-64/elf/start.S: Likewise. + * sysdeps/s390/s390-64/initfini.c: Likewise. + * sysdeps/sh/elf/initfini.c: Likewise. + * sysdeps/sh/elf/start.S: Likewise. + * sysdeps/sparc/sparc32/elf/start.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/hp-timing.c: Likewise. + * sysdeps/sparc/sparc64/elf/start.S: Likewise. + * sysdeps/sparc/sparc64/hp-timing.c: Likewise. + * sysdeps/standalone/i386/start.S: Likewise. + * sysdeps/standalone/i960/start.S: Likewise. + * sysdeps/standalone/m68k/m68020/start.S: Likewise. + * sysdeps/unix/arm/start.c: Likewise. + * sysdeps/unix/bsd/osf/alpha/start.S: Likewise. + * sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise. + * sysdeps/unix/sparc/start.c: Likewise. + * sysdeps/unix/start.c: Likewise. + * sysdeps/unix/sysv/aix/start.s: Likewise. + * sysdeps/unix/sysv/irix4/start.c: Likewise. + * sysdeps/x86_64/elf/initfini.c: Likewise. + * sysdeps/x86_64/elf/start.S: Likewise. - * stdio-common/reg-printf.c (__register_printf_function): Calloc - instead of malloc __printf_arginfo_table and __printf_function_table. - Reported by John Reiser . +2004-08-15 Roland McGrath -2003-04-04 Steven Munroe + [BZ #227] + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_BRK_PAGE_ROUNDED): New macro. + * sysdeps/unix/sysv/linux/dl-sysdep.c (frob_brk) + [! __ASSUME_BRK_PAGE_ROUNDED]: Adjust the break up if it falls within + the partial page after the dynamic linker's own data segment. - * sysdeps/powerpc/powerpc64/strchr.S: 64-bit optimizations. - * sysdeps/powerpc/powerpc64/strlen.S: 64-bit optimizations. +2004-08-15 Ulrich Drepper - * sysdeps/powerpc/fpu/bits/mathdef.h (FLT_EVAL_METHOD): Undef before - defining. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Optimize generation of + v4-mapped addresses a bit. + (gethosts): Move alloca out of macro, so that it is done only once. -2003-04-04 Alexandre Oliva + * sysdeps/posix/getaddrinfo.c (gaih_addrtuple): Change type of + addr to avoid casts. + (gethosts): Removed. + (gethosts2): Renamed to gethosts. Make it usable for family != + AF_UNSPEC. Fix AI_V4MAPPED. + (gaih_inet): Remove use of old gethosts. Always use what used to be + gethosts2. If entry is found, try to use the same NSS module's + getcanonname_r function. Use gethostbyaddr for AI_CANONNAME only + if getcanonname_r was not available. Fix filtering of AI_V4MAPPED + addresses. Numerous cleanups. + * resolv/nss_dns/dns-canon.c: New file. + * resolv/Makefile (libnss_dns-routines): Add dns-canon. + * resolv/Versions (libnss_dns): Add _nss_dns_getcanonname_r. - * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (struct flock): Adjust - for n64 abi. + * elf/Makefile: Add rules to build and run tst-dlopenrpath. + * elf/tst-dlopenrpath.c: New file. + * elf/tst-dlopenrpathmod.c: New file. -2003-04-03 Roland McGrath + * intl/tst-gettext.sh: Adjust for change of de.po file to UTF-8. + * intl/tst-gettext.c: Likewise. - * configure.in: Fix up use of compilation flags to match the build: - For .s files, $ASFLAGS; - For .S files, $CPPFLAGS $ASFLAGS; - For .c files, $CFLAGS $CPPFLAGS; - when linking, add $LDFLAGS. - * configure: Regenerated. + * nss/getent.c (ahosts_keys_int): Correctly print IPv6 addresses. -2003-04-03 Jakub Jelinek + * nss/getent.c: Allow queries for getaddrinfo with AF_INET and + AF_INET6. - * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Reverse test - for atomic_compare_and_exchange_bool_acq failure. +2004-08-14 Ulrich Drepper -2003-04-03 Ulrich Drepper + * po/de.po: Update from translation team. - * posix/unistd.h: Define _POSIX_VERSION, _POSIX2_VERSION, - _POSIX2_C_BIND, _POSIX2_C_DEV, _POSIX2_SW_DEV, and - _POSXI2_LOCALEDEF to 200112L. Remove _POSIX2_C_VERSION. - Remove declaration of pthread_atfork. +2004-08-14 Roland McGrath -2003-04-02 Ulrich Drepper + * sysdeps/mach/configure: Regenerated. + * sysdeps/mach/hurd/configure: Regenerated. - * locale/iso-639.def: Add many more languages from the current ISO 639. +2004-08-14 Ulrich Drepper - * sysdeps/unix/sysv/linux/ipc_priv.h: Define IPCOP_semtimedop. - * sysdeps/generic/semtimedop.c: New file. - * sysdeps/unix/sysv/linux/i386/semtimedop.S: New file. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add semtimedop. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. - * sysvipc/Makefile (routines): Add semtimedop. - * sysvipc/Versions [GLIBC_2.3.3] (glibc): Add semtimedop. - * sysvipc/sys/sem.h: Declare semtimedop. + * sysdeps/posix/getaddrinfo.c (getaddrinfo): If RFC3484 sorting is + performed, make sure it is still the first entry after sorting + that has the ai_canonname information. -2003-04-02 Daniel Jacobowitz + * sysdeps/posix/getaddrinfo.c (gaih_inet): Really set ai_canonname + only in one entry. - * configure.in: Check for __register_frame_info in both - -lgcc and -lgcc_eh. - * configure: Regenerated. +2004-08-13 Daniel Jacobowitz -2003-04-01 Roland McGrath + * scripts/output-format.sed: Handle default case of three-argument + OUTPUT_FORMAT. - * scripts/abilist.awk: Allow dots in soname suffix. + * sysdeps/arm/machine-gmon.h (mcount_internal): Mark as + __attribute_used__. - * scripts/abilist.awk (emit): Fix bailout condition. +2004-08-13 Ulrich Drepper -2003-04-01 Jakub Jelinek + * nss/getent.c (ahosts_keys): ai_canonname is NULL for all but the + first returned entry. Print name only if not NULL. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Use the - IA-64 version. + * nis/nss_nis/nis-netgrp.c: Remove locking by using data in struct + __netgrent object passed in instead of global variables. + Optimize. + * nis/nss_nisplus/nisplus-netgrp.c: Remove locking by using data + in struct __netgrent object passed in instead of global variables. + * inet/netgroup.h (struct __netgrent): Add service_user field. + Move cursor in anonymous union, add new field location to that + union. + * inet/getnetgrent_r.c: Extensive rewrite to really enable + concurrent uset of set/get/endnetgrent and innetgr. + Reported by Chuck Simmons. - * elf/tls-macros.h [__ia64__] (TLS_IE, TLS_LD, TLS_GD): Add gp - register as input to asm. + * inet/netgroup.h (struct name_list): Replace name pointer with + zero-sized array. + * inet/getnetgrent_r.c: Adjust code for change in name_list + layout. Numerous strdup and free calls removed. -2003-04-01 Jakub Jelinek + * elf/sprof.c (read_symbols): When comparing aliases, prefer + non-hidden over hidden symbols and strong over weak symbols + if both don't start with '_'. - * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (sigevent_t): Fix a typo. + * malloc/malloc.c: Use strong_alias instead of weak_alias wherever + possible. -2003-04-01 Andreas Jaeger +2004-08-12 Jakub Jelinek - * configure.in: Output as/ld as name if version is too old. + * sysdeps/unix/sysv/linux/bits/resource.h: Define non-standard + RUSAGE_ enums as __RUSAGE_ and adjust macros accordingly. + * sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/resource.h: Likewise. + Define non-standard RLIMIT_ enums as __RLIMIT_ and adjust macros + accordingly. -2003-03-31 Daniel Jacobowitz +2004-08-11 Andreas Schwab - * configure.in: Don't require an installed C library in the test - for ".set" assembler support. + * resolv/res_libc.c: Move definition of __res_initstamp ... + * resolv/res_init.c: ... here. -2003-03-31 Roland McGrath +2004-08-10 GOTO Masanori - * signal/tst-sigset.c: New file. - * signal/Makefile (tests): Add it. + * locale/C-time.c: Change default ERA value from NULL to "". + * locale/tst-C-locale.c: Add test case for ERA keywords. -2003-03-31 Ulrich Drepper +2004-08-12 Ulrich Drepper - * sysdeps/unix/sysv/linux/alpha/bits/signum.h (_NSIG): Define to 65. - * sysdeps/unix/sysv/linux/hppa/bits/signum.h (_NSIG): Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Likewise. - * sysdeps/unix/sysv/linux/bits/signum.h (_NSIG): Likewise. - (__SIGRTMAX): Adjust accordingly. - * sysdeps/gnu/siglist.c: If OLD2_SIGLIST_SIZE is defined define - second compatibility symbol set. - * sysdeps/unix/sysv/linux/siglist.h (OLD2_SIGLIST_SIZE): Define. + * sysdeps/unix/sysv/linux/bits/resource.h: Define non-standard + RLIMIT__ enums as __RLIMIT_ and adjust macros accordingly. + * sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise. -2003-03-31 Andreas Schwab +2004-08-12 Jakub Jelinek - * sysdeps/m68k/m68020/bits/atomic.h (atomic_increment_and_test): - Define. - (atomic_decrement_and_test): Fix test. + * sysdeps/unix/sysv/linux/bits/resource.h (RLIMIT_SIGPENDING, + RLIMIT_MSGQUEUE): Add. + (RLIMIT_NLIMITS, RLIM_NLIMITS): Adjust. + * sysdeps/unix/sysv/linux/alpha/bits/resource.h (RLIMIT_SIGPENDING, + RLIMIT_MSGQUEUE, RLIMIT_NLIMITS): Add. + (RLIM_NLIMITS): Adjust. + * sysdeps/unix/sysv/linux/sparc/bits/resource.h (RLIMIT_SIGPENDING, + RLIMIT_MSGQUEUE, RLIMIT_NLIMITS): Add. + (RLIM_NLIMITS): Adjust. + * sysdeps/unix/sysv/linux/mips/bits/resource.h (RLIMIT_SIGPENDING, + RLIMIT_MSGQUEUE, RLIMIT_NLIMITS): Add. + (RLIM_NLIMITS): Adjust. -2003-03-31 Jakub Jelinek +2004-08-12 Jakub Jelinek - * sysdeps/sparc/sparc32/bits/atomic.h: New file. - * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: New file. - * sysdeps/sparc/sparc64/bits/atomic.h: New file. - * sysdeps/sparc/sparc32/atomicity.h: Removed. - * sysdeps/sparc/sparc32/sparcv9/atomicity.h: Removed. - * sysdeps/sparc/sparc64/atomicity.h: Removed. + * resolv/res_query.c (__libc_res_nsearch): Protect the debugging + printf with #ifdef DEBUG and RES_DEBUG check. -2003-03-30 Roland McGrath + * sysdeps/unix/sysv/linux/bits/shm.h: Move __END_DECLS after + __USE_MISC #endif. + * sysdeps/generic/bits/shm.h: Add __BEGIN_DECLS for __getpagesize + declaration. + * sysdeps/gnu/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/shm.h: Likewise. - * scripts/abilist.awk: Grok .opd foo plus .text .foo as "foo F" alone. +2004-08-12 Ulrich Drepper - * intl/po2test.sed: Anchor substitution regexps to fix last change. + * po/ca.po: Update from translation team. -2003-03-29 Paolo Bonzini +2004-08-11 Ulrich Drepper - * intl/po2test.sed: Unify the transformations for msgid and msgstr - and remove a useless s/// command. + * sysdeps/unix/sysv/linux/bits/shm.h: Add __BEGIN_DECLS for + __getpagesize declaration. -2003-03-27 David Mosberger +2004-08-11 Roland McGrath - * sysdeps/ia64/dl-machine.h (RTLD_START): Wrap ".save rp, r0" - directive into empty .prologue region to ensure that call-chain - is terminated even for the first instruction. + * configure.in (libc_cv_cpp_asm_debuginfo): Add missing braces around + commands inside &&. + Reported by Andreas Schwab . + * configure: Regenerated. - * sysdeps/ia64/elf/start.S (_start): Use ".save rp, r0" idiom - to terminate call-chain right from the get-go. + * posix/tst-waitid.c (do_test): Ignore SIGCHLD before cleanup SIGKILL. - * sysdeps/unix/sysv/linux/ia64/fork.S (fork): Remove unnecessary - stop bit between compare & branch. +2004-08-11 Ulrich Drepper -2003-03-29 Ulrich Drepper + * time/tzset.c (tzset_internal): Add new parameter which is + nonzero if called through tzset. Use TZDEFAULT name including + name comparison if the new parameter is zero. This means implicit + tzset calls will not cause files to be opened and read by tzfile.c + all the time. - * stdlib/strtod.c (INTERNAL): Recognize first digit after decimal - point correctly [PR libc/4993]. +2004-08-11 Jakub Jelinek - * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Avoid - netlink_open calls if netlink is known to not be available. + * rt/tst-timer2.c (do_test): If timer_create fails, just continue. + * rt/tst-timer4.c (do_test): If one of the timer_create calls fails, + return 1 immediately. -2003-03-29 Alexandre Oliva + * time/tzfile.c (__tzfile_read): Free transitions only if it will + not be reused. - * configure.in: Add mips64* support. - * sysdeps/mips/bits/endian.h: Make it bi-endian. - * sysdeps/mips/mipsel/bits/endian.h: Removed. - * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed. - * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed. - * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32. - * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32. - * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64. - * sysdeps/mips/Implies: Moved wordsize-32 to... - * sysdeps/mips/mips32/Implies: New file. - * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO, - ret_NOERRNO): New. - (ret, PSEUDO_END): Moved past END. - (PSEUDO): Moved to... - * sysdeps/unix/mips/mips32/sysdep.h: New file. - * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO. - * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to... - * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file. - * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file. + * sysdeps/ieee754/dbl-64/mpa.c: Include . + * sysdeps/ieee754/dbl-64/mpa.h (MAX, MIN): Macros removed. - * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): - Re-introduce ENTRY. + * stdio-common/tst-popen.c: Include . -2003-03-28 Thorsten Kukuk + * resolv/res_send.c (__libc_res_nsend): Only define TMPBUF #if DEBUG. - * sysdeps/unix/sysv/linux/ifaddrs.c: New file. - * inet/test-ifaddrs.c: Allow AF_PACKET. - * sysdeps/unix/sysv/linux/kernel-features.h: Add - __ASSUME_NETLINK_SUPPORT. + * sysdeps/pthread/aio_misc.c (handle_fildes_io): Remove noreturn + attribute. Return NULL instead of calling pthread_exit at the end. -2003-03-28 Ulrich Drepper +2004-08-11 Roland McGrath - * elf/vismain.c (do_test): Comment out tests which fail in the moment. + * iconvdata/testdata/ISO-2022-JP-3: Regenerated. -2003-03-26 H.J. Lu +2004-08-10 Alfred M. Szmidt - * elf/vismod.h (getvarlocal1): Return const char **. - (getvarinmod1): Likewise. - (getvaritcpt1): Likewise. - (getvarlocal2): Likewise. - (getvarinmod2): Likewise. - (getvaritcpt2): Likewise. - (getvaritcpt3): Likewise. - * elf/vismain.c (do_test): Adjusted. - * elf/vismod1.c (getvarlocal1): Return address. - (getvarinmod1): Likewise. - (getvaritcpt1): Likewise. - * elf/vismod2.c (getvarlocal2): Likewise. - (getvarinmod2): Likewise. - (getvaritcpt2): Likewise. - * elf/vismod3.c (getvaritcpt3): Likewise. + * sysdeps/generic/bits/in.h (struct ip_mreq): Remove definition. -2003-03-28 Roland McGrath +2004-08-10 Jakub Jelinek - * elf/vismain.c (do_test): Print both addresses when they don't match. + * libio/bits/stdio.h (fread_unlocked): Cast 0 to (size_t). + (fwrite_unlocked): When checking if size * n is <= 8, cast each + argument to size_t individually. Cast n to (void) instead of + (size_t), surround with (), return (size_t) 0 if one of n or size + is 0. [BZ #316] + * stdio-common/Makefile (tests): Add tst-unlockedio. + * stdio-common/tst-unlockedio.c: New test. - * scripts/abilist.awk: If given -v filename_regexp and/or -v - libname_regexp when parsing names, then produce output only - for those matching the given regexps. In combine mode, save all - stanzas for a final sorting by stanza header at the end. - Emit a blank line between stanzas. +2004-08-09 Roland McGrath - * scripts/abilist.awk: When given -v combine=1, do parse_names and - emit a single output stream with lib name in stanza header lines. + * manual/install.texi (Supported Configurations): Replace bug-glibc + mention with web URL. + * INSTALL: Regenerated. + * locale/iso-3166.def: Likewise, in comment. + * locale/iso-4217.def: Likewise. + * locale/iso-639.def: Likewise. + * posix/cpio.h: Remove bug reporting comment. - * scripts/abilist.awk: Emit A for all *ABS* regardless of type. +2004-08-09 Ulrich Drepper -2003-03-27 Roland McGrath + * libio/bits/stdio.h (fread_unlocked): Add a couple of (size_t) + casts to handle funny calls with floating point argument values + and signed values correctly and without warning. + (fwrite_unlocked): Likewise. [BZ #309] - * sysdeps/powerpc/bits/atomic.h [! __powerpc64__] - (__arch_atomic_decrement_if_positive_64): Fix bogus definition. + * malloc/memusage.c (me): Use creat64, not creat. + * malloc/memusagestat.c: Fix handling of very large sizes. [BZ #285] + Patch by Guy Maor . -2003-03-28 Kaz Kojima + * elf/ldconfig.c (options): Mark parameter option names as + translatable. [BZ #253] Patch by Jakub Bogusz . - * sysdeps/sh/bits/atomic.h (__arch_compare_and_exchange_val_8_acq): - Return old value. Make asm output reg constraint earlyclobber. - Renamed from... - (__arch_compare_and_exchange_8_acq): ... this. - (__arch_compare_and_exchange_val_16_acq): - Return old value. Make asm output reg constraint earlyclobber. - Renamed from... - (__arch_compare_and_exchange_16_acq): ... this. - (__arch_compare_and_exchange_val_32_acq): - Return old value. Make asm output reg constraint earlyclobber. - Renamed from... - (__arch_compare_and_exchange_32_acq): ... this. - (__arch_compare_and_exchange_val_64_acq): - Renamed from... - (__arch_compare_and_exchange_64_acq): ... this. - (atomic_exchange_and_add): Use local variables and - __arch_compare_and_exchange_val_64_acq. - (atomic_add): Likewise. - (atomic_add_negative, atomic_add_zero): Use local variables. + * iconv/gconv_charset.h (strip): Also allow comma which is what is + used to separate options. [BZ #194] -2003-03-28 Alexandre Oliva +2004-08-09 Roland McGrath - * sysdeps/unix/mips/sysdep.S: Include sys/asm.h. + * FAQ.in: Refer to web pages instead of bug-glibc. + * FAQ: Regenerated. -2003-03-27 Ulrich Drepper + * time/strptime_l.c: #include , `bool' used in last change. - * Makefile: Remove libmd5crypt goal. +2004-08-09 Ulrich Drepper -2003-03-25 Jakub Jelinek + * time/tzset.c (tzset_internal): If TZ is not set do not compare + old and new tz value since it might be /etc/localtime in both + cases although the file changed. [BZ #154] + Patch by Christian Franke . - * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Restore - special handling of relocations against local symbols. + * time/tzfile.c (__tzfile_read): Determine dev/ino of file. + Compare with values of previously opened file. Don't do anything + is they match. -2003-03-27 Steven Munroe +2004-08-08 Ulrich Drepper - * sysdeps/powerpc/bits/atomic.h - (__arch_compare_and_exchange_bool_32_acq): Move to [!__powerpc64__]. - [__powerpc64__] (__arch_compare_and_exchange_bool_32_acq): - Define PPC64 specific version. - [__powerpc64__] (__arch_compare_and_exchange_bool_64_acq): - Change (mem) constraint to "b". - [__powerpc64__] (__arch_atomic_exchange_and add_64): - Replace addi with add. Change (value) contraint to "r". - Change (mem) constraint to "b". - [__powerpc64__] (__arch_atomic_decrement_if_positive_64): New macro. - (__arch_atomic_exchange_32): Change (mem) constraint to "b". - (__arch_atomic_exchange_and_add_32): Change (mem) constraint to "b". - (__arch_atomic_decrement_if_positive_32): New macro. - (atomic_decrement_if_positive): Use __arch* macros. + * elf/dl-load.c (_dl_map_object): If __RTLD_CALLMAP flag is set, + reset loader before the actual loading. + * elf/dl-open.c (dl_open_worker): If file name contains no path + element determine map of caller. Pass caller map in this case to + _dl_map_object. Set __RTLD_CALLMAP in mode. + * include/dlfcn.h (__RTLD_CALLMAP): Define. [BZ #116] + Patch by Greg Wolodkin . -2003-03-27 Jakub Jelinek + * misc/syslog.c (openlog_internal): Always try both UDP and TCP. + [BZ #108] Patch mainly by Bjorn Andersson . - * sysdeps/ia64/fpu/libm-test-ulps: Update. + * configure.in: Also recognize i786. [BZ #106] + Patch by . -2003-03-27 Roland McGrath + * resolv/res_query.c (__libc_res_nsearch): Correctly test whether + name contains any dots. [BZ #95] - * scripts/rpm2dynsym.sh: New file. - * Makefile (distribute): Add it. + * resolv/res_send.c: Compiling with DEBUG defined works again. + * resolv/gethnamaddr.c (dprintf): Renamed to Dprintf. Adjust all + callers. -2003-03-27 David Mosberger + * resolv/tst-leaks.c (TIMEOUT): Define so that if no server is + available the process is not killed. [BZ #41] - * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's - ar.unat before returning. Add missing .mem.offset directives - to ensure file gets assembled without warnings. - * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise. + * intl/tst-gettext.c (main): Improve some messages. [BZ #33] -2003-03-27 Jakub Jelinek + * time/strptime_l.c (__strptime_internal): Fix handling of %Ey. + [BZ #28] - * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>: - Return -1 instead of 0 if clock_getres failed. + * po/sv.po: Update from translation team. -2003-03-27 Roland McGrath +2004-08-07 Ulrich Drepper - * scripts/abilist.awk: If variable `parse_names' is set, grok the file - header lines and write out foo.symlist files for each foo.so.NN listed. + * inet/netinet/in.h: Add more const to the setipv4soucefilter, + getsourcefilter, and setsourcefilter parameter list. + * sysdeps/generic/setipv4sourcefilter.c: Likewise. + * sysdeps/generic/getsourcefilter.c: Likewise. + * sysdeps/generic/setsourcefilter.c: Likewise. + * sysdeps/unix/sysv/linux/setipv4sourcefilter.c: Likewise. + * sysdeps/unix/sysv/linux/getsourcefilter.c: Likewise. + * sysdeps/unix/sysv/linux/setsourcefilter.c: Likewise. - * libio/libioP.h (_IO_wfile_jumps): Remove attribute_hidden. - This symbol is exported, and we don't want to hide it. - Add libc_hidden_proto instead. - (_IO_file_jumps): Add libc_hidden_proto. - * libio/wfileops.c (_IO_wfile_jumps): Add libc_hidden_data_def. - Remove INTVARDEF. - * libio/fileops.c (_IO_file_jumps): Likewise. - * libio/stdfiles.c: Don't use INTUSE on them. - * libio/iofdopen.c (_IO_new_fdopen): Likewise. - * libio/iofopen.c (__fopen_internal): Likewise. - * libio/freopen.c (freopen): Likewise. - * libio/freopen64.c (freopen64): Likewise. - * libio/iovdprintf.c (_IO_vdprintf): Likewise. + * po/tr.po: Update from translation team. - * Makerules (check-abi) [$(enable-check-abi) = warn]: - Ignore exit status from diff. - * configure.in (enable_check_abi): Document possible value "warn". - Change default to no for now. - * configure: Regenerated. +2004-08-06 Ulrich Drepper - * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Emit stub_warning - macro calls and a #include at the end. - * Makerules ($(objpfx)stubs): Tweak sed commands. + * iconvdata/jisx0213.h (jisx0213_added_in_2004_p): Fix typo. + Reported by Paolo Bonzini. - * sysdeps/unix/sysv/linux/syscalls.list: Use - rather than EXTRA in - caller column for *xattr syscalls, since they are in sysdeps/generic. +2004-08-06 Jakub Jelinek - * sysdeps/unix/sysv/linux/i386/setfsuid.c: setfsgid -> setfsuid - * sysdeps/unix/sysv/linux/i386/setfsgid.c: setfsuid -> setfsgid + * sysdeps/ia64/dl-machine.h (elf_machine_fixup_plt): Add + always_inline. + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_runtime_setup, + elf_machine_fixup_plt, elf_machine_plt_conflict): Likewise. -2003-03-26 Roland McGrath + * sysdeps/unix/sysv/linux/netatalk/at.h: Include bits/sockaddr.h + before including linux/atalk.h. - * Makerules (check-abi-config): Use /thread instead of /tls when - use-thread and not just use-tls is set. + * resolv/res_libc.c: Include atomic.h. - * Makerules (update-abi): Put quotes around $(update-abi-config). + * intl/finddomain.c (free_mem): Rename to... + (_nl_finddomain_subfreeres): ... this. Add + __libc_freeres_fn_section. + * intl/loadmsgcat.c (_nl_unload_domain): Add + __libc_freeres_fn_section. + * intl/gettextP.h (_nl_unload_domain): Move into #ifdef _LIBC. + Add attribute_hidden. + (_nl_findomain_subfreeres): New prototype. + * iconv/gconv_db.c (free_mem): Call _nl_findomain_subfreeres. - * elf/Makefile (check-abi): Depend on check-abi-ld. - (update-abi): Depend on update-abi-ld. +2004-07-30 Guido Guenther -2003-03-26 GOTO Masanori + * nss/getent.c (passwd_keys): Use strtoul instead of isdigit to + test if the key is numeric or not. + (group_keys): Likewise. - * sysdeps/unix/sysv/linux/i386/setfsuid.c: Use INTERNAL_SYSCALL and - do not check for errors (unless testing for 32bit variant). - * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. +2004-08-05 Ulrich Drepper -2003-03-27 Philip Blundell + * inet/netinet/in.h: Define struct ip_msfilter, IP_MSFILTER_SIZE, + struct group_filter, and GROUP_FILTER_SIZE. + * include/sys/socket.h: Declare __getsockopt. + * sysdeps/unix/sysv/linux/setipv4sourcefilter.c: New file. + * sysdeps/unix/sysv/linux/getipv4sourcefilter.c: New file. + * sysdeps/unix/sysv/linux/setsourcefilter.c: New file. + * sysdeps/unix/sysv/linux/getsourcefilter.c: New file. [BZ #211] - * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET_NOERRNO): Use - unconditional mov. Remove nop. + * po/ko.po: Update from translation team. - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_VFORK_SYSCALL): Define for kernel 2.4 on arm. - * sysdeps/unix/sysv/linux/arm/vfork.S: Elide compatibility code - when __ASSUME_VFORK_SYSCALL is defined. - * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise for - __ASSUME_MMAP2_SYSCALL. - * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise for - __ASSUME_REALTIME_SIGNALS. +2004-08-04 Jakub Jelinek -2003-03-26 Ulrich Drepper + * hesiod/hesiod.c (__hesiod_res_get): Use calloc instead of malloc + + memset. + (__hesiod_res_set): Free nsaddrs. - * sysdeps/generic/ldsodefs.h (ELF_RTYPE_CLASS_COPY): Define to 2 - only if DL_NO_COPY_RELOCS is not defined. - * sysdeps/ia64/dl-lookupcfg.h: Define DL_NO_COPY_RELOCS. + * include/resolv.h (__res_maybe_init): Add prototype. + * resolv/resolv.h (struct __res_state): Add _u._ext.initstamp field. + * resolv/Versions (libc): Add __res_maybe_init@@GLIBC_PRIVATE. + * resolv/res_libc.c (__res_initstamp, lock): New variables. + (res_init): Increase __res_initstamp. + (__res_maybe_init): New function. + * resolv/res_init.c (__res_vinit): Initialize _u._ext.initstamp. + * hesiod/hesiod.c (__hesiod_res_get): Use __res_maybe_init instead + of RES_INIT check and {res_ninit,__res_ninit,res_init} call. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Likewise. + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r, + _nss_dns_gethostbyaddr_r): Likewise. + * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r, + _nss_dns_getnetbyaddr_r): Likewise. + * resolv/gethnamaddr.c (gethostbyname, gethostbyname2, + gethostbyaddr): Likewise. + * resolv/res_data.c (fp_nquery, res_mkquery, res_mkupdate, + res_isourserver, res_sendsigned, res_update, res_search, + res_querydomain): Likewise. + * nss/getXXbyYY_r.c (INTERNAL (REENTRANT_NAME)): Likewise. + * nss/digits_dots.c (__nss_hostname_digits_dots): Likewise. + * nss/getnssent_r.c (__nss_setent, __nss_endent, __nss_getent_r): + Likewise. -2003-03-26 Roland McGrath +2004-08-05 Ulrich Drepper - * sysdeps/unix/make-syscalls.sh: When an undefined syscall has - SOURCE=-, append its symbol names to make variable unix-stub-syscalls. - * sysdeps/unix/Makefile [$(subdir) = misc] [unix-stub-syscalls] - (sysdep_routines): Add stub-syscalls. - ($(objpfx)stub-syscalls.c): New target. - (generated): Add stub-syscalls.c. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Set ai_family for + V4-mapped IPv6 addresses and req->ai_family==AF_INET. + Reported by A. Guru . - * tls.make.c: Also define use-tls according to USE_TLS macro. + * po/sv.po: Update from translation team. + * po/sk.po: Likewise. + * po/pl.po: Likewise. -2003-03-26 Ulrich Drepper +2004-08-04 Jakub Jelinek + Ulrich Drepper - * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (struct siginfo): Avoid - no-op padding element. - * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + * wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Don't read more input + characters than necessary. -2003-03-26 GOTO Masanori +2004-08-05 Ulrich Drepper - * sysdeps/unix/sysv/linux/i386/getgroups.c: Fix the error - condition check for the return value of getgroups32. + * wcsmbs/Makefile (tests): Add tst-mbsrtowcs. + * wcsmbs/tst-mbsrtowcs.c: New file. -2003-03-26 Jakub Jelinek + * po/fr.po: Update from translation team. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_NOERRNO): - Fix a typo. - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_NOERRNO, - PSEUDO_END_NOERRNO): Define. - * sysdeps/unix/sysdep.h (PSEUDO_END_NOERRNO): Fix a typo. - Define to PSEUDO_END. +2004-08-04 Jakub Jelinek -2003-03-26 Ulrich Drepper + * resolv/inet_pton.c (inet_pton4): Disallow octal numbers. Reported + by A. Guru . [BZ #295] - * abilist/librt.abilist: Add new timer interfaces for 64-bit archs. +2004-08-05 Ulrich Drepper -2003-03-25 Jiro SEKIBA + * po/nl.po: Update from translation team. - * iconvdata/euc-tw.c (from_euc_tw): Fix return value of TO_LOOP. - * iconvdata/bug-iconv4.c: New file. - * iconvdata/Makefile (tests): Add bug-iconv4. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Recognize all the IPv4 + numeric address formats inet_addr knows. + (getaddrinfo): Allow AI_NUMERICSERV flag. + If neither IPv4 nor IPv6 interface is present we cannot make any + decision for AI_ADDRCONFIG. Fail if AI_NUMERICSERV is set and the + string is not just a number. Remove useless freeaddrinfo call. + * resolv/netdb.h (AI_NUMERICSERV): Define. + Based on a patch by a.guru@sympatico.ca. -2003-03-25 H.J. Lu +2004-08-04 Jakub Jelinek - * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected - symbols twice. - (_dl_lookup_versioned_symbol): Likewise. + * stdlib/strfmon_l.c (__vstrfmon_l): Memset whole info structure + instead of trying to initialize some, but not all, fields one by + one. + * stdio-common/printf_size.c (printf_size): Initialize fb_info + structure with *info instead of trying to initialize some, but not + all, fields from it. -2003-03-26 Jakub Jelinek + * nscd/connections.c (handle_request): Check if req->type is in + LASTDBREQ .. LASTREQ range instead of req. - * csu/tst-atomic.c (do_test): Add some new - atomic_compare_and_exchange_val_acq, atomic_add_zero, - atomic_compare_and_exchange_bool_acq and atomic_add_negative tests. - * include/atomic.h (atomic_add_negative, atomic_add_zero): - Prefix local variable so that it doesn't clash with the one - in atomic_exchange_and_add. - * sysdeps/ia64/bits/atomic.h (atomic_exchange): Fix for long/void * - pointers. - (atomic_exchange_and_add): Implement using __sync_fetch_and_add_?i. - * sysdeps/powerpc/bits/atomic.h (atomic_exchange_and_add): Force - value into register. - * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_64_acq): - Cast newval to long. - * sysdeps/x86_64/bits/atomic.h - (__arch_compare_and_exchange_val_64_acq): Cast newval and oldval to - long. - (atomic_exchange): Cast newvalue to long if sizeof == 8. - (atomic_exchange_and_add): Cast value to long if sizeof == 8. - (atomic_add, atomic_add_negative, atomic_add_zero): Likewise. - (atomic_bit_set): Shift 1L up in all cases to shut up warnings. + * locale/programs/linereader.c (lr_create): Initialize + lr->return_widestr to 0. -2003-03-21 Martin Schwidefsky + * elf/dl-close.c (free_slotinfo): Add __libc_freeres_fn_section. + (free_mem): Call free_slotinfo just once. - * sysdeps/s390/s390-32/backtrace.c (__backtrace): Remove high order - bit from backtrace addresses. + * stdio-common/tst-fmemopen.c (main): Check for MAP_FAILED instead + of NULL. -2003-03-21 Andreas Schwab + * locale/localeinfo.h (_nl_locale_subfreeres): New prototype. + * locale/setlocale.c (free_category): Add __libc_freeres_fn_section. + (free_mem): Rename to _nl_locale_subfreeres. + * iconv/gconv_db.c: Include locale/localeinfo.h. + (free_derivation, free_modules_db): Add __libc_freeres_fn_section. + (free_mem): Call _nl_locale_subfreeres. + * iconv/gconv_dl.c (do_release_all): Add __libc_freeres_fn_section. - * sysdeps/unix/sysv/linux/i386/chown.c: Don't define any versioned - __chown symbols. +2004-08-04 Roland McGrath -2003-03-25 Roland McGrath + * Makeconfig ($(common-objpfx)config.status): + Fix typo: $(add_ons) -> $(add-ons). + (Makeconfig-add-on): New variable. When doing $(sysdep-makeconfigs) + include, use black magic to get it set to an add-on's name during the + include of the add-on's Makeconfig. - * config.make.in (enable-check-abi): New variable from configure. - * configure.in (enable_check_abi): New substituted variable, - controlled by --{enable,disable}-check-abi (default yes). + * configure.in: Use variable name `libc_add_on' when sourcing add-on + configure fragments, so they can refer to this. * configure: Regenerated. - * Makerules [$(enable-check-abi) = yes] (tests): Put this condition - on check-abi dependency. - -2003-03-26 Andreas Schwab - * sysdeps/m68k/m68020/bits/atomic.h: Fix typos. - * include/atomic.h: Likewise. - - * sysdeps/unix/sysv/linux/m68k/sysdep.h: Define ret_NOERRNO. - -2003-03-25 Roland McGrath +2004-08-04 Roland McGrath - * sysdeps/powerpc/bits/atomic.h (__arch_atomic_exchange_32): New macro. - (__arch_atomic_exchange_64): New macro. - (atomic_exchange): Use them. - (__arch_atomic_exchange_and_add_32): New macro. - (__arch_atomic_exchange_and_add_64): New macro. - (atomic_exchange_and_add): Use them. - Original patch from Steven Munroe . + * posix/tst-waitid.c (test_child): Sleep a second before stopping. + (do_test): Bump sleep to three seconds. + (sigchld, check_sigchld): New functions. + (do_test): Handle SIGCHLD and check for getting the right details. -2003-03-25 Alexandre Oliva + * posix/tst-waitid.c (do_test): Kill the child process when bailing + out early on some failure. + [WCONTINUED]: Test WCONTINUED functionality. - * sysdeps/mips/sgidefs.h (_MIPS_ISA_MIPS32, _MIPS_ISA_MIPS64): - Define. - * sysdeps/mips/sys/asm.h: Test _MIPS_ISA against them on all - ISA tests. - (ALSZ, ALMASK, SZREG, REG_S, REG_L): Define based on ABI, not ISA. - (PTR_ADD, etc): Test _MIPS_SZPTR instead of _MIPS_SZLONG. - * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR - to decide whether to add padding. - * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR - to decide whether to add padding. - * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h (struct - old_kernel_sigaction): Likewise. +2004-08-03 Ulrich Drepper -2003-03-25 Ulrich Drepper + * nscd/connections.c (handle_request): Print more descriptive + message for invalid request types. - * csu/tst-atomic.c: Adjust tests to what atomic_add_negative and - atomic_add_zero were supposed to do. - * include/atomic.h: Adjust atomic_add_negative and atomic_add_zero - to x86 behavior. +2004-08-02 Jakub Jelinek - * sysdeps/generic/bits/typesizes.h (__TIMER_T_TYPE): Define as void*. - This matches the new timer implementation. - * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__TIMER_T_TYPE): - Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__TIMER_T_TYPE): - Likewise. - * sysdeps/unix/sysv/linux/bits/siginfo.h (struct siginfo): Adjust - timer info for what the kernel provides these days. - (struct sigevent): Add _tid field. - Define SIGEV_THREAD_ID. - Remove struct __pthread_attr_s forward declaration. - * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + * iconvdata/ibm932.c (BODY): Avoid binary search for ch >= 0xffff. + Always treat high as highest number in range + 1. + * iconvdata/ibm943.c (BODY): Likewise. - * Versions.def (librt): Add GLIBC_2.3.3. +2004-07-31 Bruno Haible - * abilist/libpthread.abilist: Update for nptl. + * iconvdata/JISX0213.TXT: Updated to JISX0213 plane 1 version 2004. + * iconvdata/jisx0213.c (__jisx0213_to_ucs_main, + __jisx0213_to_ucs_pagestart, __jisx0213_from_ucs_level1, + __jisx0213_from_ucs_level2): Regenerated. + * iconvdata/jisx0213.h (jisx0213_added_in_2004_p): New function. + * iconvdata/iso-2022-jp-3.c (JISX0213_1_2000_set): Renamed from + JISX0213_1_set. + (JISX0213_1_2004_set): New enum value. + (BODY for FROM_LOOP): Treat ESC $ ( Q like ESC $ ( O. + (BODY for TO_LOOP): For JISX 0213 plane 1 characters, emit ESC $ ( O + when possible, ESC $ ( Q when needed. + * iconvdata/testdata/EUC-JISX0213: Add the 10 new characters. + * iconvdata/testdata/EUC-JISX0213..UTF8: Update. + * iconvdata/testdata/SHIFT_JISX0213: Add the 10 new characters. + * iconvdata/testdata/SHIFT_JISX0213..UTF8: Update. + * iconvdata/testdata/ISO-2022-JP-3: Add the 10 new JISX0213 characters. + * iconvdata/testdata/ISO-2022-JP-3..UTF8: Update. -2003-03-24 Jon Grimm +2004-07-22 Bruno Haible - * inet/netinet/in.h: Add IPPROTO_SCTP. + * iconvdata/gconv-modules (ISO-8859-7): Add alias ISO_8859-7:2003. -2003-03-24 Ulrich Drepper +2004-07-29 David S. Miller - * sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define. + * sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy): Optimize + better for smaller than 256 byte copies. Also, use only one + unrolled loop instead of two for the large copy case. -2003-03-24 Philip Blundell +2004-07-30 Richard Henderson - * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL): - Remove a1 from clobber list. + * sysdeps/alpha/divq.S: Save t3 before it gets clobbered. + * sysdeps/alpha/remq.S: Likewise. + * sysdeps/alpha/div.S, sysdeps/alpha/ldiv.S: Rewrite with the + new division algorithms in divl.S and divq.S respectively. -2003-03-24 Ulrich Drepper +2004-07-28 GOTO Masanori - * timezone/antarctica: Update from tzdata2003a. - * timezone/asia: Likewise. - * timezone/australasia: Likewise. + * timezone/asia: Update from tzdata2004b. + * timezone/backward: Likewise. * timezone/europe: Likewise. * timezone/iso3166.tab: Likewise. + * timezone/leapseconds: Likewise. * timezone/northamerica: Likewise. * timezone/southamerica: Likewise. * timezone/zone.tab: Likewise. -2003-03-24 Steven Munroe - - * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_END_NOERRNO): Fix typo. - -2003-03-23 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (ret_NOERRNO): Avoid - unwanted expansion by definining to ret. Patch by Ian Wienand. - - * sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of - the parameter description to denote no error checking. Generate - appropriate pseudo asm code. - * sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'. - * sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid, - getpgrp, and getppid with 'E'. - * sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO, - PSEUDO_END_NOERRNO, and ret_NOERRNO. - * sysdeps/powerpc/powerpc64/sysdep.h: Likewise. - * sysdeps/unix/sysdep.h: Likewise. - * sysdeps/unix/alpha/sysdep.h: Likewise. - * sysdeps/unix/sparc/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. - -2003-03-23 Roland McGrath - - * Makeconfig (+includes): Don't use $(last-includes). - -2003-03-22 Alexandre Oliva - - * sysdeps/unix/sysv/linux/configure.in: Update mips64 patterns. - * sysdeps/unix/sysv/linux/configure: Rebuilt. - -2003-03-23 Jakub Jelinek + * timezone/private.h: Update from tzcode2004b. + * timezone/zic.c: Likewise. - * sysdeps/alpha/fpu/libm-test-ulps: Update. - * sysdeps/arm/libm-test-ulps: Update. - * sysdeps/hppa/fpu/libm-test-ulps: Update. - * sysdeps/ia64/fpu/libm-test-ulps: Update. - * sysdeps/mips/fpu/libm-test-ulps: Update. - * sysdeps/powerpc/nofpu/libm-test-ulps: Update. - * sysdeps/powerpc/fpu/libm-test-ulps: Update. - * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. - * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. - * sysdeps/sh/sh4/fpu/libm-test-ulps: Update. - * sysdeps/s390/fpu/libm-test-ulps: Update. - * sysdeps/x86_64/fpu/libm-test-ulps: Update. +2004-07-27 Ulrich Drepper -2003-03-22 Roland McGrath + * nscd/grpcache.c (cache_addgr): If necessary, add entry also + under the name the user provided. + * nscd/pwdcache.c (cache_addpw): Likewise. - * include/atomic.h: Put parens around all macro arguments. - (__atomic_val_bysize, __atomic_bool_bysize): New macros. - (atomic_compare_and_exchange_val_acq): Use it. - (atomic_compare_and_exchange_bool_acq): Likewise. - (atomic_increment_and_test): Invert sense of test. - (atomic_decrement_and_test): Likewise. - * csu/tst-atomic.c: Update those tests to match. +2004-07-26 Roland McGrath -2003-03-22 Jakub Jelinek + * sysdeps/posix/waitid.c [WEXITED]: Clear WEXITED bit in OPTIONS for + call to __waitpid. - * include/atomic.h (atomic_compare_and_exchange_val_acq): Add comment. - Don't define if __arch_compare_and_exchange_val_32_acq is not defined. - (atomic_compare_and_exchange_bool_acq): Add comment. Don't use - __oldval variable in the macro, since it might be macro argument. - (atomic_decrement_if_positive): Initialize __memp, remove setting - of non-existent variable. - (atomic_bit_test_set): Cast 1 to __typeof (*mem) before shifting. - * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Implement - using atomic_compare_and_exchange_val_acq. - (atomic_decrement_if_positive, atomic_bit_test_set): Define. - * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq): - Renamed from... - (__arch_compare_and_exchange_bool_8_acq): ... this. - (__arch_compare_and_exchange_val_16_acq): Renamed from... - (__arch_compare_and_exchange_bool_16_acq): ... this. - (__arch_compare_and_exchange_val_32_acq): Return old value. Renamed - from... - (__arch_compare_and_exchange_bool_32_acq): ... this. - (__arch_compare_and_exchange_val_64_acq): Return old value. Renamed - from... - (__arch_compare_and_exchange_bool_64_acq): ... this. - (__arch_compare_and_exchange_val_32_acq): Use __typeof for local - variables types instead of assuming int. - Change prefix of local variables to __arch. - * sysdeps/generic/bits/atomic.h (arch_compare_and_exchange_acq): - Remove. - (atomic_compare_and_exchange_val_acq, - atomic_compare_and_exchange_bool_acq): Define. +2004-07-26 Ulrich Drepper - * csu/tst-atomic.c: New test. - * csu/tst-atomic-long.c: New test. - * csu/Makefile (tests): Add tst-atomic and tst-atomic-long. + * nscd/hstcache.c (cache_addhst): Fix two scenarios which lead to + memory leaks. - * malloc/memusagestat.c (main): Kill warning if uint64_t is ulong. + * sysdeps/unix/sysv/linux/ifreq.c (__ifreq): Assign pointer for + new buffer at the right time. + Reported by Jakub Bogusz . - * sysdeps/s390/Versions: Add trailing newline. +2004-07-25 Ulrich Drepper - * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Kill warning - if INTERNAL_SYSCALL_ERROR_P doesn't use its first argument. + * inet/Versions [libc, GLIBC_2.3.4]: Add getipv4sourcefilter, + getsourcefilter, setipv4sourcefilter, and setsourcefilter. + * inet/Makefile (routines): Likewise. + * inet/netinet/in.h: Add prototypes for getipv4sourcefilter, + getsourcefilter, setipv4sourcefilter, and setsourcefilter. + * sysdeps/generic/getipv4sourcefilter.c: New file. + * sysdeps/generic/setipv4sourcefilter.c: New file. + * sysdeps/generic/getsourcefilter.c: New file. + * sysdeps/generic/setsourcefilter.c: New file. -2003-03-22 Andreas Schwab +2004-07-17 Steven Munroe - * sysdeps/m68k/fpu/libm-test-ulps: Update. + * sysdeps/powerpc/powerpc64/memcpy.S: Improve instruction scheduling + for POWER4 machines. - * sysdeps/m68k/m68020/bits/atomic.h: New file. - * sysdeps/m68k/m68020/atomicity.h: Removed. +2004-07-21 Jakub Jelinek -2003-03-22 Alexandre Oliva + [BZ #274] + * stdlib/strtod_l.c (INTERNAL (__STRTOF)): Fix used >= + BITS_PER_MP_LIMB shifting up. + * stdlib/tst-strtod.c (main): Add new tests. - * sysdeps/mips/elf/ldsodefs.h: Add mips-specific elf64 relocation - data structures and macros. Protect from multiple inclusion. +2004-07-23 Jakub Jelinek - * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Fix harmless - typo in #if test. + [BZ #282] + * libio/iopopen.c (_IO_new_popen): Use _IO_init instead of + _IO_no_init. Remove wd from struct locked_FILE. + (_IO_wproc_jumps): Remove. + Reported by Andrew Josey . + * stdio-common/Makefile (tests): Add tst-popen. + * stdio-common/tst-popen.c: New test. -2003-03-21 Andreas Jaeger +2004-07-23 Ulrich Drepper - * sysdeps/i386/fpu/libm-test-ulps: Update. + * posix/bits/posix1_lim.h: Fix values for _POSIX_CHILD_MAX and + _POSIX_OPEN_MAX. Add _POSIX_HOST_NAME_MAX, _POSIX_SYMLINK_MAX, + _POSIX_SYMLOOP_MAX, and _POSIX_RE_DUP_MAX. + Reported by Andrew Josey. - * math/libm-test.inc (tgamma_test): Recompute some constants with - 36 digits precision. - (lgamma_test): Likewise. - (ccos_test): Likewise. - (ccosh_test): Likewise. - (clog10_test): Likewise. - (csin_test): Likewise. - (csinh_test): Likewise. - (ctan_test): Likewise. - (ctanh_test): Likewise. + * include/features.h: Document _POSIX_C_SOURCE == 200112L. -2003-03-19 Jakub Jelinek + * grp/grp.h: Define gid_t if __USE_XOPEN2K is defined. + * pwd/pwd.h: Define uid_t and gid_t if __USE_XOPEN2K is defined. + * io/sys/stat.h: Define dev_t, gid_t, ino_t, mode_t, nlink_t, + off_t, time_t, and uid_t if __USE_XOPEN2K is defined. + * signal/signal.h: Define pid_t if __USE_XOPEN2K is defined. + * posix/unistd.h: Define gid_t, off_t, pid_t, uid_t, and + useconds_t if __USE_XOPEN2K is defined. + * io/utime.h: Define time_t if __USE_XOPEN2K is defined. + * libio/stdio.h: Declare fseeko and ftello if __USE_XOPEN2K is defined. - * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerated. +2004-07-19 Thorsten Kukuk -2003-03-21 Roland McGrath + * nis/nss_compat/compat-initgroups.c (getgrent_next_nss): Don't + allocate memory for large temporary variables with alloca. - * sysdeps/i386/i486/bits/atomic.h (atomic_bit_set): Use "ir" - constraint to permit non-constant BIT argument. - (atomic_bit_test_set): Likewise. - * sysdeps/x86_64/bits/atomic.h (atomic_bit_test_set): Likewise. - (atomic_bit_set): Likewise. Use 1UL in case that BIT might be >= 32. - For quadword case, use "i" constraint if __builtin_constant_p and < 32 - or "r" constraint otherwise. +2004-07-22 Ulrich Drepper - * configure.in: Move AC_PROG_CC and other program-finding before all - the version checks. - * configure: Regenerated. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Compatibility + code must have version GLIBC_2.0. Patch by Dwayne McConnell. -2003-03-21 Alexandre Oliva + * nscd/nscd_getgr_r.c (nscd_getgr_r): Avoid read call with NULL + pointer and zero length. - * sysdeps/mips/mips64/memcpy.S: Fix porting bug that broke - unaligned copying of 8-15 bytes. From Chris Demetriou - . Fix label names. - * sysdeps/mips/mips64/memset.S: Fix label names. Make similar - change as to memcpy.S. - * sysdeps/mips/memcpy.S: Formatting changes. - * sysdeps/mips/memset.S: Likewise. +2004-07-21 Ulrich Drepper -2003-03-21 Roland McGrath + * nscd/cache.c (prune_cache): Print correct list when debugging. - * sysdeps/arm/sysdep.h (CALL_MCOUNT): Add trailing semicolon. +2004-07-21 Jakub Jelinek -2003-03-21 Alexandre Oliva + * resolv/res_libc.c (res_init): If RES_INIT is set and + _res.nscount > 0, call __res_nclose and free nsaddrs. + * resolv/Makefile: Add rules to build and run tst-leaks2. + * resolv/tst-leaks2.c: New test. - * sysdeps/mips/mips64/memcpy.S, sysdeps/mips/mips64/memset.S: New. - * sysdeps/mips/memcpy.S, sysdeps/mips/memset.S: Update comments. +2004-07-21 Ulrich Drepper -2003-03-21 Roland McGrath + * intl/libintl.h: Don't define macros for C++. + Patch by Goto Masanori. - * sysdeps/i386/i486/bits/atomic.h - (__arch_compare_and_exchange_val_64_acq): Rewrite abort-calling - version of the macro to avoid compile-time warnings. - [! __PIC__] (__arch_compare_and_exchange_64_acq): Rename to above. - (atomic_exchange_and_add, atomic_add): Fix name and usage of it. - (atomic_increment, atomic_decrement): Likewise. +2004-07-22 GOTO Masanori -2003-03-21 Ulrich Drepper + [BZ #276] + * include/arpa/inet.h: Change inet_aton type from in_addr_t to int. + * inet/arpa/inet.h: Likewise. + * resolv/inet_addr.c: Likewise. - * sysdeps/x86_64/bits/atomic.h: Don't use matching memory constraints. - * sysdeps/i386/i486/bits/atomic.h: Likewise. +2004-07-21 Alexandre Oliva -2003-03-21 Roland McGrath + * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: Add semtimedop. - * include/atomic.h (atomic_compare_and_exchange_bool_acq): Typo fix. +2004-07-20 Roland McGrath -2003-03-20 Ulrich Drepper + * configure.in (add_ons): Substitute this. Move $add_ons handling + after AC_CANONICAL_HOST and default setting of $machine et al. + Don't set $subdirs from $add_ons. + Instead, source add-on/configure fragments early on. + (base_machine): If it's already set, don't set it based on $machine. + (libc_config_ok): New variable, set to no. If an add-on fragment sets + it to yes, skip the tuple sanity check as if --enable-hacker-mode. + (sysnames): Try appending add-on names after machine as well. + * config.make.in (add-ons): Set from @add_ons@ instead of @subdirs@. + * Makeconfig ($(common-objpfx)config.status): Also depend on configure + files in $(add_ons) dirs. - * include/atomic.h: Define atomic_compare_and_exchange_val_acq, - atomic_compare_and_exchange_val_rel, - atomic_compare_and_exchange_bool_acq, and - atomic_compare_and_exchange_bool_rel instead of - atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel. - * sysdeps/i386/i486/bits/atomic.h: Define - __arch_compare_and_exchange_val_*_acq instead of - __arch_compare_and_exchange_*_acq. - * sysdeps/x86_64/bits/atomic.h: Likewise. - * sysdeps/ia64/bits/atomic.h: Define - __arch_compare_and_exchange_bool_*_acq instead of - __arch_compare_and_exchange_*_acq. - * sysdeps/powerpc/bits/atomic.h: Likewise. - * sysdeps/s390/bits/atomic.h: Likewise. - * gmon/mcount.c: Adjust for new form of compare&exchange macros. - * malloc/set-freeres.c: Likewise. - * nscd/cache.c: Likewise. - * stdlib/cxa_finalize.c: Likewise. - * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + * sysdeps/unix/sysv/linux/bits/in.h (struct ip_mreq): Remove + definition, now in netinet/in.h proper. -2003-03-20 Alexandre Oliva +2004-07-20 Alexandre Oliva - * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs. - * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust. - * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise. + * sysdeps/unix/sysv/linux/mips/Makefile ($(objpfx)syscall-%.h): + Sort by syscalls. Make sure we get headers such as sgidefs.h from + the build tree before just-installed ones. - * sysdeps/unix/sysv/linux/mips/pread.c: Don't break up offset - into high and low halves on n64. + * sysdeps/mips/atomicity.h: Use standard names for ABI macros, + include sgidefs.h where appropriate. + * sysdeps/mips/dl-machine.h: Likewise. + * sysdeps/mips/machine-gmon.h: Likewise. + * sysdeps/mips/bits/setjmp.h: Likewise. + * sysdeps/mips/fpu/bits/mathdef.h: Likewise. + * sysdeps/mips/mips64/__longjmp.c: Likewise. + * sysdeps/mips/mips64/setjmp_aux.c: Likewise. + * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise. * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - -2003-03-20 Ulrich Drepper - - * include/atomic.h (atomic_decrement_if_positive): Adjust for the - correct atomic_compare_and_exchange_acq semantics. - -2003-03-20 Alexandre Oliva - - * sysdeps/mips/ieee754.h: Remove excess #endif. - -2003-03-20 Roland McGrath - - * sysdeps/powerpc/bits/atomic.h (atomic_exchange): Remove unused - variable. Remove superfluous memory clobber. - - * include/atomic.h: Syntax braino fix. - - * posix/tst-nice.c (do_test): Use %m formats instead of printing errno - in decimal. Don't bail if niced at start. Just check that nice call - bumps the total at all. - -2003-03-20 Alexandre Oliva - - * sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers, - including pc, gp, sp and fp, as long long. - * sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux. - * sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments. - Add gp argument, and set gp in the jmpbuf to it. - * sysdeps/mips/setjmp_aux.c: Revert to o32-only. - -2003-03-20 Ulrich Drepper - - * include/atomic.h: Define atomic_exchange and - atomic_decrement_if_positive if not already defined. Add some - __builtin_expect. - * sysdeps/i386/i486/bits/atomic.h: Define atomic_exchange. - * sysdeps/x86_64/bits/atomic.h: Likewise. - * sysdeps/ia64/bits/atomic.h: Pretty printing. Define atomic_exchange. - * sysdeps/powerpc/bits/atomic.h: Pretty printing. Define - atomic_exchange, atomic_exchange_and_add, and - atomic_decrement_if_positive - -2003-03-20 Alexandre Oliva - - * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: Sign-extend - with a single instruction. - - * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Define - properly for n64. - (elf_machine_runtime_setup): Cast link_map pointer to Elf Addr - type. - (elf_machine_rel, elf_machine_rel_relative): Cast symidx to Elf - Word before comparing with gotsym. Take reloc_addr argument as - void*. Remove the code added for the compiler to drop any - alignment assumptions. - -2003-03-19 Ulrich Drepper - - * Makefile (distribute): Add include/atomic.h and bits/atomic.h. - * include/atomic.h: New file. - * sysdeps/i386/i486/bits/atomic.h: New file. - * sysdeps/x86_64/bits/atomic.h: New file. - * sysdeps/s390/bits/atomic.h: New file. - * sysdeps/sh/bits/atomic.h: New file. - * sysdeps/ia64/bits/atomic.h: New file. - * sysdeps/powerpc/bits/atomic.h: New file. - * sysdeps/generic/bits/atomic.h: New file. - * sysdeps/i386/i486/atomicity.h: Removed. - * sysdeps/x86_64/atomicity.h: Removed. - * sysdeps/s390/s390-32/atomicity.h: Removed. - * sysdeps/s390/s390-64/atomicity.h: Removed. - * sysdeps/ia64/atomicity.h: Removed. - * sysdeps/powerpc/powerpc32/atomicity.h: Removed. - * sysdeps/powerpc/powerpc64/atomicity.h: Removed. - * elf/dl-profile.c: Use atomic.h instead of atomicity.h. Adjust - use of macros from atomicity.h to new names and semantics. - * gmon_mcount.c: Likewise. - * malloc/set-freeres.c: Likewise. - * nscd/cache.c: Likewise. - * stdlib/cxa_finalize.c: Likewise. - * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. - -2003-03-19 Alexandre Oliva - - * sysdeps/mips/ieee754.h: New file, suitable to replace both - ../ieee754/ieee754.h and ../ieee754/ldbl-128/ieee754.h, kept - mips-specific for now. - -2003-03-19 Ulrich Drepper - - * stdlib/strtod.c (INTERNAL): While eating trailing zeros handle - hexdigits correctly. Reported by Fred Tydeman . - * stdlib/tst-strtod.c: Add test for the bug. - - * posix/tst-nice.c (do_test): Remove invalid of return value. - Don't run test if initial level != 0. - -2003-03-19 Amos Waterland - - * posix/tst-nice.c: New file. - * posix/Makefile (tests): Add tst-nice. - -2003-03-18 Roland McGrath - - * abilist: New directory of libfoo.abilist files maintained using - scripts/merge-abilist.awk and "make update-abi" rules. - * Makefile (distribute): Add abilist/*.abilist. - * Makerules [$(build-shared) = yes] [$(subdir)] (tests): - Depend on check-abi. - - * configure.in: Move $critic_missing check after all AC_CHECK_PROG_VER. - * configure: Regenerated. - - * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64): Fix name. - -2003-03-18 Ulrich Drepper - - * sysdeps/posix/sysconf.c (__sysconf): Handle _SC_MONOTONIC_CLOCK - correctly. - -2003-03-18 Steven Munroe - - * sysdeps/powerpc/powerpc64/memcpy.S: New file. - -2003-03-18 Ulrich Drepper - - * Versions.def: Add GLIBC_2.3.3 for libpthread. - -2003-03-17 Ulrich Drepper - - * sysdeps/generic/libc-start.c [!SHARED && - !LIBC_START_MAIN_AUXVEC_ARG]: Compute beginning of auxvec correctly. - -2003-03-17 Roland McGrath - - * include/ctype.h: Revert last change. - -2003-03-17 Ulrich Drepper - - * argp/tst-argp1.c: Use test-skeleton.c. - * locale/tst-C-locale.c: Likewise. - -2003-03-17 Alexandre Oliva - - * sysdeps/mips/mips64/Implies: Move wordsize-64 to... - * sysdeps/mips/mips64/n64/Implies: New file. - * sysdeps/mips/mips64/n64/Makefile: New file. - * sysdeps/mips/mips64/n64/el/bits/endian.h: New file. - * sysdeps/mips/mips64/n32/Implies: New file. - * sysdeps/mips/mips64/n32/Makefile: New file. - * sysdeps/mips/mips64/n32/el/bits/endian.h: New file. - * sysdeps/unix/mips/mips64/n32/sysdep.h: New file. - * sysdeps/unix/mips/mips64/n64/sysdep.h: New file. - * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file. - * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file. - * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file. - * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file. - * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file. - * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file. - * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file. - * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file. - * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file. - * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file. - * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file. - - * sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use - lib64 for mips64/n64 and lib32 for mips64/n32. - (ldd_rewrite_script): Needed for all mips64 configurations. - * sysdeps/unix/sysv/linux/configure: Rebuilt. - * sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed: New file. - * sysdeps/unix/sysv/linux/mips/mips64/Dist: New file. - - * sysdeps/mips/machine-gmon.h (MCOUNT): Define for N32 and N64 as - well. - - * sysdeps/unix/sysv/linux/mips/configure.in: New. Pre-process - asm/unistd.h into asm-unistd.h. - * sysdeps/unix/sysv/linux/mips/configure: Generated. - * sysdeps/unix/sysv/linux/mips/Makefile: Do custom processing - of syscall list. - * sysdeps/unix/sysv/linux/mips/sys/syscall.h: New file. - * sysdeps/unix/sysv/linux/mips/clone.S: Don't include - asm/unistd.h. - - * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: New file. - * sysdeps/unix/sysv/linux/mips/ptrace.c: New file. Use long - long type for registers on n32. - - * sysdeps/mips/bits/wordsize.h: New file, appropriate for all - 3 ABIs. - * sysdeps/mips/mips64/gmp-mparam.h: New file. Define - BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs. - * sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros. - (__sigsetjmp_aux): Use them. Adjust for all 3 ABIs. - * sysdeps/mips/elf/start.S: Adjust for all 3 ABIs. - * sysdeps/unix/mips/brk.S: Likewise. - * sysdeps/unix/mips/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. - * sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise. - * sysdeps/mips/sys/ucontext.h: Likewise. - * sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/procfs.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/tas.h: Likewise. * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise. - * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise. - * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. - * sysdeps/mips/mips64/bsd-setjmp.S: Likewise. - * sysdeps/mips/mips64/setjmp.S: Likewise. - * sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete. - * sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for - 64-bit types. - -2003-03-16 Ulrich Drepper - - * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Define tv here, - not at function level. - * sysdeps/unix/clock_gettime.c (HANDLE_REALTIME): Likewise. - -2003-03-15 Roland McGrath - - * nis/nss_nis/nis-hosts.c (internal_gethostbyname2_r): int -> size_t - * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Likewise. - * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Likewise. - * nis/nis_table.c (__create_ib_request): Likewise. - - * posix/fnmatch_loop.c: Add casts for signedness. - * nss/nss_files/files-hosts.c: Likewise. - * nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise. - * gmon/gmon.c (write_call_graph): Use u_long for FROM_LEN. - * nscd/nscd_getgr_r.c (nscd_getgr_r): Use nscd_ssize_t for CNT. - - * configure.in (libc_cv_visibility_attribute): Use AC_TRY_COMMAND, - get errors into the log file. - (libc_cv_broken_visibility_attribute): Likewise. - (libc_cv_broken_alias_attribute): Likewise. - (libc_cv_asm_weak_directive): Likewise. - (libc_cv_need_minus_P): Likewise. - (libc_cv_dot_text): Likewise. - (libc_cv_asm_global_directive): Likewise. - (libc_cv_asm_type_prefix): Likewise. - * configure: Regenerated. - - * nscd/cache.c (cache_search): Give first arg type `request_type'. - * nscd/nscd.h: Update decl. - - * nscd/nscd_getpw_r.c (nscd_getpw_r): Add casts for signedness. - * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise. - * elf/dl-close.c (_dl_close): Likewise. - * sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): int -> size_t - * io/fts.c (fts_build): Likewise. - * elf/cache.c (add_to_cache): Likewise. - * locale/programs/locarchive.c (show_archive_content): Likewise. - - * posix/fnmatch.c (fnmatch): Tweak __builtin_expect use. - - * include/ctype.h (__ctype_b_loc): Tweak type punning to make gcc 3.3 - happy. - (__ctype_toupper_loc, __ctype_tolower_loc): Likewise. - -2003-03-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/system.c: Use the generic Linux - code for most parts. - -2003-03-15 Roland McGrath - - * sysdeps/unix/sysv/linux/i386/system.c: Moved to ... - * sysdeps/unix/sysv/linux/system.c: ... here. - (FORK): Don't #define if already #define'd. - * sysdeps/unix/sysv/linux/s390/system.c: File removed. - * sysdeps/unix/sysv/linux/kernel-features.h [__powerpc__]: - (__ASSUME_CLONE_THREAD_FLAGS): Define for kernel >= 2.5.64. - - * dlfcn/tst-dlinfo.c: New file. - * dlfcn/Makefile (tests): Add tst-dlinfo. - ($(objpfx)tst-dlinfo): New target. - - * dlfcn/dlinfo.c: New file. - * dlfcn/Makefile (libdl-routines): Add it. - * dlfcn/Versions (libdl: GLIBC_2.3.3): Add dlinfo. - * dlfcn/dlfcn.h [__USE_GNU]: Declare dlinfo. - [__USE_GNU] (RTLD_DI_*): New enum constants. - [__USE_GNU] (Dl_serpath, Dl_serinfo): New types. - * elf/dl-load.c (cache_rpath): New inline function. - (_dl_map_object): Use it. - (_dl_rtld_di_serinfo): New function. - * sysdeps/generic/ldsodefs.h: Declare it. - * elf/Versions (ld: GLIBC_PRIVATE): Add it. - - * sysdeps/powerpc/elf/libc-start.c (AUX_VECTOR_INIT): Define it. - (LIBC_START_MAIN, LIBC_START_MAIN_AUXVEC_ARG, MAIN_AUXVEC_ARG) - (INIT_MAIN_ARGS): Define, and #include . - (__libc_start_main): Just call the generic one for most of the work. - - * sysdeps/generic/libc-start.c [LIBC_START_MAIN]: If defined, define a - static function by that name instead of BP_SYM (__libc_start_main). - [LIBC_START_MAIN_AUXVEC_ARG]: Take AUXVEC as argument. - [MAIN_AUXVEC_ARG]: Pass 4th argument to MAIN. - [INIT_MAIN_ARGS]: Give INIT the same args as MAIN. - - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [DL_PLATFORM_AUXV]: - Use this macro for extra AT_* cases. - * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_PLATFORM_AUXV): - New macro, guts from ... - (__aux_init_cache): ... here, function removed. - (DL_PLATFORM_INIT): Don't define this. - - * sysdeps/powerpc/powerpc32/memset.S: Put __cache_line_size in bss. - * sysdeps/powerpc/powerpc64/memset.S: Likewise. - - * Versions.def (libthread_db): Add GLIBC_2.3.3 set. - -2003-03-14 Roland McGrath - - * dlfcn/dlerror.c (dlerror): If objname is "", don't put ": " after it. - -2003-03-14 Jakub Jelinek - - * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Fix a typo. - - * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Include - sysdeps/posix/pause.c instead of sysdeps/unix/common/pause.c. - -2003-03-14 Alexandre Oliva - - * sysdeps/mips/fpu/bits/mathdef.h: New. - (__NO_LONG_DOUBLE_MATH): Define for o32. - - * sysdeps/mips/sys/asm.h: Formatting changes. - (PTR, PTRSIZE, PTRLOG): Adjust for all 3 ABIs. - (CPADD): Define for all of them. - (SETUP_GP, SETUP_GPX, SETUP_GPX_L, SAVE_GP, SETUP_GP64, - SETUP_GPX64, SETUP_GPX64_L, RESTORE_GP64, USE_ALT_CP, - NARGSAVE): Define per ABI spec. - (END): Don't redefine. - (LONG_SLL, LONG_SLLV, LONG_SRL, LONG_SRLV, LONG_SRA, - LONG_SRAV): Remove duplicate definitions. - (PTR_ADD, PTR_ADDI, PTR_ADDU, PTR_ADDIU, PTR_SUB, PTR_SUBI, - PTR_SUBU, PTR_SUBIU, PTR_L, PTR_S, PTR_SLL, PTR_SLLV, PTR_SRL, - PTR_SRLV, PTR_SRA, PTR_SRAV, PTR_SCALESHIFT): Define for n32. - (PTR_LA): Define for all 3 ABIs. - - * sysdeps/mips/dl-machine.h: Include sys/asm.h. - (elf_machine_matches_host): Prevent linking of o32 and n32 - together. - (elf_machine_dynamic): Document assumption on $gp. - (STRINGXP, STRINGXV, STRINGV_): New macros. - (elf_machine_load_address): Use them to stringize PTR_LA and - PTR_SUBU. - (ELF_DL_FRAME_SIZE, ELF_DL_SAVE_ARG_REGS, - ELF_DL_RESTORE_ARG_REGS, IFABIO32): New macros used in... - (_dl_runtime_resolve): Adjust it for all 3 ABIs. - (__dl_runtime_resolve): Cast the symtab initializer to the - right type. - (RTLD_START): Use it. Adjust it for all 3 ABIs. - (elf_machine_rel): Mark as always_inline in RTLD_BOOTSTRAP. - Handle 64-bit R_MIPS_REL composite relocation and accept - R_MIPS_64 relocations to shift addend size to 64 bits. - Document assumption regarding local GOT entries. Document - backward-compatibility departing from the ABI behavior in - applying relocations that reference section symbols, no longer - used. Support relocations to mis-aligned offsets. - * sysdeps/mips/mips64/dl-machine.h: Deleted, obsolete. - - * sysdeps/unix/sysv/linux/mips/readelflib.c: New file. - - * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h - (_KERNEL_NSIG_BPW): Define in terms of _MIPS_SZLONG. - * sysdeps/unix/sysv/linux/mips/sigaction.c: Define restore and - restore_rt functions. Use them. - - * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't - .set mips2 on new abis. - -2003-03-13 Ulrich Drepper - - * posix/getconf.c: Recognize POSIX2_SYMLINKS. - * sysdeps/generic/bits/confname.h: Define _PC_2_SYMLINKS. - * sysdeps/posix/fpathconf.c: Handle _PC_2_SYMLINKS. - * sysdeps/posix/pathconf.c: Likewise. - * sysdeps/unix/sysv/linux/fpathconf.c: Likewise. - * sysdeps/unix/sysv/linux/pathconf.c: Likewise. - * sysdeps/unix/sysv/linux/pathconf.h: Define statfs_symlinks. - - * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define some more magic - words. - -2003-03-14 Alexandre Oliva - - * include/gmp.h: Include/gmp-mparam.h. - * stdlib/strtod.c: Include gmp-mparam.h before gmp.h and - gmp-impl.h. - - * elf/dl-conflict.c: Don't compile _dl_resolve_conflicts if - ELF_MACHINE_NO_RELA is set. - * elf/rtld.c (dl_main): No prelink support for REL-only. - - * sysdeps/generic/ldconfig.h (FLAG_MIPS64_LIBN32, - FLAG_MIPS64_LIBN64): Define. - * elf/cache.c (print_entry): Handle mips64 n32 and n64. - - * sysdeps/mips/memcpy.S: Map t0-3 to a4-7 on new abis. - * sysdeps/mips/memset.S: Likewise. - * sysdeps/mips/sys/regdef.h: Alias a4-7 or t0-3 to $8-11 - depending on the ABI. - - * sysdeps/mips/atomicity.h (exchange_and_add, atomic_add): - Don't .set mips2 on new abi. - (compare_and_swap): Likewise. Support 64-bit longs on n64. - - * stdlib/fpioconst.h: Include gmp.h with angle brackets. - -2003-03-13 Roland McGrath - - * elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs - found. Reported by Alexandre Oliva . - -2003-03-13 Alexandre Oliva - - * stdio-common/_itoa.c (_itoa_base_table): Make 64-bit - literals long long. - * stdlib/fpioconst.c: Likewise. - * stdlib/strtod.c: Likewise. - - * sysdeps/mips/add_n.S: Use L macro for local labels. - * sysdeps/mips/addmul_1.S: Likewise. - * sysdeps/mips/lshift.S: Likewise. - * sysdeps/mips/memcpy.S: Likewise. - * sysdeps/mips/memset.S: Likewise. - * sysdeps/mips/mul_1.S: Likewise. - * sysdeps/mips/rshift.S: Likewise. - * sysdeps/mips/sub_n.S: Likewise. - * sysdeps/mips/submul_1.S: Likewise. - * sysdeps/mips/mips64/add_n.S: Likewise. - * sysdeps/mips/mips64/addmul_1.S: Likewise. - * sysdeps/mips/mips64/lshift.S: Likewise. - * sysdeps/mips/mips64/mul_1.S: Likewise. - * sysdeps/mips/mips64/rshift.S: Likewise. - * sysdeps/mips/mips64/sub_n.S: Likewise. - * sysdeps/mips/mips64/submul_1.S: Likewise. - * sysdeps/unix/mips/sysdep.h: Define L() according to ABI - conventions. Define END as in sys/asm.h. - * sysdeps/unix/mips/sysdep.S: Likewise. - * sysdeps/unix/mips/wait.S: Likewise. - * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. - - * sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double): - Cast shifted values that may be too narrow to mp_limb_t. - * sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double): + * sysdeps/unix/sysv/linux/mips/sys/user.h: Likewise. + * sysdeps/unix/sysv/linux/mips/Makefile ($(objpfx)syscall-%.h): Likewise. - * sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float): + * sysdeps/unix/sysv/linux/mips/configure.in (asm-unistd.h): Likewise. - * sysdeps/ieee754/ldbl-128/ldbl2mpn.c - (__mpn_extract_long_double): Likewise. - * sysdeps/ieee754/ldbl-128/mpn2ldbl.c - (__mpn_construct_long_double): Likewise. - * sysdeps/ieee754/ldbl-96/ldbl2mpn.c - (__mpn_extract_long_double): Likewise. - * sysdeps/ieee754/ldbl-96/mpn2ldbl.c - (__mpn_construct_long_double): Likewise. - -2003-03-13 Roland McGrath - - * elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line - entries in the map file match too. - -2003-03-13 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local - label .Lthread_start since current binutils don't allow branches - to globally visible symbols. - -2003-03-13 Jakub Jelinek - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (BREAK_INSN_1, BREAK_INSN, - ASM_OUTARGS_0, ASM_OUTARGS_1, ASM_OUTARGS_2, ASM_OUTARGS_3, - ASM_OUTARGS_4, ASM_OUTARGS_5, ASM_OUTARGS_6): Define. - (INTERNAL_SYSCALL, INLINE_SYSCALL): Use it. Make syscall arguments - clobbered by the syscall. - (ASM_ARGS_1, ASM_ARGS_2, ASM_ARGS_3, ASM_ARGS_4, ASM_ARGS_5, - ASM_ARGS_6): Change constraints from r to index of corresponding - output register. - * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Swap - ptid and ctid to match kernel. - * sysdeps/unix/sysv/linux/ia64/system.c (FORK): Likewise. - -2003-03-12 Steven Munroe - - * sysdeps/powerpc/powerpc64/elf/configure.in: Remove - AC_DEFINE(PI_STATIC_AND_HIDDEN). Not supported for PowerPC64. - * sysdeps/powerpc/powerpc64/elf/configure: Regenerated. - -2003-03-11 Roland McGrath - - * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): - Check SYM_MAP rather than SYM as definedness check. - Handle R_PPC64_ADDR32, R_PPC64_ADDR30, and R_PPC64_REL64 relocs. - Don't handle R_PPC64_REL24 reloc. - Mostly from Steven Munroe . - - * sysdeps/powerpc/powerpc64/dl-machine.h - [USE_TLS] (elf_machine_type_class): Match all the TLS relocs in a - block, so we cover all the TPREL16* flavors without 6 ||s. - [USE_TLS] (elf_machine_tprel): New function. - (elf_machine_rela) [USE_TLS]: Use elf_machine_tprel for TPREL64 reloc, - and handle TPREL16 relocs too. Return rather than break for DTPREL64. - Mostly from Steven Munroe . - -2003-03-11 Ralf Baechle - - * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): Use jal - instead of jalr to invoke subroutine so restoring the $gp register - will work properly. - -2003-03-11 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread64): Define - to __NR_pread if not defined. - (__NR_pwrite64): Define to __NR_pwrite if not defined. - -2003-03-11 Jakub Jelinek - - * sysdeps/unix/sysv/linux/ia64/system.c: New file. - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_CLONE_THREAD_FLAGS): Define for IA-64 and s390* with - kernel >= 2.5.64. - -2003-03-11 Jakub Jelinek - - * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): If CNT == 1, - allocate space even for the trailing '/'. - Reported by John Reiser . - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_6, ASM_ARGS_6, - ASM_CLOBBERS_6): Define. - (ASM_CLOBBERS_5): Use ASM_CLOBBERS_6. - * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Reorder arguments - to match IA-32 order. - * sysdeps/unix/sysv/linux/i386/clone.S: Fix comment. - -2003-03-10 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Don't clobber R7. - Copy extra params for NPTL to registers used in clone syscall. - -2003-03-10 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Correct system - call names for pread and pwrite. - -2003-03-10 Roland McGrath - - * dlfcn/Makefile (libdl-routines): Add dladdr1. - * dlfcn/dladdr1.c: New file. - * dlfcn/dlfcn.h [__USE_GNU]: Declare dladdr1. - [__USE_GNU] (RTLD_DL_SYMENT, RTLD_DL_LINKMAP): New enum constants. - * elf/dl-addr.c (_dl_addr): Take new args, a struct link_map ** and - a const ElfNN_Sym ** to fill in. - * include/dlfcn.h: Update decl. Include . - * dlfcn/dladdr.c (dladdr): Update caller. - * malloc/mtrace.c (tr_where): Likewise. - * sysdeps/generic/elf/backtracesyms.c: Likewise. - * sysdeps/generic/elf/backtracesymsfd.c: Likewise. - * dlfcn/Versions (libdl: GLIBC_2.3.3): New set, add dladdr1. - * Versions.def (libdl): Define GLIBC_2.3.3 set. - - * sysdeps/unix/make-syscalls.sh: Generate $(compile-syscall) for - assembler command. - * sysdeps/unix/Makefile (compile-syscall): New variable. - Pass -g0 to compiler for assembling syscall stubs from stdin. - - * sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO] - (STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END): - Define these to do nothing. - - * configure.in: New check for -g on .S files. - * configure: Regenerated. - * config.make.in (have-cpp-asm-debuginfo): New variable. - * config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef. - * Makeconfig (ASFLAGS): New variable, if undefined and - $(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS). - * Makerules (compile.S, COMPILE.S): Use $(ASFLAGS). - -2003-03-09 Roland McGrath - * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Take 3 new args - used by NPTL on new kernels. From Paul Mackerras . - -2003-03-09 Ulrich Drepper - - * po/fi.po: Update from translation team. - * po/ca.po: Likewise. - * po/da.po: Likewise. - -2003-03-08 Ulrich Drepper - - * rt/tst-aio7.c (do_test): Change BYTES into a #define. - -2003-03-07 Ulrich Drepper - - * rt/tst-aio7.c (do_test): Give BUFF permanent extent, too. - - * sysdeps/powerpc/fpu/w_sqrt.c: Fix comment. - -2003-03-07 Roland McGrath - - * sysdeps/s390/s390-32/sysdep.h (L): Use .Lfoo instead of foo. - * sysdeps/s390/s390-64/sysdep.h (L): Likewise. - -2003-03-04 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove unneeded - stubs, we have INLINE_SYSCALL. - * sysdeps/unix/sysv/linux/mips/bits/mman.h: Define MAP_POPULATE, - MAP_NONBLOCK. - -2003-03-06 Roland McGrath - - * rt/tst-aio7.c (do_test): Revert last change. Instead, give CB1 - permanent extent and add a comment about testing its implicit teardown. - -2003-03-06 Martin Schwidefsky - - * rt/tst-aio7.c (do_test): Cancel i/o on CB1 before it's out of scope. - -2003-03-05 Ulrich Drepper - - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Fix - reversed __builtin_expect expectation. - -2003-03-05 Roland McGrath - - * stdio-common/sscanf.c: Use prototype defn with ... syntax. - * libio/swscanf.c: Likewise. - * libio/swprintf.c: Likewise. - -2003-03-04 Roland McGrath - - * sysdeps/powerpc/powerpc64/dl-machine.h: Include . - (elf_machine_rela): Always use RESOLVE_MAP, needed for - R_PPC64_JMP_SLOT as well as TLS cases. - (BIT_INSERT): Move parenthesis where it ought to have been. - Reported by Steven Munroe . - - * posix/confstr.c (confstr): Correct STRING_LEN values for - _CS_GNU_LIBC_VERSION and _CS_GNU_LIBPTHREAD_VERSION, add missing - break. Reported by Alexandre Julliard . - -2003-03-04 Jakub Jelinek - - * sysdeps/ia64/fpu/libm-test-ulps: Regenerated. - -2003-03-04 Ulrich Drepper - - * sysdeps/unix/sysv/linux/x86_64/clone.S: Add support for the new - clone parameters. - - * po/sv.po: Update from translation team. - -2003-03-04 Andreas Jaeger - Ulrich Drepper - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Fix comments. - -2003-03-03 Ulrich Drepper - - * sysdeps/generic/dl-sysdep.h: Add double include protection. - - * po/tr.po: Update from translation team. - - * elf/dl-load.c (_dl_map_object_from_fd): Determine whether there - are holes between the segments. Only call mprotect to set - proection to PROT_NONE if there are some. - - * elf/dl-load.c (struct filebuf): Actually use FILEBUF_SIZE. - Update comment. - - * include/sched.h (__clone2): Use ... instead of adding all the - new parameters. - -2003-03-03 Roland McGrath - - * elf/dl-load.c (struct filebuf): Fix typo in last change. - - * sysdeps/powerpc/powerpc32/elf/configure.in: Don't define - PI_STATIC_AND_HIDDEN. - -2003-03-03 Ian Wienand - - * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone - flags. - * include/sched.h: Update clone2 prototype. - -2003-03-03 Andreas Jaeger - - * math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition. - (llrint): Use it to correct return type. - (lrint): Likewise. - (lround): Likewise. - (llround): Likewise. - -2003-03-03 Ulrich Drepper - - * elf/dl-load.c (struct filebuf): For 64-bit platforms use 640 - byte filebuf size. - - * libio/fileops.c (_IO_new_file_fopen): Close stillborn descriptor - if ccs parameter isn't valid. Reported by Andreas Schwab. - -2003-03-03 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Add support - for system call numbers > 255. - * sysdeps/unix/sysv/linux/s390/s390-32/syscall.h (DO_CALL, - INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0, - INTERNAL_SYSCALL): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscall.h (DO_CALL, - INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0, - INTERNAL_SYSCALL): Likewise. - -2003-03-03 Martin Schwidefsky - - * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Don't free the dtv - array if it is the initial dtv. - -2003-03-03 Ulrich Drepper - - * po/es.po: Update from translation team. - * po/fr.po: Likewise. - * po/gl.po: Likewise. - * po/sk.po: Likewise. - * po/sv.po: Likewise. - - * sysdeps/unix/sysv/linux/syscalls.list: Add remap_file_pages entry. - * misc/sys/mman.h: Add prototype for remap_file_pages. - * sysdeps/generic/remap_file_pages.c: New file. - * misc/Makefile (routines): Add remap_file_pages. - * misc/Versions [libc:GLIBC_2.3.3]: Add remap_file_pages. - - * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_POPULATE - and MAP_NONBLOCK. - * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise - * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. - -2003-03-03 Roland McGrath - - * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Revert last change. - * sysdeps/ia64/dl-machine.h: Likewise. - * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Remove const from - argument type. - * sysdeps/ia64/dl-lookupcfg.h: Update decl. - - * sysdeps/wordsize-64/strtol_l.c (strtoll_l): Define as weak alias. - * sysdeps/wordsize-64/strtoul_l.c (strtoull_l): Define as weak alias. - * locale/Versions (libc: GLIBC_2.3): Move those to ... - * sysdeps/wordsize-32/Versions (libc: GLIBC_2.3): ... here, new file. - * sysdeps/wordsize-64/Versions (libc: GLIBC_2.3.3) Likewise. - * Versions.def (libc): Add GLIBC_2.3.3 set. - - * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Add const to MAP arg. - * sysdeps/ia64/dl-machine.h: Update decl. - -2003-03-03 Andreas Jaeger - - * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Add missing brace. - -2003-03-02 Roland McGrath - - * scripts/abilist.awk: Reject data items with apparent 0 size. - - * scripts/merge-abilist.awk: Restore hack to elide pattern foo.*/bar - after foo.* as if it were a duplicate. - - * sysdeps/unix/sysv/linux/ia64/brk.S: Add .type and .size for __curbrk. - -2003-03-02 Ulrich Drepper - - * elf/dl-load.c (struct filebuf): Reduce buf array to 512 bytes. - - * sysdeps/generic/bits/time.h: Define CLOCK_MONOTONIC. - * sysdeps/posix/clock_getres.c: Define code for CLOCK_REALTIME only - if not already defined. Use SYSDEP_GETRES to allow other files to - provide alternative implementations. - * sysdeps/unix/sysv/linux/clock_getres.c: New file - * sysdeps/unix/clock_gettime.c: Define code for CLOCK_REALTIME only - if not already defined. Use SYSDEP_GETTIME to allow other files to - provide alternative implementations. - * sysdeps/unix/sysv/linux/clock_gettime.c: New file. - * sysdeps/unix/clock_settime.c: Define code for CLOCK_REALTIME only - if not already defined. Use SYSDEP_GETTIME to allow other files to - provide alternative implementations. - * sysdeps/unix/sysv/linux/clock_settime.c: New file. - * sysdeps/unix/clock_nanosleep.c: Use SYSDEP_NANOSLEEP to allow - other files to provide alternative implementations. Rearrange - tests for invalid parameters. - * sysdeps/unix/sysv/linux/clock_nanosleep.c: New file. - * sysdeps/unix/sysv/linux/sysconf.c: New file. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_POSIX_TIMERS for Linux 2.5.63 and up. - * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define - _POSIX_MONOTONIC_CLOCK. - -2003-03-02 Roland McGrath - - * scripts/merge-abilist.awk: More checks for bogus input. - Uniquify duplicate config names. - - * scripts/abilist.awk: Don't distinguish weak symbols in normal output. - - * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): Renamed - from dl_reloc_overflow, make global. - (__process_machine_rela): Update callers. - * sysdeps/powerpc/powerpc32/dl-machine.h: Declare _dl_reloc_overflow. - Add attribute_hidden to __process_machine_rela decl. - (elf_machine_type_class, elf_machine_rela): Handle 16-bit TLS relocs. - - * sysdeps/generic/libc-start.c (__libc_start_main): Don't assign const - variable. - - * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_fixup_plt): - Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED]. - (elf_machine_rela): Clean up. - - * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up. - - PowerPC TLS support contributed by Paul Mackerras . - * sysdeps/powerpc/powerpc32/elf/configure.in: New file. - * sysdeps/powerpc/powerpc32/elf/configure: New generated file. - * elf/tls-macros.h [__powerpc__ && !__powerpc64__] - (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them. - * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support - new relocs for TLS. - - * sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these - macros out of [SHARED]. - (TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros. + * sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Update to use + _dl_lookup_symbol_x. + (elf_machine_runtime_link_map): Don't INTUSE _dl_signal_error. - * elf/elf.h: Define R_PPC_* relocs for TLS support. - Clean up R_PPC64_* macro definition comments. +2004-07-20 Ulrich Drepper - * configure.in: In "running configure fragment for" message, - omit $srcdir from the name if we prepended it. - * configure: Regenerated. + * inet/netinet/in.h: Define struct ip_mreq and struct + ip_mreq_source. + Define struct group_req and struct group_source_req. + * sysdeps/unix/sysv/linux/bits/in.h: Define IP_UNBLOCK_SOURCE, + IP_BLOCK_SOURCE, IP_ADD_SOURCE_MEMBERSHIP, + IP_DROP_SOURCE_MEMBERSHIP, IP_MSFILTER, MCAST_JOIN_GROUP, + MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP, + MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, and + MCAST_MSFILTER. + Define MCAST_INCLUDE and MCAST_EXCLUDE. - * elf/dl-reloc.c (allocate_static_tls): Fix calculations. - From Jakub Jelinek . + * iconvdata/gconv-modules: Add alias for IBM874 [BZ #244]. - * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Revert last change, - which duplicated the O_DIRECT defn. +2004-07-19 Jakub Jelinek -2003-03-01 GOTO Masanori + [BZ #258] + * math/libm-test.inc (max_value, min_value): New variables. + (initialize): Initialize them. + (pow_test): Add a couple of new tests. + * sysdeps/i386/fpu/e_powf.S (__ieee754_powf): Don't generate invalid + exception if |y| >= 1U<<31. + * sysdeps/i386/fpu/e_pow.S (__ieee754_pow): Don't generate invalid + exception if |y| >= 1L<<63. + * sysdeps/i386/fpu/e_powl.S (__ieee754_powl): Likewise. + If y*log2(x) overflows to +-inf, return still +inf/+0 instead of NaN. + * sysdeps/x86_64/fpu/e_powl.S (__ieee754_powl): Likewise. - * stdlib/stdlib.h: Add missing __USE_BSD enclosure for BSD derived - random functions. +2004-07-18 Ulrich Drepper -2003-03-01 Andreas Schwab + * nscd/pwdcache.c (cache_addpw): Optimize case of unsuccessful + lookup a bit. + * nscd/grpcache.c (cache_addgr): Likewise. + * nscd/hstcache.c (cache_addhst): Likewise. - * resolv/Makefile (tests): Don't depend on - $(objpfx)mtrace-tst-leaks when cross compiling. +2004-07-10 GOTO Masanori - * sysdeps/m68k/dl-machine.h (_dl_start_user): Access - __libc_stack_end through GOT since it is a global symbol. + * sysdeps/s390/s390-32/elf/start.S: Remove symbol _fp_hw. + * sysdeps/s390/s390-64/elf/start.S: Likewise. -2003-03-01 GOTO Masanori +2004-04-16 Andreas Schwab - * argp/argp.h: Fix a typo. - Reported by H.S.Teoh . + * sysdeps/ia64/bits/atomic.h: Cast first argument of + __sync_bool_compare_and_swap_si correct to void*. - * manual/terminal.texi: Fix cfmakeraw() definition from int to void. +2004-07-17 Ulrich Drepper -2003-02-27 Pat Rankin + * iconv/iconv_prog.c (print_known_names): Make machine-readable + output even less cluttered. - * posix/regexec.c (proceed_next_node): Cast re_string_get_buffer to - char *. - (get_subexp): Likewise. +2004-07-16 Steven Munroe -2003-03-01 GOTO Masanori + [BZ #269] + * setjmp/Makefile (tests): Add bug269-setjmp. + * setjmp/bug269-setjmp.c: New file. + * sysdeps/powerpc/powerpc64/__longjmp-common.S [SHARED && !IS_IN_rtld]: + Store R2 from jmpbuf in callers TOC save area. + * sysdeps/powerpc/powerpc64/bsd-_setjmp.S [SHARED && !IS_IN_rtld]: + Store R2 in TOC save area. + * sysdeps/powerpc/powerpc64/setjmp-common.S [SHARED && !IS_IN_rtld]: + Copy TOC save area from previous frame as R2 (TOC) in jmpbuf. - * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (O_DIRECT): Define. +2004-07-16 Jakub Jelinek -2003-02-26 Steven Munroe + * locale/newlocale.c: Include bits/libc-lock.h. + (__libc_setlocale_lock): Extern decl. + (__newlocale): Use it. + Reported by Ulrich Weigand . - * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (O_DIRECT): Define. +2004-07-15 Jakub Jelinek -2003-02-27 Roland McGrath + * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Remove + static inline __attribute ((always_inline)). Don't define if + NO_CANCELLATION. + (__libc_fcntl): Use INLINE_SYSCALL directly instead of + __fcntl_nocancel. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c (__fcntl_nocancel): + Remove static inline __attribute ((always_inline)). Don't define + if NO_CANCELLATION. + (__libc_fcntl): Use INLINE_SYSCALL directly instead of + __fcntl_nocancel. + * sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Define to + __libc_fcntl if NO_CANCELLATION and __ASSUME_FCNTL64 == 0. + Don't define at all if NO_CANCELLATION and __ASSUME_FCNTL64 > 0. + (__libc_fcntl): Don't define if __fcntl_nocancel is a macro. - * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Remove - special case for dl_rtld_map in R_PPC64_RELATIVE; it's harmless to - repeat it and avoids the test for the common case. - Clean up and fix calculations for TLS relocs. + [BZ #262] + * sysdeps/i386/elf/start.S (_start): Use @GOT instead of @GOTOFF + for main. + * elf/Makefile: Add rules to build and run tst-pie1. + * elf/tst-pie1.c: New test. + * elf/tst-piemod1.c: New file. - * sysdeps/powerpc/powerpc64/dl-tls.h: Moved to ... - * sysdeps/powerpc/dl-tls.h: ... here. - (TLS_TP_OFFSET): New macro. +2004-07-14 Jakub Jelinek - * sunrpc/svc_udp.c (svcudp_recv): Add a cast to last change. + [BZ #266] + * manual/string.texi (l64a): Note that the static buffer is 7 bytes + long. Rewrite example code so that it takes into account l64a output + shorter than 6 characters. + Reported by Julian Graham . -2003-02-27 Ulrich Drepper +2004-07-14 Kaz Kojima - * sysdeps/i386/fpu/libm-test-ulps: Increase ULPs for yn due to - code generation changes in recent gcc. + * sysdeps/sh/dl-machine.h: Don't reset _dl_starting_up here. + (elf_machine_rela_relative): Remove unused valiable. -2003-02-26 Steven Munroe +2004-07-12 Paul Eggert - * sysdeps/powerpc/fpu/fpu_control.h (_FPU_GETCW, _FPU_SETCW): - Rename argument to avoid symbol conflict. + [BZ #263] + * sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Don't store + outside the buffer if the read returns 0. __strtod_l can't set + endp to NULL, so remove a test for that case. - * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h - [__USE_GNU] (O_DIRECT): New macro. +2004-07-12 Roland McGrath -2003-02-24 David Mosberger + * manual/signal.texi (Interrupted Primitives): Make clear that + TEMP_FAILURE_RETRY evaluates its expression as long int and compares + it to -1 to define "failure". - * sysdeps/unix/sysv/linux/ia64/sysdep.S (__syscall_error): Fix - unwind info. +2004-07-10 Ulrich Drepper -2003-02-27 Ulrich Drepper + * elf/ldconfig.c: Define PROCINFO_CLASS as static before including + ldsodefs.h. + * sysdeps/generic/ldsodefs.h: Only define PROCINFO_CLASS if it is not + already defined. + * sysdeps/i386/dl-procinfo.c: Define PROCINFO_CALLS only if not + already defined. - * resolv/res_libc.c [USE___THREAD] (_res): Don't need the - initializer anymore now that res_thread_freeres is more careful. + * elf/rtld.c (print_statistics): Mark with noinline attribute. + * sysdeps/i386/dl-machine.h (elf_machine_rel): Mark with always_inline + attribute. + (elf_machine_rel_relative): Likewise. - * sunrpc/svc_udp.c (svcudp_recv): Remove all control messages - except the PKTINFO. Reset interface in PKTINFO. - Patch by Neil Brown [PR libc/4973]. + * include/string.h: Add libc_hidden_proto for __strtok_r and + __strsep_g. + * sysdeps/generic/strsep.c: Add libc_hidden_def. + * sysdeps/generic/strtok_r.c: Likewise. + * sysdeps/i386/strtok_r.S: Add alias for internal symbol. + * sysdeps/i386/i686/strtok_r.S: Likewise. + * sysdeps/x86_64/strtok_r.S: Likewise. -2003-02-25 Steven Munroe +2004-07-09 Alexandre Oliva - * elf/elf.h: Add new R_PPC64_* relocs for TLS. - * elf/tls-macros.h [__powerpc64__] (TLS_LE, TLS_IE, TLS_LD, TLS_GD): - Define. - * sysdeps/powerpc/powerpc64/elf/configure.in: New file. - * sysdeps/powerpc/powerpc64/elf/configure: New file (generated). - * sysdeps/powerpc/powerpc64/dl-machine.h: Support new TLS relocs. - * sysdeps/powerpc/powerpc64/dl-tls.h: New file. + * inet/getnetgrent_r.c (internal_setnetgrent): Make it hidden + instead of internal-linkage, such that we can alias to it. + (internal_endnetgrent, internal_getnetgrent_r): Likewise. - * sysdeps/powerpc/elf/libc-start.c (__libc_start_main): - Do DL_SYSDEP_OSCHECK here, matching 2002-12-01 change to generic file. +2004-07-09 Ulrich Drepper -2003-02-25 Andreas Jaeger + * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Move attribute + to the front for gcc 3.5+. + * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise. + * include/fcntl.h: Don't declare __fcntl_nocancel here if + NO_CANCELLATION is defined. - * manual/memory.texi (Malloc Tunable Parameters): Clarify - behaviour of M_MMAP_THRESHOLD. +2004-07-07 Jakub Jelinek -2003-02-25 Roland McGrath + * elf/dl-fini.c (_dl_fini): Add nloaded variable, load + GL(dl_nloaded) into it while still in critical section. - * resolv/res_init.c (res_thread_freeres): Bail out if _res.nscount is - zero, inidicating _res was not initialized yet. +2004-07-06 Thorsten Kukuk -2003-02-24 Ulrich Drepper + * nss/getent.c (print_group, print_passwd): Use %lu format for + `unsigned long int' values. - * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Remove EACCES - test. + * sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Fix syntax + error typos in goto statements. -2003-02-24 Roland McGrath +2004-07-07 Roland McGrath - * sysdeps/posix/pause.c: Add LIBC_CANCEL_HANDLED. + * Makefile (dist-separate): New variable. + (glibc-%.tar rule): Make separate tar files for add-ons listed there. + Depend on their configure files. + (dist-do-separate-dirs): New canned sequence to do that. + (dist-separate-libidn, dist-separate-linuxthreads): New variables. + (dist): Depend on add-on tar files based on $(dist-separate). + (dist-version): New variable, default to $(version). + (tag-for-dist, dist): Use that in place of $(version) in deps. -2003-02-23 Roland McGrath +2004-07-07 Ulrich Drepper - * sysdeps/posix/pause.c: New file. - * sysdeps/unix/common/pause.c: File removed. + * elf/dl-fini.c (_dl_fini): Move the unlock of the ld.so lock + before the loop running the destructors. -2003-02-23 Ulrich Drepper +2004-05-18 Andreas Schwab - * sysdeps/generic/bits/confname.h: Remove #ifs. + * elf/dl-load.c (_dl_map_object_from_fd): Use the end address of + the first segment for mprotect, not l_text_end. - * posix/Makefile (CFLAGS-regex.c): Remove RE_ENABLE_I18N definition. - * posix/regex_internal.h (RE_ENABLE_I18N): Pretty printing. +2004-07-05 Ulrich Drepper - * resolv/res_libc.c [USE___THREAD] (_res): Initialize _vcsock - element to -1. + * elf/dl-profile.c (_dl_start_profile): Compact error handling. + Remove hashfraction variable. Make kcount and kcountsize local + variables. -2003-02-22 Ulrich Drepper + * elf/dl-init.c: Don't define and use _dl_starting_up if + HAVE_INLINED_SYSCALLS is defined and the variable is not used. + * elf/dl-support.c: Likewise. + * elf/rtld.c: Likewise. + * elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly + if HAVE_INLINED_SYSCALLS is defined. + * sysdeps/powerpc/powerpc64/dl-machine.h: Don't reset _dl_starting_up + here. + * sysdeps/powerpc/powerpc32/dl-start.S: Likewise. + * sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS. + * config.h.in: Add entry for HAVE_INLINED_SYSCALLS. - * sysdeps/generic/dl-sysdep.c: Avoid warning. + * sysdeps/posix/profil.c: If compiled for ld.so, omit code which + is needed to stop profiling. + * elf/dl-open.c (dl_open_worker): If a newly opened object is to be + profile make sure it cannot be unloaded. -2003-02-22 Roland McGrath + * sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall. - * resolv/tst-leaks.c: New file by Daniel Jacobowitz . - * resolv/Makefile (tests): Add tst-leaks. - ($(objpfx)tst-leaks): Depend on $(objpfx)libresolv.so. - (tst-leaks-ENV): New variable. - ($(objpfx)mtrace-tst-leaks): New target. - (tests): Depend on it. + * sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation + support, make sure the helper function is inlined. + * sysdeps/unix/sysv/linux/pread.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise. - * include/libc-internal.h: Declare __libc_thread_freeres. +2004-07-05 Jakub Jelinek - * Makerules: Fix last change to use $($(subdir)-version) when set. + * include/string.h (ffs): Add libc_hidden_builtin_proto. + * sysdeps/rs6000/ffs.c (ffs): Add libc_hidden_builtin_def. + * sysdeps/alpha/alphaev67/ffs.S (ffs): Likewise. + * sysdeps/alpha/ffs.S (ffs): Likewise. + * sysdeps/s390/ffs.c (ffs): Likewise. + * sysdeps/powerpc/ffs.c (ffs): Likewise. + * sysdeps/i386/ffs.c (ffs): Likewise. + * sysdeps/i386/i686/ffs.c (ffs): Likewise. + * sysdeps/m68k/ffs.c (ffs): Likewise. + * sysdeps/generic/ffs.c (ffs): Likewise. + * sysdeps/m88k/ffs.c (ffs): Likewise. + * sysdeps/am29k/ffs.c (ffs): Likewise. + * sysdeps/i960/ffs.c (ffs): Likewise. + * sysdeps/x86_64/ffs.c (ffs): Likewise. - * Makerules (install-lib-nosubdir): Depend on installed - libfoo-X.Y.Z.so and libfoo.so.NN files so they are installed - regardless of the libfoo.so target's dependencies. + * Makerules (check-abi): Use diff -p -U 0 instead of diff -pu0. - * MakeTAGS (sub-make-vars): New variable, includes generating=t. - Use that in $(MAKE) calls. + * sysdeps/powerpc/novmx-longjmp.c (__libc_longjmp, + __libc_siglongjmp): Remove symbol_version. + * sysdeps/powerpc/longjmp.c (__libc_longjmp, __libc_siglongjmp): + Export @@GLIBC_PRIVATE, not @@GLIBC_2.3.4. + * sysdeps/powerpc/sigjmp.c (__sigjmp_save): Use strong_alias + unconditionally. + * sysdeps/powerpc/novmx-sigjmp.c (__sigjmp_save): Remove. + * sysdeps/powerpc/powerpc32/__longjmp.S (__longjmp): Use + strong_alias instead of default_symbol_version, remove + symbol_version. + * sysdeps/powerpc/powerpc64/__longjmp.S (__longjmp): Likewise. + * sysdeps/powerpc/powerpc32/bsd-setjmp.S (__novmx__setjmp): Change + into strong_alias to __novmxsetjmp. + (__vmx__setjmp): Similarly with __vmxsetjmp. + (__setjmp): Make it strong_alias to __vmx__setjmp, remove + default_symbol_version and symbol_version. + * sysdeps/powerpc/powerpc64/bsd-setjmp.S (__novmx__setjmp): Change + into strong_alias to __novmxsetjmp. + (__vmx__setjmp): Similarly with __vmxsetjmp. + (__setjmp): Make it strong_alias to __vmx__setjmp, remove + default_symbol_version and symbol_version. -2003-02-22 Ulrich Drepper + * nscd/nscd_getgr_r.c: Include stdio-common/_itoa.h. - * catgets/gencat.c (read_input_file): Collision between - auto-assigned numbers and user-defined nubmers is not fatal. - Handle it. - Patch by Michael M. Lampkin . - * catgets/Makefile: Add rules to run test2.msg test. - * catgets/test2.msg: New file. +2004-07-05 Ulrich Drepper - * catgets/gencat.c (main): Return 1 if messages have been printed. + * elf/rtld.c (dl_main): Mark dyn_temp with attribute_relro. - * iconv/iconv_prog.c (main): Unify messages. +2004-07-04 Matthew Reppert - * stdlib/strtod.c (INTERNAL): Remove bogus clearing of second word - when shifting retval. - * stdlib/tst-strtod.c (main): Add strtold test case. - Reported by Fred J. Tydeman . + * sysdeps/unix/sysv/linux/i386/glob64.c (glob64): Use libc_hidden_ver + instead of libc_hidden_def. -2003-02-21 Roland McGrath +2004-07-01 Roland McGrath - * malloc/thread-freeres.c: Conditionalize on _LIBC_REENTRANT. - * sunrpc/rpc_thread.c: Likewise for text_set_element use. - (__rpc_thread_destroy): Add it to __libc_subfreeres too. + * aclocal.m4: Add provide for AC_CONFIG_AUX_DIR_DEFAULT. - * include/resolv.h: Add libc_hidden_proto for __res_nclose. - * resolv/res_init.c (__res_nclose): Add libc_hidden_def. - (res_thread_freeres): New function, on __libc_thread_subfreeres and - __libc_subfreeres. + * Makeconfig ($(common-objpfx)shlib-versions.v.i): Move top-level + $(..)shlib-versions file to last in deps list. This lets add-ons give + more-specific matches that override defaults in the top-level file. - * malloc/Versions (libc: GLIBC_PRIVATE): Add __libc_thread_freeres. - * malloc/thread-freeres.c: New file. - * malloc/Makefile (aux): Add it. - * sunrpc/Versions (libc: GLIBC_PRIVATE): Removed. - * sunrpc/rpc_thread.c (__rpc_thread_destroy): Put in special section - "__libc_thread_freeres_fn" and add to __libc_thread_subfreeres set. + * sysdeps/unix/sysv/linux/configure.in: If arch_minimum_kernel was + already set, don't set it or libc_cv_gcc_unwind_find_fde. + * sysdeps/unix/sysv/linux/configure: Regenerated. - * sysdeps/unix/sysv/linux/i386/geteuid.c (__geteuid): Typo fix. - * sysdeps/unix/sysv/linux/i386/getgid.c (__getgid): Typo fix. +2004-07-01 Martin Schwidefsky -2003-02-21 Roland McGrath + * sysdeps/s390/fpu/bits/mathinline.h [__LIBC_INTERNAL_MATH_INLINES] + (__ieee754_sqrt): Define as __MATH_INLINE using sqdbr instruction. + (__ieee754_sqrtf): Define as __MATH_INLINE using sqebr instruction. + * sysdeps/s390/fpu/e_sqrt.c: New file. + * sysdeps/s390/fpu/e_sqrtf.c: New file. + * sysdeps/s390/Implies: New file. + * sysdeps/s390/s390-32/Implies: Remove ieee754, move + ieee754/dbl-64 and ieee754/flt-32 to s390/Implies. + * sysdeps/s390/s390-64/Implies: Likewise. - * sysdeps/mach/hurd/opendir.c (__opendir): Use O_NONBLOCK in open. +2004-06-30 Jakub Jelinek - * iconvdata/Makefile (tests): Add bug-iconv3 only if - [$(have-thread-library) = yes]. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Include tls.h. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. -2003-02-21 Ulrich Drepper + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (thread_start): + DO_CALL (exit, 1) instead of branching to _exit. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (thread_start): + Likewise. - * sysdeps/unix/sysv/linux/bits/signum.h (__SIGRTMAX): Define as _NSIG. + * sysdeps/s390/fpu/bits/mathinline.h: New file. - * sysdeps/unix/sysv/linux/i386/getuid.c: Use INTERNAL_SYSCALL and do - not chechk for errors (unless testing for 32bit variant). - * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise. + * include/glob.h (glob64): Add libc_hidden_proto. + * sysdeps/generic/glob64.c (glob64): Add libc_hidden_def. + * sysdeps/gnu/glob64.c (glob64): Likewise. + * sysdeps/unix/sysv/linux/i386/glob64.c (glob64): Likewise. -2003-02-21 Jakub Jelinek +2004-06-11 Jakub Jelinek - * sysdeps/x86_64/dl-machine.h (elf_machine_rela) : - Check for signed overflow, not unsigned. + * sysdeps/i386/fpu/libm-test-ulps: Update for GCC 3.4. + * sysdeps/s390/fpu/libm-test-ulps: Likewise. - * sysdeps/sparc/sparc64/elf/configure.in: New file. - * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile (sysdep-CFLAGS): - Use -fcall-used-g6, not -fcall-used-g7. +2004-06-11 Dwayne Grant McConnell -2003-02-21 Andreas Jaeger + * sysdeps/powerpc/fpu/s_lround.c: Removed. + * sysdeps/powerpc/fpu/s_lroundf.c: Removed. + * sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_ceil.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_floorf.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_floor.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_lrint.c: Removed. + * sysdeps/powerpc/powerpc32/fpu/s_lrint.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_lroundf.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_lround.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_rintf.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_rint.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_roundf.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_round.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_truncf.S: New file. + * sysdeps/powerpc/powerpc32/fpu/s_trunc.S: New file. - * sysdeps/x86_64/fpu/fesetenv.c (fesetenv): Fix setting of default - mode. +2004-06-30 Ulrich Drepper - * sysdeps/x86_64/fpu/fsetexcptflg.c (fesetexceptflag): Do not - clear whole mxcsr but only exceptions. + * include/net/if.h: Handle if_nameindex and if_freenameindex with + libc_proto_hidden. + * sysdeps/unix/sysv/linux/netlinkaccess.h: New file. + * sysdeps/unix/sysv/linux/ifaddrs.c: Export netlink handling functions. + * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Implement using + netlink if possible. Fall back on ioctl method if necessary. + * sysdeps/unix/sysv/linux/Dist: Add netlinkaccess.h. -2003-02-21 Roland McGrath + * include/unistd.h: Declare __truncate. + * sysdeps/generic/truncate.c: Also define __truncate. + * sysdeps/mach/hurd/truncate.c: Likewise. + * sysdeps/unix/common/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/truncate64.c: Use __truncate, not truncate. - * Makerules: Filter $(install-lib-ldscripts) out of list of targets - for libfoo.so that need $(make-link) rules. +2004-06-29 Ulrich Drepper -2003-02-21 Roland McGrath + * stdio-common/printf-parsemb.c (__parse_one_specmb): Initialize + info.extra. Patch by Marcus Meissner. - * sysdeps/mach/hurd/bits/typesizes.h (__DEV_T_TYPE): Use __U32_TYPE - to match existing struct stat layout in mig protocols. +2004-06-29 Kaz Kojima -2003-02-20 Ulrich Drepper + * sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER): + Fix branch offset for a PLT entry. - * version.h (VERSION): Bump to 2.3.2. +2004-06-20 Jim Meyering - * elf/Makefile (distribute): Add reldep9.c, tst-array1.exp, - tst-array2.exp, tst-array4.exp, tst-array2dep.c, check-textrel.c, - and dl-sysdep.h. - * sysdeps/generic/Dist: Add sysdep-cancel.h. - * sysdeps/powerpc/nofpu/Dist: Add soft-supp.h. - * sysdeps/unix/Dist: Add s-proto-bp.S and s-proto-cancel.S. - * sysdeps/unix/sysv/linux/Dist: Add pathconf.h. - * sysdeps/unix/sysv/linux/i386/Dist: Add bp-thunk.h. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/Dist: Add fe_nomask.c and - ucontext_i.h. - * Makefile (distribute): Add include/stubs-prologue.h, - include/gnu/stubs.h, scripts/merge-abilist.awk, and - scripts/extract-abilist.awk. + * malloc/obstack.h (obstack_base): Cast to `void *', to align with + documentation. -2003-02-20 Roland McGrath +2004-06-28 Ulrich Drepper - * math/Makefile (distribute): Don't add generated files. + * inet/bug-if1.c (do_test): Simply use 0 as invalid index. + Workaround for [BZ #232]. -2003-02-20 Ulrich Drepper + * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Use extend_alloca. - * math/Makefile: Rearrange variable definitions slightly to get - definition in the right order. +2004-06-28 GOTO Masanori -2003-02-20 Roland McGrath + * iconv/gconv_simple.c: Use get16/put16 for user given buffer + in ucs2/ucs2reverse when unaligned memory access is attempted. + * iconv/tst-iconv5.c: New file. + * iconv/Makefile (tests): Add tst-iconv5. - * Makerules: Clean up conditional around include of tls.make. - * Make-dist: Export generating=t to prevent using that. - (+distinfo): Likewise for $(shell $(MAKE) ...) runs. +2004-06-28 Jakub Jelinek -2003-02-20 Ulrich Drepper + * inet/bug-if1.c: Include . - * inet/rcmd.c (rresvport_af): Avoid using invliad values. Wrap - around in search if port IPPORT_RESERVED/2 has been test. +2004-06-19 Roland McGrath -2002-02-20 Paolo Bonzini + * sysdeps/posix/waitid.c (do_waitid) [DO_WAITID]: Define function + under this macro name instead. + [NO_DO_WAITID]: Don't define it at all. + (do_waitid) [WNOWAIT, WEXITED]: If these POSIX.1 waitid flag bits are + defined, then return ENOTSUP for combinations of selection bits other + than WEXITED and WEXITED|WSTOPPED, which this version cannot support. - * posix/regcomp.c: Remove inclusions. - * posix/regexec.c: Likewise. - * posix/regex_internal.c: Likewise. - * posix/regex_internal.h: Add inclusions here. - * posix/regex.c: Only include sys/types.h before regex.h. Include - regex_internal.h here. Include regex_internal.c before regcomp.c - and regexec.c (might expose more opportunities to the C compiler). + * posix/tst-waitid.c: New file. + * posix/Makefile (tests): Add it. - * posix/regcomp.c (parse_expression): Fix construct rejected by SGI CC. +2004-06-28 Jakub Jelinek - * posix/regex_internal.h [!_LIBC] (__mempcpy): Fix typo. - [!_LIBC] (__wcrtomb): New definition. - [!_LIBC]: Conditionalize enabling of I18N on HAVE_WCSCOLL and - HAVE_LOCALE_H as well. + * sysdeps/unix/alpha/sysdep.h (inline_syscall6): Fix a typo. -2003-02-20 Ulrich Drepper + [BZ #231] + * sysdeps/unix/alpha/sysdep.S (__syscall_error): Avoid !samegp + relocation in librt.so. - * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Remove obsolete - patch to check for system call errors. + [BZ #230] + * sysdeps/alpha/dl-machine.h (_dl_start_user): Use ldah/ldl to load + _dl_skip_args. Patch by Jakub Bogusz . -2002-07-24 Philip Blundell +2004-06-27 Ulrich Drepper - * sysdeps/unix/sysv/linux/arm/ioperm.c (init_iosys): Yield ENODEV - on unknown systems. + * elf/ldconfig.c (add_dir): Take chroot into account. + Based on changes by HJ Lu and Hideki Iwamoto. -2003-02-20 Franz Sirl + * nscd/connections.c (invalidate_cache): If the host cache has to + be invalidated, re-read resolv.conf. - * sysdeps/powerpc/powerpc32/atomicity.h: Remove compiler workaround. - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_NEW_PRCTL_SYSCALL): Defined for ppc32 too. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: Use prctl - if possible. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: Avoid short - interprocedure branches. - * sysdeps/powerpc/soft-fp/Dist (sim-full.c, fenv_const.c): Move to... - * sysdeps/powerpc/nofpu/Dist: ...here. - * sysdeps/unix/sysv/linux/powerpc/Dist (fe_nomask.c): Move to... - * sysdeps/unix/sysv/linux/powerpc/powerpc32/Dist: ...here. - * sysdeps/unix/sysv/linux/s390/s390-64/Dist (kernel_stat.h): Delete. - * sysdeps/unix/sysv/linux/sparc/Dist (bits/utmpx.h): Delete. - * sysdeps/unix/sysv/linux/x86_64/Dist (bits/utmpx.h): Delete. + * resolv/resolv.h (RES_NOIP6DOTINT): Define. + * resolv/res_init.c (res_setoptions): Handle no-ip6-dotint option. + * resolv/gethnamaddr.c (gethostbyaddr): Don't lookup with .ip6.int + if RES_NOIP6DOTINT flag is set. + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Likewise. -2003-02-18 Alan Modra +2004-06-25 Jakub Jelinek - * sysdeps/powerpc/powerpc32/sysdep.h (HIDDEN_JUMPTARGET): Redefine. + * sysdeps/unix/sysv/linux/powerpc/fcntl.c: Move to... + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fcntl.c: ... here. + * sysdeps/unix/sysv/linux/powerpc/lockf64.c: Move to... + * sysdeps/unix/sysv/linux/powerpc/powerpc32/lockf64.c: ... here. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: New file. -2003-02-20 Philip Blundell + * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (F_GETLK, F_SETLK, + F_SETLKW): Fix values for -m32 -D_FILE_OFFSET_BITS=64. - * sysdeps/unix/sysv/linux/arm/sysdep.h (INLINE_SYSCALL): Add - missing arguments to INTERNAL_SYSCALL_ERROR_P and - INTERNAL_SYSCALL_ERRNO. +2004-06-21 Jakub Jelinek -2003-02-20 Martin Schwidefsky + [BZ #231] + * sysdeps/unix/alpha/Makefile: New file. + * sysdeps/unix/alpha/rt-sysdep.S: New file. + Reported by Jakub Bogusz . - * sysdeps/unix/sysv/linux/s390/s390-32/chown.c (__real_chown): Test - for __ASSUME_32BITUIDS. +2004-06-18 Ulrich Drepper -2003-02-20 Andreas Schwab + * sysdeps/posix/getaddrinfo.c (gaih_inet): For AI_CANONNAME, + determine the canonical name only for the first returned entry. - * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Add MADV_* and - POSIX_MADV_* constants. + * inet/bug-if1.c: New file. + * inet/Makefile (tests): Add bug-if1. -2003-02-20 Kaz Kojima +2004-06-18 Roland McGrath - * sysdeps/unix/sysv/linux/sh/pread.c: New file. - * sysdeps/unix/sysv/linux/sh/pread64.c: New file. - * sysdeps/unix/sysv/linux/sh/pwrite.c: New file. - * sysdeps/unix/sysv/linux/sh/pwrite64.c: New file. + * Makerules (compile-mkdep-flags): Add -MT $@. -2003-02-19 Jiro Sekiba + * Makefile (dist, tag-for-dist): New targets. + (files-for-dist, tag-of-stem): New variables. + (glibc-%.tar glibc-linuxthreads-%.tar): New pattern rule. + Make tar files using cvs export. + (%.bz2, %.gz, tag-%): New pattern rules. + (distribute): Variable removed. + (+subdir_targets): Remove distinfo targets. + (echo_subdirs, echo-distinfo, parent_echo-distinfo): Targets removed. + (rpm/%): Pattern rule removed. + * rpm/Makefile, rpm/rpmrc, rpm/template: Ancient cruft files removed. + * Rules (subdir_echo-headers, subdir_echo-distinfo, subdir_dist): + Targets removed. + * Makerules (dist, subdir_distinfo): Targets removed. + ($(objpfx)distinfo): Depend on $(distribute). + * Make-dist: File removed. - * iconvdata/utf-16.c (gconv_end): Fix range of low surrogate. + * NEWS: Fix a typo. Update bug-reporting instructions. -2003-02-16 Roland McGrath +2004-06-17 Thorsten Kukuk - * signal/signal.h: Include , not . + * sysdeps/unix/sysv/linux/sched_setaffinity.c + (__sched_setaffinity_new): Set errno to EINVAL and return -1 if + cpuset is wrongly set. -2003-02-19 Ulrich Drepper +2004-06-15 Steven Munroe - * stdlib/strtod.c (INTERNAL): Up the safety margin for cutting off - decimal input digits. - * stdlib/tst-strtod.c (main): Add test for strtof bug. + * sysdeps/powerpc/powerpc64/memcpy.S: Improve instruction scheduling + for POWER4 machines. -2003-02-18 Ulrich Drepper +2004-06-14 Jakub Jelinek - * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Recognize - invalid file descriptors and missing access permissions. + [BZ #218] + * sunrpc/pmap_prot2.c (xdr_pmaplist): When freeing, remember pml_next + in a local variable, point rp to that local variable afterwards. -2003-02-17 Ulrich Drepper +2004-06-11 Jakub Jelinek - * nss/getXXbyYY_r.c (REENTRANT_NAME): Return 0 if no entry has - been found. + * sysdeps/ieee754/dbl-64/e_sqrt.c (__ieee754_sqrt): Handle special + cases properly. - * sysdeps/posix/sysconf.c (__sysconf): Test for LOGIN_NAME_MAX and - TTY_NAME_MAX and not the _POSIX_* minimal value macros. - * sysdeps/unix/sysv/linux/bits/local_lim.h: Define TTY_NAME_MAX - and LOGIN_NAME_MAX. +2004-06-17 Ulrich Drepper -2003-02-17 Kevin B. Hendricks - Franz Sirl + * sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct + error value for unknown interface. [BZ #198] - * sysdeps/powerpc/elf/libc-start.c: Handle NONTLS_INIT_TP. - * sysdeps/powerpc/powerpc32/__longjmp.S: Remove R2 handling. - * sysdeps/powerpc/powerpc32/setjmp.S: Likewise. - * sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Likewise. - * sysdeps/powerpc/powerpc32/fpu/setjmp.S: Likewise. +2004-06-13 Jakub Jelinek -2003-02-17 Franz Sirl + * sysdeps/i386/bits/string.h (memcpy): Add () around arguments. + (memchr, __memrchr, strlen, strcmp, strncmp, __strchr_g, __strchr_c, + __strchrnul_g, __strchrnul_c, strspn, strcspn, strpbrk): Add memory + the asm uses as its input, either of size __n where __n is known or + 0xfffffff. + (strstr): Add "memory" clobber. - * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Delete. - * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Delete. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Delete. - * sysdeps/unix/sysv/linux/powerpc/pread.c: Delete. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Delete. - * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Delete. +2004-06-14 Jakub Jelinek - * sysdeps/unix/sysv/linux/powerpc/fe_nomask.c: Move file... - * sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: ...here. - * sysdeps/unix/sysv/linux/powerpc/glob64.c: Move file... - * sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c: ...here. + [BZ #219] + * nss/nsswitch.c (free_mem): Don't try to close a library handle + if the handle is invalid. Patch by David Kimdon . - * sysdeps/unix/sysv/linux/tcgetattr.c: Use INLINE_SYSCALL. - * sysdeps/unix/sysv/linux/tcsetattr.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/tcgetattr.c: Delete. - * sysdeps/unix/sysv/linux/powerpc/tcsetattr.c: Delete. +2004-06-11 Dmitry V. Levin -2003-02-14 Thorsten Kukuk + [BZ #217] + * debug/xtrace.sh: Fix typo in error diagnostics. - * nss/getent.c (print_hosts): Print all IP addresses of one host. +2004-06-14 Andreas Schwab -2003-02-15 Roland McGrath + * stdio-common/psignal.c (psignal): Don't use BUF when asprintf + failed. - * sysdeps/mach/hurd/tls.h: New file. - * sysdeps/mach/hurd/i386/tls.h: New file. +2004-06-15 Steven Munroe - * mach/errsystems.awk: Include in generated output. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Fix pasto + that clobbers r19. Fix pasto that overflowed sigcontext.v_reserve. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Fix pasto + that clobbers r19. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Fix pasto + that clobbers r19. Fix pasto that overflowed sigcontext.v_reserve. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: + Fix setting of sigcontext.v_regs. Fix pasto that clobbers r19. + Fix pasto that overflowed sigcontext.v_reserve. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: + Fix pasto that clobbers r19. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Fix setting + of sigcontext.v_regs. Fix pasto that clobbers r19. Fix pasto that + overflowed sigcontext.v_reserve. - * sysdeps/mach/Makefile (mach-before-compile rule): Pass generating=t, - use target mach-before-compile instead of generated. - (mach-before-compile): New target. - * Makerules: Disable use of tls.make if $(generating) is set. - * mach/Makefile: Include mach-syscalls.mk even if no_deps=t. - * sysdeps/mach/hurd/Makefile: Make generated hurd headers depend on - mach-shortcuts.h so mach/ generation happens before hurd/. +2004-05-04 H.J. Lu -2003-02-14 Ulrich Drepper + [BZ #150] + * sysdeps/generic/strtol_l.c (DEF): Use ".gnu.linkonce.r." + instead of ".gnu.linkonce.ro." as the prefix for linkonce + read-only section name. - * sysdeps/i386/fpu/s_nextafterl.c: Decrement high word of mantissa - of demorm correctly if low word is zero. - Reported by Fred J. Tydeman . - * math/libm-test.inc (nextafter_test): New test, but disabled due - to gcc bug. +2004-06-14 Richard Henderson - * sysdeps/generic/libc-start.c [HAVE_PTR_NTHREADS]: Decrement thread - counter and only call __exit_thread if this is not the last thread. + * sysdeps/alpha/div_libc.h (_ITOFS): Use "sp" not "$sp". + (_ITOFT, _FTOIT, _ITOFT2): Likewise. -2003-02-13 Jakub Jelinek +2004-06-08 Jakub Jelinek - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Add instead of - subtracting map->l_tls_offset. + * sysdeps/s390/s390-32/backtrace.c (init): Guard with #ifdef SHARED. + (unwind_backtrace, unwind_getip): Define #ifndef SHARED. + (__backtrace): Don't call init #ifndef SHARED. + * sysdeps/s390/s390-64/backtrace.c (init): Guard with #ifdef SHARED. + (unwind_backtrace, unwind_getip): Define #ifndef SHARED. + (__backtrace): Don't call init #ifndef SHARED. + * sysdeps/ia64/backtrace.c (init): Guard with #ifdef SHARED. + (unwind_backtrace, unwind_getip): Define #ifndef SHARED. + (__backtrace): Don't call init #ifndef SHARED. -2003-02-12 Ulrich Drepper +2004-06-11 Roland McGrath - * sysdeps/generic/bits/confname.h: Define _CS_GNU_LIBC_VERSION and - _CS_GNU_LIBPTHREAD_VERSION. - * posix/conststr.c: Handle these new values. - * posix/getconf.c: Likewise. + * sysdeps/arm/strlen.S [__ARMEB__]: Compute correctly for big-endian. + From Krzysztof Halasa . - * sysdeps/mips/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Fix - masking of version index. - Patch by Lance Larsh . +2004-06-10 Jakub Jelinek -2003-02-11 Ulrich Drepper + * elf/tls-macros.h [__s390x__] (TLS_LD, TLS_GD): Clobber also r14. - * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Compute alignment - correctly. Reported by Thorsten Kukuk. +2004-06-08 Jakub Jelinek -2003-02-10 Ulrich Drepper + [BZ #199] + * crypt/md5-crypt.c (__md5_crypt): Only update buflen if realloc + succeeds. Reported by Miles Ohlrich . - * elf/Makefile (check-textrel-CFLAGS): Pass _XOPEN_SOURCE and - _BSD_SOURCE to compiler. - * elf/check-textrel.c (SWAP): Add parenthesis to avoid warnings. - Patches by Alan Modra. + * elf/chroot_canon.c (chroot_canon): Avoid segfault if first malloc + fails. Avoid memory leak if realloc fails. -2003-02-08 Ulrich Drepper +2004-06-09 Jakub Jelinek - * io/ftwtest.c: Get current working directory before and after the - nftw call and make sure they match. + * sysdeps/generic/setenv.c (setenv): Return -1/EINVAL if name is + NULL, "" or contains '=' character in it. Reported by + Michael T Kerrisk . + * stdlib/tst-environ.c: Include errno.h. + (main): Add tests for these arguments to setenv/unsetenv. -2003-02-08 Jim Meyering +2004-06-07 Roland McGrath - * io/ftw.c (ftw_startup): When using FTW_CHDIR, always remember - the current directory, not just when DIR contains a slash. - Reported by Manoj Srivastava. + * NEWS: Update bug reporting instructions. Fix some typos. -2003-02-07 Jim Meyering +2004-06-05 Ulrich Drepper - * io/ftw.c: Add autoconf-recommended block of alloca-related code. - Include autoconf-recommended block of dirent/NAMELEN-related - definitions and includes. Use NAMELEN throughout, rather than - _D_EXACT_NAMLEN. - [_LIBC]: Define NAMELEN to _D_EXACT_NAMLEN. - [!_LIBC] (__getcwd): Define to xgetcwd and declare xgetcwd. - (stpcpy): Declare, if necessary. - (mempcpy): Define, if necessary. - [!_LIBC] (__stpcpy, __mempcpy): Define. - [!_LIBC] (LXSTAT, XSTAT): Define. - (lstat) [!LIBC && !LSTAT_FOLLOWS_SLASHED_SYMLINK]: Define to rpl_lstat. - (find_object): Don't use c99-style struct initializer. - Tweak wording in a couple comments. + * stdio-common/_itoa.h: Don't expand _itoa inline for libc. + * stdio-common/_itoa.c: Add _itoa implementation. -2003-02-07 Kaz Kojima + * nscd/nscd_gethst_r.c (__nscd_open_socket): Change implementation + to also send request. Add parameter to allow this. + Change callers. + * nscd/nscd_getgr_r.c: Change __nscd_open_socket caller. + * nscd/nscd_getpw_r.c: Likewise. + * nscd/nscd-client.h: Change __nscd_open_socket prototype. - * elf/tls-macros.h: Add non-PIC TLS macros and fix clobber list - for SH. - * sysdeps/unix/sysv/linux/sh/brk.c: Add SYSCALL_INST_PAD - after the trapa instruction. - * sysdeps/unix/sysv/linux/sh/clone.S (__clone): Add additional - parameters. - * sysdeps/unix/sysv/linux/sh/sh4/sysdep.h: New file. - (NEED_SYSCALL_INST_PAD): Define. - * sysdeps/unix/sysv/linux/sh/sys/user.h (start_thread): Undef to - avoid to use definition for the kernel. - * sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER): - Save and restore the frame pointer. - (SYSCALL_INST_PAD): Define. - (INLINE_SYSCALL): Make use of INTERNAL_SYSCALL. - (INTERNAL_SYSCALL): Make use of ERR parameter. Add SYSCALL_INST_PAD - after trapa instruction. - (INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, - INTERNAL_SYSCALL_ERROR_P): Adjust accordingly. +2004-06-05 Andreas Jaeger -2003-02-07 Jakub Jelinek + * sysdeps/unix/sysv/linux/x86_64/makecontext.c (__makecontext): + Handle more than 6 args correctly. Based on a patch by Masahide + Washizawa . - * resolv/res_libc.c (_res): Ensure _res is not common symbol, - so that it can have aliases. - * inet/herrno.c (h_errno): Put it into .bss not .data section. +2004-06-04 Ulrich Drepper -2003-02-07 Ulrich Drepper + * nscd/nscd_gethst_r.c (nscd_gethst_r): Use __nss_not_use_nscd_hosts + in all places, not __nss_not_use_nscd_group. + Reported by Philippe Gregoire. - * elf/dl-runtime.c (fixup): Correct typo in version index computation. - (profile_fixup): Likewise. - Patch by Lance Larsh . +2004-06-03 Ulrich Drepper -2002-11-24 Robert Love + * sysdeps/i386/i486/bits/atomic.h: Optimize a bit. - * posix/sched.h: Second parameter of sched_setaffinity and - sched_getaffinity is `unsigned int', not `unsigned long'. - * sysdeps/generic/sched_setaffinity.c: Likewise. - * sysdeps/generic/sched_getaffinity.c: Likewise. +2004-05-07 Dmitry V. Levin -2003-02-05 Ulrich Drepper + * argp/argp-help.c (__argp_error, __argp_failure): Check result + of __asprintf call and don't use string if it failed. + * stdio-common/psignal.c (psignal): Likewise. + * locale/programs/localedef.c (more_help): Likewise. + * resolv/res_hconf.c (arg_service_list, arg_trimdomain_list, + arg_bool, parse_line): Check result of __asprintf calls and + don't use string if they failed. + * sunrpc/svc_simple.c (registerrpc, universal): Likewise. + * elf/ldconfig.c (parse_conf_include): Check result of __asprintf + call and exit if it failed. - * debug/catchsegv.sh: Fix typo in error messsage. - Reported by John Levon . +2004-05-10 Jakub Jelinek - * sysdeps/unix/sysv/linux/posix_fadvise.c: New file. - * sysdeps/unix/sysv/linux/syscalls.list: Add posix_fadvise64 syscall. - * sysdeps/unix/sysv/linux/alpha/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + * sysdeps/posix/sysconf.c (__sysconf) : Return _POSIX_* value instead of 1. + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) + : Return _POSIX_VERSION instead of 1. - * libio/putwc_u.c: Use _IO_putwc_unlocked, not _IO_putc_unlocked. - Patch by Moritz Schulte . +2004-05-07 Jeroen Dekkers -2003-02-05 Jim Meyering + * sysdeps/mach/hurd/i386/Makefile (CFLAGS-init-first.c): Add + -momit-leaf-frame-pointer. - Fix a heap-corrupting bug. - * io/ftw.c: Include . - (PATH_MAX) [!defined PATH_MAX]: Define to 1024. - (process_entry): Allocate enough space to hold the resulting - file name. Don't presume that 2*dirbufsize is enough. - (ftw_startup): Always use PATH_MAX to compute buffer size, now that - it is guaranteed to be defined. + * inet/test-ifaddrs.c (addr_string): Surround AF_PACKET case with + #ifdef AF_PACKET. -2003-02-04 Ulrich Drepper + * sysdeps/mach/hurd/getcwd.c + (_hurd_canonicalize_directory_name_intern): Only realloc when + size is <= 0. - * iconvdata/Makefile: Add rules to build and run bug-iconv3. - * iconvdata/bug-iconv3.c: New file. + * sysdeps/mach/hurd/mmap.c (__mmap): Fail when addr or offset + isn't page aligned. -2003-02-04 Martin Schwidefsky + * sysdeps/mach/hurd/spawni.c (EXPAND_DTABLE): Set dtablesize to + new size. - * sysdeps/unix/sysv/linux/s390/system.c: New file. + * sysdeps/mach/hurd/Versions (GLIBC_PRIVATE): Add __libc_read, + __libc_write and __libc_lseek64. -2003-02-03 Jakub Jelinek +2004-05-29 Roland McGrath - * sysdeps/sparc/sparc32/elf/configure.in (BROKEN_SPARC_WDISP22): New - check. - * config.h.in (BROKEN_SPARC_WDISP22): Add. + * elf/Makefile (shared-only-routines): Add dl-caller. -2003-02-03 Ulrich Drepper +2004-05-28 Ulrich Drepper - * sysdeps/i386/i686/memmove.S: New file. + * sysdeps/powerpc/configure.in: New file. -2003-01-31 Steven Munroe +2004-05-28 Steven Munroe - * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c: - Include kernel-features.h + * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Add .machine + "altivec" to enable VMX instructions. + * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise. + * sysdeps/powerpc/powerpc64/__longjmp-common.S: Likewise. + * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise. -2003-02-02 Jakub Jelinek - - * elf/tls-macros.h [sparc] (TLS_LD, TLS_GD): Add "cc" clobbers. - -2003-01-25 Jim Meyering - - * io/ftw.c (object_compare): Compare inode numbers before device - numbers, since the former are much more likely to differ. - -2003-02-01 Ulrich Drepper - - * time/tzfile.c (__tzfile_compute): Change return value type to - void. Adjust return statements. - * include/time.h (__tzfile_compute): Adjust prototype. - -2003-02-01 Jim Meyering - - * time/tzset.c (__tz_convert): Remove dead code; __tzfile_compute - always returns 1. - -2003-01-31 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c - [!__ASSUME_NEW_PRCTL_SYSCALL]: Noop prctl syscall and set ENOSYS. - -2003-01-31 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S - [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Generate ENOSYS stub. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S - [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S - [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S - [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise. - -2003-01-31 Steven Munroe - - * sysdeps/unix/sysv/linux/configure.in: Change arch_minimum_kernel - back to 2.4.19 for powerpc64. - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_NEW_PRCTL_SYSCALL): Define for powerpc64. - (__ASSUME_NEW_RT_SIGRETURN_SYSCALL): Define for powerpc64. - -2003-02-01 Ulrich Drepper - - * wcsmbs/wcscpy.c (wcscpy): Add alternative implementation for - platforms with strange alignment requirements on wchar_t. - -2003-01-31 Andreas Schwab - - * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove __GI_* - aliases, already added by make-syscalls.sh. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/syscalls.list: Likewise. - * sysdeps/unix/inet/syscalls.list: Likewise. - * sysdeps/unix/syscalls.list: Likewise. - -2003-01-31 Andreas Schwab - - * sysdeps/m68k/Makefile (sysdep-CFLAGS): Don't define, not needed - any more. - -2003-01-30 Jakub Jelinek - - * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Use lg, - not l to load tls from stack. - -2003-01-30 Roland McGrath - - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Move check for - null argument before all else. - Reported by Martin Schwidefsky . - -2003-01-30 Jakub Jelinek - - * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_lazy_rel): - Move to RESOLVE protected part of the header. - * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_lazy_rel): - Likewise. - -2003-01-30 Ulrich Drepper - - * stdio-common/Makefile (tests): Add bug15. - (bug15-ENV): Define. - * stdio-common/bug15.c: New file. - -2002-10-07 Wolfram Gloger - - * malloc/malloc.c (sYSMALLOc): Only check for breakage due - to foreign sbrk()'s if arena is contiguous. Bug report from - Bruno Haible . - -2003-01-30 Jakub Jelinek - - * sysdeps/s390/libc-tls.c: Include stdlib.h. - -2003-01-30 Jakub Jelinek - - * stdio-common/vfprintf.c (vfprintf): Only subtract lowest 3 bits of - ps.__count. - -2003-01-30 Ulrich Drepper - - * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Fix storing and - restoring of %r6. - * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. Use - 64-bit load. - Patch by Martin Schwidefsky . - -2003-01-30 Jakub Jelinek - - * elf/dl-reloc.c (CHECK_STATIC_TLS): Move _dl_signal_error... - (allocate_static_tls): ...here. Add __attribute_noinline__. - Don't return on failure. - (_dl_reloc_bad_type): Add __attribute_noinline__. - * elf/do-rel.h (elf_dynamic_do_rel): Add - __attribute__((always_inline)). - * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela, - elf_machine_rel_relative, elf_machine_rela_relative, - elf_machine_lazy_rel): Add prototypes with - __attribute__((always_inline)). - -2003-01-29 David Mosberger - - * elf/dl-support.c (_dl_aux_init): Handle AT_SYSINFO. - -2003-01-29 Roland McGrath - - * configure.in: Barf if configured in $srcdir. - -2003-01-28 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c - (__fe_nomask_env): Change __prctl call to INTERNAL_SYSCALL. - -2003-01-28 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Reorder additional - clone parameters to match the order used on ia32. - * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. - -2003-01-27 Martin Schwidefsky - - * elf/elf.h: Add new s390 relocs. - * elf/tls-macros.h: Add s390 versions. - * sysdeps/s390/Versions [GLIBC_2.3] (ld): Export __tls_get_offset. - * sysdeps/s390/dl-tls.h: New file. - * sysdeps/s390/libc-tls.c: New file. - * sysdeps/s390/s390-32/dl-machine.h (elf_machine_type_class): Add TLS - relocs for class PLT. - (elf_machine_rela): Handle TLS relocs. - * sysdeps/s390/s390-64/dl-machine.h: Likewise. - * sysdeps/s390/s390-32/elf/configure.in: Add TLS check. - * sysdeps/s390/s390-64/elf/configure.in: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Add support for - CLONE_CHILD_*TID flags. - * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S: Use branch with 32 - bit offset. - * sysdeps/unix/sysv/linux/s390/s390-64/socket.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error): - Support USE___THREAD. Define RTLD_PRIVATE_ERRNO variant. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error): - Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: - (SYSCALL_ERROR_LABEL): Move define next to SYSCALL_ERROR_HANDLER. - (SYSCALL_ERROR_HANDLER): Add USE___THREAD and RTLD_PRIVATE_ERRNO - variants. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: - (SYSCALL_ERROR_LABEL): Move define next to SYSCALL_ERROR_HANDLER. Use - direct branch to syscall_error for !PIC and PIC && !_LIBC_REENTRANT. - (SYSCALL_ERROR_HANDLER): Add USE___THREAD and RTLD_PRIVATE_ERRNO - variants. - -2003-01-28 Ulrich Drepper - - * sysdeps/unix/common/pause.c (do_pause): New function. Split - from __libc_pause. Implement using sigsuspend. - (__libc_pause): Call do_pause to do the real work. - - * sysdeps/posix/sigpause.c (do_sigpause): Check range of - sig_or_mask parameter is is_sig != 0. - -2003-01-21 Philip Blundell - - * sysdeps/unix/sysv/linux/bits/ioctls.h (SIOCSIFNAME): Define. - -2003-01-27 Steven Munroe - - * stdio-common/Makefile: Add bug14-ENV to set LOCPATH for make check. - -2003-01-27 Ulrich Drepper - - * stdio-common/bug14.c: Use official name for the locale. - - * stdio-common/vfprintf.c [USE_IN_LIBIO]: Use _IO_cleanup_region_start - instead of __libc_cleanup_region_start and _IO_cleanup_region_end - instead of __libc_cleanup_region_end. - - * sysdeps/unix/sysv/linux/i386/system.c (CLEANUP_HANDLER): Pass 1 - as first parameter to __libc_cleanup_region_start. - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c - (__fe_nomask_env): Use __prctl not prctl. - * sysdeps/unix/sysv/linux/syscalls.list: Add __prctl alias for - prctl syscall. - - * elf/dl-reloc.c (CHECK_STATIC_TLS): Improve error message. - - * elf/dl-open.c (_dl_tls_static_size): Bump to 2048. - - * elf/dl-reloc.c (allocate_static_tls): Avoid arithmetic - wrap-around in test. - -2003-01-26 Andreas Schwab - - * sysdeps/wordsize-32/divdi3.c: Export the functions only as - compatibility symbols. Remove INTDEF for __divdi3. - * sysdeps/wordsize-32/lldiv.c: Don't use __divdi3_internal. - * sysdeps/powerpc/powerpc32/divdi3.c: Remove. - * sysdeps/powerpc/powerpc32/Makefile (CPPFLAGS-divdi3.c): Don't - define. - * sysdeps/powerpc/powerpc32/Dist: Remove divdi3.c. - -2003-01-24 Jakub Jelinek - - * elf/tls-macros.h: Add SPARC 32-bit definitions. - * sysdeps/sparc/sparc32/elf/configure.in: Add TLS check. - * sysdeps/sparc/sparc32/dl-machine.h: Add dl_machine_h guards - for the first half of the header. Include tls.h. - (elf_machine_type_class): Return ELF_RTYPE_CLASS_PLT for TLS - relocs too. - (elf_machine_rela): Handle TLS relocs. - * sysdeps/sparc/dl-tls.h: New file. - - * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Add cancellation - support. - - * sysdeps/sparc/sparc32/sparcv9/hp-timing.h: Use %g6 instead of %g7. - * sysdeps/sparc/sparc32/memchr.S: Likewise. - * sysdeps/sparc/sparc32/memcpy.S: Likewise. - * sysdeps/sparc/sparc32/strcat.S: Likewise. - * sysdeps/sparc/sparc32/strchr.S: Likewise. - * sysdeps/sparc/sparc32/strcmp.S: Likewise. - * sysdeps/sparc/sparc32/strcpy.S: Likewise. - * sysdeps/sparc/sparc64/sparcv9b/memcpy.S: Likewise. - * sysdeps/sparc/sparc64/hp-timing.h: Likewise. - * sysdeps/sparc/sparc64/memcpy.S: Likewise. - * sysdeps/sparc/sparc64/stpcpy.S: Likewise. - * sysdeps/sparc/sparc64/stpncpy.S: Likewise. - * sysdeps/sparc/sparc64/strcat.S: Likewise. - * sysdeps/sparc/sparc64/strchr.S: Likewise. - * sysdeps/sparc/sparc64/strcmp.S: Likewise. - * sysdeps/sparc/sparc64/strcpy.S: Likewise. - * sysdeps/sparc/sparc64/strncmp.S: Likewise. - * sysdeps/sparc/sparc64/strncpy.S: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise. - -2003-01-24 Andreas Schwab - - * elf/dl-close.c (_dl_close): Don't relocate DT_FINI_ARRAY - elements, and process them backwards. - * elf/Makefile ($(objpfx)tst-array4): New target. - ($(objpfx)tst-array4.out): Likewise. - (tests) [$(have-initfini-array) = yes]: Add tst-array4. - * elf/tst-array4.c: New file. - * elf/tst-array4.exp: Likewise. - -2003-01-24 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c: New file. - -2003-01-27 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/sysdep.h (SYSCALL_ERROR_LABEL): Define. - * sysdeps/unix/sysv/linux/mips/pread.c: Add support for - cancellation handling and handle both __NR_pread64 and __NR_pread. - * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite.c: Add support for - cancellation handling and handle both __NR_pwrite64 and __NR_pwrite. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - * sysdeps/unix/mips/sysdep.S: Don't set errno in the _LIBC_REENTRANT - case, use register names consistently. - -2003-01-27 Wolfram Gloger - - * malloc/hooks.c (mem2chunk_check): Check alignment of mem - pointer, not of the computed chunk. Bug report from Carlos - O'Donell . - -2003-01-25 Andreas Schwab - - * sysdeps/m68k/dl-machine.h (_dl_start_user): Use pc-relative - addressing to save GOT entries. - -2003-01-21 Jakub Jelinek - - * sysdeps/unix/alpha/sysdep.h (inline_syscall0, - inline_syscall1, inline_syscall2, inline_syscall3, - inline_syscall4, inline_syscall5, inline_syscall6): Add __volatile__. - * sysdeps/unix/sysv/linux/alpha/sysdep.h (INTERNAL_SYSCALL): Add - __attribute__((unused)) to ChEcK. - -2003-01-20 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (INTERNAL_SYSCALL): - Fix inline assembler constraints. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (INTERNAL_SYSCALL): - Likewise. - - * sysdeps/s390/s390-64/Makefile (pic-ccflag): Use -fpic instead of - -fPIC. - -2003-01-20 Segher Boessenkool - - * sysdeps/ieee754/dbl-64/sincos32.c (__mpcos): Really - compute the cosine, not the sine, even if x > 0.8. - -2003-01-19 Ulrich Drepper - - * nis/nss_nis/nis-spwd.c: Make _nss_nis_endspent an alias of - _nss_nis_setspent. Work around the different prototypes. - * nis/nss_nis/nis-rpc.c (internal_nis_setrpcent): Use - internal_nis_endrpcent. - (internal_nis_endrpcent): Change return type to void. Change callers. - * nis/nss_nis/nis-pwd.c: Make _nss_nis_endpwent an alias of - _nss_nis_setpwent. Work around the different prototypes. - * nis/nss_nis/nis-proto.c (_nss_nis_endprotoent): Split out body - of the function to... - (internal_nis_endprotoent): ... here. New function. - (internal_nis_setprotoent): Use internal_nis_endprotoent. - * nis/nss_nis/nis-network.c: Make _nss_nis_endnetent an alias of - _nss_nis_setnetent. Work around the different prototypes. - * nis/nss_nis/nis-netgrp.c (_nss_nis_endnetgrent): Split out body - of the function to... - (internal_nis_endnetgrent): ... here. New function. - (_nss_nis_setnetgrent): Use internal_nis_endnetgrent. - -2003-01-19 Jim Meyering - - * time/strftime.c: (widen): Merge nearly-identical definitions. - (nl_get_alt_digit) [! defined my_strftime]: Define. - (my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of - _nl_get_alt_digit and _nl_get_walt_digit. - -2003-01-19 Ulrich Drepper - - * time/strftime.c (my_strftime): Handle very large width - specifications for numeric values correctly. Improve checks for - overflow. - * time/Makefile (tests): Add tst-strftime. - * time/tst-strftime.c: New file. - -2003-01-18 Ulrich Drepper - - * nis/nss_nis/nis-hosts.c: Make _nss_nis_endhostent an alias of - _nss_nis_sethostent. Work around the different prototypes. - * nis/nss_nis/nis-grp.c: Make _nss_nis_endgrent an alias of - _nss_nis_setgrent. Work around the different prototypes. - * nis/nss_nis/nis-ethers.c (internal_nis_endetherent): New - function. Split out from _nss_nis_endetherent. - (internal_nis_setetherent): Use internal_nis_endetherent instead of - duplicating the code. - * nis/nss_nis/nis-alias.c: Make _nss_nss_nis_endaliasent an alias - of _nss_nis_setaliasent. - * nis/nss_nis/nis-service.c (internal_nis_setservent): Reuse - internal_nis_endservent code, don't duplicate it. - - * inet/rexec.c (rexec_af): Protect socket operations with - TEMP_FAILURE_RETRY. Use writev instead of multiple write. - * inet/rcmd.c (rcmd_af): Likewise. - -2003-01-17 Roland McGrath - - * math/libm-test.inc (sin_test, cos_test, sincos_test) [TEST_DOUBLE]: - Add test of value 0.80190127184058835. - - * elf/dl-open.c: Fix typo ifdef -> ifndef on _dl_tls_static_size defn. - -2003-01-17 Richard Henderson - - * sysdeps/alpha/dl-machine.h (elf_machine_type_class): Add TLS - relocs for class PLT. - * sysdeps/alpha/libc-tls.c: New file. - * sysdeps/unix/alpha/sysdep.S (EPILOGUE, GPSAVEREG): New. - (LOADGP) [!PIC]: Rewrite to preserve caller's gp. - -2003-01-17 Jakub Jelinek - - * sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_init): Use - __libc_lock_{,un}lock_recursive instead of __libc_lock_{,un}lock - on _dl_static_lock. - -2003-01-17 Andreas Jaeger - - * stdio-common/bug14.c: Include stdlib.h for exit prototype. - -2003-01-16 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h: New file. - * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: New file. - * sysdeps/unix/sysv/linux/configure.in: Minimum kernel for PPC64 - is 2.4.21. - -2003-01-16 Ulrich Drepper - - * sysdeps/generic/glob.c (glob): Assume sysconf() always returns - values != -1 for _LIBC. Use extend_alloca to reallocate alloca'ed - buffers. - - * sysdeps/generic/sysconf.c: Unconditionally implement - _SC_GETPW_R_SIZE_MAX and _SC_GETGR_R_SIZE_MAX. - * sysdeps/posix/sysconf.c: Likewise. - -2003-01-16 Jakub Jelinek - - * posix/regcomp.c (parse_bracket_exp): If build_charclass fails, - set *err to the returned error, not to REG_ESPACE unconditionally. - (build_word_op): Likewise. - * posix/Makefile (tests): Add bug-regex16. - * posix/bug-regex16.c: New test. - -2003-01-16 Jakub Jelinek - - * elf/dl-load.c (_dl_map_object_from_fd): Use - GL(dl_tls_dtv_slotinfo_list) != NULL to check whether TLS has - been already initialized. - -2003-01-15 Dmitry V. Levin - - * sysdeps/unix/sysv/linux/ptsname.c: Fix typo in comment. - -2003-01-16 Jakub Jelinek - - * posix/regcomp.c (re_compile_internal): If clearing buffer, clear - allocated too. Reported by Al Viro . - -2003-01-16 Roland McGrath - - Tweak merged .abilist file format to merge duplicate symbols in - different sets into multi-version stanzas with new "| SET regexp..." - header continuation lines. - * scripts/merge-abilist.awk: Rewritten for new format. - * scripts/extract-abilist.awk: Likewise. - -2003-01-15 Ulrich Drepper - - * nscd/connections.c (nscd_run): Remove bogus return which isn't - necessary with gcc 3.2+. - (nscd_init): Don't use error() to print message, use dbg_log. - - * iconv/gconv_simple.c (STORE_REST): Explicitly store the total - expected size into state. - (UNPACK_BYTES): Do the reverse. - * iconv/loop.c: Use CLEAR_STATE if defined to clear __state element. - * wcsmbs/tst-mbrtowc.c (utf8_test_1): Add test for the bug. - Reported by Al Viro . - - * stdio-common/Makefile (tests): Add bug14. - * stdio-common/bug14.c: New file. - - * stdio-common/vfscanf.c: When recognizing multibyte characters in - string reset the byte counter after mbrtowc reported it is not a - partial character. Reported by Al Viro . - -2003-01-15 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Include - sysdep-cancel.h, not sysdep.h. - -2003-01-15 Ulrich Drepper - - * nscd/connections.c (nscd_run): Protect accept call with - TEMP_FAILURE_RETRY. - -2003-01-15 Andreas Schwab - - * sysdeps/unix/Makefile: Include $(common-objpfx)s-proto-bp.d. - (common-generated): Add s-proto-bp.d. - * sysdeps/unix/make-syscalls.sh: Use s-proto-bp.d for dependencies - of bp thunks. - * sysdeps/unix/s-proto-bp.S: New file. - * sysdeps/generic/bp-thunks.h: Don't include here. - Use instead of . - * sysdeps/unix/sysv/linux/i386/bp-thunks.h: New file. - -2003-01-15 Roland McGrath - - * Makerules: Use -include for tls.make, suppresses warning. - Move gen-as-const-headers rules up so before-compile is set in time. - (sed-remove-dotdot): Fix to work right for subdirs or top dir. - -2003-01-15 Ulrich Drepper - - * nscd/nscd.c (main): Make code to close all file descriptors - faster and more robust. - - * nscd/nscd_getpw_r.c (nscd_getpw_r): Consolidate writing of the - request with one writev call. Protect all read calls with - TEMP_FAILURE_RETRY. - * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise. - * nscd/nscd_gethst_r.c (nscd_gethst_r): Likewise. - - * nscd/hstcache.c: Use extend_alloca to reallocate alloca'd buffer. - Protect writev calls with TEMP_FAILURE_RETRY. - * nscd/grpcache.c: Likewise. - * nscd/pwdcache.c: Likewise. - - * nscd/hstcache.c (addhstbynamev6): Don't interpret hostname as - IPv6 address in debug output. - -2003-01-14 Roland McGrath - - * Makerules (check-abi-%): Use two rules for $(common-objpfx) and - $(objpfx) directories, and get rid of vpath directives. The previous - arrangement resulted in files being written to the source directories - when run in a clean build. Find all .abilist files in $(..)abilist/. - (update-abi-%): Likewise. - (generated): Don't add .symlist files, they'll be intermediates. - - * sysdeps/generic/init-first.c: Add a comment. - - * elf/Makefile ($(objpfx)ld.so): Pass -z defs in link. - - * scripts/gen-as-const.awk: Grok lone "--" as a separator between - #includes and expressions. - - * scripts/merge-abilist.awk: Omit cpu-.*-os.*/modifier from merged - config list when it already contains cpu-.*-os.* without / part. - - * Makerules (sed-remove-dotdot): New variable. - ($(common-objpfx)%.make): Use it. Depend on $(before-compile). - ($(common-objpfx)%.h $(common-objpfx)%.h.d): Likewise. - (check-abi-config): New variable, append /tls or /notls to the tuple. - (check-abi-%): Use that for -v config value. - Find .abilist files in abilist/libfoo.abilist, not in subdir. - * Rules: Move bits/stdio_lim.h generation rules to Makerules. - -2003-01-14 Ulrich Drepper - - * manual/install.texi: Correct description of header preparation for - Linux build. Patch by mhwood@Ameritech.Net [PR libc/4941]. - -2003-01-14 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, - INTERNAL_SYSCALL_ERROR_P, INLINE_SYSCALL): Define. - -2003-01-14 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h - (INTERNAL_SYSCALL): Make use of ERR parameter. - (INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, - INTERNAL_SYSCALL_ERROR_P): Adjust accordingly. - (INLINE_SYSCALL): Make use of INTERNAL_SYSCALL. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file. - -2003-01-14 Ulrich Drepper - - * sunrpc/pm_getport.c (pmap_getport): Open TCP socket if protocol - == IPPROTO_TCP. - Patch by James Strandboge [PR libc/4943]. - - * sysdeps/unix/sysv/linux/i386/dl-procinfo.c (_dl_x86_cap_flags): - Fix entry for bit 31. - - * iconvdata/Makefile: Add rules to build IBM866NAV. - * iconvdata/ibm866nav.c: New file. - * iconvdata/tst-tables.sh: Add IBM866NAV. - * iconvdata/gconv-modules: Add entries for IBM866NAV. - -2003-01-13 Ulrich Drepper - - * string/tester.c (test_strcpy): Use the previously #if 0'ed code - to test void* parameters. - - * sysdeps/i386/i486/bits/string.h (__STRING_SMALLL_GET16): Cast - source pointer before dereferencing. - (__STRING_SMALLL_GET32): Likewise. - (__memset_gc): Add missing parenthesis around macro arguments. - Patch by Denis Zaitsev . - - * sysdeps/i386/i486/bits/string.h (__strspn_cg): Tell the compiler - that %eax is modified. Reported by Denis Zaitsev . - -2003-01-14 Jakub Jelinek - - * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL): Undefined before - defining. - -2003-01-13 Martin Schwidefsky - - * sysdeps/s390/s390-64/initfini.c: Avoid unterminated string literals. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (L): Don't define it - here. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (L): Likewise. - -2003-01-13 Martin Schwidefsky - - * sysdeps/s390/s390-32/sysdep.h (JUMPTARGET): Move branch instructions - from here... - (PSEUDO): ... to here. - * sysdeps/s390/s390-64/sysdep.h (JUMPTARGET): Move branch instruction - from here... - (PSEUDO): ... to here. - -2003-01-13 Ulrich Drepper - - * locale/programs/charmap-dir.c (charmap_readdir): Use struct - dirent64 instead of struct dirent for dirent. Call readdir64 - instead of readdir. - - * locale/programs/locfile.c (siblings_uncached): Use struct - dirent64 instead of struct dirent for other_dentry. Call - readdir64 instead of readdir. - - * elf/ldconfig.c (direntry): Change type to struct dirent64. - (search_dir): Use readdir64 instead of readdir. - Patch by Zhangfan Xing . - -2003-01-12 Roland McGrath - - * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Use strtoul, - not strtol. The former is usable in ld.so, the latter not. - - * include/fcntl.h: Declare __libc_creat. - - * sysdeps/mach/hurd/Makefile (libmachuser-link.so-no-z-defs, - libhurduser-link.so-no-z-defs): New variables. - - * malloc/malloc.c: Revert last change. - * malloc/malloc.h (_int_*): Move these decls to ... - * include/malloc.h: ... here. Add attribute_hidden. - (_int_valloc): Declare it too. - -2003-01-12 Ulrich Drepper - - * elf/dl-close.c (_dl_close): Fix typo, must be == not = in - search for removed searchlist. Reported by Roland McGrath. - - * io/ftwtest-sh: Add test for case of symlink to nonexisting file - given as start file. - - * io/ftw.c (ftw_startup): Use correct name in check for symlink - without existing target. Patch by Jim Meyering. - - * Makerules (build-shlib-helper): Don't use -z defs linker option - if no-z-defs is defined either. - -2003-01-10 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Remove unused - file. - -2003-01-10 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list: Add vfork. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. - -2003-01-12 Ulrich Drepper - - * io/ftwtest-sh: Add test case for relative path with /. at the end. - -2003-01-12 Jim Meyering - - * io/ftw.c (ftw_startup): When trying to stat the starting directory, - use the basename if we've already chdir'd into its parent directory. - -2003-01-12 Ulrich Drepper - - * io/ftw.c (process_entry): Use relative path when using chdir() - to change directory after call to ftw_dir. - * io/ftwtest-sh: Add test for relative path argument to nftw() - with FTW_CHDIR option. - -2002-01-12 Franz Sirl - - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_VFORK_SYSCALL): - Define for powerpc. - * sysdeps/unix/sysv/linux/powerpc/syscall.S: Take register alignment - into account. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h - (INTERNAL_SYSCALL): Make use of ERR parameter. - (INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, - INTERNAL_SYSCALL_ERROR_P): Adjust accordingly. - (INLINE_SYSCALL): Make use of INTERNAL_SYSCALL. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: New file. - -2002-01-09 Richard Henderson - - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Compute - DTPREL64 and TPREL64 without loadbase applied. - -2002-01-09 Richard Henderson - - * sysdeps/unix/alpha/sysdep.S: Use correct definition of errno - for NOT_IN_libc. - - * sysdeps/unix/sysv/linux/alpha/sysdep.h: Move inline syscall bits... - * sysdeps/unix/alpha/sysdep.h: ... here. - (PSEUDO_LOADGP): Remove. - (PSEUDO_PROLOGUE): Load GP in non-pic case. - (SYSCALL_ERROR_LABEL): New. - (PSEUDO): Use it in error branch. - (PSEUDO_END): Add $syscall_error label. - -2003-01-12 Andreas Jaeger - - * math/bits/mathcalls.h: Round is a const function. - -2003-01-11 Jim Meyering - - * io/ftw.c [HAVE_CONFIG_H]: Include . - [HAVE_SYS_PARAM_H || _LIBC]: Guard inclusion of . - Include , not , if !_LIBC. - [!_LIBC] (__chdir, __closedir, __fchdir, __getcwd, __opendir): Define. - [!_LIBC] (__readdir64, __tdestroy, __tfind, __tsearch): Define. - [!_LIBC] (internal_function, dirent64, MAX): Define. - (__set_errno): Define if not already defined. - (open_dir_stream): When FTW_CHDIR is enabled, invoke opendir on - the basename, not the entire file name. - (process_entry): When FTW_CHDIR is enabled, invoke XSTAT or LXSTAT on - the basename, not the entire file name. - -2003-01-12 Ulrich Drepper - - * string/tester.c (test_strcpy): Disable last added strcpy until - it is fixed. - -2003-01-11 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/socket.S: Add cancellation support. - -2003-01-11 Andreas Schwab - - * Makerules: Add vpath for %.dynsym and %.so so that the - implicit rule chaining for check-abi works. - -2003-01-11 Kaz Kojima - - * sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER): - Add non-PIC case. - -2003-01-11 Jakub Jelinek - - * elf/tls-macros.h [__ia64__] (__TLS_CALL_CLOBBERS): Define. - [__ia64__] (TLS_LE, TLS_IE): Fix typos. Add ;; at start of asm if - gp is used early. - [__ia64__] (TLS_LD, TLS_GD): Likewise. Use __TLS_CALL_CLOBBERS. - * elf/Makefile ($(objpfx)tst-tlsmod5.so, $(objpfx)tst-tlsmod6.so): - Ensure libc.so in DT_NEEDED. - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Move - CHECK_STATIC_TLS before l_tls_offset use. - * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela): - Likewise. - * sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage) [TLS_DTV_AT_TP]: - Allocate TLS_PRE_TCB_SIZE bytes below result. - (_dl_deallocate_tls) [TLS_DTV_AT_TP]: Adjust before freeing. - * sysdeps/generic/libc-tls.c (__libc_setup_tls): If - TLS_INIT_TP_EXPENSIVE is not defined, allocate even if no PT_TLS - segment has been found. If TLS_DTV_AT_TP, allocate TLS_PRE_TCB_SIZE - bytes below result and add tcb_offset to memsz. - * sysdeps/ia64/dl-tls.h (__tls_get_addr): New prototype. - * sysdeps/ia64/dl-machine.h: Include tls.h. - (elf_machine_type_class): Return ELF_RTYPE_CLASS_PLT for TLS relocs - too. - (elf_machine_rela): Assume if sym_map != NULL sym is non-NULL too. - Handle R_IA64_DTPMOD*, R_IA64_DTPREL* and R_IA64_TPREL* relocations. - * sysdeps/ia64/libc-tls.c: New file. - -2003-01-10 Steven Munroe - - * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_RET): Add branch hit. - * sysdeps/unix/sysv/linux/powerpc/bits/stat.h (STAT_VER_LINUX): - Fix type. Move definition out of #if. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/ftruncate64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Add cancellation - support. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Remove - ftruncate64, pread64, pwrite64, truncate64 entries. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h - (INLINE_SYSCALL): New version that supports function call like - syscalls. Add __builtin_expect. - (LOADARGS_n): Add argument size safety checks. - (INTERNAL_SYSCALL): New Macro. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/truncate64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h [__PPC_ELF_H]: Avoid - redefinition of elf_fpreg_t and elf_fpregset_t. - -2003-01-12 Ulrich Drepper - - * elf/dl-close.c (_dl_close): Add several asserts. Correct and - simplify test for unloading. If loader of a DSO is unloaded do not - use its scope anymore. Fall back to own scope and adjust opencounts. - Fix several comments. - * elf/dl-deps.c (_dl_map_object_deps): Always allocate memory for - the l_searchlist, not only for l_initfini. - - * elf/dl-lookup.c (add_dependencies): Avoid creating relocation - dependencies if objects cannot be removed. Remove object with the - definition as not unloadable if necessary. - - * elf/reldep6.c: Create relocation dependency before closing the first - module. - -2003-01-10 Guido Günther - - * sysdeps/unix/mips/fork.S: Add PSEUDO_END. - * sysdeps/unix/mips/brk.S: Likewise. - * sysdeps/unix/mips/pipe.S: Likewise. - -2003-01-10 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/getsysstats.c: New file. - - * sysdeps/unix/sysv/linux/m68k/vfork.S: Optimize for kernels which - are known to have the vfork syscall. - - * sysdeps/m68k/sysdep.h (JUMPTARGET): Undefine before defining it. - - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_MMAP2_SYSCALL, __ASSUME_TRUNCATE64_SYSCALL) - (__ASSUME_STAT64_SYSCALL, __ASSUME_FCNTL64) - (__ASSUME_VFORK_SYSCALL): Define for m68k kernels >= 2.4.12. - -2003-01-09 Jakub Jelinek - - * elf/Makefile: Add rules to build and run reldep9 test. - * elf/reldep9.c: New file. - * elf/reldep9mod1.c: New file. - * elf/reldep9mod2.c: New file. - * elf/reldep9mod3.c: New file. - -2003-01-09 Jakub Jelinek - - * elf/Makefile: Add rules to build and run nodelete2 test. - * elf/nodelete2.c: New file. - * elf/nodel2mod1.c: New file. - * elf/nodel2mod2.c: New file. - * elf/nodel2mod3.c: New file. - -2003-01-09 Jakub Jelinek - - * posix/test-vfork.c (noop): Add __attribute_noinline__. - * sysdeps/generic/sysdep.h (JUMPTARGET): Define if not defined. - * sysdeps/i386/sysdep.h (JUMPTARGET): Undefine JUMPTARGET before - defining it. - * sysdeps/powerpc/powerpc32/sysdep.h (JUMPTARGET): Likewise. - * sysdeps/powerpc/powerpc64/sysdep.h (JUMPTARGET): Likewise. - * sysdeps/s390/s390-32/sysdep.h (JUMPTARGET): Likewise. - * sysdeps/s390/s390-64/sysdep.h (JUMPTARGET): Likewise. - * sysdeps/x86_64/sysdep.h (JUMPTARGET): Likewise. - -2003-01-09 Andreas Schwab - - * sysdeps/m68k/fpu/libm-test-ulps: Regenerated. - -2003-01-08 Ulrich Drepper - - * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Add err - argument. - (INTERNAL_SYSCALL_DECL): Define. - -2003-01-06 Jakub Jelinek - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Add err - argument. - (INTERNAL_SYSCALL_DECL): Define. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. - (INLINE_SYSCALL): Adjust. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. - * elf/dl-misc.c (_dl_debug_vdprintf): Add INTERNAL_SYSCALL_DECL, - add err argument to INTERNAL_SYSCALL* macros. - * sysdeps/unix/sysv/linux/i386/brk.c (__brk): Likewise. - * sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Likewise. - * sysdeps/unix/sysv/linux/m68k/brk.c (__brk): Likewise. - * sysdeps/unix/sysv/linux/m68k/getpagesize.c (__getpagesize): - Likewise. - * sysdeps/unix/sysv/linux/sigwait.c (do_sigwait): Likewise. - * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): Use - INLINE_SYSCALL instead of INTERNAL_SYSCALL and setting errno. - -2003-01-07 Ulrich Drepper - - Unify symbols in user namespace exported by libc.so and libc.a. - * argp/argp-fmtstream.c: Don't define argp_make_fmtstream, - argp_fmtstream_free, and argp_fmtstream_printf. - * argp/argp-fs-xinl.c: Don't define argp_fmtstream_putc, - argp_fmtstream_puts, argp_fmtstream_write, argp_fmtstream_set_lmargin, - argp_fmtstream_set_rmargin, argp_fmtstream_set_wmargin, and - argp_fmtstream_point. - * gmon/gmon.c: Don't define write_profiling. - * libio/genops.c: Don't define _cleanup. - - * intl/explodename.c (_nl_find_language.c): Mark as static. - * intl/loadinfo.h: Remove _nl_find_language prototype. - - * libio/fileops.c (_IO_file_seekoff_maybe_mmap): Mark as static. - * libio/libioP.h: Remove declaration. - - * libio/iopopen.c (_IO_proc_jumps): Mark as static. - * libio/libioP.h: Remove declaration. - - * sysdeps/generic/unwind-dw2.c: Mark __frame_state_for with STATIC. - * sysdeps/generic/framestate.c: Define STATIC before including - unwind-dw2.c. - - * time/Versions [GLIBC_2.3.2] (libc): Export strptime_l. - -2003-01-06 Philip Blundell - - * sysdeps/unix/arm/sysdep.S (syscall_error): Optimise a little. - [__LIBC_REENTRANT]: Unify PIC and non-PIC cases. - - * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO): Remove .type - directive. - (PSEUDO_RET): Use SYSCALL_ERROR in place of __syscall_error. - (SYSCALL_ERROR): New. - (SYSCALL_ERROR_HANDLER) [NOT_IN_libc]: Provide local copy of error - handling code. - (INTERNAL_SYSCALL): Define. - (INLINE_SYSCALL): Use it. - (INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Define. - * sysdeps/unix/sysv/linux/arm/socket.S (__socket): Use - SYSCALL_ERROR in place of __syscall_error. - -2003-01-07 Jakub Jelinek - - * sysdeps/ia64/bits/byteswap.h [__GNUC__ >= 2] (__bswap_16, - __bswap_32, __bswap_64): Put x into temporary variable - to avoid warnings. - [!__GNUC__] (__bswap_16, __bswap_32, __bswap_64): Change into static - (inline) functions. - * sysdeps/s390/bits/byteswap.h [__GNUC__ >= 2] (__bswap_16, - __bswap_32, __bswap_64): Put x into temporary variable - to avoid warnings. - [!__GNUC__] (__bswap_16, __bswap_32, __bswap_64): Change into static - (inline) functions. - * sysdeps/i386/bits/byteswap.h [!__GNUC__] (__bswap_16, __bswap_32): - Likewise. - -2003-01-07 Jakub Jelinek - - * sysdeps/unix/sysv/linux/alpha/adjtime.c (ntp_adjtime): New weak - alias. - -2003-01-07 Jakub Jelinek - - * elf/rtld.c (_rtld_global): Remove _dl_dynamic_weak initializer. - * elf/dl-support.c (_dl_dynamic_weak): Initialize to 0. - -2003-01-07 Ulrich Drepper - - * math/libm-test.inc (significand_test): New function. - (main): Call it. - -2003-01-06 Roland McGrath - - * sysdeps/i386/i486/bits/string.h (memset): Add parens around macro - arguments. - (memcpy, memrchr, strcpy, __stpcpy, strncpy, strcat): Likewise. - (strcmp, strncat, strncmp, strchr, __strchrnul, strchrnul): Likewise. - (index, strrchr, rindex, strcspn, strspn, strpbrk, strstr): Likewise. - - * string/tester.c (test_strcpy): Add test with `void *' arguments. - -2003-01-06 Ulrich Drepper - - * sysdeps/i386/fpu/s_significandl.c (__significandl): Really - return significand and not the exponent. - Reported by Nelson H. F. Beebe . - - * elf/dl-misc.c (_dl_debug_vdprintf): Help PPC port by explicitly - taking address of iov in INTERNAL_SYSCALL call. Patch by Franz Sirl. - - * malloc/malloc.c: Mark all _int_* functions as static. - -2003-01-06 Jakub Jelinek - - * sysdeps/unix/alpha/sysdep.h (PSEUDO): Use PSEUDO_PREPARE_ARGS. - * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Add cancellation - handling. - * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. +2004-05-27 Jakub Jelinek -2003-01-06 Franz Sirl + * sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Define using + __builtin_expm1l for GCC 3.5+. + (__expl): Define using __builtin_expl for GCC 3.4+. + (exp, expf, expl): Don't define for GCC 3.4+. + (tan, tanf, tanl): Don't define for GCC 3.5+. + (__atan2l): Define using __builtin_atan2l for GCC 3.4+. + (atan2, atan2f, atan2l): Don't define for GCC 3.4+ or !__FAST_MATH__. + (fmod, fmodf, fmodl): Don't define for GCC 3.5+ or !__FAST_MATH__. + (fabsf, fabsl): Only provide if __USE_MISC or __USE_ISOC99. + (sin, sinf, sinl, cos, cosf, cosl, log, logf, logl): Don't define + for GCC 3.4+. + (log10, log10f, log10l, asin, asinf, asinl, acos, acosf, acosl): + Don't define for GCC 3.5+. + (atan, atanf, atanl): Don't define for GCC 3.4+ or !__FAST_MATH__. + (log1p, log1pf, log1pl, logb, logbf, logbl, log2, log2f, log2l): Don't + define for GCC 3.5+. + (drem, dremf, dreml): Don't define for GCC 3.5+ or !__FAST_MATH__. + * sysdeps/sparc/fpu/bits/mathinline.h (sqrt, sqrtf, sqrtl): Don't + define for GCC 3.2+. - * sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_RET): Add branch hint. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S: Add cancellation - support. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Remove - ftruncate64, truncate64, pread64 and pwrite64 entries. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h - (INLINE_SYSCALL): Add __builtin_expect. - (LOADARGS_n): Add argument size safety checks. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c: New file. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c: New file. +2004-05-27 Jakub Jelinek -2003-01-06 Jakub Jelinek + * string/bits/string2.h (__bzero): Define even for GCC 3.0+. + * sysdeps/alpha/stpcpy.S (stpcpy): Add libc_hidden_builtin_def. + * sysdeps/alpha/alphaev67/stpcpy.S (stpcpy): Likewise. + * sysdeps/powerpc/powerpc32/stpcpy.S (stpcpy): Likewise. + * sysdeps/powerpc/powerpc64/stpcpy.S (stpcpy): Likewise. + * sysdeps/sparc/sparc32/stpcpy.S (stpcpy): Likewise. + * sysdeps/sparc/sparc64/stpcpy.S (stpcpy): Likewise. + * sysdeps/i386/stpcpy.S (stpcpy): Likewise. + * sysdeps/i386/i586/stpcpy.S (stpcpy): Likewise. + * sysdeps/generic/stpcpy.c (stpcpy): Likewise. + * sysdeps/x86_64/stpcpy.S (stpcpy): Likewise. + * sysdeps/i386/i586/memcpy.S (memcpy): Remove + libc_hidden_builtin_def if MEMPCPY_P. + * sysdeps/x86_64/memcpy.S (memcpy): Likewise. + * sysdeps/i386/i686/mempcpy.S (mempcpy): Add libc_hidden_builtin_def. + * sysdeps/i386/i586/mempcpy.S (mempcpy): Likewise. + * sysdeps/generic/mempcpy.c (mempcpy): Likewise. + * sysdeps/x86_64/mempcpy.S (mempcpy): Likewise. - * sysdeps/generic/sysdep-cancel.h (LIBC_CANCEL_HANDLED): Define. - * sysdeps/generic/creat.c: Include sysdep-cancel.h. - (LIBC_CANCEL_HANDLED): Add. +2004-05-26 Roland McGrath - * sysdeps/unix/sysv/linux/alpha/sysdep.h - (inline_syscall_r0_constraint): Rename to... - (inline_syscall_r0_out_constraint): ... this. Add =. - (inline_syscall[0-6]): Use inline_syscall_r0_out_constraint. + * sysdeps/generic/bits/in.h + (IMPLINK_IP, IMPLINK_LOWEXPER, IMPLINK_HIGHEXPER): Macros removed. + These are long obsolete in BSD systems where they originated. + * conform/data/netinet/in.h-data: Remove `allow IMPLINK_*' -2003-01-06 Andreas Schwab +2004-05-26 Jakub Jelinek - * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Make - sure this is always inlined. - (elf_machine_rela): Likewise. + * include/string.h (mempcpy, stpcpy): Add libc_hidden_builtin_proto. + * string/bits/string2.h (memset): Disable macro for GCC 3.0+. + (__mempcpy): Use __builtin_mempcpy for GCC 3.4+. + (strchr): For GCC 3.2+, only use __rawmemchr if second argument is + constant '\0' and first argument is not constant. + (__stpcpy): Use __builtin_stpcpy for GCC 3.4+. + (strncpy): Remove #ifdef _USE_STRING_ARCH_mempcpy variant. + For GCC 3.2+ use __builtin_strncpy. + (strncat): For GCC 3.2+ use __builtin_strncat. + (strcmp): For GCC 3.2+ use __builtin_strcmp if both arguments are + constant. + (strcspn, strspn, strpbrk): For GCC 3.2+, use builtin function + if both arguments are constant. - * sysdeps/m68k/Makefile (sysdep-CFLAGS): Increase inline limit. +2004-05-26 Ulrich Drepper -2003-01-04 Roland McGrath + * nss/nss_files/files-hosts.c: Fix condition for looking up IPv4 + mapped addresses in gethostbyaddr. - * Makeconfig (+mkdep): Add -MP flag. - Suggested by Art Haas . +2004-05-25 Ulrich Drepper -2003-01-05 Andreas Schwab + * nss/digits_dots.c (__nss_hostname_digits_dots): Remove typep and + flags parameter, convert afp to simple int parameter. Adjust code. + typep was never != NULL and flags therefore also unused. *afp is + never modified. + * nss/nsswitch.h: Adjust __nss_hostname_digits_dots prototype. + * nss/getXXbyYY.c: Remove HAVE_TYPE handling. Adjust af parameter + handling for __nss_hostname_digits_dots calls. + * nss/getXXbyYY_r.c: Likewise. - * sysdeps/m68k/Makefile (CFLAGS-.oS): Append -fPIC. + * elf/dl-load.c (_dl_map_object_from_fd): Map DSOs with MAP_DENYWRITE. -2003-01-05 Kaz Kojima +2004-05-25 Steven Munroe - * sysdeps/unix/sysv/linux/sh/clone.S (__clone): Use - SYSCALL_ERROR_HANDLER. - * sysdeps/unix/sysv/linux/sh/pipe.S (__libc_pipe): Likewise. - * sysdeps/unix/sysv/linux/sh/socket.S (__socket): Likewise. - Add support for cancellation handling. - * sysdeps/unix/sysv/linux/sh/syscall.S (__syscall): Use - SYSCALL_ERROR_HANDLER. - * sysdeps/unix/sysv/linux/sh/vfork.S (__vfork): Likewise. - * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO): Likewise. - Add support for cancellation handling. - (SYSCALL_ERROR_HANDLER): Define PIC variants. + * sysdeps/powerpc/fpu/Makefile: Make ld.so a dependency of libm.so. + * sysdeps/powerpc/fpu/bits/mathinline.h [__LIBC_INERNAL_MATH_INLINES] + (__ieee754_sqrt): Define as __MATH_INLINE using fsqrt instruction. + (__ieee754_sqrtf): Define as __MATH_INLINE using fsqrts instruction. + * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Moved + implementation from w_sqrt.c. + * sysdeps/powerpc/fpu/e_sqrtf.c (__slow_ieee754_sqrtf): Moved + implementation from w_sqrtf.c. + * sysdeps/powerpc/fpu/w_sqrt.c (__sqrt): Wrapper implementation + using inline __ieee754_sqrt(). + * sysdeps/powerpc/fpu/w_sqrtf.c (__sqrtf): Wrapper implementation + using inline __ieee754_sqrtf(). + * sysdeps/powerpc/powerpc32/sysdep.h [__ASSEMBLER__]: Include + independent of __ASSEMBLER__. + * sysdeps/powerpc/sysdep.h [__ASSEMBLER__] (PPC_FEATURE_*): Define + PPC_FEATURE_* independent of __ASSEMBLER__. -2003-01-04 Franz Sirl +2004-05-25 Jakub Jelinek - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Mark - __syscall_pread64 and __syscall_pwrite64 cancelable. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h - (INTERNAL_SYSCALL): New macro. - (LOADARGS_0, LOADARGS_1): Fix. + * sysdeps/pthread/aio_notify.c: Use <> instead of "" for aio_misc.h + include. + (aio_start_notify_thread): Define if not defined. + (notify_func_wrapper): Use it. + * sysdeps/pthread/aio_misc.c: Use <> instead of "" for aio_misc.h + include. + (aio_create_helper_thread): Define if not defined. + (__aio_create_helper_thread): New function. + (__aio_enqueue_request): Use aio_create_helper_thread. -2003-01-05 Ulrich Drepper + * nis/ypclnt.c (ypall_data, ypall_foreach): Remove. + (struct ypresp_all_data): New type. + (__xdr_ypresp_all): Change second argument to + struct ypresp_all_data *. Replace ypall_foreach and + ypall_data with objp->foreach and objp->data. + (yp_all): Remove status variable, add data. Replace + all uses of status with data.status. Initialize data.foreach + and data.data instead of ypall_foreach and ypall_data. - * Makerules (build-shlip-helper): Unless told otherwise, add - -Wl,-z,defs to linker command line. - * rt/Makefile (librt.so): Link with ld.so. - * dlfcn/Makefile (libdl.so): Likewise. +2004-05-24 Jakub Jelinek -2003-01-05 Jakub Jelinek + * elf/dl-lookup.c (add_dependency): Set DF_1_NODELETE bit + in l_flags_1, not in l_flags. - * sysdeps/unix/sysv/linux/s390/s390-32/socket.S: Add support for - cancellation handling. - * sysdeps/unix/sysv/linux/s390/s390-64/socket.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: Likewise. +2004-04-10 Robert Millan -2003-01-04 Ulrich Drepper + * sysdeps/unix/sysv/linux/bits/in.h: Cosmetic fixes to get in sync + with sysdeps/generic/bits/in.h. - * sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Correct - order of parameters passed to kill. +2004-05-25 Roland McGrath -2003-01-04 Andreas Schwab + * sysdeps/generic/unwind-dw2-fde-glibc.c: Change copyright terms from + GCC GPL to standard glibc LGPL. - * sysdeps/unix/sysv/linux/m68k/bits/stat.h: Add nanosecond fields. +2004-05-24 Ulrich Drepper -2002-01-03 Paul Eggert + * manual/string.texi (Copying and Concatenation): Fixed second + concat example. + Reported by Fabian Pietsch . - * malloc/obstack.h (__INT_TO_PTR) [__STDC__]: Cast result to - (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5 - when compiling Bison 1.875's `bitset bset = obstack_alloc - (bobstack, bytes);'. Problem reported by Nelson H. F. Beebe. +2004-05-23 Ulrich Drepper -2003-01-04 Ulrich Drepper + * malloc/obstack.c: Don't allow linking with _obstack. - * sysdeps/posix/system.c (do_system): Minor optimizations. Remove - unnecessary code. - Correct reference counter in case SIGQUIT handler installation failed. +2004-05-23 Andreas Schwab -2003-01-03 Ulrich Drepper + * sysdeps/m68k/m68020/bits/atomic.h: Use "+m" constraint instead + of separate "m" constraints. - * include/libc-symbols.h [HAVE_WEAK_SYMBOLS] (_weak_extern): - Define using _Pragma(weak ...). +2004-05-15 Chris Demetriou -2003-01-03 Andreas Jaeger , Jakub Jelinek + * sysdeps/mips/dl-machine.h (ELF_DL_FRAME_SIZE) + (ELF_DL_SAVE_ARG_REGS, ELF_DL_RESTORE_ARG_REGS): For the N32 + and 64 ABIs, save and restore regs $10 and $11 (a6 and a7). - * resolv/res_libc.c: Provide declaration for __res_init_weak and - reorder declarations. +2004-05-20 Paul Eggert -2003-01-03 Art Haas + * malloc/obstack.c (_obstack) [!defined _LIBC]: Remove; not used. + Add comment explaining why libc still defines it. - * localedata/tests-mbwc/dat_iswalnum.c: Convert GCC extension - initializer syntax to C99. - * localedata/tests-mbwc/dat_iswalpha.c: Likewise. - * localedata/tests-mbwc/dat_iswcntrl.c: Likewise. - * localedata/tests-mbwc/dat_iswctype.c: Likewise. - * localedata/tests-mbwc/dat_iswdigit.c: Likewise. - * localedata/tests-mbwc/dat_iswgraph.c: Likewise. - * localedata/tests-mbwc/dat_iswlower.c: Likewise. - * localedata/tests-mbwc/dat_iswprint.c: Likewise. - * localedata/tests-mbwc/dat_iswpunct.c: Likewise. - * localedata/tests-mbwc/dat_iswspace.c: Likewise. - * localedata/tests-mbwc/dat_iswupper.c: Likewise. - * localedata/tests-mbwc/dat_iswxdigit.c: Likewise. - * localedata/tests-mbwc/dat_mblen.c: Likewise. - * localedata/tests-mbwc/dat_mbrlen.c: Likewise. - * localedata/tests-mbwc/dat_mbrtowc.c: Likewise. - * localedata/tests-mbwc/dat_mbsrtowcs.c: Likewise. - * localedata/tests-mbwc/dat_mbstowcs.c: Likewise. - * localedata/tests-mbwc/dat_mbtowc.c: Likewise. - * localedata/tests-mbwc/dat_strcoll.c: Likewise. - * localedata/tests-mbwc/dat_strfmon.c: Likewise. - * localedata/tests-mbwc/dat_strxfrm.c: Likewise. - * localedata/tests-mbwc/dat_swscanf.c: Likewise. - * localedata/tests-mbwc/dat_towctrans.c: Likewise. - * localedata/tests-mbwc/dat_towlower.c: Likewise. - * localedata/tests-mbwc/dat_towupper.c: Likewise. - * localedata/tests-mbwc/dat_wcrtomb.c: Likewise. - * localedata/tests-mbwc/dat_wcscat.c: Likewise. - * localedata/tests-mbwc/dat_wcschr.c: Likewise. - * localedata/tests-mbwc/dat_wcscmp.c: Likewise. - * localedata/tests-mbwc/dat_wcscoll.c: Likewise. - * localedata/tests-mbwc/dat_wcscpy.c: Likewise. - * localedata/tests-mbwc/dat_wcscspn.c: Likewise. - * localedata/tests-mbwc/dat_wcslen.c: Likewise. - * localedata/tests-mbwc/dat_wcsncat.c: Likewise. - * localedata/tests-mbwc/dat_wcsncmp.c: Likewise. - * localedata/tests-mbwc/dat_wcsncpy.c: Likewise. - * localedata/tests-mbwc/dat_wcspbrk.c: Likewise. - * localedata/tests-mbwc/dat_wcsrtombs.c: Likewise. - * localedata/tests-mbwc/dat_wcsspn.c: Likewise. - * localedata/tests-mbwc/dat_wcsstr.c: Likewise. - * localedata/tests-mbwc/dat_wcstod.c: Likewise. - * localedata/tests-mbwc/dat_wcstok.c: Likewise. - * localedata/tests-mbwc/dat_wcstombs.c: Likewise. - * localedata/tests-mbwc/dat_wcswidth.c: Likewise. - * localedata/tests-mbwc/dat_wcsxfrm.c: Likewise. - * localedata/tests-mbwc/dat_wctob.c: Likewise. - * localedata/tests-mbwc/dat_wctomb.c: Likewise. - * localedata/tests-mbwc/dat_wctrans.c: Likewise. - * localedata/tests-mbwc/dat_wctype.c: Likewise. - * localedata/tests-mbwc/dat_wcwidth.c: Likewise. +2004-05-19 Paul Eggert -2003-01-03 Richard Henderson + * malloc/obstack.h (_obstack_free, obstack_1grow, obstack_1grow_fast, + obstack_alignment_mask, obstack_alloc, obstack_base, + obstack_blank, obstack_blank_fast, obstack_chunk_size, + obstack_copy, obstack_copy0, obstack_finish, obstack_grow, + obstack_grow0, obstack_init, obstack_int_grow, + obstack_int_grow_fast, obstack_make_room, obstack_memory_used, + obstack_next_free, obstack_object_size, obstack_ptr_grow, + obstack_ptr_grow_fast, obstack_room): Remove declarations of + nonexistent functions. - * sysdeps/unix/sysv/linux/alpha/sysdep.h (inline_syscall_r0_asm): New. - (inline_syscall_r0_constraint): New. - (inline_syscall[0-6]): Use them. +2004-05-18 Steven Munroe -2003-01-03 Jakub Jelinek + * sysdeps/powerpc/powerpc64/sysdep.h [__ASSEMBLER__]: Include + independent of __ASSEMBLER__. + [PIC]: Redundent for powerpc64, removed. + (ENTRY): Generate size and alignment for opd entry. + (EALIGN): Generate size and alignment for opd entry. + (END): Use DOT_LABEL in ASM_SIZE_DIRECTIVE. + (END_GEN_TB): Use DOT_LABEL in ASM_SIZE_DIRECTIVE. - * sysdeps/generic/ldsodefs.h (_dl_allocate_tls, _dl_deallocate_tls): - Add rtld_hidden_proto. - * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Add rtld_hidden_def. - (_dl_allocate_tls): Likewise. Remove INTDEF. +2004-05-19 Ulrich Drepper -2002-07-05 Kaz Kojima + * misc/regexp.h: Say the functions have been withdrawn. - * sysdeps/sh/memcpy.S: Optimize. Based on a patch by Toshiyasu - Morita . - * sysdeps/sh/memcpy.S: Likewise. + * wcsmbs/tst-wcpncpy.c: Add more tests. -2003-01-02 Ulrich Drepper +2004-05-18 Roland McGrath - * sysdeps/pthread/aio_suspend.c (aio_suspend): Don't quite remove - any, but unify the test. + * sysdeps/generic/unwind.h: Change copyright terms from GCC GPL to + standard glibc LGPL. + * sysdeps/generic/unwind-dw2.c: Likewise. + * sysdeps/generic/unwind-dw2-fde.c: Likewise. + * sysdeps/generic/unwind-dw2-fde.h: Likewise. + * sysdeps/generic/unwind-pe.h: Likewise. -2003-01-02 Jakub Jelinek +2004-05-15 Petter Reinholdtsen - * sysdeps/unix/sysv/linux/arm/sigaction.c (__sigaction, - sigaction): Protect weak_alias and libc_hidden_weak with - #ifndef LIBC_SIGACTION. - * sysdeps/unix/sysv/linux/ia64/sigaction.c (__sigaction, - sigaction): Likewise. - * sysdeps/unix/sysv/linux/mips/sigaction.c (__sigaction, - sigaction): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c (__sigaction, - sigaction): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c (__sigaction, - sigaction): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (__sigaction, - sigaction): Likewise. - * sysdeps/unix/sysv/linux/x86_64/sigaction.c (__sigaction, - sigaction): Likewise. - * sysdeps/unix/sysv/linux/i386/sigaction.c (__sigaction, - sigaction): Likewise. Remove SIGCANCEL handling here. - * sysdeps/unix/sysv/linux/sigaction.c (__sigaction, sigaction): - Likewise. + * locale/iso-3166.def: Remove YUGOSLAVIA and insert "SERBIA AND + MONTENEGRO" which have taken over the code 819. Patch from + Danilo Segan. [BZ #40] -2003-01-02 Art Haas +2004-05-15 Jakub Jelinek - * login/tst-utmp.c: Convert GCC extension initializer syntax to C99. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h + (SYSCALL_ERROR_HANDLER): Rename __sparc.get_pic.l7 to + __sparc_get_pic_l7. -2003-01-02 Ulrich Drepper +2004-05-15 Joseph S. Myers - * posix/getconf.c: Update copyright year. - * nss/getent.c: Likewise. - * nscd/nscd_nischeck.c: Likewise. - * iconv/iconvconfig.c: Likewise. - * iconv/iconv_prog.c: Likewise. - * elf/ldconfig.c: Likewise. - * catgets/gencat.c: Likewise. + * catgets/gencat.c: Update bug reporting instructions. * csu/version.c: Likewise. + * debug/catchsegv.sh: Likewise. + * debug/pcprofiledump.c: Likewise. + * debug/xtrace.sh: Likewise. * elf/ldd.bash.in: Likewise. - * elf/sprof.c (print_version): Likewise. + * iconv/iconv_prog.c: Likewise. + * iconv/iconvconfig.c: Likewise. * locale/programs/locale.c: Likewise. * locale/programs/localedef.c: Likewise. - * nscd/nscd.c (print_version): Likewise. - * debug/xtrace.sh: Likewise. + * login/programs/pt_chown.c: Likewise. * malloc/memusage.sh: Likewise. + * malloc/memusagestat.c: Likewise. * malloc/mtrace.pl: Likewise. + * manual/crypt.texi: Likewise. + * manual/install.texi: Likewise. + * nss/makedb.c: Likewise. -2003-01-01 Jakub Jelinek - - * io/sys/stat.h: Include time.h with __need_timespec even if - __USE_MISC is defined but __USE_XOPEN is not. - -2003-01-01 Andreas Jaeger - - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Use union - type to avoid strict aliasing problem. - (_nss_dns_gethostbyname2_r): Likewise. - * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyaddr_r): Likewise. - (_nss_dns_getnetbyname_r): Likewise. - * resolv/gethnamaddr.c (_gethtent): Likewise. - (gethostbyname2): Likewise. +2004-05-14 Jakub Jelinek -2002-12-31 Ulrich Drepper + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Only + CHECK_STATIC_TLS if sym != NULL. + * sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/i386/dl-machine.h (elf_machine_rela): Likewise. - * string/string-inlines.c: Define __memcpy_g and __strchr_g macros - to avoid using the exported symbols. Define aliases with the - original names separately. +2004-05-12 Andreas Schwab - * include/time.h: Add libc_hidden_proto for __strftime_l. - * include/wchar.h: Add libc_hidden_proto for __wcsftime_l. - * time/strftime.c: Always use libc_hidden_def if _LIBC. + * posix/regex_internal.c (build_wcs_buffer): Also set pstr->mbs + when translating. - * libio/libioP.h: Add libc_hidden_proto for _IO_file_open. - * libio/fileops.c: Add libc_hidden_def for _IO_file_open. +2004-05-13 H.J. Lu - * malloc/mtrace.c: Add libc_hidden_proto and libc_hidden_def for - tr_break. + * Rules (xtests): Depend on tests. - * csu/Makefile (routines): Add dso_handle. - * csu/dso_handle.c: New file. +2004-05-13 Jakub Jelinek -2002-12-31 Roland McGrath + * libio/genops.c (_IO_default_xsputn): Avoid one overflow per char if + count is negative, yet write_ptr < write_end. + (_IO_default_xsgetn): Avoid one underflow per char if count is + negative, yet read_ptr < read_end. - * Makerules (compile.S, COMPILE.S): Remove -DASSEMBLER here. - Use $(S-CPPFLAGS) in place of $(asm-CPPFLAGS). - (S-CPPFLAGS): Add -DASSEMBLER here instead. - (generate-md5, +make-deps): Fix magic to get $(S-CPPFLAGS). +2004-05-12 Steven Munroe -2002-12-31 Ulrich Drepper + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h (XTABS): Define XTABS + equal to TAB3. - * malloc/thread-m.h [SHARED] (thread_atfork): Assume __dso_handle - is available. +2004-05-12 Ulrich Drepper -2002-12-31 Andreas Jaeger + * elf/dl-lookup.c (_dl_lookup_symbol_x): Correct _dl_signal_cerror + call. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: Sync - with Linux kernel. - * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Likewise. - * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: Likewise. +2004-05-10 Roland McGrath - * sysdeps/unix/sysv/linux/kernel_stat.h - (_HAVE_STAT_NSEC,_HAVE_STAT_NSEC64): New. + * hurd/hurdlookup.c (__hurd_file_name_split): Return ENOENT for "". + (__hurd_directory_name_split): Likewise. - * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Re-add - __unused[1-3] since they're needed by some platforms. Handle - _HAVE_STAT_NSEC and _HAVE_STAT_NSEC64. +2004-05-10 Ulrich Drepper - * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Add nsec resolution - for structs stat and stat64. - * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise. + * po/fr.po: Update from translation team. - * io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat. +2004-05-10 Andreas Jaeger - * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Adjust for - nsec resolution changes. - (xstat64_conv): Likewise. - (xstat32_conv): Likewise. + * sysdeps/unix/sysv/linux/x86_64/makecontext.c (__makecontext): + Correctly compute alignment. + Patch by Michael Matz . - * sysdeps/unix/sysv/linux/kernel_stat.h: Add nsec resolution for - struct kernel_stat. +2004-05-09 Ulrich Drepper - * sysdeps/unix/sysv/linux/bits/stat.h: Add nsec resolution for - structs stat and stat64. + * sysdeps/generic/sigpause.c: Prevent sigpause prototype. + * sysdeps/posix/sigpause.c: Likewise. + * signal/signal.h: Don't define sigpause macro unless needed. - * time/time.h (__timespec_defined): Define for __USE_MISC. +2004-05-08 Jakub Jelinek -2002-12-31 Ulrich Drepper + * configure.in (libc_cv_libgcc_s_suffix): New check. + (libc_cv_as_needed): Use -lgcc_s$libc_cv_libgcc_s_suffix. + * config.make.in (libgcc_s_suffix): Set. + * Makeconfig (libgcc_eh): Use -lgcc_s$(libgcc_s_suffix). - * include/signal.h: Add libc_hidden_proto for __libc_current_sigrtmin - and __libc_current_sigrtmax. +2004-05-08 Ulrich Drepper -2002-12-31 Jakub Jelinek + * signal/signal.h: Use BSD sigpause only if BSD behavior is preferred. - * include/errno.h (__errno_location): Add prototype. - Use libc_hidden_proto unconditionally. - * include/netdb.h (__h_errno_location): Use libc_hidden_proto - unconditionally. - * include/resolv.h (__res_state): Likewise. +2004-04-29 Steven Munroe - * hurd/errno-loc.c (__errno_location): Add libc_hidden_def. - * include/sys/socket.h (accept): Add libc_hidden_proto. - * include/errno.h (__errno_location): Likewise. - * include/netdb.h (__h_errno_location): Likewise. - * include/resolv.h (__res_state): Likewise. - * include/unistd.h (__lseek): Likewise. - * sysdeps/generic/errno-loc.c (__errno_location): Add libc_hidden_def. - * sysdeps/generic/herrno-loc.c (__h_errno_location): Likewise. - * sysdeps/generic/res-state.c (__res_state): Likewise. - * sysdeps/generic/accept.c (accept): Likewise. - * sysdeps/generic/lseek.c (__lseek): Likewise. - * sysdeps/generic/allocrtsig.c (__libc_current_sigrtmin, - __libc_current_sigrtmax): Likewise. - * sysdeps/mach/hurd/accept.c (accept): Likewise. - * sysdeps/mach/hurd/lseek.c (__lseek): Likewise. - * sysdeps/unix/sysv/aix/accept.c (accept): Likewise. - * sysdeps/unix/sysv/aix/lseek.c (__lseek): Likewise. - * sysdeps/unix/sysv/linux/accept.S (accept): Likewise. - * sysdeps/unix/inet/syscalls.list (__GI_accept): New alias to accept. - * sysdeps/unix/sysv/linux/alpha/syscalls.list (__GI_accept): Likewise. - * sysdeps/unix/sysv/linux/hppa/syscalls.list (__GI_accept): Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list (__GI___lseek): New - alias to llseek. - (__GI_accept): New alias to accept. - * sysdeps/unix/sysv/linux/mips/syscalls.list (__GI_accept): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__GI___lseek): - New alias to llseek. - (__GI_accept): New alias to accept. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (__GI_accept): - Likewise. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list (__GI_accept): + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (LOADARGS_1, + LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, LOADARGS_6): + Load argument values into temporary variables. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (LOADARGS_1, + LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, LOADARGS_6): Likewise. - * sysdeps/unix/syscalls.list (__GI___lseek): New alias to lseek. - - * sysdeps/alpha/setjmp.S : Use libc_hidden_def(name) instead of - strong_alias (name, __GI_name). - * sysdeps/arm/bsd-_setjmp.S : Likewise. - * sysdeps/hppa/bsd-_setjmp.S : Likewise. - * sysdeps/i386/bsd-_setjmp.S : Likewise. - * sysdeps/mips/mips64/bsd-_setjmp.S : Likewise. - * sysdeps/mips/bsd-_setjmp.S : Likewise. - * sysdeps/powerpc/powerpc32/bsd-_setjmp.S : Likewise. - * sysdeps/powerpc/powerpc64/setjmp.S : Likewise. - * sysdeps/s390/s390-32/elf/setjmp.S : Likewise. - * sysdeps/s390/s390-32/bsd-_setjmp.S : Likewise. - * sysdeps/s390/s390-64/elf/setjmp.S : Likewise. - * sysdeps/s390/s390-64/bsd-_setjmp.S : Likewise. - * sysdeps/sh/bsd-_setjmp.S : Likewise. - * sysdeps/sparc/sparc32/setjmp.S : Likewise. - * sysdeps/unix/arm/fork.S : Likewise. - * sysdeps/unix/bsd/hp/m68k/vfork.S : Likewise. - * sysdeps/unix/bsd/i386/vfork.S : Likewise. - * sysdeps/unix/bsd/osf/alpha/fork.S : Likewise. - * sysdeps/unix/bsd/sun/m68k/vfork.S : Likewise. - * sysdeps/unix/bsd/ultrix4/mips/vfork.S : Likewise. - * sysdeps/unix/bsd/vax/vfork.S : Likewise. - * sysdeps/unix/i386/fork.S : Likewise. - * sysdeps/unix/mips/fork.S : Likewise. - * sysdeps/unix/sparc/fork.S : Likewise. - * sysdeps/unix/sparc/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/arm/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/cris/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/i386/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/ia64/fork.S : Likewise. - * sysdeps/unix/sysv/linux/ia64/setjmp.S : Likewise. - * sysdeps/unix/sysv/linux/ia64/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/m68k/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/sh/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S : Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S : Likewise. - * sysdeps/unix/sysv/linux/sparc/fork.S : Likewise. - * sysdeps/unix/sysv/linux/sparc/vfork.S : Likewise. - * sysdeps/unix/sysv/linux/x86_64/vfork.S : Likewise. - * sysdeps/unix/fork.S : Likewise. - * sysdeps/vax/bsd-_setjmp.S : Likewise. - * sysdeps/x86_64/bsd-_setjmp.S : Likewise. - - * sysdeps/unix/sysv/linux/ia64/sysdep.h: Guard against multiple - inclusion. - -2002-12-31 Ulrich Drepper - - * include/unistd.h: Add libc_hidden_proto for __fork and __vfork. - * sysdeps/generic/fork.c: Add libc_hidden_def for __fork. - * sysdeps/mach/hurd/fork.c: Likewise. - * sysdeps/unix/sysv/aix/fork.c: Likewise. - * sysdeps/unix/fork.S: Add __GI___fork alias. - * sysdeps/unix/arm/fork.S: Likewise. - * sysdeps/unix/bsd/osf/alpha/fork.S: Likewise. - * sysdeps/unix/i386/fork.S: Likewise. - * sysdeps/unix/mips/fork.S: Likewise. - * sysdeps/unix/sparc/fork.S: Likewise. - * sysdeps/unix/sysv/linux/ia64/fork.S: Likewise. - * sysdeps/unix/sysv/linux/sparc/fork.S: Likewise. - * sysdeps/unix/sysv/linux/syscalls.list: Likewise. - * sysdeps/generic/vfork.c: Add libc_hidden_def for __vfork. - * sysdeps/unix/bsd/hp/m68k/vfork.S: Add __GI___vfork alias. - * sysdeps/unix/bsd/i386/vfork.S: Likewise. - * sysdeps/unix/bsd/sun/m68k/vfork.S: Likewise. - * sysdeps/unix/bsd/ultrix4/mips/vfork.S: Likewise. - * sysdeps/unix/bsd/vax/vfork.S: Likewise. - * sysdeps/unix/sparc/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/arm/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/cris/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/i386/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/ia64/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/m68k/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/sh/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/sparc/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise. - - * include/time.h: Add libc_hidden_proto for __nanosleep. - * sysdeps/generic/nanosleep.c: Add libc_hidden_def for __nanosleep. - * sysdeps/mach/nanosleep.c: Likewise. - * sysdeps/unix/sysv/aix/nanosleep.c: Likewise. - * sysdeps/unix/sysv/linux/syscalls.list: Add __GI___nanosleep alias. - - * libio/libioP.h: Add libc_hidden_proto for _IO_list_lock, - _IO_list_unlock, and _IO_list_resetlock. - * libio/genops.c: Add libc_hidden_def for _IO_list_lock, - _IO_list_unlock, and _IO_list_resetlock. - - * libio/libioP.h: Add libc_hidden_proto for _IO_iter_begin, - _IO_iter_end, _IO_iter_next, and _IO_iter_file. - * libio/genops.c: Add libc_hidden_def for _IO_iter_begin, - _IO_iter_end, _IO_iter_next, and _IO_iter_file. - - * include/setjmp.h: Add libc_hidden_proto for __libc_longjmp. - * sysdeps/generic/longjmp.c: Add libc_hidden_def for __longjmp. - * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S: Add - __GI___longjmp alias. - - * include/setjmp.h: Add libc_hidden_proto for _setjmp. - * sysdeps/alpha/setjmp.S: Add __GI__setjmp alias. - * sysdeps/arm/bsd-_setjmp.S: Likewise. - * sysdeps/generic/bsd-_setjmp.c: Likewise. - * sysdeps/hppa/bsd-_setjmp.S: Likewise. - * sysdeps/i386/bsd-_setjmp.S: Likewise. - * sysdeps/m68k/bsd-_setjmp.c: Likewise. - * sysdeps/mips/bsd-_setjmp.S: Likewise. - * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. - * sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Likewise. - * sysdeps/powerpc/powerpc64/setjmp.S: Likewise. - * sysdeps/s390/s390-32/bsd-_setjmp.S: Likewise. - * sysdeps/s390/s390-32/elf/setjmp.S: Likewise. - * sysdeps/s390/s390-64/bsd-_setjmp.S: Likewise. - * sysdeps/s390/s390-64/elf/setjmp.S: Likewise. - * sysdeps/sh/bsd-_setjmp.S: Likewise. - * sysdeps/sparc/sparc32/setjmp.S: Likewise. - * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S: Likewise. - * sysdeps/vax/bsd-_setjmp.S: Likewise. - * sysdeps/x86_64/bsd-_setjmp.S: Likewise. - -2002-12-30 Ulrich Drepper - - * malloc/thread-m.h (thread_atfork): Define using __register_atfork. - -2002-12-30 Roland McGrath - - * Rules (generated): Target removed. - * mach/Makefile (generated): Define it here instead. - - * math/Makefile (generated): Add m_*l and m_*f variants too. - -2002-12-30 Ulrich Drepper - - * elf/dl-close.c (_dl_close): Handle relocation dependencies among - the to-be-deleted objects right away instead of later separately. - The latter fails because the scope data structures of the DSO - might already be gone. - - * elf/Makefile: Add rules to build and run reldep8 test. - * elf/reldep8.c: New file. - * elf/reldep8mod1.c: New file. - * elf/reldep8mod2.c: New file. - * elf/reldep8mod3.c: New file. - Contributed by Jakub Jelinek. - -2002-12-24 GOTO Masanori - - * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): Fix condition - checking of return value ENOSYS from getdents64. - -2002-12-28 Andreas Schwab - - * sysdeps/unix/Makefile: Include $(common-objpfx)s-proto-cancel.d. - ($(common-objpfx)s-%.d): Generalized from - $(common-objpfx)s-proto.d rule. - (common-generated): Add s-proto-cancel.d. - * sysdeps/unix/make-syscalls.sh: Use s-proto-cancel.d for - cancellable syscalls. - * sysdeps/unix/s-proto-cancel.S: New file. - -2002-12-29 Roland McGrath - - * resolv/res_libc.c: Move _res defn magic after res_init defn - so _res macro is in effect for that code. - - * Makerules ($(common-objpfx)%.h $(common-objpfx)%.h.d): Fix sed - pattern for prepending $(..) so it doesn't affect $(foo). - - * math/Makefile (generated): Add $(addsuffix .c .S,$(calls:s_%=m_%)). - -2002-12-29 Jakub Jelinek - - * elf/cache.c (add_to_cache): Don't loop forever with 1ULL << 63 set - in hwcap. - -2002-12-28 Ulrich Drepper - - * misc/sys/cdefs.h (__attribute_deprecated__): New #define. - -2002-12-28 Andreas Jaeger - - * sysdeps/generic/readelflib.c (process_elf_file): Cast value to - avoid warning. - * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Likewise. - -2002-12-27 Jakub Jelinek - - * inet/herrno.c (__h_errno_location): Remove. - * inet/Makefile (routines): Add herrno-loc. - * resolv/res_libc.c (__res_state): Remove. - * resolv/Makefile (routines): Add res-state. - * sysdeps/generic/herrno-loc.c: New file. - * sysdeps/generic/res-state.c: New file. - -2002-12-27 Jakub Jelinek - - * sysdeps/unix/sysv/linux/i386/sysdep.h (I386_USE_SYSENTER): - Only define if USE_DL_SYSINFO is defined. - -2002-12-22 Jakub Jelinek - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (INLINE_SYSCALL, - INTERNAL_SYSCALL, INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERROR): - Define. Patch by Richard Henderson and Jes Sorensen. - (PSEUDO): Remove unnecessary ;;. - * elf/rtld.c (dl_main): Initialize TLS even if no PT_TLS segments - are found unless TLS_INIT_TP_EXPENSIVE. Use NONTLS_INIT_TP. - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Use NONTLS_INIT_TP - if not initializing thread pointer. - [!USE_TLS && NONTLS_INIT_TP] (__pthread_initialize_minimal): New. - * sysdeps/generic/libc-start.c (__pthread_initialize_minimal): Don't - make it weak also if NONTLS_INIT_TP. - * sysdeps/unix/common/pause.c: Handle cancellation. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h [DONT_LOAD_G1] - (LOADSYSCALL): Remove. - (SYSCALL_ERROR_HANDLER_ENTRY): Define. - (SYSCALL_ERROR_HANDLER): Use it. - (PSEUDO): Don't jump around error handler. - * sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S (__libc_pipe): Don't - jump around error handler. - * sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S (syscall): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Branch - to __syscall_error_handler on failure. - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h [DONT_LOAD_G1] - (LOADSYSCALL): Remove. - (SYSCALL_ERROR_HANDLER_ENTRY): Define. - (SYSCALL_ERROR_HANDLER): Use it. - (PSEUDO): Don't jump around error handler. - * sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S (__libc_pipe): Don't - jump around error handler. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S (syscall): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/socket.S (__socket): Branch - to __syscall_error_handler on failure. - -2002-12-27 Roland McGrath - - * scripts/gen-as-const.awk: New file. - * Makefile (distribute): Add it. - * Makerules ($(common-objpfx)%.h %.h.d: %.sym): New pattern rule. - (before-compile): Add $(gen-as-const-headers:%.sym=$(common-objpfx)%.h) - to the list. - (+depfiles): Add $(addprefix $(common-objpfx),$(gen-as-const-headers)). - -2002-12-27 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/socket.S: Add cancellation support. - -2002-12-27 Jakub Jelinek - - * malloc/arena.c (ptmalloc_init): Don't call next_env_entry if - _environ is NULL. - -2002-12-27 Andreas Schwab - - * Makerules ($(common-objpfx)%.make): Filter through - $(sed-remove-objpfx). - -2002-12-23 Roland McGrath - - * scripts/abilist.awk: Produce a more compact format, divided into - stanzas for each version set, the set name listed only once. - * scripts/extract-abilist.awk: New file. - * scripts/merge-abilist.awk: New file. - * Makerules (check-abi-%, update-abi-%): New pattern rules. - (update-abi, check-abi): New targets. - * Makefile (+subdir_targets): Add subdir_{check,update}-abi. - -2002-12-19 Roland McGrath - - * Makerules (%.symlist): Use LC_ALL=C when running awk script. - - * sysdeps/unix/sysv/linux/i386/brk.c (__brk): Cast result of - INTERNAL_SYSCALL. -2002-12-21 Andreas Schwab - - * elf/check-textrel.c (handle_file): Swap p_type. - -2002-12-21 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/sysdep.h (INTERNAL_SYSCALL): Define. - (INLINE_SYSCALL): Use it. - (INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Define. - (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. - - * sysdeps/unix/sysv/linux/m68k/getpagesize.c: Use INTERNAL_SYSCALL. - * sysdeps/unix/sysv/linux/m68k/brk.c: Likewise. - -2002-12-20 Art Haas - - * sysdeps/gnu/siglist.c: Convert GCC extension initializer - syntax to C99. - -2002-12-21 Philip Blundell - - * sysdeps/arm/elf/start.S (_start): Optimise a little. Push stack - top as seventh arg to __libc_start_main. - Reported by paulnash@wildseed.com. - - * sysdeps/unix/sysv/linux/arm/clone.S: Small optimisation. - - * sysdeps/unix/sysv/linux/arm/sigcontextinfo.h: Elide - compatibility cruft when new enough kernel is assumed. - -2002-12-20 Jakub Jelinek - - * sysdeps/unix/sysv/linux/i386/brk.c (__brk): Use INTERNAL_SYSCALL - instead of INLINE_SYSCALL. - -2002-12-20 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): Fix - typo. - - * sysdeps/unix/sysv/linux/alpha/bits/shm.h: Define SHM_HUGETLB. - * sysdeps/unix/sysv/linux/bits/shm.h: Likewise. - * sysdeps/unix/sysv/linux/hppa/bits/shm.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/shm.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/shm.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise. - * sysdeps/unix/sysv/linux/x86_64/bits/shm.h: Likewise. - Patch by William Lee Irwin . - -2002-12-20 Andreas Schwab - - * locale/programs/ld-measurement.c (measurement_output): Fix - index calculation. - -2002-12-20 Ulrich Drepper - - * include/libio.h [_IO_MTSAFE_IO && _IO_lock_inexpensive]: - Redefine _IO_flockifle and _IO_funlockfile as inlines. - - * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): For TLS - builds add "tls" in the search path. - * elf/ldconfig.c (is_hwcap_platform): Also recognize "tls". - (path_hwcap): Recognize "tls". - -2002-12-19 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Use - __waitpid instead of waitpid. +2004-05-07 Ulrich Drepper - * sysdeps/unix/sysv/linux/i386/_exit.S: Use ENTER_KERNEL instead of - int $0x80. - * sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise. - * sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise. - * sysdeps/unix/sysv/linux/i386/swapcontext.S: Likewise. + * sysdeps/unix/sysv/linux/Makefile: mq_send.c and mq_receive.c + need to be compiled with exceptions. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Add support to use AT_SYSINFO - information for system calls. +2004-05-06 Ulrich Drepper - * sysdeps/generic/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO to 1 only - for ld.so. + * sysdeps/unix/sysv/linux/ifreq.c (__ifreq): Fix memory handling. + * sysdeps/generic/ifreq.c (__ifreq): Fix memory handling. - * elf/rtld.c (_dl_start) [USE___THREAD]: Define initdtv. + * resolv/res_hconf.c (_res_hconf_reorder_addrs): Make clear that + realloc cannot fail. -2002-12-19 Roland McGrath + * nss/nss_files/files-netgrp.c (EXPAND): Free buffer which cannot + be expanded. - * iconvdata/ibm856.h: Convert GCC extension initializer syntax to C99. - * iconvdata/ibm922.h: Likewise. - * iconvdata/ibm930.h: Likewise. - * iconvdata/ibm932.h: Likewise. - * iconvdata/ibm933.h: Likewise. - * iconvdata/ibm935.h: Likewise. - * iconvdata/ibm937.h: Likewise. - * iconvdata/ibm939.h: Likewise. - * iconvdata/ibm943.h: Likewise. - * iconvdata/isiri-3342.h: Likewise. + * nis/nis_table.c: Clean up memory handling. + * nis/nis_subr.c (nis_getnames): Clean up memory handling. + * nis/nis_removemember.c (nis_removemember): Add comment + explaining use of realloc. -2002-12-19 Ulrich Drepper + * math/tgmath.h (fabs): Use __TGMATH_UNARY_REAL_IMAG_RET_REAL. + (carg): Likewise. + Patch by Lev S Bishop . - * test-skeleton.c (main): Make sure correct value is seen as - argv[0] after adjustment of argv, and argc. + * math/bug-tgmath1.c (main): Test fabs and carg as well. - * elf/rtld.c: Don't initialize _dl_dynamic_weak to 1 if - RTLD_CORRECT_DYNAMIC_WEAK is defined. +2004-05-06 Richard Henderson -2002-12-19 Jakub Jelinek + * elf/elf.h (AT_L1I_CACHESHAPE, AT_L1D_CACHESHAPE, + AT_L2_CACHESHAPE, AT_L3_CACHESHAPE): New. + * sysdeps/unix/sysv/linux/alpha/Versions: Export + __libc_alpha_cache_shape as a private symbol. + * sysdeps/unix/sysv/linux/alpha/dl-sysdep.c: New file. + * sysdeps/unix/sysv/linux/alpha/sysconf.c: New file. - * nscd/connections.c (nscd_run): Shut up warning. - * tst-ungetc.c (assert): Undefined before redefining. +2004-05-06 Richard Henderson -2002-12-19 Ulrich Drepper + * sysdeps/alpha/div_libc.h (_ITOFS, _ITOFT, _FTOIT, _ITOFT2): New. + * sysdeps/alpha/divl.S: Use them. + * sysdeps/alpha/divq.S: Likewise. + * sysdeps/alpha/divqu.S: Likewise. + * sysdeps/alpha/reml.S: Likewise. + * sysdeps/alpha/remq.S: Likewise. + * sysdeps/alpha/remqu.S: Likewise. - * posix/regex.c: Use __builtin_expect even outside glibc if gcc 3 - is used. +2004-05-06 Ulrich Drepper -2002-12-17 Art Haas + * math/tgmath.h (__TGMATH_UNARY_REAL_IMAG_RET_REAL):Define. + (cimag): Use it. + (creal): Likewise. + * math/Makefile (tests): Add bug-tgmath1. + * math/bug-tgmath1.c: New file. - * iconvdata/cp737.h: Convert GCC extension initializer syntax to C99. - * iconvdata/cp775.h: Likewise. - * iconvdata/ibm1046.h: Likewise. - * iconvdata/ibm1124.h: Likewise. - * iconvdata/ibm1129.h: Likewise. - * iconvdata/ibm1132.h: Likewise. - * iconvdata/ibm1133.h: Likewise. - * iconvdata/ibm1160.h: Likewise. - * iconvdata/ibm1161.h: Likewise. - * iconvdata/ibm1162.h: Likewise. - * iconvdata/ibm1163.h: Likewise. - * iconvdata/ibm1164.h: Likewise. +2004-05-05 Jakub Jelinek -2002-12-19 Ulrich Drepper + * sysdeps/alpha/atomicity.h: Remove. + * sysdeps/generic/atomicity.h: Remove. - * sysdeps/unix/sysv/linux/i386/system.c: Define FORK only if - __ASSUME_CLONE_THREAD_FLAGS is defined. - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_CLONE_THREAD_FLAGS): Define for x86 and kernel >= 2.5.50. +2004-05-05 H.J. Lu -2002-12-18 Ulrich Drepper + * sysdeps/i386/i486/bits/string.h (strpbrk): Cast return to + char *. - * sysdeps/unix/sysv/linux/i386/brk.c: Use INTERNAL_SYSCALL instead - of asm. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. +2004-04-22 David Mosberger - * elf/dl-support.c [NEED_DL_SYSINFO]: Define and initialize - _dl_sysinfo. - [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed - code. - * elf/rtld.c [DL_NEED_SYSINFO]: Initialize _dl_sysinfo element of - _rtld_global. - [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed - code. - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]: - Check for AT_SYSINFO and set _dl_sysinfo appropriately. - * sysdeps/generic/ldsodefs.h (struct rtld_global) [NEED_DL_SYSINFO]: - Add _dl_sysinfo. + * sysdeps/unix/sysv/linux/ia64/Makefile (librt-routines): Mention + rt-sysdep. + * sysdeps/unix/sysv/linux/ia64/rt-sysdep.S: New file. -2002-12-18 Jakub Jelinek + * sysdeps/ia64/strcat.c: New file. + * sysdeps/ia64/strcat.S: Delete. - * misc/Versions [libc: GLIBC_2.3.1]: Move __libc_readv and - __libc_writev to... - [libc: GLIBC_PRIVATE]: ...here. - * sysvipc/Versions [libc: GLIBC_2.3.1]: Move __libc_msgrcv and - __libc_msgsnd to... - [libc: GLIBC_PRIVATE]: ...here. +2004-05-04 Jakub Jelinek -2002-12-18 Ulrich Drepper + * sysdeps/unix/sysv/linux/ia64/sysdep.S (USE___THREAD): Remove + defined. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Define ENTER_KERNEL macro. - Use it instead of directly int $0x80. - * sysdeps/unix/sysv/linux/i386/brk.c: Use ENTER_KERNEL. - * sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise. - * sysdeps/unix/sysv/linux/i386/mmap.S: Likewise. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/i386/socket.S: Likewise. - * sysdeps/unix/sysv/linux/i386/syscall.S: Likewise. +2004-04-23 Jakub Jelinek -2002-12-17 Ulrich Drepper + * sysdeps/ia64/fpu/libm_support.h (__libm_error_support): Add + libc_hidden_proto. Define to __GI___libm_error_support for + assembly going into libc.so. + * sysdeps/ia64/fpu/libc_libm_error.c (__libm_error_support): Add + libc_hidden_def. - * malloc/malloc.c (mALLOPt): Make sure malloc is initialized. + * include/libc-symbols.h (HIDDEN_BUILTIN_JUMPTARGET): Define. + * sysdeps/ia64/bcopy.S (bcopy): Use it for jump to memmove. - * elf/elf.h (AT_SYSINFO): New define. - * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Add support for - AT_SYSINFO. + * sysdeps/unix/sysv/linux/ia64/sysdep.S (__syscall_error): Access + gprel errno if RTLD_PRIVATE_ERRNO or __thread __libc_errno/errno + if USE___THREAD. -2002-12-17 Jakub Jelinek +2004-05-03 Jakub Jelinek - * sysdeps/unix/sysv/linux/alpha/syscalls.list (msgrcv, msgsnd): - Make cancelable. - * sysdeps/unix/sysv/linux/hppa/syscalls.list (msgrcv, msgsnd): + * sysdeps/unix/bsd/bits/fcntl.h (F_SETOWN, F_GETOWN): Define if + __USE_BSD or __USE_UNIX98. + * sysdeps/unix/bsd/ultrix4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * sysdeps/unix/bsd/bsd4.4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * sysdeps/unix/bsd/sun/sunos4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list (msgrcv, msgsnd): + * sysdeps/unix/common/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * sysdeps/unix/sysv/aix/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * sysdeps/unix/sysv/irix4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (msgrcv, msgsnd): + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list (msgrcv, msgsnd): + * sysdeps/unix/sysv/linux/cris/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/ia64/sigsuspend.c (__sigsuspend): Likewise. - - * malloc/thread-m.h (mutex_init, mutex_lock, mutex_trylock, - mutex_unlock): If not building NPTL, use __libc_maybe_call2 if - available, otherwise __libc_maybe_call. - * sysdeps/unix/sysv/linux/x86_64/recv.c: Add support for - cancellation handling. - * sysdeps/unix/sysv/linux/x86_64/send.c: Likewise. - -2002-12-17 Isamu Hasegawa - - * posix/regcomp.c (free_workarea_compile): Free the new member - ORG_INDICES. - (analyze): Initialize ORG_INDICES. - (duplicate_node_closure): Search for a existing node, which is - duplicated from the node ORG_DEST and satisfies the constraint - CONSTRAINT. And use it to avoid inifimite loop. - (search_duplicated_node): New function. - (duplicate_node): Store the index of the original node. - * posix/regex_internal.c (re_dfa_add_node): Realloc ORG_INDICES - if needed. - * posix/regex_internal.h (re_dfa_t): Add new members. - -2002-12-17 Ulrich Drepper - - * stdio-common/tst-fdopen.c: Undefine assert before redefining it. - -2002-12-16 Ulrich Drepper - - * sysdeps/posix/system.c (do_system): Add support for installation - of cancellation handlers. - * sysdeps/unix/sysv/linux/i386/system.c: New file. - - * stdlib/Makefile (tests): Add tst-system. - * stdlib/tst-system.c: New file. - - * sysdeps/unix/sysv/linux/i386/socket.S [NEED_CANCELLATION && - CENABLE]: Don't lose content of %ebx. - -2002-12-17 Jakub Jelinek - - * sysdeps/unix/sysv/linux/i386/socket.S: Use SINGLE_THREAD_P - macro instead of comparing %gs:MULTIPLE_THREADS_OFFSET directly. - -2002-12-16 Ulrich Drepper - - * sysdeps/posix/getaddrinfo.c (gaih_inet): If __nss_lookup_function - fails to return a function pointer don't use it. - -2002-12-16 Art Haas - - * io/ftw.c: Convert GCC extension initializer syntax to C99. - * iconvdata/iso-ir-165.c: Likewise. - * iconvdata/jis0208.c: Likewise. - * iconvdata/jis0212.c: Likewise. - -2002-12-16 Ulrich Drepper - - * sysdeps/unix/sysv/linux/syscalls.list: Add epoll_create, - epoll_ctl, and epoll_wait. - * sysdeps/unix/sysv/linux/Versions [libc: GLIBC_2.3.2]: Add - epoll_create, epoll_ctl, and epoll_wait. - * sysdeps/unix/sysv/linux/sys/epoll.h: New file. Written by - Davide Libenzi . - * sysdeps/unix/sysv/linux/Dist: Add sys/epoll.h. - * sysdeps/unix/sysv/linux/Makefile [subdir=misc] (sysdep_headers): - Add sys/epoll.h. - -2002-12-16 Art Haas - - * sysdeps/generic/bp-semctl.h: Convert GCC extension initializer - syntax to C99 - * sysdeps/unix/sysv/aix/settimer.c: Likewise. - * sysdeps/unix/sysv/aix/sleep.c: Likewise. - * sysdeps/unix/sysv/aix/usleep.c: Likewise. - -2002-12-16 Ulrich Drepper - - * stdio-common/Makefile (routines): Remove lockfile. Add - flockfile, ftrylockfile, and funlockfile. - * sysdeps/generic/lockfile.c: Removed. Each function has its own file. - * sysdeps/generic/flockfile.c: New file. - * sysdeps/generic/ftrylockfile.c: New file. - * sysdeps/generic/funlockfile.c: New file. - -2002-12-16 Jakub Jelinek - - * sysdeps/unix/sysv/linux/i386/socket.S: Use CENABLE and CDISABLE - macros instead of doing the calls directly. - * sysdeps/unix/make-syscalls.sh: Add ptw-*.$o target name to rules. - * Makerules ($(+sysdir_pfx)sysd-rules): Emit rules for ptw-% - targets. - -2002-12-16 Jakub Jelinek - - * sysdeps/i386/fpu/bits/mathinline.h: Backout last change. - * sysdeps/ieee754/bits/nan.h: Likewise. - - * sysdeps/unix/sysv/linux/ia64/syscalls.list (__syscall_open, - __syscall_wait4, __syscall_ioctl, __syscall_write): Add. - -2002-12-16 Roland McGrath - - * sunrpc/xdr_mem.c (xdrmem_inline): Fix argument type. - * sunrpc/xdr_rec.c (xdrrec_inline): Likewise. - * sunrpc/xdr_stdio.c (xdrstdio_inline): Likewise. - - * sysdeps/unix/sysv/linux/syscalls.list: Add getpmsg, putpmsg. - * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove s_getpmsg, - s_putpmsg. - * sysdeps/unix/sysv/linux/i386/getpmsg.c: File removed. - * sysdeps/unix/sysv/linux/i386/putpmsg.c: File removed. - * sysdeps/unix/sysv/linux/m68k/getpmsg.c: File removed. - * sysdeps/unix/sysv/linux/m68k/putpmsg.c: File removed. - * sysdeps/unix/sysv/linux/mips/getpmsg.c: File removed. - * sysdeps/unix/sysv/linux/mips/putpmsg.c: File removed. - * sysdeps/unix/sysv/linux/powerpc/getpmsg.c: File removed. - * sysdeps/unix/sysv/linux/powerpc/putpmsg.c: File removed. - -2002-12-13 Paul Eggert - - * sunrpc/rpc/xdr.h (struct XDR.xdr_ops.x_inline): 2nd arg - is now u_int, not int. - (struct XDR.x_handy): Now u_int, not int. - * sunrpc/xdr_mem.c: Include . - (xdrmem_getlong, xdrmem_putlong, xdrmem_getbytes, xdrmem_putbytes, - xdrmem_inline, xdrmem_getint32, xdrmem_putint32): - x_handy is now unsigned, not signed. - Do not decrement x_handy if no change is made. - (xdrmem_setpos): Check for int overflow. - * sunrpc/xdr_sizeof.c (x_inline): 2nd arg is now unsigned. - (xdr_sizeof): Remove cast that is now unnecessary, now that - x_handy is unsigned. - -2002-12-15 Art Haas - - * iconv/gconv_conf.c: Convert GCC extension initializer syntax to C99. - * iconvdata/gap.awk: Likewise. - * iconvdata/gen-8bit-gap-1.sh: Likewise. - * iconvdata/gen-8bit-gap.sh: Likewise. - * locale/C-address.c: Likewise. - * locale/C-collate.c: Likewise. - * locale/C-ctype.c: Likewise. - * locale/C-identification.c: Likewise. - * locale/C-measurement.c: Likewise. - * locale/C-messages.c: Likewise. - * locale/C-monetary.c: Likewise. - * locale/C-name.c: Likewise. - * locale/C-numeric.c: Likewise. - * locale/C-paper.c: Likewise. - * locale/C-telephone.c: Likewise. - * locale/C-time.c: Likewise. - * nscd/connections.c: Likewise. - * nscd/grpcache.c: Likewise. - * nscd/hstcache.c: Likewise. - * nscd/pwdcache.c: Likewise. - * stdio-common/vfprintf.c: Likewise. - * stdlib/random.c: Likewise. - * sysdeps/generic/siglist.c: Likewise. - * sysdeps/i386/fpu/bits/mathinline.h: Likewise. - * sysdeps/ieee754/bits/nan.h: Likewise. - * sysdeps/posix/sprofil.c: Likewise. - * sysdeps/unix/sysv/linux/sleep.c: Likewise. - * sysdeps/unix/sysv/linux/sysctl.c: Likewise. - * sysdeps/unix/sysv/linux/usleep.c: Likewise. - -2002-12-15 Roland McGrath - - * sysdeps/unix/sysv/linux/readv.c (do_readv): Use prototype defn. - - * sysdeps/unix/sysv/linux/wait.c: Don't include or - here, no need for it. - * sysdeps/unix/sysv/linux/waitpid.c: Likewise. - - * sysdeps/unix/sysv/linux/i386/fcntl.c (do_fcntl): Take ARG as void * - parameter, not varargs parameter. - - * sysdeps/generic/sysdep-cancel.h (LIBC_CANCEL_RESET): Evaluate the - argument so it's not an unused variable. - - * resolv/resolv.h (__p_key_syms, __p_cert_syms, __p_class_syms, - __p_type_syms, __p_rcode_syms): Remove decls, never really intended - for users. - - * resolv/Versions (libresolv: GLIBC_2.3.2): New set, add __p_rcode. - -2002-12-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/fcntl.c (do_fcntl): This is the - original __libc_fcntl code. Just renamed. - -2002-12-15 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/clone.S: Make inline syscall to _exit. - -2002-12-14 Olaf Hering - - * sysdeps/powerpc/bits/setjmp.h: Include . - * sysdeps/powerpc/powerpc64/setjmp.S: Fix typo in r18 load. - -2002-12-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/libc_fatal.c: New file. - - * sysdeps/generic/sysdep-cancel.h: Add dummy definitions for - SINGLE_THREAD_P, LIBC_CANCEL_ASYNC, and LIBC_CANCEL_RESET. - - * sysdeps/unix/sysv/linux/open64.c: New file. - - * sysdeps/generic/pselect.c: Add support for cancellation handling. - * sysdeps/posix/open64.c: Likewise. - * sysdeps/posix/sigpause.c: Likewise. - * sysdeps/posix/sigwait.c: Likewise. - * sysdeps/posix/system.c: Likewise. - * sysdeps/posix/waitid.c: Likewise. - * sysdeps/unix/sysv/linux/accept.S: Likewise. - * sysdeps/unix/sysv/linux/connect.S: Likewise. - * sysdeps/unix/sysv/linux/llseek.c: Likewise. - * sysdeps/unix/sysv/linux/msgrcv.c: Likewise. - * sysdeps/unix/sysv/linux/msgsnd.c: Likewise. - * sysdeps/unix/sysv/linux/poll.c: Likewise. - * sysdeps/unix/sysv/linux/pread.c: Likewise. - * sysdeps/unix/sysv/linux/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/readv.c: Likewise. - * sysdeps/unix/sysv/linux/recv.S: Likewise. - * sysdeps/unix/sysv/linux/recvfrom.S: Likewise. - * sysdeps/unix/sysv/linux/recvmsg.S: Likewise. - * sysdeps/unix/sysv/linux/send.S: Likewise. - * sysdeps/unix/sysv/linux/sendmsg.S: Likewise. - * sysdeps/unix/sysv/linux/sendto.S: Likewise. - * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. - * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. - * sysdeps/unix/sysv/linux/sigwait.c: Likewise. - * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. - * sysdeps/unix/sysv/linux/tcdrain.c: Likewise. - * sysdeps/unix/sysv/linux/wait.c: Likewise. - * sysdeps/unix/sysv/linux/waitpid.c: Likewise. - * sysdeps/unix/sysv/linux/writev.c: Likewise. - * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/socket.S: Likewise. - -2002-12-14 Jakub Jelinek - - * sysdeps/generic/sysdep-cancel.h: New file. - * sysdeps/unix/make-syscalls.sh: Handle C at start of args as - cancelable syscall. - * sysdeps/unix/inet/syscalls.list (accept, connect, recv, recvfrom, - recvmsg, send, sendmsg, sendto): Make cancelable. - * sysdeps/unix/mman/syscalls.list (msync): Likewise. - * sysdeps/unix/sysv/linux/alpha/syscalls.list (llseek, pread, - pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, - sendto, osf_select): Likewise. - * sysdeps/unix/sysv/linux/hppa/syscalls.list (accept, connect, recv, - recvfrom, recvmsg, send, sendmsg, sendto): Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list (llseek, pread, - pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, - sendto): Likewise. - * sysdeps/unix/sysv/linux/mips/syscalls.list (accept, connect, recv, - recvfrom, recvmsg, send, sendmsg, sendto): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (llseek, pread, - pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, - sendto): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (llseek, pread, - pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, - sendto, select): Likewise. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list (llseek, pread, - pwrite, accept, connect, recvfrom, recvmsg, sendmsg, sendto): + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/syscalls.list (creat, nanosleep, pause, - select, fcntl): Likewise. - * sysdeps/unix/sysv/syscalls.list (pause, poll): Likewise. - * sysdeps/unix/syscalls.list (close, fcntl, fsync, lseek, open, - read, readv, select, sigsuspend, write, writev): Likewise. - -2002-12-14 Jakub Jelinek - - * dirent/bug-readdir1.c: Include unistd.h. - -2002-12-13 Jakub Jelinek - - * locale/programs/locale.c: Include locarchive.h. - (ARCHIVE_NAME): Define. - (write_archive_locales): New function. - (write_locales): Use it. Ensure the same locale is not printed - multiple times in verbose mode. - Mode LC_IDENTIFICATION and LC_CTYPE printing into... - (print_LC_IDENTIFICATION, print_LC_CTYPE): ... these helper - functions. - (struct nameent): New type. - (nameentcmp): New function. - -2002-12-14 Jakub Jelinek - - * posix/regex_internal.c (re_string_context_at): Guard wide char - code with #ifdef RE_ENABLE_I18N. - -2002-11-22 Paolo Bonzini - - * posix/regcomp.c (regcomp): __re_compile_fastmap -> re_compile_fastmap - -2002-12-13 Roland McGrath - - * posix/bug-regex15.c: New file. - * posix/Makefile (tests): Add it. - - * test-skeleton.c (TEST_DATA_LIMIT): New macro, default to 64MB. - (main): Set RLIMIT_DATA limit to TEST_DATA_LIMIT (or lower if need be). - -2002-12-13 Ulrich Drepper - - * elf/dl-misc.c (_dl_debug_vdprintf): Don't depend on 5-digit PIDs. - - * misc/syslog.c (log_cleanup): Don't use parameter in - __libc_lock_unlock call, use syslog_lock directly. Adjust callers to - pass NULL instead of a pointer to syslog_lock. - -2002-12-12 Ulrich Drepper - - * iconvdata/Makefile: iconv-rules: Add definition to use gconv.map - linker map for all iconv modules. - (distribute): Add gconv.map. - * iconvdata/gconv.map: New file. - - * elf/Makefile: Also check all iconv modules for text relocations. - - * stdlib/Makefile: Remove code to automatically import GMP. - - * elf/Makefile (tests): Add rules to build and run check-textrel. - * elf/check-textrel.c: New file. - - * sysdeps/unix/sysv/linux/i386/sysdep.h (SETUP_PIC_REG): Add .size - directive. - -2002-12-11 Jakub Jelinek - - * io/test-utime (main): If stnow.st[am]time is wrong, print it and - not st.st[am]time. - -2002-04-30 Bruno Haible - - * intl/loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT to - the encoding if it already has slashes. - Reported by Perry Rapp . - -2002-12-11 Roland McGrath - - * csu/Makefile ($(objpfx)elf-init.oS): Remove target, braino. - (CPPFLAGS-elf-init.oS, CFLAGS-elf-init.oS): New variables. - Turn off PIC for compiling this file. - -2002-12-11 Ulrich Drepper - - * malloc/thread-m.h: Remove thread_id type and MUTEX_INITIALIZER - definitions. Not needed. - [_LIBC]: Use definitions from libc-lock.h instead of referencing - pthread routines directly. - * malloc/arena.c (ptmalloc_unlock_all2): Don't add (void) to - mutex_init calls. - (arena_get2): Don't look at return value of mutex_lock. - -2002-12-11 Roland McGrath - - * csu/Makefile ($(objpfx)elf-init.oS): New target, just clone - elf-init.o instead of compiling a PIC version. - -2002-12-11 Bruno Haible - - * intl/gettext.h: Renamed to ... - * intl/gmo.h: ... here. - * intl/Makefile (distribute): Add gmo.h, remove gettext.h. - * intl/gettextP.h: Update. - * intl/loadmsgcat.c: Update. - - * intl/gettextP.h (PARAMS): Make more portable. - (attribute_hidden): Define as empty macro if not already defined. - * intl/hash-string.h (PARAMS): Make more portable. - * intl/loadinfo.h (PARAMS): Likewise. - * intl/plural-exp.h (PARAMS): Likewise. - (attribute_hidden): Move definition near the definition of - internal_function. - - * intl/gettextP.h (_nl_locale_name) [!_LIBC]: New declaration. - * intl/plural-exp.h (plural_eval) [!_LIBC]: New declaration. - -2002-07-13 Bruno Haible - - * intl/dcigettext.c (freea): New macro. - (FREE_BLOCKS): Free also the registered blocks. - (DCIGETTEXT): Free the 'search' variable. - Reported by Andreas Fischer . - -2002-04-27 Bruno Haible - - * intl/gettextP.h [! _LIBC]: Use prefix libintl_ instead of suffix __. - * intl/dcigettext.c: Likewise. - * intl/dcgettext.c: Likewise. - * intl/dgettext.c: Likewise. - * intl/gettext.c: Likewise. - * intl/dcngettext.c: Likewise. - * intl/dngettext.c: Likewise. - * intl/ngettext.c: Likewise. - * intl/textdomain.c: Likewise. - * intl/bindtextdom.c: Likewise. - * intl/plural-exp.h: Likewise. - -2002-01-02 Bruno Haible - - * intl/loadmsgcat.c (_nl_init_domain_conv): Use PARAMS in extern decl. - -2001-04-30 Bruno Haible - - * intl/dcigettext.c (getuid, getgid, geteuid, getegid): Provide - default macro definitions. Needed for mingw32. - -2002-12-10 Ulrich Drepper - - * sysdeps/i386/bits/byteswap.h (__bswap_64): Apply - __builtin_constant_p to macro parameter. - - * sysdeps/generic/sigpause.c: Define all functions as weak. - * sysdeps/posix/sigpause.c: Likewise. - - * elf/tst-tls7.c (do_test): Adjustments for l_tls_modid being of - type size_t. - -2002-12-10 Jakub Jelinek - - * elf/tst-array1.c (preinit_array, init_array, fini_array): - Explicitly align the array to sizeof (void *). - * elf/tst-array2dep.c (init_array, fini_array): Likewise. - - * include/libc-symbols.h: Fix a comment typo. - - * sysdeps/unix/sysv/linux/alpha/select.S (__libc_select): New alias. - * sysdeps/unix/sysv/linux/alpha/sigsuspend.S (__libc_sigsuspend): + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/ia64/sigsuspend.c (__libc_sigsuspend): + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c - (__libc_sigsuspend): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c - (__libc_sigsuspend): Likewise. - * sysdeps/generic/creat.c (__libc_creat): Renamed from creat. - (creat): New weak alias. - -2002-12-10 Roland McGrath - - * manual/libc-texinfo.sh: Emit @set ADD-ON for each ADD-ON that - contributes a manual chapter. - * manual/signal.texi (Process Signal Mask): Use @ifset linuxthreads - around xref to it. - - * sysdeps/unix/sysv/linux/dl-librecon.h (EXTRA_LD_ENVVARS): Refer to - and move contents to ... - (EXTRA_LD_ENVVARS_LINUX): ... this new macro. Add break for nonmatch. - * sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS): Use - it instead of duplicating its contents. - (EXTRA_LD_ENVVARS): Likewise. Add break for nonmatch. - -2002-12-09 Jakub Jelinek - - * elf/dl-support.c (_dl_non_dynamic_init): Add DL_OSVERSION_INIT if - defined. - * sysdeps/unix/sysv/linux/dl-librecon.h (_dl_osversion_init): New - function. - (EXTRA_LD_ENVVARS): Use it. - (DL_OSVERSION_INIT): Define. - * sysdeps/unix/sysv/linux/i386/dl-librecon.h: Include linux - dl-librecon.h. - (EXTRA_LD_ENVVARS): Undef before defining. Use _dl_osversion_init. - -2002-12-10 Ulrich Drepper - - * Versions.def: No new symbols in 2.3.1, but some new ones in 2.3.2. - - * sysdeps/unix/closedir.c (__closedir): Remove __libc_lock_lock - call. It is not allowed to destroy pthread mutexes which are - still in use even though it is safe for our implementations. If - somebody still uses the descriptor it is a bug. - -2002-12-09 Richard Henderson - - * csu/abi-note.S: Use .p2align, not .align. - -2002-12-09 Ulrich Drepper - - * sysdeps/unix/sysv/linux/syscalls.list: Add __libc_creat and - __libc_select aliases. - - * sysdeps/unix/sysv/linux/sigwaitinfo.c: Define __libc_sigwaitinfo - alias. - - * sysdeps/unix/sysv/linux/sigwait.c: Define __libc_sigwait alias. - - * sysdeps/unix/sysv/linux/sigsuspend.c: Define __libc_sigsuspend alias. - - * sysdeps/unix/sysv/linux/poll.c: Define __libc_poll alias. - - * sysdeps/unix/syscalls.list: Define __libc_select alias. - - * sysdeps/posix/waitid.c: Define __libc_waitid alias. - - * sysdeps/posix/sigpause.c: Define __libc_sigpause and - __libc___xpg_sigpause aliases. - - * sysdeps/generic/pselect.c: Define __libc_pselect alias. - - * misc/error.c: Remove use of USE_IN_LIBIO. - -2002-12-08 Roland McGrath - - * elf/Makefile (tests): Uncomment tst-array[123]. - * Makeconfig (CPPFLAGS-.oS): Add -DLIBC_NONSHARED=1. - * csu/elf-init.c: New file. - * csu/Makefile (routines, static-only-routines): Add elf-init. - * sysdeps/alpha/elf/start.S: Use __libc_csu_init in place of _init - and __libc_csu_fini in place of _fini. - * sysdeps/arm/elf/start.S: Likewise. - * sysdeps/cris/elf/start.S: Likewise. - * sysdeps/hppa/elf/start.S: Likewise. - * sysdeps/i386/elf/start.S: Likewise. - * sysdeps/ia64/elf/start.S: Likewise. - * sysdeps/m68k/elf/start.S: Likewise. - * sysdeps/mach/hurd/powerpc/static-start.S: Likewise. - * sysdeps/mips/elf/start.S: Likewise. - * sysdeps/powerpc/powerpc32/elf/start.S: Likewise. - * sysdeps/powerpc/powerpc64/elf/start.S: Likewise. - * sysdeps/s390/s390-32/elf/start.S: Likewise. - * sysdeps/s390/s390-64/elf/start.S: Likewise. - * sysdeps/sh/elf/start.S: Likewise. - * sysdeps/sparc/sparc32/elf/start.S: Likewise. - * sysdeps/sparc/sparc64/elf/start.S: Likewise. - * sysdeps/x86_64/elf/start.S: Likewise. - - * sysdeps/pthread/aio_notify.c (notify_func_wrapper): Take a malloc'd - struct containing function ptr and value, free it. - (__aio_notify_only): Allocate that and copy values from SIGEV into it. - It's not safe to let the new thread use the SIGEV pointer. - -2001-10-20 Paul Eggert - - * misc/error.c (strerror_r): Do not declare unless [!_LIBC]. - Do not check for HAVE_DECL_STRERROR_R missing unless STRERROR_R_CHAR_P. - Use strerror_r that is only a macro, even if it is not a function. - (strerror): Check for HAVE_DECL_STRERROR before declaring. - (private_strerror): Use prototypes, not old-style function definition. - (print_errno_message): New function. - Support the POSIX 'int'-flavored strerror_r, as well as the traditional - char*-flavored one. - (error_tail, error, error_at_line): Use it. - -2002-12-07 Carlos O'Donell - - * sysdeps/unix/sysv/linux/hppa/bits/shm.h: Added SHMLBA #define. - -2002-12-08 Ulrich Drepper - - * scripts/output-format.sed: Fix bug in one of the s expressions - which used / for one too many things. - - * include/unistd.h: Declare __libc_close. - -2002-12-07 Ulrich Drepper - - * sysdeps/generic/bits/stdio-lock.h (_IO_lock_trylock): New define. - -2002-12-07 Roland McGrath - - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Reintroduce changes - from 2002-12-06, but remove unnecessary memset call without removing - necessary copy of initialization image. - - * Makerules ($(common-objpfx)format.lds): New target. - (common-generated): Add it. - ($(inst_libdir)/libc.so): Depend on that, and cat it into the result. - * scripts/output-format.sed: New file. - * Makefile (distribute): Add it. - -2002-12-07 Ulrich Drepper - - * sysdeps/generic/libc-tls.c: Include . - Reported by Art Haas . - -2002-12-07 Kenneth W. Chen - - * sysdeps/ia64/strncpy.S (strncpy): Clear ar.ec. Fix .recovery4. - -2002-12-07 Jakub Jelinek - - * string/test-strncpy.c (do_random_tests): Improve test coverage. - -2002-12-06 Ulrich Drepper - - * test-skeleton.c (timeout_handler): Allow expected signal to be - SIGALRM. - - * wctype/wcfuncs.c: Add libc_hidden_def for iswalnum. - - * sysdeps/posix/raise.c: Add libc_hidden_def for raise. - -2002-12-07 Jakub Jelinek - - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h [RTLD_PRIVATE_ERRNO] - (SYSCALL_ERROR_HANDLER): Fix a pasto. - Reported by Jeff Bailey . - -2002-12-06 Ulrich Drepper - - * sysdeps/generic/libc-tls.c: Undo last patch. - - * include/wctype.h: Define iswalnum with libc_hidden_proto. - - * include/signal.h: Define raise with libc_hidden_proto. - - * sysdeps/unix/sysv/linux/fexecve.c (fexecve): Use __snprintf and - __execve instead of snprintf and execve. - - * sysdeps/x86_64/fpu/libm-test-ulps: Relax errors for float and double - again a bit. - -2002-12-06 Jakub Jelinek - - * posix/Makefile (annexc.out): Add -I../dir for all sorted-dirs. - * posix/annexc.c (fmt, testfmt): Remove -D_LIBC. - -2002-12-06 Ulrich Drepper - - * misc/syslog.c (log_cleanup): New function. - (openlog): Use log_cleanup instead of __libc_mutex_unlock. - (closelog): Likewise. - - * elf/dl-close.c: Use __rtld_lock_* macros instead of __libc_lock_*. - * elf/dl-iteratephdr.c: Likewise. - * elf/dl-lookup.c: Likewise. - * elf/dl-misc.c: Likewise. - * elf/dl-open.c: Likewise. - * elf/dl-support.c: Likewise. - * elf/rtld.c: Likewise. - * sysdeps/generic/ldsodefs.h: Likewise. - * sysdeps/generic/bits/libc-lock.h: Define __rtld_lock_* macros. - * sysdeps/mach/bits/libc-lock.h: Likewise. - * sysdeps/mach/hurd/bits/libc-lock.h: Likewise. - -2002-12-06 Roland McGrath - - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Cope with zero ALIGN. - - * malloc/hooks.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))] - (malloc_starter, memalign_starter, free_starter): Don't define these. - * malloc/malloc.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))]: - Don't declare them either. - * malloc/arena.c (ptmalloc_init) [_LIBC && USE_TLS]: Don't call - __pthread_initialize, so no need to set hooks to *_starter. - (ptmalloc_init_minimal): New function, broken out of ptmalloc_init. - [_LIBC && SHARED && USE_TLS && !USE___THREAD] - (__libc_malloc_pthread_startup): New function. - * malloc/Versions (libc: GLIBC_PRIVATE): New set, add that function. - - * malloc/hooks.c (memalign_starter): New function. - * malloc/malloc.c: Declare it. - * malloc/arena.c (save_memalign_hook): New variable. - (ptmalloc_init): Set __memalign_hook to memalign_starter. - - * elf/dl-minimal.c (free): Clear the memory. - (calloc): Just call malloc, knowing all memory it returns is cleared. - - * sysdeps/generic/dl-tls.c (allocate_dtv): Use calloc instead of - malloc and memset; calloc can avoid the zeroing when redundant. - (_dl_tls_setup): Likewise. - * elf/dl-load.c (decompose_rpath): Likewise. - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Comment out memset - call, since memory from sbrk at startup is already zero. - - * elf/rtld.c (_dl_start, dl_main): TLS_INIT_TP macro now returns an - error string for failure, null for success. Update callers. - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Likewise. - * elf/dl-load.c (_dl_map_object_from_fd): Likewise. - -2002-12-05 Jakub Jelinek - - * sysdeps/unix/sysv/linux/x86_64/syscalls.list (sendfile): Change - args to i:iipi. - (readahead): Change args to i:iii. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list (readahead): - Change args to i:iii. - * sysdeps/unix/sysv/linux/mips/syscalls.list (readahead): Change - args to i:iiii. - -2002-12-05 Roland McGrath - - * stdlib/cxa_finalize.c (__cxa_finalize): When given a null argument, - call all functions rather than none. - Reported by Mark P. Mitchell . - -2002-12-04 Roland McGrath - - * locale/localeinfo.h [NL_CURRENT_INDIRECT]: Use attribute_tls_model_ie - on _nl_current_LC_* variables. - -2002-12-05 Ulrich Drepper - - * dirent/bug-readdir1.c (main): Don't call closedir, just close - the file descriptor. This is testing what the bug report was about. - -2002-12-04 Ulrich Drepper - - * po/be.po: New file. - - * argp/Makefile (tests): Add tst-argp1. - - * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: (struct sigevent): - Change type of _attribute to void*. - * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. - -2002-12-04 Roland McGrath - - * sysdeps/generic/ldsodefs.h (struct rtld_global): Move all [USE_TLS] - members to the end, so a libpthread compiled with !USE_TLS will still - find other members properly. - - * sysdeps/i386/i486/bits/string.h (__strcpy_g): Add dummy output - operand for DEST memory. Fix dummy input operand to use SRC. - Reported by Davin McCall . - - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Account for TCB - alignment when initializing the DTV entry. - - * elf/dl-load.c (_dl_map_object_from_fd): If we hit a TLS segment - when TLS has not been set up, try to set it up if we can. - * elf/tst-tls4.c: Revert last change. - * elf/tst-tls5.c: Likewise. - * elf/tst-tls6.c: Likewise. - * elf/tst-tls7.c: Likewise. - * elf/tst-tls8.c: Likewise. - * elf/tst-tls9.c: Likewise. - - * sysdeps/generic/dl-tls.c [SHARED] (_dl_tls_setup): New function. - * sysdeps/generic/ldsodefs.h: Declare it. - * elf/Versions (ld: GLIBC_PRIVATE): Add it. - * sysdeps/generic/libc-tls.c (init_slotinfo): New static inline - function, broken out of __libc_setup_tls. - (init_static_tls): Likewise. - (__libc_setup_tls): Call them. - (_dl_tls_setup): New function, uses new subroutines. - - * elf/dl-close.c (free_slotinfo): Make argument pointer to pointer. - Clear the pointer when returning true. - (libc_freeres_fn) [SHARED]: If GL(dl_initial_dtv) is null, free the - first element of the slotinfo list too. - - * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Define only if - [SHARED]. - - * sysdeps/generic/ldsodefs.h (_dl_next_tls_modid): Declare as hidden. - (_dl_determine_tlsoffset): Likewise. - - * elf/rtld.c (_dl_initial_error_catch_tsd): Renamed from - startup_error_tsd, made global. - (dl_main): Update initialization. - * elf/dl-tsd.c: Likewise. - * sysdeps/generic/ldsodefs.h: Declare it. - -2002-12-03 Ulrich Drepper - - * manual/texinfo.tex: Update from latest upstream version. - -2002-12-03 Roland McGrath - - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Include static TLS - area surplus in calculation for sbrk call. - - * iconvdata/cp1125.c: New file. - * iconvdata/Makefile (distribute): Add it. - (modules): Add CP1125. - (gen-8bit-gap-modules): Add cp1125. - * iconvdata/gconv-modules: Add CP1125, alias RUSCII. - * iconvdata/tst-tables.sh: Add CP1125 to the list to test. - -2002-12-03 Andreas Jaeger - - * sysdeps/x86_64/fpu/libm-test-ulps: Regenerated. - -2002-12-03 Ulrich Drepper - - * sysdeps/posix/system.c (do_system): Make signal handler - installation thread safe. - -2002-12-02 Roland McGrath - - * sysdeps/unix/sysv/linux/alpha/syscalls.list (readahead): Change - caller from EXTRA to -. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. - -2002-12-02 Carlos O'Donell - - * sysdeps/hppa/fpu/fesetround.c (fesetround): Use ~FE_DOWNWARD so both - bits of RM are cleared. - -2002-12-02 Roland McGrath - - * elf/tst-tls4.c: Define an unused TLS variable here, so that no lazy - TLS setup is required. - * elf/tst-tls5.c: Likewise. - * elf/tst-tls6.c: Likewise. - * elf/tst-tls7.c: Likewise. - * elf/tst-tls8.c: Likewise. - * elf/tst-tls9.c: Likewise. - - * elf/rtld.c (dl_main): Remove [! SHARED] conditional from - `if (GL(dl_tls_max_dtv_idx) > 0)' tests for doing TLS setup. - * elf/dl-close.c (libc_freeres_fn): Check GL(dl_tls_dtv_slotinfo_list) - for being null before calling free_slotinfo. - * elf/dl-load.c (_dl_map_object_from_fd) [SHARED]: For PT_TLS in - dynamic loading, bail with error if GL(dl_tls_max_dtv_idx) is zero. - -2002-11-30 Bruno Haible - - * iconv/gconv.h (__gconv_btowc_fct): New typedef. - (struct __gconv_step): New field __btowc_fct. - * wcsmbs/btowc.c (__btowc): Use the __btowc_fct shortcut if possible. - * iconv/gconv_int.h (__BUILTIN_TRANSFORM): Renamed from - __BUILTIN_TRANS. - (__gconv_btwoc_ascii): New declaration. - * iconv/gconv_simple.c (BUILTIN_TRANSFORMATION): Add BtowcFct argument. - (__gconv_btwoc_ascii): New function. - * iconv/gconv_builtin.h: Add BtowcFct argument to all - BUILTIN_TRANSFORMATION invocations. - * iconv/gconv_conf.c (BUILTIN_TRANSFORMATION): Add BtowcFct argument. - * iconv/iconvconfig.c (BUILTIN_TRANSFORMATION): Likewise. - * iconv/gconv_builtin.c (map): New field btowc_fct. - (BUILTIN_TRANSFORMATION): Add BtowcFct argument. Use it to initialize - btowc_fct field. - (__gconv_get_builtin_trans): Initialize __btowc_fct field. - * iconv/gconv_cache.c (find_module): Initialize __btowc_fct field. - * iconv/gconv_db.c (gen_steps, increment_counter): Likewise. - * wcsmbs/wcsmbsload.c (to_wc, to_mb): Likewise. - * iconv/skeleton.c: Document STORE_REST and FROM_ONEBYTE. - (gconv_init): Initialize __btowc_fct field. - Undefine EXTRA_LOOP_ARGS and FROM_ONEBYTE at the end. - * iconv/loop.c: Document ONEBYTE_BODY. - (gconv_btowc, FROM_ONEBYTE): Define if ONEBYTE_BODY is defined. - Undefine ONEBYTE_BODY at the end. - * iconvdata/8bit-generic.c (ONEBYTE_BODY): New macro. - * iconvdata/8bit-gap.c (NONNUL): New macro. - (BODY for FROM_LOOP): Use it. - (ONEBYTE_BODY): New macro. - * iconvdata/isiri-3342.c (HAS_HOLES): Set to 1. - (NONNUL): New macro. - * iconvdata/ansi_x3.110.c (ONEBYTE_BODY): New macro. - * iconvdata/armscii-8.c (ONEBYTE_BODY): New macro. - * iconvdata/cp1255.c (ONEBYTE_BODY): New macro. - * iconvdata/cp1258.c (ONEBYTE_BODY): New macro. - * iconvdata/tcvn5712-1.c (ONEBYTE_BODY): New macro. - * iconvdata/big5.c (ONEBYTE_BODY): New macro. - * iconvdata/big5hkscs.c (ONEBYTE_BODY): New macro. - * iconvdata/euc-cn.c (ONEBYTE_BODY): New macro. - * iconvdata/euc-jp.c (ONEBYTE_BODY): New macro. - * iconvdata/euc-jisx0213.c (ONEBYTE_BODY): New macro. - * iconvdata/euc-kr.c (ONEBYTE_BODY): New macro. - * iconvdata/euc-tw.c (ONEBYTE_BODY): New macro. - * iconvdata/gbk.c (ONEBYTE_BODY): New macro. - * iconvdata/gb18030.c (ONEBYTE_BODY): New macro. - * iconvdata/ibm932.c: Include . - (TRUE, FALSE): Remove macros. - (BODY for FROM_LOOP): Remove unused variable rp1. - (ONEBYTE_BODY): New macro. - (BODY for TO_LOOP): Use bool. - * iconvdata/ibm932.h (__ibm932sb_to_ucs4_idx): Remove array. - * iconvdata/ibm943.c: Include . - (TRUE, FALSE): Remove macros. - (BODY for FROM_LOOP): Remove unused variable rp1. - (ONEBYTE_BODY): New macro. - (BODY for TO_LOOP): Use bool. - * iconvdata/ibm943.h (__ibm943sb_to_ucs4_idx): Remove array. - * iconvdata/iso8859-1.c (ONEBYTE_BODY): New macro. - * iconvdata/iso_6937-2.c (ONEBYTE_BODY): New macro. - * iconvdata/iso_6937.c (ONEBYTE_BODY): New macro. - * iconvdata/johab.c (ONEBYTE_BODY): New macro. - * iconvdata/sjis.c (ONEBYTE_BODY): New macro. - * iconvdata/shift_jisx0213.c (ONEBYTE_BODY): New macro. - * iconvdata/t.61.c (ONEBYTE_BODY): New macro. - * iconvdata/uhc.c (ONEBYTE_BODY): New macro. - * iconvdata/gbbig5.c: Tweak comment. - -2002-12-02 Ulrich Drepper - - * po/fi.po: Update from translation team. - -2002-12-01 Roland McGrath - - * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): Fix condition - testing getdents64 return value. - - * scripts/versions.awk: Don't pass -n flag to sort command. - - * posix/bug-regex13.c: Include . - - * sysdeps/generic/libc-start.c (__libc_start_main): Do - DL_SYSDEP_OSCHECK here. - * sysdeps/unix/sysv/linux/init-first.c (init): Not here. - * sysdeps/unix/sysv/linux/dl-osinfo.h: Include . - - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Bail if - argument TCBSIZE <= TLS_INIT_TCB_SIZE, not just if it's zero. - - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Check l_tls_offset - instead of l_type to decide whether to use TLS_DTV_UNALLOCATED. - - * include/link.h: Comment typo fix. - -2002-12-01 Roland McGrath - - * sysdeps/mach/hurd/bits/posix_opt.h (_POSIX_FSYNC): Set to 200112L. - (_POSIX_SPAWN, _POSIX_MAPPED_FILES, _POSIX_MEMLOCK_RANGE, - _POSIX_MEMORY_PROTECTION): Likewise. - (_POSIX_POLL, _POSIX_SELECT): Removed. - -2002-11-28 Ulrich Drepper - - * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define macros which - require it to 200112L. Remove _POSIX_POLL and _POSIX_SELECT. - -2002-11-28 Jakub Jelinek - - * sysdeps/unix/alpha/sysdep.S: Change defined(USE___THREAD) to - USE___THREAD. - * sysdeps/unix/sysv/linux/alpha/sysdep.h (inline_syscall*): Avoid - "=v" constraints. - -2002-11-28 Ulrich Drepper - - * sysdeps/unix/sysv/linux/x86_64/vfork.S: Don't trash the CPU's - branch prediction buffers by using unpaired call/ret. - -2002-11-27 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Fix typo in - first parameters constraint string. - (ASMFMT_3): Likewise. Patch by stefan.lauterbach@mincom.de. - -2002-11-27 Isamu Hasegawa - - * posix/regcomp.c (parse_expression): Set the bit since the back - reference is used in the regular expression. - * posix/regex_internal.c (re_node_set_init_1): Make it clean in case - of malloc failure. - (re_node_set_init_copy): Likewise. - * posix/regex_internal.h (state_array_t): New structure. - (re_sub_match_last_t): Likewise. - (re_sub_match_top_t): Likewise. - (re_match_context_t): Add new members. - (re_dfa_t): Likewise. - * posix/regexec.c (re_search_internal): Invoke prune_impossible_nodes - to check the matching is really correct, and retry if failed. - Move the routin pruning the impossible nodes from here, ... - (prune_impossible_nodes): To this function. - (check_matching): Invoke check_subexp_matching_top, and replace - redundant checking with transit_state_bkref invocation. - (proceed_next_node): Replace strncmp with memcmp. Reported by - Paolo Bonzini . - (update_cur_sifted_state): Remove search_subexp invocation. - (search_subexp): Remove this function. - (check_dst_limits_calc_pos): Use search_cur_bkref_entry for - optimization. - (sift_states_bkref): Use search_cur_bkref_entry for optimization. - Remove unused invocation of match_ctx_add_entry. - (transit_state): Invoke check_subexp_matching_top. - (check_subexp_matching_top): New function. - (transit_state_bkref): Remove unused array. - Merge transit_state_bkref_loop. - (transit_state_bkref_loop): Use get_subexp instead of - sift_states_backward. Use search_cur_bkref_entry for optimization. - Merge this function to transit_state_bkref. - (get_subexp): New function. - (get_subexp_sub): Likewise. - (find_subexp_node): Likewise. - (check_arrival): Likewise. - (check_arrival_expand_ecl): Likewise. - (check_arrival_expand_ecl_sub): Likewise. - (expand_bkref_cache): Likewise. - (match_ctx_init): Initialize new members. - (match_ctx_clean): New function. - (match_ctx_free): Release new members. - (match_ctx_free_subtops): New function. - (match_ctx_add_entry): Fix indent. - (search_cur_bkref_entry): New function. - (match_ctx_add_subtop): Likewise. - (match_ctx_add_sublast): Likewise. - -2002-11-25 Ulrich Drepper - - * iconv/Makefile (tests): Remove tst-iconv4.c - * iconv/tst-iconv4.c: Moved to... - * iconvdata/tst-iconv4.c: ...here. New file. - * iconvdata/Makefile (tests): Add tst-iconv4. Add dependencies. - -2002-11-25 Roland McGrath - - * inet/test-ifaddrs.c (main: addr_string): Handle null SA. - Grok AF_LINK if defined. - From Momchil Velikov . - - * sysdeps/gnu/ifaddrs.c (getifaddrs): If ioctl fails for netmask, - brdaddr, or dstaddr, just set those pointers to null and don't fail. - Reported by Momchil Velikov . - - * sysdeps/generic/ifreq.h (__if_nextreq) [_HAVE_SA_LEN]: If sa_len - is > sizeof IFR->ifa_addr, advance past the whole longer length. - (__ifreq): Count up NIFS that way too. - Reported by Momchil Velikov . - - * sysdeps/mach/hurd/lchmod.c: Include . - - * sysdeps/mach/hurd/i386/init-first.c: Include - and . - -2002-11-24 Ulrich Drepper - - * elf/elf.h (EM_ST19): Fix typo. - -2002-11-25 Jakub Jelinek - - * include/errno.h (__set_errno): Define as errno = val - unconditionally. - -2002-11-24 Roland McGrath - - * sysdeps/posix/readv.c: Include , use __set_errno macro. - * sysdeps/posix/writev.c: Likewise. - From Momchil Velikov . - - * elf/dl-error.c [! _LIBC_REENTRANT]: Use a static variable instead of - calling *GL(dl_error_catch_tsd) for a thread-local location. - * elf/rtld.c (startup_error_tsd): Conditionalize on [_LIBC_REENTRANT]. - (dl_main): Same for GL(dl_error_catch_tsd) initialization. - * elf/dl-tsd.c: Conditionalize contents on [_LIBC_REENTRANT]. - - * libio/iofflush.c: Add libc_hidden_def. - * libio/iofwrite.c: Likewise. - * sysdeps/generic/sigtimedwait.c: Likewise. - * sysdeps/generic/sigwaitinfo.c: Likewise. - * sysdeps/posix/sigwait.c: Likewise. - Reported by Momchil Velikov . - - * inet/inet_lnaof.c (inet_lnaof): Change return type to in_addr_t - to match declaration. - * inet/inet_netof.c (inet_netof): Likewise. - * inet/inet_mkadr.c (inet_makeaddr): Likewise for argument types. - Reported by Momchil Velikov . - - * configure.in: Skip AUTOCONF check under --without-cvs. - * configure: Regenerated. - - * posix/Makefile (headers): Add bits/pthreadtypes.h. - * sysdeps/unix/sysv/linux/Makefile (sysdep_heaers): Don't add it here. - * sysdeps/unix/sysv/linux/Dist: Remove it from the list. - -2002-11-24 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/sysdep.h: Support inline syscall - with six arguments. - -2002-11-19 Jim Meyering - - * time/mktime.c (__mon_yday, __mktime_internal) [!_LIBC]: Declare - as `static'. - * time/strptime.c (__mon_yday) [!_LIBC]: Declare as `static'. - -2002-11-23 Roland McGrath - - * scripts/abilist.awk: Avoid strtonum function, not there in mawk. - Just produce hex output for datum sizes. - - * elf/Makefile ($(objpfx)librtld.mk): Tighten up regexp. - Reported by Luca Barbieri . - -2002-11-20 Steven Munroe - - * sysdeps/unix/sysv/linux/powerpc/bits/msq.h (msqid_ds) - [__WORDSIZE == 32]: Only PPC32 requires __unused1, __unused2, - and __unused3 fields. - * sysdeps/unix/sysv/linux/powerpc/bits/sem.h (semid_ds) - [__WORDSIZE == 32]: Only PPC32 requires __unused1 - and __unused2 fields. - * sysdeps/unix/sysv/linux/powerpc/bits/shm.h (shmid_ds) - [__WORDSIZE == 32]: Only PPC32 requires __unused1, __unused2, - __unused3, and __unused4 fields. - - * csu/gmon-start.c (__gmon_start__): Always use TEXT_START macro to - obtain lowest address for profiling in __monstartup call. - -2002-11-21 Roland McGrath - - * sysdeps/ia64/fpu/Makefile (libm-sysdep_routines): Remove redunant - $(calls) $(calls:=f) $(long-c-$(long-double-fcts)). - - * locale/localeinfo.h (struct locale_data): Revert last change. - - * sysdeps/unix/sysv/linux/ia64/syscalls.list (s_exit_group): Add it. - From Ian Wienand . - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_pread): Define to - __NR_pread64 if not defined. - (__NR_pwrite): Define to __NR_pwrite64 if not defined. - From Ian Wienand . - -2002-11-21 Roland McGrath - - * sysdeps/mach/hurd/i386/init-first.c (posixland_init): Set - __libc_multiple_libcs here. Call __setfpucw. - -2002-11-21 Ulrich Drepper - - * elf/Makefile (tests): Don't run test-arrayX tests for now. - - * sysdeps/unix/sysv/linux/bits/sched.h: Add new CLONE_* flags. - * sysdeps/unix/sysv/linux/i386/clone.S: Add support for - CLONE_CHILD_*TID flags. - -2002-11-20 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): - We pass struct ucontext on x86-64. - (GET_PC): Adjust. - (GET_FRAME): Adjust. - (GET_STACK): Adjust. - -2002-11-20 Roland McGrath - - * sysdeps/powerpc/powerpc32/dl-machine.c [! SHARED]: Further - conditionalize [! DO_VERSIONING] #error. - - * scripts/abilist.awk: Grok function descriptor symbols. - - * intl/tst-gettext.c (main): Check return values from setlocale. - Add necessary unsetenv's to make LANG=existing-locale check work. - - * intl/tst-gettext.sh: Use mkdir -p. Copy test files unconditionally, - so aborted prior runs don't confuse things. - - * locale/localeinfo.h (struct locale_data: union locale_data_value): - Use uintptr_t instead of unsigned int for `word' member. - (_NL_CURRENT_WORD): Cast to uint32_t. - - * posix/bug-regex5.c (main): Use union to extract _NL_COLLATE_NRULES - value. - -2002-11-20 Ulrich Drepper - - * elf/tls-macros.h: Add IA-64 definitions. - Patch by Ian Wienand . - - * iconv/Makefile (tests): Add tst-iconv4. - * iconv/tst-iconv4.c: New file. - - * iconv/gconv_simple.c (internal_ucs4le_loop_unaligned): Return - __GCONV_EMPTY_INPUT only if input is really empty. Otherwise - __GCONV_INCOMPLETE_INPUT. - (ucs4le_internal_loop): Likewise. - (ucs4le_internal_loop_unaligned): Likewise. - * iconvdata/unicode.c (PREPARE_LOOP): Likewise. - * iconvdata/utf-16.c (PREPARE_LOOP): Likewise. - * iconvdata/utf-32.c (PREPARE_LOOP): Likewise. - - * iconv/loop.c (LOOPFCT): First test for empty input then for full - output buffer. - - * inet/getnameinfo.c: Use extend_alloca where appropriate. - * sysdeps/posix/getaddrinfo.c: Likewise. - - * include/alloca.h (extend_alloca): New define. Based on stack - direction it'll try to append to the previouls allocated buffer. - -2002-11-07 Thorsten Kukuk - - * sysdeps/posix/getaddrinfo.c (gaih_inet): If AF_UNSPEC is set, - use the same service for AF_INET and AF_INET6. - -2002-11-19 Ulrich Drepper - - * intl/localealias.c (read_alias_file): Use only about 400 bytes - of stack space instead of 16k. - -2002-11-18 Wolfram Gloger - - * malloc/arena.c - (ptmalloc_lock_all, ptmalloc_unlock_all, ptmalloc_unlock_all2): Do - nothing if not initialized. Bug report from Marcus Brinkmann - . - -2002-11-19 Roland McGrath - - * posix/Versions (libc: GLIBC_2.3.2): Add sched_getaffinity and - sched_setaffinity. - - * configure.in (libc_cv_gcc_dwarf2_unwind_info check): Use libraries - `-lgcc -lgcc_eh -lgcc', not just `-lgcc -lgcc_eh' in link commands for - test leading to libc_cv_gcc_dwarf2_unwind_info=no_registry_needed. - * configure: Regenerated. - -2002-11-19 Ulrich Drepper - - * include/dlfcn.h: __libc_dlopen is now a macro calling - __libc_dlopen_mode with the extra parameter RTLD_LAZY. - (__libc_dlopen_mode): New prototype. - * elf/dl-libc.c (__libc_dlopen_mode): Renamed from __libc_dlopen. Add - new parameter. Store new parameter in mode field of structure passed - to do_dlopen. - (struct do_dlopen_args): Add new field mode. - (do_dlopen): Pass mode from parameter structure to _dl_open. - -2002-11-11 Randolf Chung - - * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h [__USE_FILE_OFFSET64] - (F_GETLK, F_SETLK, F_SETLKW): Define to F_*64 versions. - * sysdeps/unix/sysv/linux/hppa/fcntl.c: New file. - - * sysdeps/hppa/fpu/libm-test-ulps: New file (generated). - - * sysdeps/hppa/Makefile (CFLAGS-rtld.c): New variable. - Set -mdisable-fpregs for this file. - -2002-11-11 Carlos O'Donell - - * sysdeps/unix/sysv/linux/configure.in: - Make 2.4.19 minimum linux kernel for hppa, and add unwind symbols - from gcc-3.0 era for backwards compatibility. - * sysdeps/unix/sysv/linux/configure: Regenerate. - - * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: - Define mcontext_t as a sigcontext. - -2002-11-18 Roland McGrath - - * dlfcn/dlerror.c (fini): New function, __attribute__ ((destructor)). - Free memory in `last_result' if it was used. - - * resolv/nss_dns/dns-network.c (getanswer_r): In BYNAME case, search - all aliases for one that matches the ".IN-ADDR.ARPA" form. - Do the parsing inline instead of copying strings and calling - inet_network, and properly skip all alias names not matching the form. - - * manual/pattern.texi (Variable Substitution): Fix # and ## examples. - -2002-11-17 Ulrich Drepper - - * manual/pattern.texi (Wordexp Example): Fix sample code. - - * sysdeps/unix/sysv/linux/i386/clone.S: Initialize word in the - childs stack which will be loaded into the %esi register. - -2002-11-14 Paul Eggert - - * resolv/nss_dns/dns-network.c (getanswer_r): Check for buffer - overflow when skipping the question part and when unpacking aliases. - -2002-11-15 Roland McGrath - - * math/Makefile (libm-calls): Remove s_copysign, s_isinf, s_isnan, - s_finite, s_modf, s_scalbn, s_frexp, m_ldexp, s_signbit. - Instead add $(calls:s_%=m_%) to get m_* versions of them all. - -2002-11-15 Jakub Jelinek - - * sysdeps/i386/dl-machine.h (elf_machine_rela): Handle R_386_COPY. - * sysdeps/arm/dl-machine.h (elf_machine_rela): Handle R_ARM_COPY. - -2002-11-15 Roland McGrath - - * math/Makefile (libm-calls): Change s_ldexp to m_ldexp. - * Makerules ($(+sysdir_pfx)sysd-rules): Emit pattern rules for m_%.[Sc] - from sysdeps/.../s_%.[Sc] with commands $(+make-include-of-dep). - (+make-include-of-dep): New canned sequence. - - * stdlib/canonicalize.c (__realpath): Check for malloc failure. - From Dmitry V. Levin . - -2002-11-14 Roland McGrath - - * sysdeps/generic/errno.c (__libc_errno): Remove alias. - * inet/herrno.c (__libc_h_errno): Likewise. - * resolv/res_libc.c (__libc_res): Likewise. - [USE___THREAD]: Use this in place of [USE_TLS && HAVE___THREAD]. - (__res_state) [! USE___THREAD]: Don't define as weak. - * csu/Versions: Revert last change. - * resolv/Versions: Revert last change. - - * Makerules ($(common-objpfx)%.make): New pattern rule. - * tls.make.c: New file. - * Makefile (distribute): Add it. - - * sysdeps/generic/errno.c [! USE___THREAD] - [HAVE_ELF && SHARED && DO_VERSIONING] (errno, _errno): Declare these - with compat_symbol so they are not link-time visible. - [! USE___THREAD] (__libc_errno): New alias for errno. - * csu/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): - Add __libc_errno here. - * inet/herrno.c [USE___THREAD]: Use this conditional - in place of [USE_TLS && HAVE___THREAD]. - [! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING] - (h_errno, _h_errno): Declare these with compat_symbol so they are not - link-time visible. - [! USE___THREAD] (__libc_h_errno): New alias for h_errno. - * resolv/res_libc.c [! USE___THREAD] - [HAVE_ELF && SHARED && DO_VERSIONING] (_res): Likewise. - (_res): Use __attribute__ ((section (".bss"))) so we can have an alias. - (__libc_res): Define as alias for _res. - * resolv/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): - Add __libc_h_errno and __libc_res here. - -2002-11-14 Jakub Jelinek - - * csu/Versions (errno): Move STT_TLS symbol to GLIBC_PRIVATE for now. - * resolv/Versions (h_errno, _res): Likewise. - -2002-11-14 Roland McGrath - - * Makerules (%.dynsym): Remove $(objpfx) from target and dep. - (%.symlist): Likewise. - -2002-11-13 Roland McGrath - - * scripts/abilist.awk: New file. - * Makefile (distribute): Add it. - * Makerules ($(objpfx)%.dynsym, $(objpfx)%.symlist): New rules. - (tests): Depend on .symlist file for each $(install-lib.so-versioned). - [$(subdir) = elf] (tests): Depend on libc.symlist. - (generated, common-generated): Add those files. - - * aclocal.m4 (LIBC_PROG_BINUTILS): Check for objdump, set OBJDUMP. - * configure: Regenerated. - * config.make.in (OBJDUMP): New variable, substituted by configure. - - * malloc/mcheck.c (struct hdr): New members `block' and `magic2'. - (mallochook, reallochook): Set them up. - (checkhdr): Check HDR->magic2 value. - (freehook): Reset HDR->magic2. - (memalignhook): New static function. - (old_memalign_hook): New static variable. - (mcheck, reallochook): Set __memalign_hook to memalignhook. - - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Zero the space - for the new TCB. - -2002-11-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Check for visibility - attribute. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. - -2002-11-11 Paul Eggert - - * manual/crypt.texi (Cryptographic Functions): Mention that - the MD5 one-way algorithm is compatible with BSD's. - -2002-11-11 Isamu Hasegawa - - * posix/regex_internal.c (re_string_skip_chars): Also return the last - wide character. - (re_string_reconstruct): Calculate the context by itself when the - offset points out of the valid range. - (re_string_context_at): Use wide character when MB_CUR_MAX > 1. - * posix/regex_internal.h (WIDE_NEWLINE_CHAR): New macro. - (IS_WIDE_WORD_CHAR): New macro. - (IS_WIDE_NEWLINE): New macro. - -2002-11-12 Andreas Jaeger - - * sysdeps/x86_64/strchr.S: Don't use one register for two - purposes, this fixes a bug noticed by test-strchr.c. - - * sysdeps/x86_64/strcat.S: Fix algorithm to align source pointer - correctly. - -2002-11-12 Roland McGrath - - * libio/libioP.h [_LIBC && !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)] - (_G_IO_NO_BACKWARD_COMPAT): Define it. - - * sysdeps/ia64/dl-fptr.c [_LIBC_REENTRANT]: Include - instead of . - [_LIBC_REENTRANT] (lock, unlock): Use __sync_lock_* macros instead of - testandset. - From Ian Wienand . - -2002-11-10 Roland McGrath - - * libio/bug-wfflush.c (do_test): Call rewind instead of fsetpos. - Call fputs instead of fwprintf (simpler to follow in debugger). - - * crypt/md5-crypt.c: Doc fix. - - * sysdeps/unix/make-syscalls.sh: Insert $(make-target-directory) at - the beginning of generated target commands. - - * csu/Makefile ($(objpfx)crti.o, $(objpfx)crtn.o): Add explicit - dependencies for these in case implicit rule search skipped the - nonexistent source directory. - * sysdeps/gnu/Makefile ($(objpfx)errlist.d): Give this rule all the - files with $(object-suffixes) as targets too. - * Makerules [no_deps && objpfx] (before-compile): Add $(objpfx). - and a target for it using $(make-target-directory). - - * Rules (before-compile): Add $(common-objpfx)bits/stdio-lim.h. - -2002-11-10 Roland McGrath - - * sysdeps/unix/sysv/linux/bits/pthreadtypes.h: Moved to ... - * sysdeps/generic/bits/pthreadtypes.h: ... here. - - * sysdeps/mach/hurd/fcntl.c (__libc_fcntl): Treat a struct flock with - l_start == 0 and l_len == 1 as we do l_len == 0. - -2002-11-10 Ulrich Drepper - - * po/da.po: Update from translation team. - -2002-11-10 Roland McGrath - - * config.make.in (includedir): New variable, substituted by configure. - Reported missing by Jocelyn Fournier . - * Makeconfig (includedir): Use $(prefix), not $(exec_prefix). - -2002-11-10 Andreas Jaeger - - * sysdeps/unix/sysv/linux/x86_64/sys/ucontext.h (enum): Add - REG_OLDMASK and REG_CR2 to synch with kernel header. - (NGREG): Increase. - - * nss/getXXent.c (GETFUNC_NAME): Use union type to avoid strict - aliasing problem. - * nss/getXXbyYY_r.c (INTERNAL): Likewise. - * nss/getnssent_r.c (__nss_getent_r): Likewise. - (__nss_setent): Likewise. - (__nss_getent_r): Likewise. - * inet/getnetgrent_r.c (innetgr): Likewise. - (__internal_setnetgrent_reuse): Likewise. - (internal_getnetgrent_r): Likewise. - * inet/ether_hton.c (ether_hostton): Likewise. - * inet/ether_ntoh.c (ether_ntohost): Likewise. - * sunrpc/netname.c (netname2user): Likewise. - * sunrpc/publickey.c (getpublickey): Likewise. - (getsecretkey): Likewise. - -2002-11-09 Marcus Brinkmann - - * sysdeps/mach/hurd/i386/ioperm.c (ioperm): Correct off by one - error in range calculation. - -2002-10-09 Jakub Jelinek - - * string/test-strspn.c (do_test): Ensure zero termination. - * string/test-strpbrk.c (do_test): Likewise. - * string/test-strncmp.c (stupid_strncmp): Use strnlen, not strlen. - * string/test-strncpy.c (stupid_strncpy): Likewise. - * string/test-stpncpy.c (stupid_stpncpy): Likewise. - -2002-10-08 Roland McGrath - - * string/test-string.h (test_init): Fill BUF1 and BUF2 with - nonzero characters. - -2002-09-22 H.J. Lu - - * sysdeps/unix/sysv/linux/mmap64.c (MMAP2_PAGE_SHIFT): Renamed - from PAGE_SHIFT. Define if not defined. Check MMAP2_PAGE_SHIFT - only if __NR_mmap2 is defined. - - * sysdeps/unix/sysv/linux/powerpc/mmap64.c: Moved to ... - * sysdeps/unix/sysv/linux/mmap64.c: ... here. - * sysdeps/unix/sysv/linux/hppa/mmap64.c: File removed. - * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c: FIle removed, - -2002-11-08 Jakub Jelinek - - * posix/bug-regex13.c (tests): Add new test. - - * string/test-strchr.c (stupid_strchr): New function. - (do_random_tests): Make sure the string is zero terminated. - * string/test-strpbrk.c (stupid_strpbrk): New function. - (do_random_tests): Make sure the string is zero terminated. - * string/test-strcmp.c (stupid_strcmp): New function. - (do_random_tests): Make sure the strings are zero terminated. - * string/test-strspn.c (stupid_strspn): New function. - (simple_strspn): Rename rej argument to acc. - (do_random_tests): Make sure the string is zero terminated. - * string/test-strcspn.c (stupid_strcspn): New function. - * string/test-strncpy.c (stupid_strncpy): New function. - * string/test-stpncpy.c (stupid_stpncpy): New function. - * string/test-strncmp.c (stupid_strncmp): New function. - (do_random_tests): Make sure the strings are zero terminated. - * string/test-string.h (impl_t): Change test into long. - (IMPL): Add __attribute__((aligned (sizeof (void *)))). - -2002-11-08 Roland McGrath - - * sysdeps/ia64/elf/configure.in: Add TLS check. - From Ian Wienand . - * sysdeps/ia64/elf/configure: Regenerated. - -2002-11-07 Roland McGrath - - * libio/fileops.c (_IO_new_file_overflow): Use INTUSE(_IO_do_write) in - place of _IO_new_do_write. - [_LIBC] (_IO_do_write): Define as macro for _IO_new_do_write and - #undef before versioned_symbol use. - -2002-11-07 Richard Henderson - - * configure.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove test. - * configure: Regenerated. - * config.h.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove #undef. - * sysdeps/alpha/dl-machine.h (TRAMPOLINE_TEMPLATE): Use !samegp. - (RTLD_START): Likewise. Access _dl_skip_args, _rtld_local, and - _dl_fini via gp-relative relocations. - * sysdeps/alpha/fpu/e_sqrt.c: Use !samegp. - - * elf/tls-macros.h: Add alpha versions. - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle TLS relocs. - * sysdeps/unix/alpha/sysdep.S: Support USE___THREAD. - * sysdeps/unix/alpha/sysdep.h: Likewise. Add SYSCALL_ERROR_HANDLER. - * sysdeps/unix/sysv/linux/alpha/brk.S: Use it. - * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/getitimer.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. - * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. - - * sysdeps/unix/sysv/linux/alpha/sysdep.h: Re-include protect. - Kill argument registers across the inline syscall. - - * sysdeps/unix/sysv/linux/alpha/clone.S: Add user_tid and tls args. - - * linuxthreads/sysdeps/alpha/tls.h: New file. - * sysdeps/alpha/dl-tls.h: New file. - -2002-10-29 David Mosberger - - * sysdeps/ia64/elf/initfini.c [HAVE_INITFINI_ARRAY] - (gmon_initializer): New function. - (.init prologue): If HAVE_INITFINI_ARRAY is true, don't call - __gmon_start__ here. Call it from gmon_initializer() instead. - -2002-03-12 H.J. Lu - - * elf/Makefile [$(have-initfini-array) = yes] (tests): Add tst-array1, - tst-array2, and tst-array3. - [$(have-initfini-array) = yes] (tests-static): Add tst-array3. - [$(have-initfini-array) = yes] (modules-names): Add tst-array2dep. - ($(objpfx)tst-array1.out): New target. - ($(objpfx)tst-array2): Likewise. - ($(objpfx)tst-array2.out): Likewise. - ($(objpfx)tst-array3.out): Likewise. - * elf/tst-array1.c: New file. - * elf/tst-array1.exp: Likewise. - * elf/tst-array2.c: Likewise. - * elf/tst-array2dep.c: Likewise. - * elf/tst-array2.exp: Likewise. - * elf/tst-array3.c: Likewise. - -2002-10-28 David Mosberger - - * elf/dl-fini.c (_dl_fini): Invoke fini_array in _reverse_ order. - Don't add L->l_addr to array entry values. - -2002-11-07 Jakub Jelinek - - * string/test-string.h: New file. - * string/test-strlen.c: New file. - * string/test-string.h: New file. - * string/test-strcmp.c: New file. - * string/test-strchr.c: New file. - * string/test-strrchr.c: New file. - * string/test-strcpy.c: New file. - * string/test-stpcpy.c: New file. - * string/test-strncpy.c: New file. - * string/test-stpncpy.c: New file. - * string/test-strpbrk.c: New file. - * string/test-strcspn.c: New file. - * string/test-strspn.c: New file. - * string/test-strcat.c: New file. - * string/test-strncmp.c: New file. - * string/test-memchr.c: New file. - * string/test-memcmp.c: New file. - * string/test-memset.c: New file. - * string/test-memcpy.c: New file. - * string/test-mempcpy.c: New file. - * string/test-memmove.c: New file. - * string/Makefile (strop-tests): New variable. - (tests): Add strop-tests. - (distribute): Add test-string.h. - -2002-11-06 Ulrich Drepper - - * posix/regcomp.c: Use tabs instead of spaces. - * posix/regexec.c: Likewise. - * posix/regex_internal.h: Likewise. - - * posix/regcomp.c (re_compile_fastmap_iter): Use __wcrtomb not wctomb. - -2002-11-06 Jakub Jelinek - - * posix/regcomp.c (re_compile_pattern): Don't set regs_allocated - here. - (regcomp): Don't set can_be_null here. - (re_comp): Clear whole re_comp_buf with the exception of fastmap. - (re_compile_internal): Clear can_be_null, set regs_allocated. - - * posix/regcomp.c (re_set_fastmap): New function. - (re_compile_fastmap_iter): Use it. Remove redundant type == - COMPLEX_BRACKET check. - * posix/regexec.c (re_search_internal): Optimize searching with - fastmap. Call re_string_reconstruct even if match_first is - smaller than raw_mbs_idx. - -2002-11-06 Isamu Hasegawa - - * posix/regcomp (free_dfa_content): Use free_state. - * posix/regex_internal.c (re_string_realloc_buffers): Don't edit - pointers in case that realloc failed. - (re_node_set_merge): Likewise. - (register_state): Likewise. - (create_newstate_common): Invoke memory release functions in case of - error conditions. - (create_ci_newstate): Likewise. - (create_cd_newstate): Likewise. - (free_state): New function. - * posix/regexec.c (re_search_internal): Invoke memory release - functions in case of error conditions. - (sift_states_backward): Likewise. - (merge_state_array): Likewise. - (add_epsilon_src_nodes): Likewise. - (sub_epsilon_src_nodes): Likewise. - (search_subexp): Likewise. - (sift_states_bkref): Likewise. - (transit_state_sb): Likewise. - (transit_state_mb): Likewise. - (transit_state_bkref_loop): Likewise. - (group_nodes_into_DFAstates): Likewise. - (push_fail_stack): Don't edit pointers in case that realloc failed. - (extend_buffers): Likewise. - (match_ctx_add_entry): Likewise. - -2002-11-06 Roland McGrath - - * sysdeps/unix/sysv/linux/mips/configure.in: File removed. - * sysdeps/unix/sysv/linux/mips/configure: Likewise. - - * configure.in: Add checks on as and ld for binutils 2.13 or later. - * configure: Regenerated. - -2002-11-06 Ulrich Drepper - - * posix/regcomp.c (regcomp): __re_compile_fastmap can never fail. - If re_compile_internal failed free fastmap buffer. - (free_dfa_content): Broken out of regfree function. Frees all dfa - related data. - (regfree): Add free_dfa_content. - (re_compile_internal): If any of the called functions fails free - all dfa related memory. - -2002-11-05 Ulrich Drepper - - * sysdeps/unix/sysv/linux/sys/sysctl.h: Add ugly hacks to prevent - warnings from the kernel headers. - -2002-11-05 Roland McGrath - - * sysdeps/unix/mips/sysdep.h [! __PIC__] (PSEUDO): Add nop after jump. - From Johannes Stezenbach . - - * sysdeps/unix/sysv/linux/mips/Versions (libc: GLIBC_2.0): Change - #errlist-compat magic comment to give 123 as size. - (libc: GLIBC_2.1): Remove this set, moving #errlist-compat magic to ... - (libc: GLIBC_2.2): ... here. - (libc: GLIBC_2.3): Likewise. - -2002-11-05 Ulrich Drepper - - * elf/dl-fini.c (_dl_fini): Correct the increment of l_opencount - which happens at the beginning so that we can unload modules in - __libc_freeres. - -2002-11-06 Kaz Kojima - - * sysdeps/sh/bits/setjmp.h (JB_SIZE): Define only - under [__USE_MISC || _ASM]. - - * elf/elf.h: Remove the obsolete SH TLS relocations. - -2002-11-05 Ulrich Drepper - - * posix/regcomp.c (regcomp): Initialize preg->can_be_null to zero. - -2002-11-05 Franz Sirl - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Handle - __NR_pread64 and __NR_pwrite64. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread.c: Remove __NR_pread64 - and __NR_pwrite64. - Revert change to use INLINE_SYSCALL. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Revert change to use - INLINE_SYSCALL. - * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Likewise. - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL): - Update clobber list and add a comment about the syscall ABI. - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_pread64, - s_pwrite64, s_ftruncate, s_truncate): Re-add. - -2002-11-05 Jakub Jelinek - - * iconv/gconv_dl.c (free_mem): Clear loaded. - * locale/loadarchive.c (_nl_archive_subfreeres): Call locale_data's - cleanup if any. - -2002-11-05 Ulrich Drepper - - * sysdeps/unix/sysv/linux/fexecve.c: Include . - - * libio/ioseekoff.c: Remove INTDEF. Define _IO_seekoff_unlocked. Same - as old code without locking. _IO_seekoff calls this function after - locking the stream. - * libio/ioseekpos.c: Likewise for _IO_seekpos. - * libio/libioP.h: Replace _IO_seekoff_internal and _IO_seekpos_internal - prototypes with _IO_seekoff_unlocked and _IO_seekpos_unlocked - prototypes. - * libio/iolibio.h (_IO_fseek): Call _IO_seekoff_unlocked instead - of _IO_seekoff_internal. - (_IO_rewind): Likewise. - * libio/ioftell.c: Likewise. - * libio/ftello.c: Likewise. - * libio/ftello64.c: Likewise. - * libio/iofgetpos.c: Likewise. - * libio/iofgetpos64.c: Likewise. - * libio/oldiofgetpos.c: Likewise. - * libio/oldiofgetpos64.c: Likewise. - * libio/iofsetpos.c: Call _IO_seekpos_unlocked instead of - _IO_seekpos_internal. - * libio/iofsetpos64.c: Likewise. - * libio/oldiofsetpos.c: Likewise. - * libio/oldiofsetpos64.c: Likewise. - -2002-11-04 Roland McGrath - - * sysdeps/unix/sysv/linux/powerpc/chown.c: Use INLINE_SYSCALL macro. - * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/tcgetattr.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/tcsetattr.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_ioctl, - s_chown, s_ftruncate64, s_mmap2, s_pread64, s_pwrite64, s_truncate64, - sys_fstat, sys_lstat, sys_mknod, sys_readv, sys_stat, sys_writev): - Remove these, no longer used. - -2002-11-04 Franz Sirl - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_ipc, - s_llseek, s_readahead, s_execve, s_fcntl, s_fcntl64, s_fstat64, - s_getcwd, s_getdents, s_getdents64, s_getpmsg, s_getpriority, - s_getrlimit, s_lstat64, s_poll, s_ptrace, s_putpmsg, s_reboot, - s_setrlimit, s_sigaction, s_sigpending, s_sigprocmask, s_sigsuspend, - s_stat64, s_sysctl, s_ugetrlimit, s_ustat, s_vfork): Remove now unused - syscall stubs. - - * sysdeps/unix/sysv/linux/pwrite.c: Fix typo. - * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread.c: Handle both __NR_pread64 - and __NR_pread. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Handle both __NR_pwrite64 - and __NR_pwrite. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. - -2002-11-03 Roland McGrath - - * sysdeps/generic/ldsodefs.h (struct rtld_global): New member - `_dl_tls_static_used'. - * sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable. - (__libc_setup_tls): Initialize it. Let the initial value of - _dl_tls_static_size indicate some surplus space in the computed value. - * elf/dl-open.c (_dl_tls_static_size): New variable. - * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Initialize - _dl_tls_static_used. Add some surplus space into _dl_tls_static_size. - * elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function. - (CHECK_STATIC_TLS): Use it. - * elf/dl-close.c (_dl_close): Adjust _dl_tls_static_used when the - closed objects occupied a trailing contiguous chunk of static TLS area. - -2002-10-18 Bruno Haible - - * charmaps/ISO_5428: Use Greek characters introduced in Unicode 3.0. - -2002-11-04 Ulrich Drepper - - * libio/wfileops.c (_IO_wfile_seekoff): Don't modify _offset and - _wide_data->_IO_read_end if adjustment can be made in the current - buffer. - - * sysdeps/unix/sysv/linux/fexecve.c: New file. - - * libio/bug-wfflush.c (do_test): Using fseek is not allowed when - wide oriented streams are used. - - * nss/getXXent_r.c (ENDFUNC_NAME): Don't do anything if the - service hasn't been used [PR libc/4744]. - - * include/features.h: Use __STDC_VERSION__ not __STDC_VERSION. - Reported by Miloslav Trmac [PR libc/4766]. - - * manual/examples/dir.c: Don't include . - * manual/examples/select.c: Include for TEMP_FAILURE_RETRY. - Reported by Frédéric Delanoy . - -2002-11-02 H.J. Lu - - * stdio-common/reg-printf.c: Include . - -2002-11-03 Ulrich Drepper - - * sysdeps/generic/libc-tls.c: Define _dl_tls_static_used. - - * po/ca.po: Update from translation team. - * po/es.po: Likewise. - - * sysdeps/generic/segfault.c (catch_segfault): If HAVE_PROC_SELF - is defined write out memory map. - * sysdeps/unix/sysv/linux/segfault.c: New file. - -2002-11-02 Roland McGrath - - * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): Use union type for - pointers that can alias. - Reported by Daniel Jacobowitz . - - * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h: New file. - -2002-11-02 Roland McGrath - - * manual/filesys.texi (Reading/Closing Directory): Rewrite readdir_r - description to be clearer and to say that *RESULT is set to ENTRY. - -2002-10-30 Jakub Jelinek - - * posix/regexec.c (build_trtable): Alloca or malloc dests_node and - dests_ch arrays together. Alloca or malloc dest_states, - dest_states_word and dest_states_nl arrays together. Free memory on - error exit. - -2002-10-29 Daniel Jacobowitz - - * crypt/crypt_util.c (__init_des_r): Initialize current_salt - and current_saltbits. - -2002-11-02 Roland McGrath - - * stdio-common/reg-printf.c: Include . - -2002-11-02 H.J. Lu - - * sysdeps/unix/sysv/linux/mips/syscalls.list (s_execve): Set - caller to EXTRA instead of execve. - -2002-11-01 Roland McGrath - - * sysdeps/generic/errno-loc.c [! USE___THREAD]: Use this conditional - in place of [!(USE_TLS && HAVE___THREAD)]. - (__errno_location) [! USE___THREAD]: Define as strong, not weak. - -2002-10-31 Roger Sayle - - * sysdeps/i386/soft-fp/sfp-machine.h (_FP_NANFRAC_Q, _FP_NANSIGN_Q): - New macros. - * sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise. - - * soft-fp/soft-fp.h: Allow sfp-machine.h to define FP_RND_NEAREST - without defining FP_ROUNDMODE. - -2002-10-29 Jakub Jelinek - - * sysdeps/gnu/siglist.c (PTR_SIZE_STR): Remove. - (__old_sys_siglist, __old_sys_sigabbrev): Use strong_alias and - declare_symbol. - * sysdeps/mach/hurd/siglist.h (OLD_SIGLIST_SIZE_STR): Remove. - (OLD_SIGLIST_SIZE): Define. - * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): Remove. - (OLD_SIGLIST_SIZE): Define. - * sysdeps/unix/sysv/linux/arm/siglist.c: Remove. - -2002-11-01 Jakub Jelinek - - * sysdeps/ia64/strncpy.S: Fix recovery code. - -2002-10-30 Jakub Jelinek - - * include/libc-symbols.h (__libc_freeres_fn_section, libc_freeres_fn): - New macros. - * elf/dl-close.c (free_mem): Use libc_freeres_fn macro, remove - text_set_element. - * elf/dl-libc.c (free_mem): Likewise. - * iconv/gconv_conf.c (free_mem): Likewise. - * iconv/gconv_db.c (free_mem): Likewise. - * iconv/gconv_dl.c (free_mem): Likewise. - * iconv/gconv_cache.c (free_mem): Likewise. - * intl/finddomain.c (free_mem): Likewise. - * intl/dcigettext.c (free_mem): Likewise. - * locale/setlocale.c (free_mem): Likewise. - * misc/fstab.c (fstab_free): Likewise. - * nss/nsswitch.c (free_mem): Likewise. - * posix/regcomp.c (free_mem): Likewise. - * resolv/gai_misc.c (free_res): Likewise. - * stdlib/fmtmsg.c (free_mem): Likewise. - * sunrpc/clnt_perr.c (free_mem): Likewise. - * sysdeps/generic/setenv.c (free_mem): Likewise. - * sysdeps/unix/sysv/linux/shm_open.c (freeit): Likewise. - * sysdeps/pthread/aio_misc.c (free_res): Likewise. - * time/tzset.c (free_mem): Likewise. - * malloc/mtrace.c (release_libc_mem): Add __libc_freeres_fn_section. - * locale/loadarchive.c (_nl_archive_subfreeres): Likewise. - * malloc/set-freeres.c (__libc_freeres): Likewise. - - * login/getutent.c: Include stdlib.h instead of stddef.h. - (buffer): Change into pointer to utmp, add libc_freeres_ptr. - (__getutent): Allocate buffer the first time it is run. - * login/getutid.c: Include stdlib.h instead of stddef.h. - (buffer): Change into pointer to utmp, add libc_freeres_ptr. - (__getutid): Allocate buffer the first time it is run. - * login/getutline.c: Include stdlib.h instead of stddef.h. - (buffer): Change into pointer to utmp, add libc_freeres_ptr. - (__getutline): Allocate buffer the first time it is run. - * malloc/mtrace.c (malloc_trace_buffer): Change into char *. - (mtrace): Allocate malloc_trace_buffer. - * resolv/nsap_addr.c (inet_nsap_ntoa): Decrease size of tmpbuf. - * resolv/ns_print.c (ns_sprintrrf): Decrease size of t. - * string/strerror.c: Include libintl.h and errno.h. - (buf): New variable. - (strerror): Only allocate buffer if actually needed (unknown error). - * time/tzfile.c (transitions): Add libc_freeres_ptr. - (freeres): Remove. - -2002-10-25 Jakub Jelinek - - * include/libc-symbols.h (libc_freeres_ptr): New macro. - * malloc/set-freeres.c (__libc_freeres_ptrs): Define using - symbol_set_define. - (__libc_freeres): Free all pointers in that section. - * Makerules (build-shlib): Add $(LDSEDCMD-$(@F:lib%.so=%).so) to sed - commands when creating .lds script. - (LDSEDCMD-c.so): New variable. - * inet/rcmd.c (ahostbuf): Change into char *. Add libc_freeres_ptr. - (rcmd_af): Use strdup to allocate ahostbuf. - * inet/rexec.c (ahostbuf): Change into char *. Add libc_freeres_ptr. - (rexec_af): Use strdup to allocate ahostbuf. - * stdio-common/reg-printf.c (printf_funcs): Remove. - (__printf_arginfo_table): Change into printf_arginfo_function **. - Add libc_freeres_ptr. - (__register_printf_function): Allocate __printf_arginfo_table - and __printf_function_table the first time it is called. - * stdio-common/printf-parse.h (__printf_arginfo_table): Change into - printf_arginfo_function **. - (parse_one_spec): Add __builtin_expect. - * grp/fgetgrent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * inet/getnetgrent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * intl/localealias.c (libc_freeres_ptr): Define if !_LIBC. - (string_space, map): Add libc_freeres_ptr. - (free_mem): Remove. - * misc/efgcvt.c (FCVT_BUFPTR): Add libc_freeres_ptr. - (free_mem): Remove. - * misc/mntent.c (getmntent_buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * crypt/md5-crypt.c (libc_freeres_ptr): Define if !_LIBC. - (buffer): Add libc_freeres_ptr. - (free_mem): Remove for _LIBC. - * nss/getXXbyYY.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * nss/getXXent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * pwd/fgetpwent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * resolv/res_hconf.c (ifaddrs): Add libc_freeres_ptr. - (free_mem): Remove. - * shadow/fgetspent.c (buffer): Add libc_freeres_ptr. - (free_mem): Remove. - * sysdeps/posix/ttyname.c (getttyname_name): Add libc_freeres_ptr. - (free_mem): Remove. - * sysdeps/unix/sysv/linux/getsysstats.c (mount_proc): Add - libc_freeres_ptr. - (free_mem): Remove. - * sysdeps/unix/sysv/linux/ttyname.c (getttyname_name, ttyname_buf): Add - libc_freeres_ptr. - (free_mem): Remove. - -2002-10-30 Jakub Jelinek - - * malloc/obstack.c [_LIBC] (obstack_free): Change into strong_alias - instead of duplicating the whole function in libc. - -2002-10-31 Roland McGrath - - * sysdeps/i386/bits/byteswap.h [__GNUC__ < 2] (__bswap_32): - Renamed from __bswap_16 (typo fix). Reported by . - -2002-10-30 Jakub Jelinek - - * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Add -D for each - 32bit-predefine when creating .new32 list and -U for each - 32bit-predefine when creating .new64 list. - * sysdeps/unix/sysv/linux/x86_64/Makefile (32bit-predefine): New. - -2002-10-29 Andreas Schwab - - * sysdeps/generic/allocrtsig.c: Include , not - "testrtsig.h". Reported by Daniel Jacobowitz . - -2002-10-25 Roland McGrath - - * sysdeps/unix/sysv/linux/configure.in: Fix typo in last change. - * sysdeps/unix/sysv/linux/configure: Regenerated. - - * sysdeps/generic/ldsodefs.h: Remove [! SHARED] conditional from - _dl_starting_up decl. - -2002-10-20 H.J. Lu - - * sysdeps/unix/sysv/linux/configure.in: Don't check - /lib/modules/`uname -r`/build/include for kernel headers if - cross compiling. - * sysdeps/unix/sysv/linux/configure: Regenerated. - -2002-10-25 Roland McGrath - - * math/math.h (M_LOG2El): Correct the value. - From Stephen L Moshier . - - * sysdeps/unix/sysv/linux/init-first.c (init): Remove [! SHARED] - conditional from __libc_multiple_libcs access. Remove kludge for weak - symbol access with old compilers we no longer support. - * sysdeps/unix/sysv/aix/init-first.c (init): Likewise. - * sysdeps/generic/libc-start.c (__libc_start_main): Likewise. - -2002-10-25 Roland McGrath - - * sysdeps/posix/sigvec.c [SA_RESETHAND]: Disable wrapper hacks and - implement SV_RESETHAND by translating it to SA_RESETHAND. - -2002-10-23 Alexandre Oliva - - * elf/dl-reloc.c (_dl_reloc_bad_use): Print the full 32-bit relocation - type on ELF64 platforms. - -2002-10-24 Ulrich Drepper - - * elf/elf.h (R_X86_64_GOTTPOFF): Renamed from r_x86_64_GOTTPOFF. - - * elf/elf.h: Define ELF_NOTE_OS_FREEBSD and NT_TASKSTRUCT. - -2002-10-24 Jakub Jelinek - - * elf/dl-misc.c: Include . - (_dl_debug_vdprintf): Only take dl_load_lock if not _dl_starting_up. - - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. - (INLINE_SYSCALL): Use that. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. - (INLINE_SYSCALL): Use that. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (INTERNAL_SYSCALL, - INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. - (INLINE_SYSCALL): Use that. - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Include - dl-sysdep.h. - (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. - (__INTERNAL_SYSCALL_STRING): Define. - * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Include - dl-sysdep.h. - (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. - (__INTERNAL_SYSCALL_STRING): Define. - * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_SYSCALL): Pass - __SYSCALL_STRING to inline_syscall*. - (INTERNAL_SYSCALL, INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): - New macros. - (inline_syscall0, inline_syscall1, inline_syscall2, inline_syscall3, - inline_syscall4, inline_syscall5, inline_syscall6): Add string - argument. - -2002-10-24 Roland McGrath - - * sysdeps/generic/ldsodefs.h (_dl_starting_up): Declare it here. - * sysdeps/unix/sysv/linux/init-first.c: Not here. - * sysdeps/powerpc/elf/libc-start.c: Or here. - * sysdeps/unix/sysv/aix/libc-start.c: Or here. - * sysdeps/unix/sysv/aix/start-libc.c: Or here. - * sysdeps/unix/sysv/aix/init-first.c: Or here. - * sysdeps/generic/libc-start.c: Or here. - * sysdeps/unix/sysv/linux/init-first.c (init): Protect _dl_starting_up - access with [! SHARED]. - * sysdeps/unix/sysv/aix/init-first.c (init): Likewise. - - * libio/bug-wfflush.c: New file. - * libio/Makefile (tests): Add bug-wfflush. - -2002-10-23 Roland McGrath - - * stdio-common/tst-fphex.c: New file. - * stdio-common/Makefile (tests): Add tst-fphex. - * sysdeps/generic/printf_fphex.c (__printf_fphex): Fix initialization - of WNUMEND. Fix counting of decimal point in WIDTH. Print '0' pad - chars always before the value digits. - Reported by James Antill . - -2002-10-24 Jakub Jelinek - - * posix/regcomp.c (re_comp): Call __regfree on re_comp_buf. - (free_mem): New function. - * posix/Makefile (tests): Add bug-regex14. Add bug-regex14-mem - if not cross compiling. - (generated): Add bug-regex14-mem and bug-regex14.mtrace. - (bug-regex14-ENV): Set. - (bug-regex14-mem): New target. - * posix/bug-regex14.c: New file. - -2002-10-23 Roland McGrath - - * elf/Makefile ($(objpfx)librtld.map): Use temporary file for output - target, so we don't touch it when the link fails. - - * libio/ftello.c (ftello): Use _IO_off64_t for type of POS. - Check for the result overflowing off_t and fail with EOVERFLOW. - * libio/ioftell.c (_IO_ftell): Likewise. - * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. - - * login/logwtmp.c (logwtmp): If sizeof ut_tv != sizeof struct timeval, - use a temporary timeval on the stack for gettimeofday and copy it. - * login/logout.c (logout): Likewise. - Reported by Steven Munroe . - - * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): - Use __SWORD_TYPE instead of int for member types. - (struct statfs64): Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: New file. - * sysdeps/unix/sysv/linux/s390/bits/statfs.h: New file. - * sysdeps/unix/sysv/linux/ia64/bits/statfs.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/statfs.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: File removed. - - * sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: Moved to ... - * sysdeps/unix/sysv/linux/bits/statvfs.h: ... here. - (ST_NODIRATIME): Restore fixed value of 2048. - * sysdeps/unix/sysv/linux/alpha/bits/statvfs.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/statvfs.h: File removed. - - Rearranged definitions to reduce duplication. - * sysdeps/generic/bits/types.h: Rewritten, using macros from - and new header . - * posix/Makefile (headers): Add bits/typesizes.h here. - * sysdeps/generic/bits/typesizes.h: New file. - * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file. - * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file. - * sysdeps/mach/hurd/bits/typesizes.h: New file. - * sysdeps/unix/sysv/linux/alpha/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/mips/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/s390/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/types.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/types.h: File removed. - * posix/sys/types.h [__USE_POSIX199506 || __USE_UNIX98]: Include - here, not in . - * signal/signal.h: Likewise. - - * streams/stropts.h: Include . - * streams/Makefile (headers): Add bits/xtitypes.h here. - * sysdeps/generic/bits/xtitypes.h: New file. - * sysdeps/s390/bits/xtitypes.h: New file. - * sysdeps/ia64/bits/xtitypes.h: New file. - * sysdeps/x86_64/bits/xtitypes.h: New file. - - * sysvipc/Makefile (headers): Add bits/ipctypes.h here. - * sysdeps/generic/bits/ipctypes.h: New file. - * sysdeps/mips/bits/ipctypes.h: New file. - * sysdeps/gnu/bits/shm.h: Include . - * sysdeps/gnu/bits/msq.h: Likewise. - * sysvipc/sys/ipc.h: Likewise. - -2002-10-22 Ulrich Drepper - - * elf/dl-load.c (struct filebuf): For buf element to have the - alignment of ElfXX_Ehdr since this is what will be stored in it. - -2002-10-22 Jakub Jelinek - - * locale/programs/locarchive.c (add_alias): Change locrec_offset arg - into pointer to locrec_offset. - (add_locale_to_archive): Adjust callers. Free normalized_name right - before returning, not immediately after add_locale, pass it to - add_alias if not NULL instead of name. Rename second normalized_name - occurence to nnormalized_codeset_name. - - * locale/programs/locarchive.c (enlarge_archive): Make sure - string_size is always a multiple of 4. - Reported by Andreas Schwab . - -2002-10-21 Andreas Schwab - - * sysdeps/unix/sysv/linux/ia64/syscalls.list (s_execve): Set - caller to EXTRA instead of execve, since the latter has a - higher-priority implementation in linuxthreads. - -2002-10-21 Roland McGrath - - * sysdeps/generic/libc-tls.c (__libc_setup_tls): Initialize the static - slotinfo list's len member to the proper size, not just 1. - Initialize static_map.l_tls_initimage. - - * elf/dl-open.c (dl_open_worker): Fix loop searching for - dtv_slotinfo_list element containing new modules' l_tls_modid. - - * elf/tst-tls9.c, elf/tst-tls9-static.c: New files. - * elf/tst-tlsmod5.c, elf/tst-tlsmod6.c: New files. - * elf/Makefile (tests): Add tst-tls9. - (tests-static): Add tst-tls9-static. - (tst-tls9-static-ENV): New variable. - ($(objpfx)tst-tls9-static, $(objpfx)tst-tls9-static.out): New targets. - - * elf/dl-close.c (remove_slotinfo): Remove an assert; the number of - modids used by partially loaded modules being closed can't be known. - -2002-10-21 Isamu Hasegawa - - * posix/Makefile: Add a test case for the bug reported by Aharon - Robbins . - * posix/bug-regex13.c: New file. - * posix/regcomp.c (peek_token_bracket): Skip the byte already read. - -2002-10-21 Ulrich Drepper - - * csu/gmon-start.c: Pretty printing. - -2002-10-19 Art Haas - - * configure.in: Replace AC_CONFIG_HEADER with AC_CONFIG_HEADERS, - add AC_HELP_STRING to all AC_ARG_WITH and AC_ARG_ENABLE macros, - add autoconf quotes to the AC_CONFIG_AUX_DIR macro. - * configure: Regenerated. - -2002-10-19 Roland McGrath - - * configure.in: Call AC_CONFIG_SUBDIRS with empty argument - and then set $subdirs directly, because the new Autoconf breaks - compatibility in every way imaginable and insists on whining - about usage that worked since the dawn of time. - * configure: Regenerated. - - * configure: Regenerated (using Autoconf 2.54). - * sysdeps/alpha/elf/configure: Likewise. - * sysdeps/generic/configure: Likewise. - * sysdeps/i386/elf/configure: Likewise. - * sysdeps/ia64/elf/configure: Likewise. - * sysdeps/mach/hurd/configure: Likewise. - * sysdeps/mach/configure: Likewise. - * sysdeps/unix/configure: Likewise. - * sysdeps/unix/common/configure: Likewise. - * sysdeps/unix/sysv/aix/configure: Likewise. - * sysdeps/unix/sysv/linux/configure: Likewise. - * sysdeps/unix/sysv/linux/mips/configure: Likewise. - * sysdeps/x86_64/elf/configure: Likewise. - - * config.make.in: Nix completely-soft nonsense. - * configure.in: Likewise. Under --without-fp, use nofpu subdirectory - of machine directories instead of fpu subdirectory. - * sysdeps/powerpc/soft-fp/Makefile: Remove cruft added in last change. - * sysdeps/powerpc/nofpu/Makefile: Put it in this new file instead. - * sysdeps/powerpc/soft-fp/sim-full.c: Moved to ... - * sysdeps/powerpc/nofpu/sim-full.c: ... here. - * sysdeps/powerpc/soft-fp/fraiseexcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/fraiseexcpt.c: ... here. - * sysdeps/powerpc/soft-fp/fegetexcept.c: Moved to ... - * sysdeps/powerpc/nofpu/fegetexcept.c: ... here. - * sysdeps/powerpc/soft-fp/fclrexcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/fclrexcpt.c: ... here. - * sysdeps/powerpc/soft-fp/ftestexcept.c: Moved to ... - * sysdeps/powerpc/nofpu/ftestexcept.c: ... here. - * sysdeps/powerpc/soft-fp/fgetexcptflg.c: Moved to ... - * sysdeps/powerpc/nofpu/fgetexcptflg.c: ... here. - * sysdeps/powerpc/soft-fp/fsetexcptflg.c: Moved to ... - * sysdeps/powerpc/nofpu/fsetexcptflg.c: ... here. - * sysdeps/powerpc/soft-fp/fedisblxcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/fedisblxcpt.c: ... here. - * sysdeps/powerpc/soft-fp/feenablxcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/feenablxcpt.c: ... here. - * sysdeps/powerpc/soft-fp/fegetenv.c: Moved to ... - * sysdeps/powerpc/nofpu/fegetenv.c: ... here. - * sysdeps/powerpc/soft-fp/fesetenv.c: Moved to ... - * sysdeps/powerpc/nofpu/fesetenv.c: ... here. - * sysdeps/powerpc/soft-fp/fegetround.c: Moved to ... - * sysdeps/powerpc/nofpu/fegetround.c: ... here. - * sysdeps/powerpc/soft-fp/fesetround.c: Moved to ... - * sysdeps/powerpc/nofpu/fesetround.c: ... here. - * sysdeps/powerpc/soft-fp/feupdateenv.c: Moved to ... - * sysdeps/powerpc/nofpu/feupdateenv.c: ... here. - * sysdeps/powerpc/soft-fp/feholdexcpt.c: Moved to ... - * sysdeps/powerpc/nofpu/feholdexcpt.c: ... here. - * sysdeps/powerpc/soft-fp/fenv_const.c: Moved to ... - * sysdeps/powerpc/nofpu/fenv_const.c: ... here. - * sysdeps/powerpc/soft-fp/libm-test-ulps: Moved to ... - * sysdeps/powerpc/nofpu/libm-test-ulps: ... here. - * sysdeps/powerpc/soft-fp/soft-supp.h: Moved to ... - * sysdeps/powerpc/nofpu/soft-supp.h: ... here. - * sysdeps/powerpc/soft-fp/Versions (libc: GLIBC_2.3.2): Moved to ... - * sysdeps/powerpc/nofpu/Versions: ... here, new file. - -2002-10-19 Bruno Haible - - * sysdeps/unix/bsd/bsd4.4/freebsd/sys/sysmacros.h: New file. - -2002-10-18 Roland McGrath - - * io/Makefile (routines): Add lchmod. - * io/sys/stat.h [__USE_BSD] (lchmod): Declare it. - * sysdeps/generic/lchmod.c: New file. - * sysdeps/mach/hurd/lchmod.c: New file. - * io/Versions (libc: GLIBC_2.3.2): New set, add lchmod. - -2002-10-18 Art Haas - - * configure.in: Remove remaining AC_FD_CC macros, and replace - AC_FD_MSG with AS_MESSAGE_FD. - -2002-10-18 Roland McGrath - - * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): Fix - typos: VALUE -> FINALADDR. - - * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL, INLINE_SYSCALL1) - (inline_syscall_clobbers, inline_syscall0, inline_syscall1) - (inline_syscall2, inline_syscall3, inline_syscall4, inline_syscall5) - (inline_syscall6): Move these macros ... - * sysdeps/unix/sysv/linux/alpha/sysdep.h: ... to here. - - * configure.in (libc_link_dests, libc_link_sources): Remove these - variables and the AC_LINK_FILES call. - - * sysdeps/powerpc/soft-fp/Versions (libc: GLIBC_2.3.2): Fix last - change to put new symbols here instead of in GLIBC_2.2. - * sysdeps/powerpc/Subdirs: Move this file ... - * sysdeps/powerpc/soft-fp/Subdirs: ... here. - -2002-10-07 Roland McGrath - - * sysdeps/generic/bits/time.h: Replaced with contents of the - sysdeps/unix/sysv/linux/i386/bits/time.h file. All the following - files were identical except for the absence of CLOCK_THREAD_CPUTIME_ID - and CLOCK_PROCESS_CPUTIME_ID in .../linux/bits/time.h; adding these - macros is ok even for architectures that don't now implement them. - * sysdeps/mach/hurd/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/i386/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/time.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/time.h: File removed. - -2002-10-18 Jeff Bailey - - * configure.in: Replace obsolete AC_OUTPUT syntax with - AC_CONFIG_FILES, AC_CONFIG_COMMANDS, and new-type AC_OUTPUT trio. - - * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDEs for - _AS_PATH_SEPARATOR_PREPARE and _AS_TEST_PREPARE. - - * configure.in: Replace AC_FD_CC with AS_MESSAGE_LOG_FD. - * sysdeps/alpha/elf/configure.in: Likewise. - * sysdeps/i386/elf/configure.in: Likewise. - * sysdeps/mach/hurd/configure.in: Likewise. - * sysdeps/x86_64/elf/configure.in: Likewise. - - * configure.in: Use AC_CONFIG_SRCDIR and new AC_INIT syntax. - - * sysdeps/alpha/elf/configure.in: Remove unneeded sinclude statement. - * sysdeps/generic/configure.in: Likewise. - * sysdeps/i386/elf/configure.in: Likewise. - * sysdeps/ia64/elf/configure.in: Likewise. - * sysdeps/mach/configure.in: Likewise. - * sysdeps/mach/hurd/configure.in: Likewise. - * sysdeps/unix/configure.in: Likewise. - * sysdeps/unix/common/configure.in: Likewise. - * sysdeps/unix/sysv/aix/configure.in: Likewise. - * sysdeps/unix/sysv/linux/configure.in: Likewise. - * sysdeps/unix/sysv/linux/mips/configure.in: Likewise. - * sysdeps/x86_64/elf/configure.in: Likewise. - - * aclocal.m4: Use just the bits from AS_INIT that are needed for the - GLIBC_PROVIDES. Use plain comment instead of HEADER-COMMENT so - that it's obvious when extra autoconf machinery is being dragged in. - -2002-10-18 Roland McGrath - - * configure.in: Remove bogus echo included in - 2002-10-08 Aldy Hernandez change. - * configure: Regenerated. - -2002-10-18 Jakub Jelinek - - * sysdeps/unix/sysv/linux/pathconf.h (statfs_link_max): Add inline. - (statfs_filesize_max): New function. - * sysdeps/unix/sysv/linux/linux_fsinfo.h (JFFS_SUPER_MAGIC, - JFFS2_SUPER_MAGIC, JFS_SUPER_MAGIC, NTFS_SUPER_MAGIC, - ROMFS_SUPER_MAGIC, UDF_SUPER_MAGIC): Define. - * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Use - statfs_filesize_max. - * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Likewise. - * sysdeps/unix/sysv/linux/alpha/fpathconf.c: Removed. - * sysdeps/unix/sysv/linux/alpha/pathconf.c: Removed. - -2002-10-17 Roland McGrath - - * configure.in (MIG): Just AC_SUBST it here. - * configure: Regenerated. - * sysdeps/mach/configure.in (MIG): Do the AC_CHECK_TOOL here. - Adding final - argument to all AC_CHECK_HEADER uses for .defs files. - * sysdeps/mach/configure: Regenerated. - - * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDE([_AS_TR_SH_PREPARE]) - and AC_PROVIDE([_AS_CR_PREPARE]). - - * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDE([_AS_ECHO_N_PREPARE]). - Remove AC_LANG(C) call, instead just define([_AC_LANG], [C]). - - * elf/dl-support.c: Move _dl_tls_* variables to ... - * sysdeps/generic/libc-tls.c: ... here. - - * elf/dl-close.c (remove_slotinfo): Take new argument. If false, - allow IDX to be one past the current last slotinfo entry. - (_dl_close): Pass IMAP->l_init_called for that parameter. - -2002-10-07 Andreas Schwab - - * aclocal.m4: Fix for autoconf 2.53. - * configure.in: Likewise. Require autoconf 2.53. - -2002-10-08 Richard Henderson - - * soft-fp/op-4.h: Handle carry correctly in - __FP_FRAC_ADD_3, __FP_FRAC_ADD_4, __FP_FRAC_SUB_3, - __FP_FRAC_SUB_4, __FP_FRAC_DEC_3, __FP_FRAC_DEC_4. - * soft-fp/op-common.h: New macros _FP_DIV_MEAT_N_loop. - -2002-10-08 Aldy Hernandez - - * configure.in: Compute completely-soft. - * config.make.in: Make completely-soft available to sub-makes. - * sysdeps/powerpc/soft-fp/Makefile: Add gcc-single-routines and - gcc-double-routines. Add sim-full.c. Add fenv_const and - fe_nomask to libm-support. - * sysdeps/powerpc/soft-fp/sim-full.c: New file. - * sysdeps/powerpc/soft-fp/fraiseexcpt.c: New file. - * sysdeps/powerpc/soft-fp/fegetexcept.c: New file. - * sysdeps/powerpc/soft-fp/fclrexcpt.c: New file. - * sysdeps/powerpc/soft-fp/ftestexcept.c: New file. - * sysdeps/powerpc/soft-fp/fgetexcptflg.c: New file. - * sysdeps/powerpc/soft-fp/fsetexcptflg.c: New file. - * sysdeps/powerpc/soft-fp/fedisblxcpt.c: New file. - * sysdeps/powerpc/soft-fp/feenablxcpt.c: New file. - * sysdeps/powerpc/soft-fp/fegetenv.c: New file. - * sysdeps/powerpc/soft-fp/fesetenv.c: New file. - * sysdeps/powerpc/soft-fp/fegetround.c: New file. - * sysdeps/powerpc/soft-fp/fesetround.c: New file. - * sysdeps/powerpc/soft-fp/feupdateenv.c: New file. - * sysdeps/powerpc/soft-fp/feholdexcpt.c: New file. - * sysdeps/powerpc/soft-fp/fenv_const.c: New file. - * sysdeps/powerpc/soft-fp/libm-test-ulps: New file. - * sysdeps/powerpc/soft-fp/soft-supp.h: New file. - * sysdeps/powerpc/soft-fp/Versions: Add libgcc soft-float - symbols. Add __sim_disabled_exceptions, __sim_exceptions, - __sim_round_mode. - * sysdeps/powerpc/soft-float/Dist: Add sim-full.c, fenv_const.c. - * sysdeps/powerpc/soft-float/sfp-machine.h: Define - FP_HANDLE_EXCEPTIONS. - Define FP_ROUNDMODE. - Redefine FP_* macros to correspond to the FE_* bit positions. - Define FP_DIV_MEAT_S to _FP_DIV_MEAT_1_loop. - Define externs for __sim_exceptions, __sim_disabled_exceptions, - __sim_round_mode, __simulate_exceptions. - * sysdeps/powerpc/fpu/bits/fenv.h: Move file from here... - * sysdeps/powerpc/bits/fenv.h: ...to here. - -2002-10-06 Jakub Jelinek - - * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): - Store R_PPC_UADDR32 and R_PPC_UADDR16 one byte at a time. - Use __builtin_expect for R_PPC_ADDR24 overflow check. Fix - R_PPC_ADDR16, R_PPC_UADDR16 and R_PPC_ADDR14* overflow check, use - __builtin_expect. - -2002-10-15 Jakub Jelinek - - * include/resolv.h (__libc_res_nquery, __libc_res_nsearch, - __libc_res_nsend): New prototypes. - * resolv/res_query.c (QUERYSIZE): Define. - (__libc_res_nquery): Renamed from res_nquery. Added answerp - argument. Allocate only QUERYSIZE bytes first, if res_nmkquery - fails use MAXPACKET buffer. Call __libc_res_nsend instead of - res_nsend, pass answerp. - (res_nquery): Changed into wrapper around __libc_res_nquery. - (__libc_res_nsearch): Renamed from res_nsearch. Added answerp - argument. Call __libc_res_nquerydomain and __libc_res_nquery - instead of the non-__libc_ variants, pass them answerp. - (res_nsearch): Changed into wrapper around __libc_res_nsearch. - (__libc_res_nquerydomain): Renamed from res_nquerydomain. - Added answerp argument. Call __libc_res_nquery instead of - res_nquery, pass answerp. - (res_nquerydomain): Changed into wrapper around - __libc_res_nquerydomain. - * resolv/res_send.c: Include sys/ioctl.h. - (MAXPACKET): Define. - (send_vc): Change arguments. Reallocate answer buffer if it is - too small. - (send_dg): Likewise. - (__libc_res_nsend): Renamed from res_nsend. Added ansp argument. - Reallocate answer buffer if it is too small and hooks are in use. - Adjust calls to send_vc and send_dg. - (res_nsend): Changed into wrapper around __libc_res_nsend. - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): Allocate - just 1K answer buffer on the stack, use __libc_res_nsearch instead - of res_nsearch. - (_nss_dns_gethostbyaddr_r): Similarly with __libc_res_nquery. - * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyaddr_r): Likewise. - (_nss_dns_getnetbyname_r): Similarly with __libc_res_nsearch. - * resolv/gethnamaddr.c (gethostbyname2): Likewise. - (gethostbyaddr): Similarly with __libc_res_nquery. - * resolv/Versions (libresolv): Export __libc_res_nquery and - __libc_res_nsearch at GLIBC_PRIVATE. - -2002-10-17 Roland McGrath - - * configure.in: Grok --without-__thread and disable HAVE___THREAD. - * configure: Regenerated. - - * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Do CHECK_STATIC_TLS - before performing the reloc, not after. - * sysdeps/i386/dl-machine.h (elf_machine_rel): Likewise. - -2002-10-17 Ulrich Drepper - - * locale/programs/locale.c (write_locales): Use 'm' flag in fopen call. - * locale/programs/linereader.c (lr_open): Likewise. - * locale/programs/charmap-dir.c (charmap_open): Likewise. - * locale/programs/locarchive.c (add_locale_to_archive): Likewise. - -2002-10-17 Isamu Hasegawa - - * posix/bug-regex11.c: Add a test case for the bug reported by - Paolo Bonzini . - * posix/regexec.c (sift_states_bkref): Use correct destination of - the back reference. - -2002-10-17 Roland McGrath - - * elf/dl-load.c (_dl_map_object_from_fd): Don't check DF_STATIC_TLS. - * elf/dl-reloc.c (_dl_relocate_object: CHECK_STATIC_TLS): New macro - to signal error if an IE-model TLS reloc resolved to a dlopen'd module. - * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela): - Call it after performing TPOFF relocs. - * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise. - * elf/dl-conflict.c (CHECK_STATIC_TLS): New macro (no-op). - - * elf/dl-close.c (remove_slotinfo): Change asserts so as not to crash - when closing a partially-initialized object. - - * elf/dl-load.c (_dl_map_object_from_fd) [! USE_TLS]: Call lose - instead of _dl_fatal_printf when we see PT_TLS. - - * Makeconfig (CPPFLAGS): Fix last change to use $(libof-$( - - * cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Variable removed. - instead of += to append, to be sure $(lib) gets expanded at defn time. - (libof-$(cpp-src)): New variable, define this instead. - * extra-lib.mk (cpp-srcs-left): Reduce duplication in include setup. - (lib): Don't use override. - (CPPFLAGS-$(lib)): New variable, put -D's here. - * Makeconfig (CPPFLAGS): Use basename fn for CPPFLAGS-basename. - Also add $(CPPFLAGS-LIB) before the file-specific flags, for each - LIB found by $(libof-*) for basename, target, or source. - * Makerules (CPPFLAGS-nonlib): New variable. - * nscd/Makefile (lib): Set to nonlib when using cppflags-iterator.mk. - * locale/Makefile (lib): Likewise. - * sunrpc/Makefile (lib): Likewise. - - * sysdeps/unix/sysv/linux/fpathconf.c (LINUX_LINK_MAX): Move macro ... - * sysdeps/unix/sysv/linux/linux_fsinfo.h (LINUX_LINK_MAX): ... here. - * sysdeps/unix/sysv/linux/pathconf.h: New file. - (statfs_link_max): New function, guts from fpathconf.c. - * sysdeps/unix/sysv/linux/fpathconf.c: Rewritten using that. - * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Likewise. - * sysdeps/unix/sysv/linux/alpha/pathconf.c (__pathconf): Rewritten - to use the linux/pathconf.c code by #include rather than duplication. - * sysdeps/unix/sysv/linux/alpha/fpathconf.c (__pathconf): Likewise. - -2002-10-16 Jakub Jelinek - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): - Use __libc_errno only for libc itself. - -2002-10-16 Andreas Jaeger - - * sysdeps/x86_64/_mcount.S: Fix off-by-1 error in argument access. - -2002-10-16 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): - Use __libc_errno only for libc itself. - -2002-10-15 Roland McGrath - Jakub Jelinek - - * sysdeps/unix/sysv/linux/Makefile - ($(objpfx)syscall-%.h $(objpfx)syscall-%.d): Take code from - sparc/Makefile to produce a bi-arch file as needed. - That's now parameterized by the variable $(64bit-predefine). - Use LC_ALL=C for `comm' commands in that rule. - No longer conditional on [$(no_syscall_list_h)]. - * sysdeps/unix/sysv/linux/sparc/Makefile: Remove replacement rules. - (64bit-predefine): New variable. - * sysdeps/unix/sysv/linux/x86_64/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/Makefile: New file. - * sysdeps/unix/sysv/linux/powerpc/Makefile - (64bit-predefine): New variable. - -2002-10-15 Roland McGrath - - * sysdeps/unix/sysv/linux/Makefile - ($(objpfx)syscall-%.h $(objpfx)syscall-%.d) - - * login/utmp-private.h: Declare __libc_utmp_lock. - * sysdeps/unix/getlogin_r.c (getlogin_r): Take __libc_utmp_lock once - and call __libc_utmp_jump_table functions directly, instead of using - __setutent et al. - - * sysdeps/unix/sysv/linux/configure.in: Use case instead of if. - * sysdeps/unix/sysv/linux/configure: Regenerated. - - * sysdeps/gnu/bits/utmp.h: Include . - (struct lastlog) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: - Use int32_t for ll_time. - (struct utmp) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: - Use int32_t instead of long int for ut_session. - Use an anonymous struct with 32-bit fields for ut_tv. - * sysdeps/gnu/bits/utmpx.h: Include . - (struct utmpx) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: Do the same - here as in utmp.h for `struct utmp'. - * sysdeps/unix/sysv/linux/powerpc/bits/utmp.h: File removed. - * sysdeps/unix/sysv/linux/powerpc/bits/utmpx.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/utmp.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/utmpx.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/utmp.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/utmpx.h: File removed. - - * sysdeps/unix/sysv/linux/bits/resource.h: Replaced with the contents - of the sysdeps/unix/sysv/linux/i386/bits/resource.h file. - All the following files were identical or equivalent to it. - * sysdeps/unix/sysv/linux/i386/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/arm/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/cris/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/hppa/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/m68k/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/powerpc/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/s390/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/sh/bits/resource.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/resource.h: File removed. - - * sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Use size_t - instead of int for msg_iovlen, instead of socklen_t for msg_controllen. - Other than the previously incorrect sign of msg_iovlen, this is a - no-op on 32-bit platforms. On 64-bit platforms it makes this header - match their layouts as well, so the following are now identical to it. - * sysdeps/unix/sysv/linux/s390/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/sparc/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/x86_64/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/ia64/bits/socket.h: File removed. - * sysdeps/unix/sysv/linux/alpha/bits/socket.h: File removed. - -2002-10-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_VFORK_SYSCALL): - Define for 2.4+ kernels. - - * sysdeps/unix/sysv/linux/i386/vfork.S: Optimize for kernels which - are known to have the vfork syscall. Don't confuse the CPUs - branch prediction unit by jumping to the return address. - - * sysdeps/unix/sysv/linux/alpha/fpathconf.c (__fpathconf): Add - support for reiserfs and xfs. - - * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Add case for - XFS link count. - * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define XFS_SUPER_MAGIC - and XFS_LINK_MAX. - Patch by Eric Sandeen [PR libc/4706]. - -2002-10-16 Jakub Jelinek - - * include/libc-symbols.h (attribute_tls_model_ie): Define. - * include/errno.h (errno): Define to __libc_errno in libc.so. - Add attribute_tls_model_ie. - * include/netdb.h (h_errno): Define to __libc_h_errno in libc.so. - Add attribute_tls_model_ie. - * include/resolv.h (_res): Define to __libc_res in libc.so. Add - attribute_tls_model_ie. - * inet/herrno.c (__libc_h_errno): Add hidden alias to h_errno. - (h_errno): Define. - * resolv/res_libc.c (__libc_res): Add hidden alias to _res. - (_res): Define. - * sysdeps/generic/bits/libc-tsd.h (__libc_tsd_define): Add - attribute_tls_model_ie. - * sysdeps/generic/errno-loc.c (errno): Only undefine if not using - __thread. - * sysdeps/generic/errno.c (__libc_errno): Add hidden alias to errno. - * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): Use - __libc_errno in USE___THREAD case. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): + * sysdeps/unix/sysv/linux/sh/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * configure.in (HAVE_TLS_MODEL_ATTRIBUTE): Check for - __attribute__((tls_model (""))). - * configure: Rebuilt. - * config.h.in (HAVE_TLS_MODEL_ATTRIBUTE): Add. - -2002-10-15 Ulrich Drepper - - * timezone/asia: Update from tzdata2002d. - * timezone/australasia: Likewise. - * timezone/iso3166.tab: Likewise. - * timezone/southamerica: Likewise. - * timezone/zone-tab: Likewise. - -2002-10-15 Roland McGrath - - * sysdeps/generic/dl-tls.c (_dl_deallocate_tls) [TLS_TCB_AT_TP]: - Adjust TCB pointer before calling free, so we get the whole block. - -2002-10-14 Roland McGrath - - * sysdeps/unix/sysv/linux/x86_64/sigaction.c - [HAVE_HIDDEN && !HAVE_BROKEN_VISIBILITY_ATTRIBUTE]: Declare restore_rt - extern using attribute_hidden instead of static, avoids warning. - -2002-10-09 Jakub Jelinek - - * sysdeps/unix/sysv/linux/configure.in: Use */lib64 for s390x too. - * sysdeps/unix/sysv/linux/configure: Rebuilt. - -2002-10-14 Ulrich Drepper - - * po/sv.po: Update from translation team. - -2002-10-12 H.J. Lu - - * sunrpc/thrsvc.c (PROCQUIT): New. - (struct rpc_arg): New. - (dispatch): Call exit (0) if request->rq_proc == PROCQUIT. - (test_one_call): Take struct rpc_arg * instead of CLIENT *c. - (thread_wrapper): Modified for struct rpc_arg * and call PROCQUIT. - (main): Modified for struct rpc_arg *. - -2002-10-14 Ulrich Drepper - - * dirent/scandir.c: Rearrange code a bit to reduce binary size. - -2002-10-14 Jakub Jelinek - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Include tls.h. - (SYSCALL_ERROR_HANDLER): Use RTLD_PRIVATE_ERRNO sequence - in ld.so even if __thread is supported. - -2002-10-13 Jakub Jelinek - - * sysdeps/unix/sysv/linux/arm/profil-counter.h (profil_counter): - Add hack to prevent the compiler from clobbering the signal context. - * sysdeps/unix/sysv/linux/sh/profil-counter.h (profil_counter): + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - * sysdeps/unix/sysv/linux/x86_64/profil-counter.h (profil_counter): + * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. - -2002-10-14 Andreas Jaeger - - * sysdeps/mips/fpu/libm-test-ulps: Regenerated by - Guido Guenther . - -2002-10-14 Ulrich Drepper - - * po/sk.po: Update from translation team. - -2002-09-26 Roland McGrath - - * elf/dl-load.c (_dl_dst_count, _dl_dst_substitute): Handle $LIB - dynamic string tag. - * elf/Makefile ($(objpfx)trusted-dirs.st): Make the output define - DL_DST_LIB based on $(slibdir). - -2002-10-13 Roland McGrath - - * elf/rtld-Rules ($(objpfx)rtld-libc.a): Use $(verbose) in ar command. - - * sysdeps/mach/hurd/getresuid.c: New file. - * sysdeps/mach/hurd/getresgid.c: New file. - * sysdeps/mach/hurd/setresuid.c: New file. - * sysdeps/mach/hurd/setresgid.c: New file. - - * posix/unistd.h [__USE_GNU] (getresuid, getresgid, setresuid, - setresgid): Declare them. - * NEWS: Mention it. - * include/unistd.h - (__getresuid, __getresgid, __setresuid, __setresgid): Declare them, - add libc_hidden_proto. - * posix/Versions (libc: GLIBC_2.3.2): New set. Add - getresuid, getresgid, setresuid, setresgid here. - * Versions.def (libc): Define GLIBC_2.3.2 set. - * sysdeps/generic/getresuid.c (__getresuid): Fix argument types. - Add libc_hidden_def. - * sysdeps/generic/getresgid.c (__getresgid): Likewise. - * sysdeps/generic/setresgid.c: New file. - * sysdeps/generic/setresuid.c: New file. - * sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc] - (sysdep_routines): Don't add getresuid and getresgid here. - * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = misc] - (sysdep_routines): Don't add setresuid and setresgid here. - * sysdeps/unix/sysv/linux/cris/Makefile: Likewise. - * sysdeps/unix/sysv/linux/sh/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Likewise. - * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. - * sysdeps/unix/sysv/linux/m68k/Makefile: Likewise. - * posix/Makefile (routines): Add them all here instead. - * sysdeps/unix/sysv/linux/i386/getresuid.c (getresuid): Renamed to - __getresuid. Add libc_hidden_def for that, and weak alias to old name. - * sysdeps/unix/sysv/linux/i386/getresgid.c (getresgid): Renamed to - __getresgid. Add libc_hidden_def for that, and weak alias to old name. - * sysdeps/unix/sysv/linux/i386/setresuid.c: Add libc_hidden_def. - [! __NR_setresuid]: Include generic file. - * sysdeps/unix/sysv/linux/i386/setresgid.c (setresgid): Renamed to - __setresgid. Add libc_hidden_def for that, and weak alias to old name. - [! __NR_setresuid]: Include generic file. - * sysdeps/unix/sysv/linux/syscalls.list (setresuid, setresgid): - Caller is - now, not EXTRA. - * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list - (setresuid, setresgid, getresuid, getresgid): Likewise. - * sysdeps/unix/sysv/linux/syscalls.list (getresuid, getresgid): - Add these calls here. - * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove them here. - * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. - - * sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc] - (sysdep_routines): Add setfsuid and setfsgid here. - * sysdeps/unix/sysv/linux/arm/Makefile: Not here. - * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile: Likewise. - * sysdeps/unix/sysv/linux/cris/Makefile: Likewise. - * sysdeps/unix/sysv/linux/sh/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Likewise. - * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. - * sysdeps/unix/sysv/linux/m68k/Makefile: Likewise. - - * hurd/errno.c: Renamed to ... - * hurd/errno-loc.c: ... this. - * hurd/Makefile (routines): errno -> errno-loc - -2002-10-13 Ulrich Drepper - - * po/de.po: Update from translation team. - - * MakeTAGS: Add -E flag to xgettext runs. - -2002-10-12 Ulrich Drepper - - * po/fr.po: Update from translation team. - - * sysdeps/posix/system.c: Remove support for old and buggy SCO systems. - Optimize a bit for use in glibc. - -2002-10-12 Roland McGrath - - * stdio-common/tst-rndseek.c (TIMEOUT): Increase to 10 seconds. - Some machines are slow. Guido Guenther has one. - -2002-10-12 Ulrich Drepper - - * po/sv.po: Update from translation team. - -2002-10-11 Isamu Hasegawa - - * posix/regcomp.c (re_compile_fastmap_iter): Remove the handling - OP_CONTEXT_NODE. - (regfree): Likewise. - (create_initial_state): Likewise. - (analyze): Remove the substitutions which became useless. - (calc_first): Likewise. - (calc_epsdest): Use edests of OP_BACK_REF in case that it has - epsilon destination. - (duplicate_node_closure): New function. - (duplicate_node): Remove the handling OP_CONTEXT_NODE. - (calc_inveclosure): Likewise. - (calc_eclosure): Likewise. - (calc_eclosure_iter): Invoke duplicate_node_closure instead of - direct invocation of duplicate_node. - (parse): Don't use comma operator in the return to avoid compiler - warning. - (parse_reg_exp): Likewise. - (parse_branch): Likewise. - (parse_expression): Likewise. - (parse_sub_exp): Likewise. - (parse_dup_op): Likewise. - * posix/regex_internal.c (re_dfa_add_node): Remove the substitutions - which became useless. - (create_ci_newstate): Remove the handling OP_CONTEXT_NODE. - (create_cd_newstate): Likewise. - * posix/regex_internal.h (re_token_type_t): Remove the obsolete type. - (re_token_t): Likewise. - (re_dfa_t): Likewise. - (re_node_set_remove): New macro. - * posix/regexec.c (check_matching): Remove the handling - OP_CONTEXT_NODE. - (check_halt_node_context): Likewise. - (proceed_next_node): Likewise. - (pop_fail_stack): Fix the memory leak. - (set_regs): Likewise. - (free_fail_stack_return): New function. - (sift_states_backward): Fix the memory leak. Remove the handling - OP_CONTEXT_NODE. - (update_cur_sifted_state): Append some if clause to avoid redundant - call. - (sub_epsilon_src_nodes): Use IS_EPSILON_NODE since it might be a - back reference. - (check_dst_limits): Remove the handling OP_CONTEXT_NODE. - (check_subexp_limits): Likewise. - (search_subexp): Likewise. - (sift_states_bkref): Likewise. - (transit_state_mb): Likewise. - (transit_state_bkref_loop): Likewise. - (transit_state_bkref_loop): Likewise. - (group_nodes_into_DFAstates): Likewise. - (check_node_accept): Likewise. - (sift_ctx_init): Add initializing. - -2002-10-12 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/sysdep.h (INLINE_SYSCALL): Use - __builtin_expect. - -2002-10-11 Ulrich Drepper - - * elf/dl-load.c (_dl_map_object_from_fd): Remove unnecessarily - duplicated variable c. - - * sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Use INTERNAL_SYSCALL - if possible. - - * sysdeps/unix/sysv/linux/i386/sysdep.h - (INTERNAL_SYSCALL_ERROR_P): New define. - (INTERNAL_SYSCALL_ERRNO): Likewise. - - * sysdeps/unix/sysv/linux/i386/profil-counter.h (profil_counter): - Add hack to prevent the compiler from clobbering the signal context. - -2002-10-11 Roland McGrath - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): - Fix typos. - - * sysdeps/generic/dl-lookupcfg.h: Include . - * sysdeps/sh/dl-lookupcfg.h: File removed. - * sysdeps/i386/dl-lookupcfg.h: File removed. - - * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): Add - missing labels and ; from last change. - - * stdio-common/tst-sscanf.c (val_double): Append .0 to large whole - number literals, so they are doubles instead of ints. - -2002-10-09 Roland McGrath - - * sysdeps/generic/bits/libc-tsd.h [USE___THREAD]: Conditional - changed from [USE_TLS && HAVE___THREAD]. - - * sysdeps/i386/dl-machine.h (elf_machine_type_class, elf_machine_rel): - Disable TLS relocs if [RTLD_BOOTSTRAP && !USE___THREAD]. - * sysdeps/x86_64/dl-machine.h - (elf_machine_type_class, elf_machine_rela): Likewise. - * sysdeps/sh/dl-machine.h (elf_machine_type_class, elf_machine_rela): + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h (F_SETOWN, F_GETOWN): + Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (F_SETOWN, F_GETOWN): + Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (F_SETOWN, F_GETOWN): + Likewise. + * sysdeps/generic/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * sysdeps/mach/hurd/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise. + * io/sys/stat.h (S_ISSOCK, S_IFSOCK): Likewise. - * include/link.h (struct link_map): Remove member l_tls_tp_initialized. - * elf/rtld.c (_dl_start_final, dl_main): Don't use it. - (_dl_start): Conditionalize PT_TLS check on [USE___THREAD]. - - * sysdeps/i386/dl-tls.h (__TLS_GET_ADDR): Use ___tls_get_addr_internal - instead of ___tls_get_addr. - (___tls_get_addr_internal): Add attribute_hidden to decl. - - * sysdeps/generic/ldsodefs.h (struct rtld_global): New variable - _dl_error_catch_tsd. - * elf/rtld.c (startup_error_tsd): New function. - (dl_main): Point _dl_error_catch_tsd at that. - * elf/dl-error.c: Don't use libc-tsd.h for DL_ERROR, - use new function pointer instead. - * elf/dl-tsd.c: New file. - * elf/Makefile (routines): Add it. - -2002-10-07 Roland McGrath - - * elf/dl-misc.c (_dl_debug_vdprintf): Use INTERNAL_SYSCALL macro for - writev if it's available. Otherwise if [RTLD_PRIVATE_ERRNO] then - take _dl_load_lock around calling __writev. - - * sysdeps/unix/sysv/linux/i386/sysdep.h (INTERNAL_SYSCALL): New macro. - (INLINE_SYSCALL): Use that. - - * sysdeps/generic/dl-sysdep.h: New file. - * sysdeps/mach/hurd/dl-sysdep.h: New file. - * sysdeps/generic/ldsodefs.h: Include . - * include/errno.h [IS_IN_rtld]: Include to define ... - [RTLD_PRIVATE_ERRNO]: Use a hidden global variable for errno and - access it directly. - * elf/dl-minimal.c (__errno_location): Removed. - * sysdeps/unix/i386/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: - Use GOTOFF access for errno. - * sysdeps/unix/sysv/linux/i386/sysdep.h - [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. - - * sysdeps/unix/x86_64/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: - Use PC-relative access for errno. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h - [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. - - * include/tls.h: New file. - (USE___THREAD): New macro. - Define to 1 under [USE_TLS && HAVE___THREAD] and only when compiling - libc or libpthread. - * sysdeps/unix/sysv/linux/i386/sysdep.h [USE___THREAD]: Conditional - changed from [USE_TLS && HAVE___THREAD]. - * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. - * sysdeps/unix/i386/sysdep.S: Likewise. - * sysdeps/unix/x86_64/sysdep.S: Likewise. - * include/errno.h: Likewise. - * include/netdb.h: Likewise. - * include/resolv.h: Likewise. - - * sysdeps/generic/errno.c: New file. - * csu/Makefile (aux): New variable, list errno. - * sysdeps/unix/sysv/linux/i386/sysdep.S (errno, _errno): Remove defns. - * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/x86_64/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/arm/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/cris/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/hppa/sysdep.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/powerpc/sysdep.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sysdep.S: Likewise. - * sysdeps/unix/sysv/linux/sh/sysdep.S: Likewise. - * sysdeps/unix/alpha/sysdep.S: Likewise. - * sysdeps/generic/start.c: Likewise. - * sysdeps/unix/start.c: Likewise. - * sysdeps/unix/arm/start.c: Likewise. - * sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise. - * sysdeps/unix/sparc/start.c: Likewise. - * sysdeps/unix/sysv/irix4/start.c: Likewise. - * sysdeps/unix/sysv/linux/mips/sysdep.S: File removed. - - * manual/search.texi (Tree Search Function, Hash Search Function): - Mention search.h clearly. - -2002-10-05 Roland McGrath - - * elf/dl-fxstat64.c: File removed. - * elf/dl-xstat64.c: File removed. - * elf/Makefile (rtld-routines): Remove them. - * sysdeps/unix/sysv/linux/xstat64.c: Remove RTLD_STAT64 conditionals. - Instead, use strong_alias instead of versioned_symbol in the - !SHLIB_COMPAT case. - * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. - - * include/shlib-compat.h - (SHLIB_COMPAT): Require that IS_IN_##lib be defined nonzero. - [! NOT_IN_libc] (IS_IN_libc): Define it. - * cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Use -Dx=1 not just -Dx. - * elf/Makefile (CPPFLAGS-.os): Likewise. - - * sunrpc/rpc_main.c (main): Don't declare with noreturn attribute. - Return the status instead of calling exit. - - * Makeconfig (CFLAGS): Prepend -std=gnu99. - * Makerules (+make-deps): Use $(CFLAGS) only for .c sources. - Remove superfluous rm command, whose @ plus make bugs hid - all these commands from the make output. - - * include/stubs-prologue.h: New file. Give #error under #ifdef _LIBC. - * Makefile ($(inst_includedir)/gnu/stubs.h): Depend on it. - Use that file's contents instead of literal echo's for the prologue. - * include/features.h: Include unconditionally. - * include/gnu/stubs.h: New file. - -2002-09-30 Roland McGrath - - * elf/rtld-Rules: New file. - * elf/Makefile ($(objpfx)librtld.map, $(objpfx)librtld.mk, - $(objpfx)rtld-libc.a): New targets. - (generated): Add them. - (reloc-link): Remove -o $@ from the variable. - ($(objpfx)dl-allobjs.os): Add -o $@ after $(reloc-link). - (distribute): Add rtld-Rules. - (CPPFLAGS-.os): Define this instead of CFLAGS-.os. - * Makerules ($(+sysdir_pfx)sysd-rules): Emit rules for rtld-% targets. - (common-mostlyclean, common-clean): Clean up rtld-* files. - * sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules. - -2003-05-20 Jakub Jelinek - - * elf/dynamic-link.h (elf_get_dynamic_info): Add temp argument. - If temp != NULL, copy dynamic entries which need relocation to temp - array before relocating. - (DL_RO_DYN_TEMP_CNT): Define. - * elf/dl-load.c (_dl_map_object_from_fd): Adjust caller. - * elf/rtld.c (_dl_start): Likewise. - (dl_main): Likewise. Add dyn_temp static variable. - -2002-10-11 Roland McGrath - - * sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in - now-unused dtv slot, reset the slot to TLS_DTV_UNALLOCATED. - - * elf/tls-macros.h [__x86_64__] (TLS_GD): Fix the sequence with the - proper set of no-op insn prefixes. - - * elf/tst-tls8.c (do_test): Use %zd format for l_tls_modid members. - -2002-10-11 Ulrich Drepper - - * sysdeps/unix/sysv/linux/execve.c: Don't try calling - __pthread_kill_other_threads_np. - - * sysdeps/generic/pselect.c: Avoid unnecessary sigprocmask calls. - -2002-10-08 Roland McGrath +2004-05-01 Jakub Jelinek - * locale/newlocale.c (__newlocale): If setting all categories to "C", - just return &_nl_C_locobj instead of copying it. - * locale/freelocale.c (__freelocale): Check for &_nl_C_locobj. - * locale/duplocale.c (__duplocale): Likewise. + * posix/Versions (libc): Remove __libc_wait, __libc_waitpid, + __libc_pause, __libc_nanosleep, __libc_pread, __libc_pread64, + __libc_pwrite64, __waitid and __pselect @@GLIBC_PRIVATE. + * stdlib/Versions (libc): Remove __on_exit@@GLIBC_PRIVATE. + * sysdeps/unix/sysv/linux/Versions (libc): Remove + __libc_sigaction@@GLIBC_PRIVATE. + * sysdeps/unix/sysv/linux/x86_64/Versions (libc): Remove + __modify_ldt@@GLIBC_PRIVATE. + * socket/Versions (libc): Remove __libc_accept, __libc_send, + __libc_recvfrom, __libc_recvmsg, __libc_sendmsg, __libc_recv, + __libc_sendto and __libc_connect @@GLIBC_PRIVATE. + * stdio-common/Versions (libc): Remove + _itoa_upper_digits@@GLIBC_PRIVATE. + * resolv/Versions (libresolv): Remove __ns_samename@@GLIBC_PRIVATE. + * misc/Versions (libc): Remove __libc_fsync, __libc_msync, + __libc_readv and __libc_writev @@GLIBC_PRIVATE. + * termios/Versions (libc): Remove __libc_tcdrain@@GLIBC_PRIVATE. + * io/Versions (libc): Remove __libc_open, __libc_close, __libc_read, + __libc_write, __libc_lseek, __libc_fcntl, __libc_open64 and + __libc_lseek64 @@GLIBC_PRIVATE. -2002-10-07 Roland McGrath +2004-04-30 Jakub Jelinek - * config.h.in (HAVE_I386_SET_GDT): New #undef. - * sysdeps/mach/configure.in: Define it with new check for i386_set_gdt. - * sysdeps/mach/configure: Regenerated. + * elf/dl-load.c (open_verify): Move e_phentsize check after e_type + check. -2002-10-06 Franz Sirl +2004-04-29 Steven Munroe - * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL): - Add all necessary register outputs for syscall-clobbered registers. + * sysdeps/powerpc/powerpc64/fpu/s_ceil.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_floor.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_floorf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_llrint.c: Removed. + * sysdeps/powerpc/powerpc64/fpu/s_llrint.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_llrintf.c: Removed. + * sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_llround.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_lround.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_lroundf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_rint.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_rintf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_round.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_roundf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_trunc.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_truncf.S: New file. -2002-10-02 David Mosberger + * math/test-misc.c [LDBL_MANT_DIG == 106](main): Correct LDBL_MAX + mantissa for AIX long double format. + * misc/qefgcvt.c [LDBL_MANT_DIG == 106] (NDIGIT_MAX): Define for AIX + long double format. + * misc/qefgcvt_r.c [LDBL_MANT_DIG == 106] (NDIGIT_MAX): Likewise. + * stdlib/fpioconst.c [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__>1024] + (_fpioconst_pow10): AIX long double format has same exponent range as + double. + * stdlib/fpioconst.h [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__>1024] + (LDBL_MAX_10_EXP_LOG): AIX long double format has same exponent range + as double. - * sysdeps/ia64/bzero.S: Rewritten by Sverre Jarp to tune for - Itanium 2 (and Itanium). - Fix unwind directives and make it fit in 80 columns. - * sysdeps/ia64/memset.S: Likewise. - * sysdeps/ia64/memcpy.S: Likewise. - Move jump table to .rodata section. +2004-04-23 Art Haas -2002-10-03 Roland McGrath + * sysdeps/unix/sysv/linux/kernel-features.h: Add 'defined'. - * sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Add - clobbers to asm. +2004-04-28 Carlos O'Donell -2002-10-10 Andreas Jaeger + * sysdeps/unix/sysv/linux/mq_getattr.c: Include . + * sysdeps/unix/sysv/linux/mq_notify.c: Likewise. + * sysdeps/unix/sysv/linux/mq_open.c: Likewise. + * sysdeps/unix/sysv/linux/mq_receive.c: Likewise. + * sysdeps/unix/sysv/linux/mq_send.c: Likewise. - * sysdeps/x86_64/_mcount.S: Restore correct registers. +2004-04-29 Philip Blundell -2002-10-10 Ulrich Drepper + * sysdeps/arm/dl-machine.h (RTLD_START): Avoid unnecessary GOT + entries. - * posix/Versions (libc) [GLIBC_PRIVATE]: Add __pselect. +2004-04-29 Jakub Jelinek -2002-10-09 Ulrich Drepper + * manual/resource.texi (sched_setaffinity, sched_getaffinity): Fix + prototypes and description [BZ #131]. - * sysdeps/generic/ldsodefs.h: Remove attribute_hidden from - _dl_allocate_tls_init. Add rtld_hidden_proto. - * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add - rtld_hidden_def. - * elf/Versions (ld) [GLIBC_PRIVATE]: Add _dl_allocate_tls_init. + * string/bits/string2.h (strpbrk): Cast NULL to char * [BZ #130]. + Patch by Ed Catmur . + * string/tst-inlcall.c (main): Add test for strpbrk. - * version.h (VERSION): Bump to 2.3.1. + [BZ #140] + * sysdeps/unix/sysv/linux/sys/sysctl.h: Remove linux/compiler.h + include. + (_LINUX_KERNEL_H, _LINUX_TYPES_H, _LINUX_LIST_H): Only define if not + yet defined, #undef back after including linux/sysctl.h if defined + here. + (__LINUX_COMPILER_H, __user): Define if not yet defined, #undef + back after including linux/sysctl.h if defined here. - * Make-dist: Add back one of the tar invocations removed before. + * sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c (_Qp_qtoi): Use %f31 + for single precision register, add it to __asm clobbers [BZ #139]. + * sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c (_Qp_qtoui): Use %f31 + for single precision register, add it to __asm clobbers. + * sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c (_Qp_qtoux): Use fqtox + instead of fqtoi in QP_HANDLE_EXCEPTIONS. + * sysdeps/sparc/sparc64/soft-fp/qp_qtox.c (_Qp_qtox): Likewise. + Reported by M. H. VanLeeuwen . - * stdlib/Makefile (distribute): Add allocalim.h. +2004-04-23 Andreas Schwab - * sysdeps/generic/bits/libc-tsd.h [!(USE_TLS && HAVE___THREAD)] - (__libc_tsd_address): Use correct variable name. - Patch by Stefan Jones . + * sysdeps/unix/sysv/linux/m68k/register-dump.h: Use + __attribute_used__. - * sysdeps/unix/sysv/linux/ia64/getcontext.S: Add missing ;;. - Reported by edwardsg@sgi.com [PR libc/4678]. +2004-04-22 Philip Blundell - * Versions.def (libc): Add GLIBC_2.3.1. - (libpthread): Add GLIBC_2.3.1. + * sysdeps/arm/dl-machine.h (elf_machine_rela): Don't use INTUSE + when calling _dl_signal_error. + (elf_machine_rel): Likewise. - * include/signal.h: Add libc_hidden_proto for __sigwait, __sigwaitinfo, - and __sigtimedwait. - * signal/Versions: Add __sigtimedwait, __sigwait, and __sigwaitinfo. - * sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Add - libc_hidden_def. - * sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Likewise. - * sysdeps/unix/sysv/linux/sigwaitinfo.c (__sigwaitinfo): Likewise. +2004-04-21 Ulrich Drepper - * include/sys/msg.h: Declare __libc_msgrcv and __libc_msgsnd. - * sysdeps/unix/sysv/linux/msgrcv.c (__msgrcv): Rename to __libc_msgrcv - and make old name an alias. - * sysdeps/unix/sysv/linux/msgsnd.c (__msgsnd): Rename to __libc_msgsnd - and make old name an alias. - * sysvipc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_msgrcv and - __libc_msgsnd. + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Define _GI___sigsetjmp + and use it internally instead of __sigsetjmp. + * sysdeps/ia64/fpu/s_frexpf.c (frexpf): Use _GI___libm_frexp_4f. + * sysdeps/ia64/fpu/s_frexpl.c (frexpl): Use _GI___libm_frexp_4l. + * sysdeps/ia64/fpu/libm_frexp4.S: Define _GI___libm_frexp_4. + * sysdeps/ia64/fpu/libm_frexp4f.S: Define _GI___libm_frexp_4f. + * sysdeps/ia64/fpu/libm_frexp4l.S: Define _GI___libm_frexp_4l. + * sysdeps/ia64/fpu/s_frexp.c (frexp): Use _GI___libm_frexp_4. + * sysdeps/ia64/fpu/libm_support.h: Declare _GI___libm_frexp_4, + _GI___libm_frexp_4f, _GI___libm_frexp_4l. + * sysdeps/ia64/fpu/bits/mathinline.h: New file. + * sysdeps/unix/sysv/linux/ia64/__start_context.S: Use + HIDDEN_JUMPTARGET for exit call. + * sysdeps/unix/sysv/linux/ia64/clone2.S: Use HIDDEN_JUMPTARGET for + _exit call. + * sysdeps/ia64/bcopy.S: Use HIDDEN_JUMPTARGET for memmove call. + * sysdeps/ia64/strcat.S: Use HIDDEN_JUMPTARGET for strlen and + strcpy calls. - * include/sys/uio.h: Declare __libc_readv and __libc_writev. - * misc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_readv and - __libc_writev. - * sysdeps/generic/readv.c (__readv): Rename to __libc_readv and make - old name an alias. - * sysdeps/posix/readv.c: Likewise - * sysdeps/unix/sysv/aix/readv.c: Likewise. - * sysdeps/unix/sysv/linux/readv.c: Likewise. - * sysdeps/generic/writev.c (__writev): Rename to __libc_writev and make - old name an alias. - * sysdeps/posix/writev.c: Likewise - * sysdeps/unix/sysv/aix/writev.c: Likewise. - * sysdeps/unix/sysv/linux/writev.c: Likewise. +2004-04-21 Jakub Jelinek - * include/sys/wait.h: Declare __waitid. - * posix/Versions (libc) [GLIBC_PRIVATE]: Add __waitid. - * sysdeps/generic/waitid.c (waitid): Rename to __waitid and make old - name an alias. - * sysdeps/posix/waitid.c: Likewise. - * sysdeps/unix/sysv/aix/waitid.c: Likewise. + * posix/tst-chmod.c (do_test): Fix a typo. - * sysdeps/unix/sysv/linux/syscalls.list: Add creat syscall. + * elf/lateglobal.c (main): Fix error checks. + Patch by Stephen Clarke . -2002-10-07 Jakub Jelinek + * manual/ctype.texi (isblank, iswblank): Mark as ISO functions, + mention they have been added in ISO C99. + Reported by Ben Pfaff . - * include/alloca.h (__libc_use_alloca, __libc_alloca_cutoff): New - prototypes. - (__MAX_ALLOCA_CUTOFF): Define. - Include allocalim.h. - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r, - _nss_dns_gethostbyaddr_r): Use alloca or malloc to allocate - host_buffer depending on __libc_use_alloca. - * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r, - _nss_dns_getnetbyaddr_r): Use alloca or malloc to allocate - net_buffer depending on __libc_use_alloca. - * resolv/res_query.c (res_nquery): Use alloca or malloc to allocate - buf depending on __libc_use_alloca. - * resolv/gethnamaddr.c (gethostbyname2, gethostbyaddr): Likewise. - * stdio-common/vfprintf.c (vfprintf): Use __libc_use_alloca - instead of hardcoded constants. - Pass proper size argument to alloca and compute end for wide char - version. - * stdio-common/printf_fp.c (__printf_fp): Use __libc_use_alloca - instead of hardcoded constants. - * string/strcoll.c (strcoll): Likewise. - * string/strxfrm.c (strxfrm): Likewise. - * sysdeps/posix/readv.c (__readv): Likewise. - * sysdeps/posix/writev.c (__writev): Likewise. - * sysdeps/generic/allocalim.h: New file. +2004-03-31 H.J. Lu -2002-10-08 Roland McGrath + * sysdeps/ieee754/ldbl-128/bits/huge_vall.h: Fix typo. - * configure.in (aux_missing warning): Change "too old" to - "incompatible versions", since for autoconf it's "too new" right now. - * configure: Regenerated. +2004-04-20 Jakub Jelinek - * configure.in (AUTOCONF): New check to set it. Set to "no" if the - one found doesn't work on our configure.in. - * configure: Regenerated. - * config.make.in (AUTOCONF): New substituted variable. - * Makefile (autoconf-it-cvs): New canned sequence, broken out of ... - (autoconf-it): ... here, use that instead of defining conditionally. - Use $(AUTOCONF) instead of literal autoconf. - [$(AUTOCONF) != no] (configure, %/configure): Protect these rules - with this condition. - * Make-dist (autoconf-it, configure, %/configure): Copy those changes. + * sysdeps/unix/sysv/linux/shm_open.c (shm_unlink): Change EPERM into + EACCES. -2002-10-08 Ulrich Drepper +2004-04-20 Jakub Jelinek - * Make-dist (dist): Cleanup a bit. We are not interested in the - 14 char filename limit anymore. Remove intermediate files and - symlinks. + * stdio-common/vfscanf.c (_IO_vfscanf): Revert last %% whitespace + handling change. + * stdio-common/tst-sscanf.c (int_tests): Adjust. -2002-10-05 Ulrich Drepper + * nis/nss-nis.c: Include stdlib.h. - * po/sk.po: Update from translation team. - * po/tr.po: Likewise. - * po/gl.po: Likewise. + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Shut up a + warning. + * sysdeps/sparc/sparc64/memcmp.S (memcmp): Remove BP_SYM () from + libc_hidden_builtin_def. -2002-10-05 Kaz Kojima +2004-04-20 Jim Meyering - * elf/tls-macros.h: Fix SH version of macros so as to match ABI syntax. + * misc/error.c (error_tail): Don't leak upon realloc failure. -2002-10-03 Ulrich Drepper +2004-04-20 Martin Schwidefsky - * version.h (RELEASE): Change to stable. + * sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable): + Use RETURN_ADDRESS instead of __builtin_return_address. -2002-10-03 Jakub Jelinek +2004-04-19 Ulrich Drepper - * sysdeps/unix/sysv/linux/_exit.c (__syscall_exit, - __syscall_exit_group): New prototypes. + * sysdeps/unix/sysv/linux/mq_unlink.c: Rewrite to produce more + compact code. -2002-10-03 Ulrich Drepper +2004-04-20 Jakub Jelinek - * glibc 2.3 released. + * stdio-common/vfscanf.c (_IO_vfscanf): When skipping whitespace, + do input_error () instead of conv_error () and don't look at errno. + Don't eat any whitespace before %% if skip_space == 0. + * stdio-common/tst-sscanf.c (int_tests): New array. + (main): Run int_tests. -See ChangeLog.13 for earlier changes. +See ChangeLog.14 for earlier changes. diff -durpN glibc-2.3.3/ChangeLog.14 glibc-2.3.4/ChangeLog.14 --- glibc-2.3.3/ChangeLog.14 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/ChangeLog.14 2004-04-20 00:14:48.000000000 -0400 @@ -0,0 +1,16759 @@ +2004-04-19 Roland McGrath + + * rt/tst-mqueue9.c (do_test): Initialize RESULT. + +2004-04-19 Jakub Jelinek + + * sysdeps/unix/sysv/linux/mq_unlink.c (mq_unlink): Change EPERM into + EACCES. + * rt/Makefile (tests): Add tst-mqueue9. + * rt/tst-mqueue9.c: New test. + * rt/tst-mqueue4.c (do_test): Add test for mq_unlink of a too long + name component. + +2004-04-19 Ulrich Drepper + + * rt/tst-mqueue7.c (do_test): Make newargv const. + +2004-04-18 Randolph Chung + + * sysdeps/hppa/elf/entry.h: New file. + * sysdeps/hppa/machine-gmon.h: New file. + * sysdeps/unix/sysv/linux/hppa/profil-counter.h: Don't use x86 version. + +2004-04-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/rt-sysdep.c: New file. + * sysdeps/unix/sysv/linux/powerpc/Makefile (librt-routines): Add + rt-sysdep. + + * rt/tst-mqueue5.c (mqsend): Don't inline. + (mqrecv): Likewise. + + * rt/tst-timer4.c: Include . + +2004-04-17 Jakub Jelinek + + * rt/Makefile (tests): Add tst-mqueue8. + * rt/tst-mqueue8.c: New test. + + * sysdeps/unix/sysv/linux/s390/Makefile (librt-routines): Add + rt-sysdep. + * sysdeps/unix/sysv/linux/s390/rt-sysdep.S: New file. + +2004-03-26 H.J. Lu + + * sysdeps/unix/sysv/linux/wordsize-64/fxstat.c (__fxstat): Don't + use "struct kernel_stat". + +2004-04-02 H.J. Lu + + * sysdeps/ia64/memcmp.S: Fix symbol. + +2004-04-04 Carlos O'Donell + + * sysdeps/hppa/Dist: Add bits/link.h elf/entry.h. + + * sysdeps/hppa/bits/link.h: New file. + + * sysdeps/hppa/dl-machine.h (__hppa_init_bootstrap_fdesc_table): + Initialze the fdesc table for the generic code. + (elf_machine_dynamic): Use asm version. + (elf_machine_load_addresss): Simplify asm by calling + elf_machine_dynamic. + (elf_machine_fixup_plt): Correct comment. + (elf_machine_profile_fixup_plt): New. + (elf_machine_runtime_setup): Check PLT exists, if lazy=1 process + normally, else relocate all the absolute entries. + (RTLD_START): Fix comments. + (TRAMPOLINE_TEMPLATE): Reformat assembly, add return pointer for + calls to profile_fixup. + (ELF_MACHINE_SIZEOF_JMP_SLOT, DL_STATIC_FUNCTION_ADDRESS, + DL_PLATFORM_INIT): Define. + (DL_FUNCTION_ADDRESS): Remove. + (dl_platform_init): New. + (elf_machine_rela): Use generic fdesc code, and process all COPY + relocations. Use __attribute__((always_inline)). + (elf_machine_rela_relative): Add sanity checks, remove IPLT + processing, print error message in default case. Use + __attribute__((always_inline)). + (elf_machine_lazy_rel): Use __attribute__((always_inline)). + +2004-04-05 Carlos O'Donell + + * sysdeps/hppa/fpu/feupdateenv.c (feupdateenv): Use only sw[0] + and call feraiseexcept. + +2003-11-15 Randolph Chung + + * gmon/gmon.c (__monstartup): Round kcountsize to multiples of + the froms[] array so the array is properly aligned. + +2004-04-05 H.J. Lu + + * Makeconfig (libgcc_eh): Add -Wl,. + + * configure.in: Add -lgcc_s for --as-needed check. + +2004-04-16 Kaz Kojima + + * sysdeps/sh/elf/configure.in: New file. + +2004-04-17 Ulrich Drepper + + * iconvdata/gconv-modules: Add PT154 and RK1048 entries. + * iconvdata/tst-tables.sh: Add PT154 and RK1048. + * iconvdata/Makefile (modules): Add PT154 anhd RK1048. + (distribute): Add pt154.c and rk1048.c. + (gen-8bit-gap-modules): Add pt154 and rk1048. + * icondata/pt154.c: New file. + * iconvdata/rk1048.c: New file. + + * rt/tst-timer4.c: Disable some tests, mark errors better. + +2004-04-16 Ulrich Drepper + + * rt/tst-mqueue6.c (mqsend): Don't inline. + (mqrecv): Likewise. + + * rt/tst-mqueue3.c (do_test): Cope with kernel without mq support. + + * sysdeps/ieee754/bits/nan.h (__nan_union): Add __attribute_used__ + attribute to keep gcc quiet. + +2004-04-16 Jakub Jelinek + + * misc/syslog.c (vsyslog): Avoid freeing failbuf. + +2004-04-15 Jakub Jelinek + + * rt/Makefile (tests): Add tst-timer4. + * rt/tst-timer4.c: New test. + +2004-04-15 Jakub Jelinek + + * rt/tst-mqueue5.c (rtmin_code): New variable. + (rtmin_handler): Set it. + (thr, do_child, do_test): Also check rtmin_code. + +2004-04-14 Jakub Jelinek + + * rt/Makefile (tests): Add tst-mqueue7. + (tst-mqueue7-ARGS): Set. + * rt/tst-mqueue7.c: New test. + +2004-04-13 Jakub Jelinek + + * rt/Makefile (tests): Add tst-mqueue5 and tst-mqueue6. + * rt/tst-mqueue1.c (do_one_test): Bitwise or check_attrs () into + result instead of replacing it. Use TEMP_FAILURE_RETRY around + waitpid, kill child if waitpid failed. + (do_test): Bitwise or check_attrs () into result instead of replacing + it. Change temp mq name. + * rt/tst-mqueue5.c: New test. + * rt/tst-mqueue6.c: New test. + * rt/tst-mqueue.h: Include stdio.h, unistd.h, sys/uio.h. + (temp_mq_list, delete_temp_mqs): Remove. + (temp_mq_fd): New variable. + (do_cleanup, do_prepare): New functions. + (add_temp_mq): Rewritten to use a temp file. + (PREPARE): Define. + (CLEANUP_HANDLER): Change to do_cleanup (). + + * rt/tst-timer3.c: Don't fail if _POSIX_THREADS is not available. + +2004-04-13 Thorsten Kukuk + + * sysdeps/s390/ffs.c: Include limits.h + +2004-04-13 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/sysdep.h (SUBSTITUTE_ARGS_1, + SUBSTITUTE_ARGS_2, SUBSTITUTE_ARGS_3, SUBSTITUTE_ARGS_4, + SUBSTITUTE_ARGS_5, SUBSTITUTE_ARGS_6, SUBSTITUTE_ARGS_7): Load + argument values into temporary variables. + +2004-04-15 Atsushi Nemoto + + * sysdeps/mips/dl-machine.h (RTLD_START): Do not use nested .end. + +2004-04-12 Ulrich Drepper + + * rt/Makefile (tests): Add tst-timer3. + * rt/tst-timer3.c: New file. By Roland McGrath. + +2004-04-08 Ulrich Drepper + + * rt/tst-mqueue3.c: New file. + * rt/Makefile (tests): Add tst-mqueue3. + +2004-04-08 Jakub Jelinek + + * rt/tst-mqueue1.c: New file. + * rt/tst-mqueue2.c: New file. + * rt/tst-mqueue4.c: New file. + * rt/Makefile (tests): Add tst-mqueue1, tst-mqueue2, tst-mqueue4. + + * rt/Versions (librt): Add mq_*@@GLIBC_2.3.4. + * rt/Makefile (headers): Add mqueue.h and bits/mqueue.h. + (mq-routines): Set. + (librt-routines): Use it. + * rt/mqueue.h: New file. + * include/mqueue.h: New file. + * sysdeps/generic/bits/mqueue.h: New file. + * sysdeps/generic/mq_setattr.c: New file. + * sysdeps/generic/mq_getattr.c: New file. + * sysdeps/generic/mq_notify.c: New file. + * sysdeps/generic/mq_close.c: New file. + * sysdeps/generic/mq_send.c: New file. + * sysdeps/generic/mq_unlink.c: New file. + * sysdeps/generic/mq_receive.c: New file. + * sysdeps/generic/mq_timedreceive.c: New file. + * sysdeps/generic/mq_timedsend.c: New file. + * sysdeps/generic/mq_open.c: New file. + * sysdeps/unix/sysv/linux/bits/local_lim.h (MQ_PRIO_MAX): Define. + * sysdeps/unix/sysv/linux/bits/mqueue.h: New file. + * sysdeps/unix/sysv/linux/syscalls.list: Add mq_timedsend, + mq_timedreceive and mq_setattr. + * sysdeps/unix/sysv/linux/mq_getattr.c: New file. + * sysdeps/unix/sysv/linux/mq_notify.c: New file. + * sysdeps/unix/sysv/linux/mq_close.c: New file. + * sysdeps/unix/sysv/linux/mq_send.c: New file. + * sysdeps/unix/sysv/linux/mq_unlink.c: New file. + * sysdeps/unix/sysv/linux/mq_receive.c: New file. + * sysdeps/unix/sysv/linux/mq_open.c: New file. + +2004-04-09 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (DO_INLINE_SYSCALL): Move + LOAD_ARGS_##nr up front and add LOAD_REGS_##nr. + (LOAD_ARGS_0, LOAD_ARGS_1, LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4) + (LOAD_ARGS_5, LOAD_ARGS_6): Load argument values into temporary + variables. + (LOAD_REGS_0, LOAD_REGS_1, LOAD_REGS_2, LOAD_REGS_3, LOAD_REGS_4) + (LOAD_REGS_5, LOAD_REGS_6): New macros to actually load the + syscall argument registers. + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (INTERNAL_SYSCALL): Add + LOAD_REGS_##nr. + (LOAD_ARGS_0, LOAD_ARGS_1, LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4) + (LOAD_ARGS_5, LOAD_ARGS_6): Load argument values into temporary + variables. + (LOAD_REGS_0, LOAD_REGS_1, LOAD_REGS_2, LOAD_REGS_3, LOAD_REGS_4) + (LOAD_REGS_5, LOAD_REGS_6): New macros to actually load the + syscall argument registers. + +2004-04-09 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sysdep.h (INTERNAL_SYSCALL): Add + LOAD_REGS_##nr. + (LOAD_ARGS_0, LOAD_ARGS_1, LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4) + (LOAD_ARGS_5, LOAD_ARGS_6): Load argument values into temporary + variables. + (LOAD_REGS_0, LOAD_REGS_1, LOAD_REGS_2, LOAD_REGS_3, LOAD_REGS_4) + (LOAD_REGS_5, LOAD_REGS_6): New macros to actually load the + syscall argument registers. + +2004-04-09 Thorsten Kukuk + + * sysdeps/s390/ffs.c: Don't add ffsl weak alias on s390x. + +2004-04-09 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c: New file. + +2004-04-08 Ulrich Drepper + + * po/nl.po: Update from translation team. + +2004-04-04 Ulrich Drepper + + * math/test-tgmath.c: Declare compile_testl inly if we will define it. + +2004-04-03 Ulrich Drepper + + * sysdeps/powerpc/powerpc64/ffsll.c: New file. + + * string/test-ffs.c: Also test ffsl and ffsll. + + * sysdeps/powerpc/ffs.c: Don't define ffsl for ppc64. + + * sysdeps/powerpc/powerpc64/bits/atomic.h: Never use matching + constraints for asm mem parameters. + * sysdeps/powerpc/bits/atomic.h: Likewise. + + * sysdeps/powerpc/elf/libc-start.c: No need for a separate + function for __aux_init_cache. + + * inet/test-ifaddrs.c: Fight warnings. + + * argp/argp-help.c: Fight warnings. + + * include/time.h: Declare __difftime. + + * sysdeps/unix/sysv/linux/internal_statvfs.c: Restructure to avoid + duplication in 64-bit version. + * sysdeps/unix/sysv/linux/wordsize-64/internal_statvfs64.c: New file. + +2004-04-03 Andreas Jaeger + + * nis/nss-nis.c: Include for strncmp. + +2004-03-30 H.J. Lu + + * Makeconfig (link-libc-static): Use $(static-gnulib) instead + of $(gnulib). + (libgcc_eh): New variable. + (gnulib): Use it variable. + (static-gnulib): New variable. + * Makerules (LDLIBS-c.so): Use $(static-gnulib) instead of $(gnulib). + * config.make.in (have-as-needed): New variable. + * configure.in: Check if linker supports --as-needed. + +2004-04-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/internal_statvfs64.c: New file. + * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines): + Add internal_statvfs64. + * sysdeps/unix/sysv/linux/internal_statvfs.c: Allow to be used to + compile 64bit version. + * sysdeps/unix/sysv/linux/statvfs64.c: Use __fstatfs64 and skip + compatibility code if __ASSUME_STATFS64 is defined. + * sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise. + + * sysdeps/unix/sysv/linux/statfs64.c: Don't add __no_statfs64 if + __ASSUME_STATFS64 != 0. + +2004-04-02 Thorsten Kukuk + + * nis/nss_nis/nis-ethers.c (saveit): Fix return codes in error case. + * nis/nss_nis/nis-initgroups.c (saveit): Likewise. + * nis/nss_nis/nis-proto.c (saveit): Likewise. + * nis/nss_nis/nis-rpc.c (saveit): Likewise. + * nis/nss_nis/nis-service.c (saveit): Likewise. + +2004-04-02 Jakub Jelinek + + * nis/nss: Add SERVICES_AUTHORITATIVE. + * nis/nss-nis.h (NSS_FLAG_SET, NSS_FLAG_NETID_AUTHORITATIVE, + NSS_FLAG_SERVICES_AUTHORITATIVE): Define. + (_nis_default_nss_flags, _nis_check_default_nss): New decls. + (_nis_default_nss): New inline. + * nis/nss-nis.c: Include ctype.h, stdio.h and stdio_ext.h. + (_nis_default_nss_flags, default_nss): New variables. + (_nis_check_default_nss): New function. + * nis/nss_nis/nis-initgroups.c: Don't include stdio.h and + stdio_ext.h. + (check_default_nss, default_nss): Move to nss-nis.c. + (init): Removed. + (_nss_nis_initgroups_dyn): Use _nis_default_nss (). + * nis/nss_nis/nis-services.c (_nss_nis_getservbyname_r): If + NSS_FLAG_SERVICES_AUTHORITATIVE and services.byservicename lookup + fails, return immediately. + +2004-04-01 Roland McGrath + + * elf/tst-execstack.c (do_test): Make F static. + +2004-04-01 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Use + __sigprocmask not sigprocmask. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise. + + * include/string.h: Add libc_hidden_builtin_proto for memcmp. + * sysdeps/generic/memcmp.c: Add libc_hidden_builtin_def. + * sysdeps/i386/memcmp.S: Likewise. + * sysdeps/i386/i686/memcmp.S: Likewise. + * sysdeps/ia64/memcmp.S: Likewise. + * sysdeps/sparc/sparc64/memcmp.S: Likewise. + + * sysdeps/unix/sysv/linux/sigprocmask.c: Include . + * time/mktime.c: Likewise. + * misc/getpass.c: Likewise. + + * time/difftime.c (__difftime): New renamed. Make old name alias. + Use __difftime in recursive call. + + * sysdeps/unix/sysv/linux/powerpc/ioctl.c (__ioctl): Use + __tcgetattr() instead of tcgetattr(). + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S [SHARED]: + Use __GI_exit. + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S [SHARED]: Use + __GI__exit. + + * sysdeps/powerpc/fpu/bits/mathinline.h: Add __signbitf and + __signbit inlines. + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Use + __sigprocmask not sigprocmask. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise. + + * elf/elf.h: Define more ppc64 specific dynamic tags. + +2004-04-01 Jakub Jelinek + + * nis/nss_nis/nis-service.c (_nss_nis_getservbyname_r): If protocol + is NULL, instead of trying yp_match (name/tcp), yp_match (name/udp), + yp_all, try yp_match (name), yp_all. + +2004-04-01 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Add handling for + ignored entries. Ignore AT_IGNOREPPC. + +2004-03-31 Andreas Jaeger + + * libio/fileops.c (new_do_write): Return _IO_size_t to make 64-bit + clean. + +2004-03-31 Ulrich Drepper + + * locale/programs/localedef.c (construct_output_path): Remove + remnants of CEN locale names. + +2004-03-30 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Add IUTF8. + * sysdeps/unix/sysv/linux/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/termios.h: Likewise. + +2004-03-30 Richard Henderson + + * sysdeps/alpha/remqu.S: Detect power-of-two special case. + +2004-03-30 Ulrich Drepper + + * sysdeps/generic/libc-start.c (LIBC_START_MAIN) + [HAVE_CLEANUP_JMP_BUF]: Call __nptl_deallocate_tsd. + +2004-03-30 Jakub Jelinek + + * nis/nss_nis/nis-service.c (_nss_nis_getservbyname_r): If protocol + == NULL, try name/tcp and name/udp first before falling back into + the sequential scanning. Use services.byname database for + sequential scanning. + (_nss_nis_getservbyport_r): Likewise. Just allocate sizeof (int) * 3 + chars for integer. + + * nis/nss_nis/nis-service.c (_nss_nis_getservbyport_r): Convert + proto to host by order for snprintf. + +2004-03-30 Ulrich Drepper + + * nss/getent.c (services_keys): Don't implement lookups with + missing protocol using getservent loop, just pass NULL. + + * sysdeps/unix/sysv/linux/i386/setgroups.c (setgroups): Avoid + comparison with limit if we can rely on the syscall being available. + + * nis/nss_nis/nis-initgroups.c: Implement getting the information + from the netid.byname map if the system administrator allows this. + * nis/Makefile (distribute): Add nss. + * nis/nss: New file. + + * grp/initgroups.c (initgroups): Limit the initial allocation to 64 + entries to not allocate too much on systems with really high limits. + +2004-03-30 Jakub Jelinek + + * nis/nss_nis/nis-service.c (struct search_t): New type. + (dosearch): New function. + (_nss_nis_getservbyname_r): Use it. Call yp_get_default_domain + unconditionally. + (_nss_nis_getservbyport_r): Likewise. + +2004-03-29 Alexandre Oliva + + * sysdeps/unix/sysv/linux/sched_getaffinity.c: Prepend GLIBC_ to + version names is SHLIB_COMPAT check. + * sysdeps/unix/sysv/linux/sched_setaffinity.c: Likewise. + +2004-03-29 Ulrich Drepper + + * nis/nss_nis/nis-rpc.c (saveit): Improve memory handling. No need to + allocate multiple blocks. + (internal_nis_endrpcent): Adjust accordingly. + * nis/nss_nis/nis-proto.c (saveit): Improve memory handling. No need + to allocate multiple blocks. + (internal_nis_endprotoent): Adjust accordingly. + * nis/nss_nis/nis-initgroups.c (saveit): Improve memory handling. No + need to allocate multiple blocks. + (_nss_nis_initgroups_dyn): Adjust accordingly. + * nis/nss_nis/nis-ethers.c (saveit): Improve memory handling. No need + to allocate multiple blocks. + (internal_nis_endetherent): Adjust accordingly. + * nis/nss_nis/nis-service.c (saveit): Improve memory handling. No need + to allocate multiple blocks. + (internal_nis_endservent): Adjust accordingly. + + * nss/getXXbyYY_r.c: Return 0 for NSS_STATUS_NOTFOUND. + +2004-03-26 Thorsten Kukuk + + * nis/nss_nis/nis-grp.c (_nss_nis_getgrnam_r): Don't + set errno if group does not exist. + +2004-03-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Handle + _SC_SIGQUEUE_MAX. + +2004-03-26 Ulrich Drepper + + * elf/dl-caller.c: New file. + * include/caller.h: New file. + * Makefile (distribute): Add include/caller.h. + * elf/Makefile (dl-routines): Add dl-caller. + * elf/dl-load.c (_dl_map_object_from_fd): Record l_text_end. + * elf/dl-open.c (check_libc_caller): Removed. + (dl_open_worker): Use __check_caller instead. + * elf/rtld.c (_rtld_global_ro): Initialize _dl_check_caller. + (_dl_start_final): Record l_text_end for ld.so map. + (dl_main): Record l_text_end for main object and vdso. + * include/link.h (struct link_map): Add l_text_end field. + * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Add + _dl_check_caller field. + Define enum allowmask. Add declaration of _dl_check_caller. + * sysdeps/unix/sysv/linux/dl-execstack.c: Also use __check_caller test. + +2004-03-26 Richard Henderson + + * sysdeps/alpha/Makefile (sysdep_routines): Merge divrem + variable, add unsigned variants. + * sysdeps/alpha/divrem.h: Remove file. + * sysdeps/alpha/div_libc.h: New file. + * sysdeps/alpha/divl.S: Rewrite from scratch. + * sysdeps/alpha/reml.S: Likewise. + * sysdeps/alpha/divq.S: Likewise. + * sysdeps/alpha/remq.S: Likewise. + * sysdeps/alpha/divlu.S: New file. + * sysdeps/alpha/remlu.S: New file. + * sysdeps/alpha/divqu.S: New file. + * sysdeps/alpha/remqu.S: New file. + +2004-03-26 Ulrich Drepper + + * elf/dl-open.c (check_libc_caller): Fix typo. + +2004-03-26 Jakub Jelinek + + * elf/tst-dlmodcount.c: Include stddef.h and stdlib.h. + +2003-03-25 Richard Henderson + + * sysdeps/alpha/backtrace.c: New file. + +2004-03-25 Ulrich Drepper + + * iconvdata/utf-7.c: Remove inline from isdirect, isxdirect, and + isxbase64. + +2004-03-25 Richard Henderson + + * sysdeps/generic/strtol_l.c (__strtol_ul_max_tab, + __strtol_ull_max_tab, __strtol_ull_rem_tab, __strtol_ul_rem_tab, + cutoff_tab, cutlim_tab, jmax_tab): New. + (__strtol_l): Use them to avoid runtime division. + +2004-03-24 Roland McGrath + + * Makerules ($(common-objpfx)shlib.lds): Don't use \n in rhs of sed + substitutions; the semicolon terminators are enough for ld anyway. + + * elf/dl-deps.c (_dl_map_object_deps): Use alloca instead of + dynamically sized auto array in function already using alloca. + * locale/programs/ld-ctype.c (ctype_output): Likewise. + * locale/programs/ld-time.c (time_output): Likewise. + * elf/dl-misc.c (_dl_debug_vdprintf): Use macro instead of const for + IOV array size. + * locale/programs/charmap.c (charmap_read): Avoid alloca (or strdupa) + when also using dynamically-sized auto array. + * locale/programs/locfile.c (locfile_read): Likewise. + * locale/programs/repertoire.c (repertoire_read): Likewise. + * nis/nis_print_group_entry.c (nis_print_group_entry): Likewise. + * locale/programs/locarchive.c (enlarge_archive): Likewise. + * posix/annexc.c (check_header): Likewise. + + * iconv/gconv_int.h (norm_add_slashes): Don't handle null SUFFIX. + strlen ("") gets optimized away just as well. + * intl/loadmsgcat.c (_nl_init_domain_conv): Update caller. + * wcsmbs/wcsmbsload.c (__wcsmbs_load_conv): Likewise. + + * Makefile ($(objpfx)c++-types-check.out): Reduce duplication in + defining this target. Also elide -Wstrict-prototypes from CFLAGS. + +2004-03-24 Ulrich Drepper + + * stdio-common/vfscanf.c [!COMPILE_WSCANF] (TOLOWER): Cast first + parameter to unsigned char. + * sysdeps/generic/strcasestr.c [_LIBC] (TOLOWER): Likewise. + +2004-03-24 Jakub Jelinek + + * stdlib/strtod_l.c (INTERNAL (__STRTOF)): Clear the rest of retval, + not just one limb if RETURN_LIMB_SIZE > 2. Fix shifting up if + RETURN_LIMB_SIZE > 2. + + * stdio-common/printf_fp.c (__printf_fp): For IEEE quad long double + on 32-bit architectures reserve 8 limbs instead of 4. + +2004-03-23 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_pread, __NR_pwrite): + Define to __NR_p{read,write}64 if not defined. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread, + __NR_pwrite): Define to __NR_p{read,write}64 if not defined instead + of defining it the other way around. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Move common syscalls + for 64bit arches to sysdeps/unix/sysv/linux/wordsize-64/syscalls.list. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/alpha/pread64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/getrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/glob64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/truncate64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/xstat64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/pwrite64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/posix_fadvise.c: Removed. + * sysdeps/unix/sysv/linux/alpha/mmap64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/fxstat64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/setrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/ftruncate64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/sendfile64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/lxstat64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/posix_fadvise64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/statfs64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/fstatfs64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/pread64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/getrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/glob64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/readdir64_r.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/truncate64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/xstat64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/pwrite64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/getdents64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/readdir_r.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/readdir.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/posix_fadvise.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/mmap64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/fxstat64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/setrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/ftruncate64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/getdents.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/lxstat64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/posix_fadvise64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/readdir64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/statfs64.c: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/fstatfs64.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/glob64.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/truncate64.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/xstat64.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/posix_fadvise.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fxstat64.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/ftruncate64.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/lxstat64.c: Removed. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/posix_fadvise64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/pread64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/getrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/glob64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir64_r.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/truncate64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/xstat64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/pwrite64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/getdents64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/posix_fadvise.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/fxstat64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/setrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/ftruncate64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/sendfile64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/getdents.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/lxstat64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/posix_fadvise64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/statfs64.c: Removed. + * sysdeps/unix/sysv/linux/sparc/sparc64/fstatfs64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/pread64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/getrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/glob64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/readdir64_r.c: Removed. + * sysdeps/unix/sysv/linux/ia64/truncate64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/xstat64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/pwrite64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/getdents64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/readdir_r.c: Removed. + * sysdeps/unix/sysv/linux/ia64/lxstat.c: Removed. + * sysdeps/unix/sysv/linux/ia64/readdir.c: Removed. + * sysdeps/unix/sysv/linux/ia64/posix_fadvise.c: Removed. + * sysdeps/unix/sysv/linux/ia64/mmap64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/xstat.c: Removed. + * sysdeps/unix/sysv/linux/ia64/fxstat64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/setrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/ftruncate64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/sendfile64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/getdents.c: Removed. + * sysdeps/unix/sysv/linux/ia64/lxstat64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/posix_fadvise64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/readdir64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/fxstat.c: Removed. + * sysdeps/unix/sysv/linux/ia64/statfs64.c: Removed. + * sysdeps/unix/sysv/linux/ia64/fstatfs64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/pread64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/getrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/glob64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/readdir64_r.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/truncate64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/xstat64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/pwrite64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/getdents64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/readdir_r.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/lxstat.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/readdir.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/posix_fadvise.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/mmap64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/xstat.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/fxstat64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/setrlimit64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/ftruncate64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/sendfile64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/getdents.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/lxstat64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/posix_fadvise64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/readdir64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/fxstat.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/statfs64.c: Removed. + * sysdeps/unix/sysv/linux/x86_64/fstatfs64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/Implies: New file. + * sysdeps/unix/sysv/linux/alpha/getdents64.c: New file. + * sysdeps/unix/sysv/linux/s390/s390-64/Implies: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/Implies: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/Implies: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/lxstat.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/xstat.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/statvfs64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/fstatvfs64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/pread64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/fstatvfs.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/getrlimit64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/glob64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/readdir64_r.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/truncate64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/xstat64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/getdents64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/lxstat.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/readdir.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/mmap64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/xstat.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/fxstat64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/setrlimit64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/ftruncate64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/sendfile64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/getdents.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/statvfs.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/lxstat64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/posix_fadvise64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/readdir64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: New file. + * sysdeps/unix/sysv/linux/wordsize-64/fxstat.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/statfs64.c: New file. + * sysdeps/unix/sysv/linux/wordsize-64/fstatfs64.c: New file. + * sysdeps/unix/sysv/linux/ia64/Implies: New file. + * sysdeps/unix/sysv/linux/x86_64/Implies: New file. + +2004-03-22 Richard Henderson + + * sysdeps/alpha/s_fabs.S: Remove file. + * sysdeps/alpha/s_copysign.S: Remove file. + +2004-03-22 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c + (__getpagesize): Avoid warning about writing into read-only memory. + + * string/Makefile (routines): Add xpg-strerror. + * string/string.h (strerror_r): If __USE_XOPEN2K but not __USE_GNU, + redirect strerror_r to __xpg_strerror_r. + * string/Versions (libc): Add __xpg_strerror_r@@GLIBC_2.3.4. + * sysdeps/generic/xpg-strerror.c: New file. + * sysdeps/mach/xpg-strerror.c: New file. + +2004-03-22 Joseph S. Myers + + * sunrpc/rpc/xdr.h (IXDR_GET_LONG, IXDR_PUT_LONG): Do not use + casts as lvalues. + +2004-03-22 Andreas Jaeger + + * elf/tst-dlmodcount.c (unload): Remove unused variable. + + * misc/tst-mntent.c (main): Use tmpfile instead of tmpnam. + +2004-03-20 Roland McGrath + + * sysdeps/mach/hurd/dl-execstack.c: New file. + +2004-03-20 Ulrich Drepper + + * po/ca.po: Update from translation team. + +2004-03-20 Andreas Jaeger + + * sysdeps/unix/sysv/linux/sched_getaffinity.c + (__sched_getaffinity_old): Fix interface. + * sysdeps/unix/sysv/linux/sched_setaffinity.c + (__sched_setaffinity_old): Likewise. + + * sysdeps/unix/sysv/linux/sched_setaffinity.c: Include . + +2004-03-17 Kaz Kojima + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_CLONE_THREAD_FLAGS ): Define for newer SH kernel. + (__ASSUME_TGKILL, __ASSUME_UTIMES): Likewise. + * sysdeps/unix/sysv/linux/sh/socket.S: Add unwind information. + +2004-03-19 Ulrich Drepper + + * time/tzfile.c (__tzfile_default): Correct setting of rule_stdoff + and rule_dstoff after reading the posixrules file. + +2004-03-18 Ulrich Drepper + + * malloc/malloc.c (__posix_memalign): Correct alignment check. + Reported by Don Heller . + +2004-03-18 Jakub Jelinek + + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Remove hwcap + variable and weak_extern for _dl_hwcap. + (_DL_HWCAP_TLS_MASK): Define. + (HWCAP_CHECK): Fix checking of non-platform hwcap bits. Use + lib->osversion instead of cache_new->libs[middle].osversion. + + * stdio-common/asprintf.c: Remove USE_IN_LIBIO conditionals. + * stdio-common/dprintf.c: Likewise. + * stdio-common/fprintf.c: Likewise. + * stdio-common/getline.c: Likewise. + * stdio-common/getw.c: Likewise. + * stdio-common/perror.c: Likewise. + * stdio-common/printf-prs.c: Likewise. + * stdio-common/printf.c: Likewise. + * stdio-common/printf_size.c: Likewise. + * stdio-common/psignal.c: Likewise. + * stdio-common/putw.c: Likewise. + * stdio-common/scanf.c: Likewise. + * stdio-common/snprintf.c: Likewise. + * stdio-common/sprintf.c: Likewise. + * stdio-common/sscanf.c: Likewise. + * stdio-common/tstgetln.c: Likewise. + * stdio-common/vfprintf.c: Likewise. + +2004-03-18 Paul Eggert + + * posix/getopt.h (__GNUC_PREREQ) [!defined __THROW]: Define + if not defined, fixing a typo (it used to be defined if + __GNUC__ was not defined). + +2004-03-18 Ulrich Drepper + + * posix/sched.h: Change sched_getaffinity and sched_setaffinity + interfaces: add new second parameter. + * sysdeps/generic/sched_getaffinity.c: Implement interface change. + * sysdeps/generic/sched_setaffinity.c: Likewise. + * sysdeps/unix/sysv/linux/sched_getaffinity.c: Likewise. Add + compatibility interface. + * sysdeps/unix/sysv/linux/sched_setaffinity.c: Likewise. + * sysdeps/unix/sysv/linux/Versions: Add versions for changed + interfaces. + +2004-03-18 Roland McGrath + + * manual/Makefile (stamp-summary): Use -k option to sort, + not traditional key selection syntax. + Reported by Jim Gifford . + +2004-03-18 Jakub Jelinek + + * elf/ldconfig.c: Include stdbool.h. + +2004-03-18 Roland McGrath + + * elf/ldconfig.c (parse_conf_include): New function. + (parse_conf): Call it to parse lines starting with "include". + Remaining words are glob patterns for more config files to read. + Take additional bool argument to disable opt_chroot processing. + (main): Update caller. + +2004-03-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/ioperm.c (_iopl): Match EPERM error + the x86 code produces in case of mission permissions. + Patch by Bernd Schmidt . + + * resolv/netdb.h: Define AI_IDN_ALLOW_UNASSIGNED, + AI_IDN_USE_STD3_ASCII_RULES, NI_IDN_ALLOW_UNASSIGNED, and + NI_IDN_USE_STD3_ASCII_RULES. + * inet/getnameinfo.c (getnameinfo): Implement handling of + NI_IDN_ALLOW_UNASSIGNED and NI_IDN_USE_STD3_ASCII_RULES. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Implement handling of + AI_IDN_ALLOW_UNASSIGNED and AI_IDN_USE_STD3_ASCII_RULES. + +2004-03-17 Jakub Jelinek + + * sysdeps/x86_64/hp-timing.h (HP_TIMING_NOW): Make asm volatile. + +2004-03-16 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Spelling. + (JB_SIZE): Undefine before including __longjmp-common.S again. + * sysdeps/powerpc/powerpc32/fpu/setjmp.S: Spelling. + (JB_SIZE): Undefine before including setjmp-common.S again. + * sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Spelling. + * sysdeps/powerpc/powerpc64/bsd-setjmp.S: Spelling. + * sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Spelling. + * sysdeps/powerpc/powerpc32/bsd-setjmp.S: Spelling. + * sysdeps/powerpc/sigjmp.c: Spelling. + +2004-03-16 Ulrich Drepper + + * include/ctype.h: For libc, define isdigit, isdigit_l, and + __isdigit_l as simple comparison macros. + * include/wctype.h: For libc, define iswdigit, iswdigit_l, and + __iswdigit_l as simple comparison macros. + * wctype/wcfuncs_l.c: #undef iswdigit and __iswdigit. + +2004-03-15 Ulrich Drepper + + * sysdeps/sparc/fpu/bits/mathinline.h: Restore missing #ifdef. + Patch by Richard Henderson. + +2004-03-16 Jakub Jelinek + + * sysdeps/generic/strtold_l.c (STRING_TYPE, STRTOLD, __STRTOLD, + __STRTOD, INTERNAL, INTERNAL1): Define, use them. + [! USE_WIDE_CHAR] (INTERNAL (__STRTOLD)): Add libc_hidden_def. + + * inet/getnameinfo.c: Include stdlib.h. + +2004-03-15 Richard Henderson + + * math/Makefile (headers): Add bits/huge_valf.h, bits/huge_vall.h, + and bits/inf.h. + * math/math.h: Include them. + + * sysdeps/alpha/fpu/bits/mathdef.h: Remove INFINITY. + * sysdeps/arm/fpu/bits/mathdef.h: Likewise. + * sysdeps/generic/bits/mathdef.h: Likewise. + * sysdeps/i386/fpu/bits/mathdef.h: Likewise. + * sysdeps/ia64/fpu/bits/mathdef.h: Likewise. + * sysdeps/m68k/fpu/bits/mathdef.h: Likewise. + * sysdeps/mips/fpu/bits/mathdef.h: Likewise. + * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise. + * sysdeps/sh/sh4/fpu/bits/mathdef.h: Likewise. + * sysdeps/sparc/fpu/bits/mathdef.h: Likewise. + * sysdeps/x86_64/fpu/bits/mathdef.h: Likewise. + + * sysdeps/arm/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val. + (HUGE_VALF, HUGE_VALL): Remove. + * sysdeps/ieee754/bits/huge_val.h: Likewise. + * sysdeps/sh/bits/huge_val.h: Likewise. + + * sysdeps/generic/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val. + * sysdeps/generic/bits/huge_valf.h: New file. + * sysdeps/generic/bits/huge_vall.h: New file. + * sysdeps/generic/bits/inf.h: New file. + * sysdeps/ieee754/bits/huge_valf.h: New file. + * sysdeps/ieee754/bits/inf.h: New file. + * sysdeps/i386/bits/huge_val.h: Remove file. + * sysdeps/i386/bits/huge_vall.h: New file. + * sysdeps/ia64/bits/huge_val.h: Remove file. + * sysdeps/ia64/bits/huge_vall.h: New file. + * sysdeps/ieee754/ldbl-128/bits/huge_vall.h: New file. + * sysdeps/m68k/bits/huge_val.h: Remove file. + * sysdeps/m68k/bits/huge_vall.h: New file. + * sysdeps/s390/bits/huge_val.h: Remove file. + * sysdeps/sh/sh4/fpu/bits/huge_val.h: Remove file. + * sysdeps/sparc/bits/huge_vall.h: New file. + * sysdeps/sparc/sparc32/fpu/bits/huge_val.h: Remove file. + * sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Remove file. + + * sysdeps/ieee754/bits/nan.h (NAN): Use __builtin_nanf. + * sysdeps/mips/bits/nan.h (NAN): Likewise. + +2004-03-15 Ulrich Drepper + + * iconv/gconv_simple.c (__gconv_transform_utf8_internal): Use only + one copy of error handling code. + + * stdio-common/vfscanf.c: Simplify error handling macros. Use + direct locale access functions. + + * sysdeps/generic/strcasestr.c (__strcasestr): Optimize use of + tolower function. + +2004-03-13 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_02_known): Add const. + (handle_amd): New function. + (__sysconf): Handle _SC_LEVEL4_CACHE_LINESIZE here, not in + linux_sysconf. Call handle_amd on AuthenticAMD. + * sysdeps/unix/sysv/linux/x86_64/sysconf.c: Likewise. + +2004-03-14 Ulrich Drepper + + * wcsmbs/mbsrtowcs.c: Just a wrapper around __mbsrtowcs_l. + * wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Add real implementation here. + + Make the non-_l functions wrappers around the _l functions. + * include/monetary.h: Declare __vstrmon_l. + * include/string.h: Add libc_hidden_proto for __strcoll_l and + __strxfrm_l. + * include/time.h: Define ptime_locale_status. Declare + __strptime_internal. + * include/wchar.h: Add libc_hidden_proto for __wcscoll_l and + __wcsxfrm_l. + * stdlib/strfmon.c: Move the code to strfmon_l.c. Add little + wrapper around __vstrfmon_l. + * stdlib/strfmon_l.c: Add real implementation. Split into new + function __vstrfmon_l to allow calling it from strfmon. + * stdlib/strtod.c: Move real code to strtod_l.c and add wrapper. + * stdlib/strtod_l.c: Add real implementation. + * stdlib/strtof.c: Adjust to changed strtod.c. + * stdlib/strtof_l.c: Include strtod_l.c now. + * stdlib/strtold.c: New file. + * stdlib/strtold_l.c: Removed. + * string/strcoll.c: Move real code to strcoll_l.c: Add wrapper. + * string/strcoll_l.c: Add real implementation. + * string/strxfrm.c: Move real code to strxfrm_l.c: Add wrapper. + * string/strxfrm_l.c: Add real implementation. + * sysdeps/generic/strtol.c: Move real implementation to strtol_l.c. + Add wrappers. + * sysdeps/generic/strtol_l.c: Add real implementation. + * sysdeps/generic/strtold.c: Removed. + * sysdeps/generic/strtold_l.c: New file. + * sysdeps/generic/strtoll_l.c: Include strtol_l.c now. Adjust + #defines. + * sysdeps/generic/strtoul_l.c: Likewise. + * sysdeps/generic/strtoull_l.c: Likewise. + * sysdeps/generic/wcstol_l.c: Likewise. + * sysdeps/generic/wcstoll_l.c: Likewise. + * sysdeps/generic/wcstoul_l.c: Likewise. + * sysdeps/generic/wcstoull_l.c: Likewise. + * sysdeps/ieee754/ldbl-128/strtold.c: Removed. + * sysdeps/ieee754/ldbl-128/strtold_l.c: New file. + * sysdeps/ieee754/ldbl-96/strtold.c: Removed. + * sysdeps/ieee754/ldbl-96/strtold_l.c: New file. + * sysdeps/m68k/strtold.c: Removed. + * sysdeps/m68k/strtold_l.c: New file. + * time/strftime.c: Move real code to strftime_l.c. Add wrapper. + * time/strftime_l.c: Add real implementation. + * time/strptime.c: Move real code to strptime_l.c. Add wrapper. + * time/strptime_l.c: Add real implementation. + * time/wcsftime.c: Simplify since only wrappers are defined in + strftime.c. + * time/wcsftime_l.c: Include strftime_l.c. + * wcsmbs/wcscoll.c: Simplify since the file is not used by wcscoll_l.c + anymore. + * wcsmbs/wcscoll_l.c: Include strcoll_l.c. + * wcsmbs/wcsxfrm.c: Simplify since the file is not used by wcsxfrm_l.c + anymore. + * wcsmbs/wcsxfrm_l.c: Include strxfrm_l.c. + * wcsmbs/wcstod.c: Prepare to include new strtod.c. + * wcsmbs/wcstod_l.c: Include strtod_l.c. + * wcsmbs/wcstof.c: Prepare to include new strtof.c. + * wcsmbs/wcstof_l.c: Include strtof_l.c. + * wcsmbs/wcstold.c: Prepare to include new strtold.c. + * wcsmbs/wcstold_l.c: Include strtold_l.c. + + * locale/uselocale.c: Use _NL_CURRENT_LOCALE instead of __libc_tsd_get. + + * sysdeps/generic/strcasecmp.c: Optimize a bit. It's better to get + a reference to the current locale and then use the _l functions. + * sysdeps/generic/strncase.c: Likewise. + +2004-03-11 Jeroen Dekkers + + * cppflags-iterator.mk: Change libof-$(cpp-src) to + libof-$(notdir $(cpp-src)). + +2004-03-13 Ulrich Drepper + + * resolv/netdb.h (EAI_OVERFLOW): Define. + (NI_IDN): Define. + * inet/getnameinfo.c (getnameinfo): Return error in case argument + buffers overflow. Implement NI_IDN. + +2004-03-12 Ulrich Drepper + + * resolv/netdb.h: Define AI_CANONIDN. + * sysdeps/posix/getaddrinfo.c: Implement AI_CANONIDN. + +2004-03-12 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/select.S: Fix unwind. Propagate + oldvalue from CENABLE to CDISABLE. + +2004-03-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/sysconf.c: New file. + + * sysdeps/unix/sysv/linux/bits/local_lim.h: Define HOST_NAME_MAX. + + * posix/getconf.c (vars): Add _SC_ values for cache information. + * sysdeps/generic/bits/confname.h: Add _SC_* values for cache + information. + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Reorganize to + allow yet another sysconf function to include the one in this file. + * sysdeps/unix/sysv/linux/i386/sysconf.c: New file. + * sysdeps/generic/sysconf.c: Add default handling for cache line info. + +2004-03-11 Ulrich Drepper + + * sysdeps/posix/sysconf.c (__sysconf): Add missing support for + some _SC_* values. + +2004-03-10 Chris Heath + + * iconvdata/gconv.map: Add gconv_end (fixes memory leak). + +2004-03-11 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/__longjmp.S (JB_SIZE): Undefine before + including __longjmp-common.S again. + * sysdeps/powerpc/powerpc64/__longjmp.S (JB_SIZE): Likewise. + * sysdeps/powerpc/powerpc32/setjmp.S (JB_SIZE): Undefine before + including setjmp-common.S again. + * sysdeps/powerpc/powerpc64/setjmp.S (JB_SIZE): Likewise. + * sysdeps/powerpc/novmxsetjmp.h (__novmx__longjmp): Fix type of + first argument in the prototype. + * sysdeps/powerpc/longjmp.c (__vmx__longjmp, __vmx__libc_longjmp): + Remove bogus semicolons. + + * sysdeps/s390/dl-tls.h: Only add __tls_get_offset assembly if + IS_IN_rtld. + (__TLS_GET_ADDR): Use __tls_get_offset, not __tls_get_addr. + +2004-03-11 Ulrich Drepper + + * resolv/ns_ttl.c: Don't add ns_parse_ttl for libresolv.so. + +2004-03-10 Ulrich Drepper + + * sysdeps/generic/errno.c: Include . Use + RTLD_PRIVATE_ERRNO to decide whether errno compat symbols are needed. + + * elf/dl-sym.c: Unify _dl_sym and _dl_vsym code and make the entry + points wrappers around the unified code. + +2004-03-11 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/kernel_stat.h (kernel_stat64): New. + (glibc21_stat): New. + * sysdeps/unix/sysv/linux/alpha/fxstat.c: New file. + * sysdeps/unix/sysv/linux/alpha/lxstat.c: New file. + * sysdeps/unix/sysv/linux/alpha/xstat.c: New file. + * sysdeps/unix/sysv/linux/alpha/xstatconv.c (__xstat_conv): Add + code for _STAT_VER_GLIBC2_3_4. + (__libc_missing_axp_stat64): New. + * sysdeps/unix/sysv/linux/alpha/xstatconv.h: New file. + * sysdeps/unix/sysv/linux/alpha/bits/stat.h (__ST_TIME): New. + (_STAT_VER_GLIBC2_3_4, _STAT_VER_KERNEL64): New. + (struct stat, struct stat64): Update to new format. + (_STATBUF_ST_NSEC): New. + +2004-03-11 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S + (__novec_swapcontext): Branch to novec_* labels. + +2004-03-10 Ulrich Drepper + + * posix/getopt.c (_): Don't define here for glibc. + +2004-03-10 Jakub Jelinek + + * include/libc-symbols.h [__ASSEMBLY__] (compat_text_section, + compat_data_section): Define. + * sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIME): Add + attribute_compat_text_section. + * sysdeps/unix/sysv/linux/alpha/wordexp.c (__old_wordexp): Likewise. + * sysdeps/unix/sysv/linux/alpha/oldglob.c (__old_glob, + __old_globfree): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/chown.c (__chown_is_lchown): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c + (__posix_fadvise64_l32): Likewise. + * sysdeps/unix/sysv/linux/msgctl.c (__old_msgctl): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c + (__posix_fadvise64_l32): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (__old_semctl): + Likewise. + * sysdeps/unix/sysv/linux/semctl.c (__old_semctl): Likewise. + * sysdeps/unix/sysv/linux/posix_fadvise64.c (__posix_fadvise64_l32): + Likewise. + * sysdeps/unix/sysv/linux/shmctl.c (__old_shmctl): Likewise. + * hurd/compat-20.c (_hurd_proc_init_compat_20): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S + (__swapcontext, __novec_swapcontext): Use END instead of PSEUDO_END. + (__novec_swapcontext, __swapcontext_stub): Add compat_text_section. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S + (__makecontext_stub): Likewise. + (__novec_makecontext): Likewise. Fix name in END () to match + function name. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S + (__setcontext): Use END instead of PSEUDO_END. + (__novec_setcontext): Add compat_text_section. Use END instead of + PSEUDO_END, fix the name in END () to match function name. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S + (__getcontext, __novec_getcontext): Use END instead of PSEUDO_END. + (__novec_getcontext, __getcontext_stub): Add compat_text_section. + +2004-03-10 Kaz Kojima + + * sysdeps/sh/dl-machine.h: Don't use GL macro if not appropriate. + (COPY_UNALIGNED_WORD): Remove cast used as lvalue. + +2004-03-10 Ulrich Drepper + + * sysdeps/i386/dl-procinfo.h (HWCAP_IMPORTANT): Remove mmx, add sse2. + +2004-03-10 Richard Henderson + + * sysdeps/generic/errno.c: Disable versioning for rtld. + + * sysdeps/generic/Makefile (elf/shared): Add unwind-pe. + * sysdeps/generic/unwind-pe.c: New file. + * sysdeps/generic/unwind-pe.h: Only prototypes for _LIBC without + _LIBC_DEFINITIONS. + +2004-03-10 Ulrich Drepper + + * include/libc-symbols.h: Define attribute_compat_text_section and + attribute_compat_data_section. + * io/ftw.c: Mark compat code with attribute_compat_text_section. + * libio/iofopncook.c: Likewise. + * libio/oldfileops.c: Likewise. + * libio/oldiofclose.c: Likewise. + * libio/oldiofdopen.c: Likewise. + * libio/oldiofgetpos.c: Likewise. + * libio/oldiofgetpos64.c: Likewise. + * libio/oldiofopen.c: Likewise. + * libio/oldiofsetpos.c: Likewise. + * libio/oldiofsetpos64.c: Likewise. + * libio/oldiopopen.c: Likewise. + * libio/oldpclose.c: Likewise. + * libio/oldtmpfile.c: Likewise. + * nptl/forward.c: Likewise. + * nss/getXXbyYY_r.c: Likewise. + * nss/getXXent_r.c: Likewise. + * posix/tst-vfork1.c: Likewise. + * stdlib/canonicalize.c: Likewise. + * stdlib/old_atexit.c: Likewise. + * sysdeps/generic/glob.c: Likewise. + * sysdeps/posix/posix_fallocate64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/alphasort64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/glob64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Likewise. + * sysdeps/unix/sysv/linux/i386/readdir64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise. + * sysdeps/unix/sysv/linux/i386/scandir64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise. + * posix/regexec.c: Likewise. + + * sysdeps/unix/sysv/linux/i386/syscalls.list: vm86@@GLIBC_2.3.4 + should be the default symbol. Having none misses the point. + +2004-03-09 Ulrich Drepper + + * stdlib/qsort.c (_quicksort): Initialize first stack element [BZ #16]. + +2004-03-05 Jakub Jelinek + + * posix/regexec.c (regexec): Return with error on unknown eflags. + Replace weak_alias with versioned_symbol. + (__compat_regexec): New. + * posix/Versions (libc): Add regexec@GLIBC_2.3.4. + +2004-03-09 Richard Henderson + + * math/math.h (isgreater, isgreaterequal, isless, islessequal, + islessgreater, isunordered): Use builtins if available. + * sysdeps/i386/fpu/bits/mathinline.h: Don't define via builtins. + * sysdeps/m68k/fpu/bits/mathinline.h: Likewise. + * sysdeps/powerpc/fpu/bits/mathinline.h: Likewise. + * sysdeps/sparc/fpu/bits/mathinline.h: Likewise. + * sysdeps/x86_64/fpu/bits/mathinline.h: Likewise. + * sysdeps/alpha/fpu/bits/mathinline.h (isgreater, isgreaterequal, + isless, islessequal, islessgreater): Remove; use default. + (isunordered): Convert inputs to double. + +2004-02-09 Jakub Jelinek + + * posix/Makefile (tests): Add tst-vfork2. + * posix/tst-vfork1.c (do_test): Fix comment. + * posix/tst-vfork2.c: New test. + +2004-03-09 Ulrich Drepper + + * elf/dl-lookup.c (_dl_lookup_symbol_x): Fix possible NULL pointer + derefernce in error message. Pretty printing. + + * po/nl.po: Update from translation team. + +2004-03-08 Andreas Schwab + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't truncate + sysinfo pointer value. + +2004-03-08 Paul Eggert + + Merge from gnulib. We now assume C89 or better. + * posix/getopt1.c (const): Remove. + * posix/getopt.c (const): Likewise. + * posix/getopt1.c (getopt_long, _getopt_long_r, getopt_long_only, + _getopt_long_only_r, main): Use prototypes, not old-style definitions. + * posix/getopt.c (exchange, _getopt_initialize, _getopt_internal_r, + _getopt_internal, getopt, main): Likewise. + * posix/getopt.h (getopt, getopt_long, getopt_long_only): Likewise. + * posix/getopt.c [!defined VMS || !HAVE_STRING_H]: + Include regardless. No need for . + [!defined _LIBC]: Include "gettext.h" rather than rolling it ourselves. + (_): Define to gettext always. + (my_index): Remove: all uses changed to strchr. + (strlen): Remove declaration. + * posix/getopt.h (struct option.name): Always const char *. + +2004-03-08 Marcus Brinkmann + + * posix/getopt.h (_getopt_internal): Move to ... + * posix/getopt_int.h: ... here. New file. + * include/getopt_int.h: New file. + * include/getopt.h: Remove libc_hidden_proto for getopt_long + and getopt_long_only. + * posix/getopt1.c: Include "getopt_int.h". Remove + libc_hidden_def for getopt_long and getopt_long_only. + (_getopt_long_r, _getopt_long_only_r): New functions. + * posix/getopt.c: Include "getopt_int.h". + (__getopt_initialized): Variable removed. + (nextchar, ordering, posixly_correct, first_nonopt, last_nonopt): + Static variables removed. + (nonoption_flags_max_len, nonoption_flags_len) [_LIBC && + USE_NONOPTION_FLAGS]: Static variables removed. + (getopt_data): New static variable. + (SWAP_FLAGS): Use d->__nonoption_flags_len instead + nonoption_flags_len. + (exchange): Add new argument D of type struct getopt_data *. + Replace optind with d->optind, optarg with d->optarg, opterr with + d->opterr, optopt with d->optopt, nextchar with d->__nextchar, + first_nonopt with d->__first_nonopt, last_nonopt with + d->__last_nonopt, d->ordering with d->__ordering, + d->posixly_correct with d->__posixly_correct (which is now an + int instead a string, so fix users), nonoption_flags_len + with d->__nonoption_flags_len, nonoption_flags_max_len with + d->__nonoption_flags_max_len. + (_getopt_initialize): Likewise. + (_getopt_internal): Rename to ... + (_getopt_internal_r): ... this. Also add new argument D of type + struct getopt_data * and use of members of D rather than global or + static variables as described for exchange() above. Add new argument + to invocations of _getopt_initialize and exchange. + (_getopt_internal): Reimplement in terms of _getopt_internal_r. + * argp/argp-parse.c: Include . + [_LIBC]: Do not include . + [!_LIBC && HAVE_CTHREADS_H]: Do not include . + [!_LIBC] (_argp_hang): Make static. + (getopt_lock, LOCK_GETOPT, UNLOCK_GETOPT): Remove. + (_argp_unlock_xxx): Remove. + (parser_init): Do not use LOCK_GETOPT. + (parser_finalize): Do not use UNLOCK_GETOPT. + (struct parser): New member OPT_DATA. + (parser_init): Initialize parser->opt_data. Use + parser->opt_data.opterr instead of opterr. + (parser_parse_opt): Use parser->opt_data.optarg instead optarg. + (parser_parse_next): Likewise. Use parser->opt_data.optind + instead optind. Use parser->opt_data.optopt instead of optopt. + Call _getopt_long_only_r and _getopt_long_r instead of + getopt_long_only and getopt_long, and pass the extra argument. + +2004-03-09 Ulrich Drepper + + * iconv/gconv_db.c: Don't define lock as static. Rename to + __gconv_lock and export from the file. + * iconv/gconv_int.h: Declare __gconv_lock. + * libio/iofclose.c [_LIBC] (_IO_new_fclose): Lock gconv lock + before __gconv_release_step calls. + Patch by Shunichi Sagawa . + + * iconv/gconv_simple.c (internal_ucs4_loop): Fix typo in last change. + + * posix/Makefile (tests): Add tst-vfork1. + * posix/tst-vfork1.c: New file. + +2004-03-08 Ulrich Drepper + + * sysdeps/i386/dl-machine.h: Define ARCH_FIXUP_ATTRIBUTE and use + it in the fixup function declarations. + * elf/dl-runtime.c: If ARCH_FIXUP_ATTRIBUTE is not defined, + provide dummy definition. Use macro in fixup function + definitions. + + * sysdeps/unix/sysv/linux/i386/vfork.S: If SAVE_PID and + RESTORE_PID are defined, use it. + * sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise. + + * sysdeps/posix/gai_strerror.c: Add error string for EAI_IDN_ENCODE. + + * Makerules: Use extra-modules.mk if modules-names is defined. + * extra-modules.mk: New file. + * dlfcn/Makefile (CPPFLAGS-modcxaatexit.c): Removed. + * elf/Makefile (CFLAGS-interp.c): Add -DNOT_IN_libc=1. + * csu/Makefile ($(objpfx)version-info.h): Pass -DNOT_IN_libc=1 to + compiler. + * Makefile (distribute): Add symbol-hacks.h and extra-modules.mk. + * sysdeps/generic/symbol-hacks.h: New file. + * sysdeps/wordsize-32/symbol-hacks.h: New file. + * sysdeps/wordsize-32/divdi3.c: Define *_internal aliases for __divdi3, + __moddi3, __udivdi3, and __umoddi3. + * include/libc-symbols.h: Include . + +2004-03-08 Jeroen Dekkers + + * elf/rtld.c (_rtld_global_ro) [MAP_COPY]: Don't set _dl_unload_cache. + + * sysdeps/mach/hurd/dl-sysdep.c (_dl_important_hwcaps): + Don't use INTUSE with _dl_signal_error. + +2004-03-08 Ulrich Drepper + + * sysdeps/powerpc/powerpc64/dl-machine.c (_dl_reloc_overflow): + Don't use INTUSE with _dl_signal_error. + +2004-03-08 Richard Henderson + + * sysdeps/alpha/soft-fp/ots_cvtxt.c (_OtsConvertFloatXT): Fix typo + in name. + +2004-03-07 Ulrich Drepper + + * config.h.in: Add entry for HAVE_LIBIDN. + * configure.in: If libidn add-on present define HAVE_LIBIDN. + * Versions.def: Add entry for libcidn. + +2004-03-07 Simon Josefsson + + * resolv/netdb.h [__USE_GNU]: Add new AI_IDN ai_flags for addrinfo. + [__USE_GNU]: Add new error code EAI_IDN_ENCODE for getaddrinfo. + * sysdeps/posix/getaddrinfo.c: Add prototype for __idna_to_ascii_lz + and define IDNA_SUCCESS. + (gaih_inet): If ai_flags have AI_IDN, invoke __idna_to_ascii_lz. + (getaddrinfo): Fix EAI_BADFLAGS test to include AI_IDN. + All changes only applicable when glibc is compiled with the libidn + add-on. + +2004-03-07 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_init): Call + _dl_lookup_symbol_x not _dl_lookup_symbol. + + * sysdeps/powerpc/elf/rtld-global-offsets.sym: Adjust for moving + _dl_hwcap into _rtld_global_ro. + * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Likewise. + * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise. + * sysdeps/powerpc/powerpc64/__longjmp-common.S: Likewise. + * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise. + +2004-03-07 Andreas Schwab + + * elf/dl-sym.c: Include only when USE_TLS. + +2004-03-07 Andreas Jaeger + + * iconvdata/iso-2022-cn-ext.c (BODY): Remove cast used as lvalue. + * iconvdata/tcvn5712-1.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/euc-jisx0213.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/shift_jisx0213.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/tscii.c (EMIT_SHIFT_TO_INIT): Likewise. + +2004-03-07 Ulrich Drepper + + * sysdeps/generic/ldsodefs.h: Move _dl_initial_searclist, + _dl_hp_timing_overhead, _dl_init_all_dirs, and the content of + dl-procinfo.c from _rtld_global to _rtld_global_ro. + * elf/rtld.c: Adjust initializer for _rtld_global_ro. + * elf/dl-close.c: Use GLRO instead of GL where appropriate. + * elf/dl-libc.c: Likewise. + * elf/dl-load.c: Likewise. + * sysdeps/i386/dl-procinfo.h: Likewise. + * sysdeps/i386/i686/hp-timing.h: Likewise. + * sysdeps/ia64/hp-timing.h: Likewise. + * sysdeps/sparc/sparc32/sparcv9/hp-timing.h: Likewise. + * sysdeps/sparc/sparc64/hp-timing.h: Likewise. + * sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Likewise. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h: Likewise. + * string/test-string.h: Define GLRO. + +2004-03-06 Ulrich Drepper + + * elf/dl-lookup.c: We don't need for specialized lookup functions. + Combining the functionality does not slow down relocation processing, + it might even speed it up a little. + * sysdeps/generic/ldsodefs.h: Adjust prototypes for lookup function. + Add only one function pointer to rtlf_global_ro. + * elf/do-lookup.h: Replace #ifs with ifs. + * elf/dl-libc.c: Adjust _dl_lookup_* callers. + * elf/dl-reloc.c: Likewise. + * elf/dl-runtime.c: Likewise. + * elf/dl-sym.c: Likewise. + * elf/rtld.c: Likewise. Adjust _rtld_global_ro initialization. + +2004-03-06 Richard Henderson + + * sysdeps/generic/ldsodefs.h (__rtld_local_attribute__, + __rtld_global_attribute__): Undef after use. + (_rtld_local_ro): Define __rtld_local_attribute__ with just hidden + if available. + + * soft-fp/quad.h (union _FP_UNION_Q): Add longs structure. + * sysdeps/alpha/Implies: Add alpha/soft-fp. + * sysdeps/alpha/soft-fp/sfp-machine.h: Rewrite for GEM interface. + * sysdeps/alpha/Subdirs: New file. + * sysdeps/alpha/soft-fp/Makefile: New file. + * sysdeps/alpha/soft-fp/Versions: New file. + * sysdeps/alpha/soft-fp/local-soft-fp.h: New file. + * sysdeps/alpha/soft-fp/ots_add.c: New file. + * sysdeps/alpha/soft-fp/ots_cmp.c: new file. + * sysdeps/alpha/soft-fp/ots_cmpe.c: New file. + * sysdeps/alpha/soft-fp/ots_cvtqux.c: New file. + * sysdeps/alpha/soft-fp/ots_cvtqx.c: New file. + * sysdeps/alpha/soft-fp/ots_cvttx.c: New file. + * sysdeps/alpha/soft-fp/ots_cvtxq.c: New file. + * sysdeps/alpha/soft-fp/ots_cvtxt.c: New file. + * sysdeps/alpha/soft-fp/ots_div.c: New file. + * sysdeps/alpha/soft-fp/ots_mul.c: New file. + * sysdeps/alpha/soft-fp/ots_nintxq.c: New file. + * sysdeps/alpha/soft-fp/ots_sub.c: New file. + +2004-03-06 Ulrich Drepper + + * configure.in: Recognize --enable-bind-now. + * elf/dynamic-link.h (elf_get_dynamic_info): Allow bind-now flags + in ld.so. + * Makerules (LDFLAGS-c.so): Add -z now if so configured. + * elf/Makefile ($(objpfx)ld.so): Likewise. + * config.make.in (bind-now): New definition. + + * elf/dl-fini.c (_dl_fini): Combine _dl_debug_printf calls. + * elf/rtld.c (print_statistics): Likewise. + + * elf/dl-open.c: No need to pass any parameter to _dl_start_profile. + They are the same in both places. + * elf/dl-profile.c: Likewise. + * elf/rtld.c: Likewise. + * sysdeps/generic/ldsodefs.h: Likewise. + * elf/dl-support.c: Define _dl_profile_output variable. Initialize it. + +2004-03-05 Ulrich Drepper + + * elf/Versions: Remove functions which are not exported anymore. + * dlfcn/dlerror.c: Call ld.so functions through GLSO. + * dlfcn/dlinfo.c: Likewise. + * elf/dl-close.c: Likewise. + * elf/dl-libc.c: Likewise. + * elf/dl-open.c: Likewise. + * elf/dl-sym.c: Likewise. + * sysdeps/generic/libc-start.c: Likewise. + * elf/dl-debug.c: Remove *_internal definition. Don't use INTUSE for + functions which are not exported anymore. + * elf/dl-deps.c: Likewise. + * elf/dl-dst.h: Likewise. + * elf/dl-error.c: Likewise. + * elf/dl-fini.c: Likewise. + * elf/dl-init.c: Likewise. + * elf/dl-load.c: Likewise. + * elf/dl-lookup.c: Likewise. + * elf/dl-misc.c: Likewise. + * elf/dl-profile.c: Likewise. + * elf/dl-profstub.c: Likewise. + * elf/dl-reloc.c: Likewise. + * elf/dl-runtime.c: Likewise. + * elf/dl-version.c: Likewise. + * elf/do-lookup.h: Likewise. + * include/dlfcn.h: Likewise. + * sysdeps/generic/dl-cache.c: Likewise. + * sysdeps/generic/dl-fptr.c: Likewise. + * sysdeps/generic/dl-origin.c: Likewise. + * sysdeps/generic/dl-sysdep.c: Likewise. + * sysdeps/generic/dl-tls.c: Likewise. + * sysdeps/generic/ldsodefs.h: Likewise. + * sysdeps/i386/dl-tls.h: Likewise. + * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. + * elf/rtld.c: Likewise. Export function though _rtld_global_ro. + + * sysdeps/generic/ldsodefs.h (struct rtld_global): Move + dl_debug_fd to rtld_global_ro. + * elf/rtld.c: Use GLRO instead of GL for dl_debug_fd. + * elf/dl-misc.c: Likewise. + + * malloc/malloc.c: Don't call exported interface in the implementation. + + * include/wctype.h: Add libc_hidden_proto for __towctrans. + * wctype/towctrans.c: Add libc_hidden_def. + + * libio/memstream.c (open_memstream): Use _IO_init with INTUSE. + + * posix/regexec.c (transit_state): Remove unused variable + next_state. + + * posix/regcomp.c (init_dfa): Use __btowc instead of btowc. + + * sysdeps/generic/ldsodefs.h: Define new structure rtld_global_ro. + Declare _rtld_global_ro and _rtld_local_ro. Move members of + rtld_global structure into the new one if they are modified only + at startup time. Define GLRO to access _rtld_global_ro. + * elf/Versions: Export _rtld_global_ro. + * elf/dl-close.c: Use GLRO instead of GL where appropriate. + * elf/dl-conflict.c: Likewise. + * elf/dl-deps.c: Likewise. + * elf/dl-dst.h: Likewise. + * elf/dl-error.c: Likewise. + * elf/dl-fini.c: Likewise. + * elf/dl-init.c: Likewise. + * elf/dl-load.c: Likewise. + * elf/dl-lookup.c: Likewise. + * elf/dl-minimal.c: Likewise. + * elf/dl-open.c: Likewise. + * elf/dl-profile.c: Likewise. + * elf/dl-reloc.c: Likewise. + * elf/dl-runtime.c: Likewise. + * elf/dl-support.c: Likewise. + * elf/dl-version.c: Likewise. + * elf/do-lookup.h: Likewise. + * elf/rtld.c: Likewise. + * sysdeps/generic/dl-cache.c: Likewise. + * sysdeps/generic/dl-origin.c: Likewise. + * sysdeps/generic/dl-sysdep.c: Likewise. + * sysdeps/generic/libc-start.c: Likewise. + * sysdeps/generic/dl-cache.c: Likewise. + * sysdeps/i386/dl-machine.h: Likewise. + * sysdeps/i386/setfpucw.c: Likewise. + * sysdeps/i386/fpu/fclrexcpt.c: Likewise. + * sysdeps/i386/fpu/fedisblexcpt.c: Likewise. + * sysdeps/i386/fpu/feenablxcpt.c: Likewise. + * sysdeps/i386/fpu/feholdexcpt.c: Likewise. + * sysdeps/i386/fpu/fesetround.c: Likewise. + * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. + * sysdeps/i386/fpu/ftestexcept.c: Likewise. + * sysdeps/unix/sysv/linux/dl-execstat.c: Likewise. + * sysdeps/unix/sysv/linux/dl-librecon.h: Likewise. + * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. + * sysdeps/unix/sysv/linux/dl-osinfo.h: Likewise. + * sysdeps/unix/sysv/linux/getclktck.c: Likewise. + * sysdeps/unix/sysv/linux/getpagesize.c: Likewise. + * sysdeps/unix/sysv/linux/init-first.c: Likewise. + * sysdeps/unix/sysv/linux/prof-freq.c: Likewise. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise. + * sysdeps/x86_64/dl-machine.h: Likewise. + * sysdeps/sparc/sparc64/dl-machine.h: Likewise. + * sysdeps/sparc/sparc32/dl-machine.h: Likewise. + * sysdeps/s390/s390-64/dl-machine.h: Likewise. + * sysdeps/s390/s390-32/dl-machine.h: Likewise. + * sysdeps/powerpc/powerpc64/dl-machine.h: Likewise. + * sysdeps/powerpc/powerpc32/dl-machine.c: Likewise. + * sysdeps/m68k/dl-machine.h: Likewise. + * sysdeps/ia64/dl-machine.h: Likewise. + * sysdeps/arm/dl-machine.h: Likewise. + * sysdeps/alpha/dl-machine.h: Likewise. + * generic/dl-fptr.c: Likewise. + * mach/hurd/dl-sysdep.c: Likewise. + * unix/sysv/linux/ia64/dl-static.c: Likewise. + * unix/sysv/linux/ia64/getpagesize.c: Likewise. + * unix/sysv/linux/m68k/getpagesize.c: Likewise. + * unix/sysv/linux/sparc/sparc32/getpagesize.c: Likewise. + +2004-03-04 Ulrich Drepper + + * sysdeps/generic/ldsodefs.h: Don't define _dl_name_match_p as inline. + * elf/dl-misc.c: Define _dl_name_match_p here. + * elf/dl-open.c (check_libc_caller): Don't use _dl_name_match_p. + + * elf/dl-open.c (dl_open_worker): Check that _dl_open is called + from the right place. + +2004-01-15 Paolo Bonzini + + * posix/regex.h (REG_STARTEND): Define. + * posix/regexec.c (regexec): Check for REG_STARTEND. + +2004-02-29 Paolo Bonzini + + * posix/regexec.c (transit_state): Don't handle state == NULL. + Move state log and backreference management... + (merge_state_with_log): ... to this function. + (find_recover_state): New function. + (check_matching): Use find_recover_state to get a non-NULL + state when an invalid state is reached. Compute the amount + of initial characters to be skipped less conservatively when + multi-byte character sets are in use. Do not check + dfa->nbackref if the state log is NULL. Initialize err. + (acquire_init_state_context): Expect err to be initialized. + Fix spacing. + +2004-03-05 Jakub Jelinek + + * sysdeps/sparc/sparc32/elf/start.S: Handle PIEs. + * sysdeps/sparc/sparc64/elf/start.S: Likewise. + +2004-03-04 Jakub Jelinek + + * iconv/iconv_prog.c (process_block): Handle omit_invalid. + If iconv returns EILSEQ with omit_invalid, continue converting + and return 1 if no other errors are seen. + (main): Set status to EXIT_FAILURE whenever process_* returns + nonzero, but only stop processing further files if iy returns + negative value. + +2004-03-03 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/x86_64/posix_fadvise64.c: New file. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (posix_fadvise64): + Remove. + * sysdeps/unix/sysv/linux/alpha/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/alpha/posix_fadvise64.c: New file. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (posix_fadvise64): + Remove. + * sysdeps/unix/sysv/linux/ia64/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/ia64/posix_fadvise64.c: New file. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (posix_fadvise64): + Remove. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/posix_fadvise64.c: New + file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Removed. + * sysdeps/unix/sysv/linux/s390/s390-64/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/s390/s390-64/posix_fadvise64.c: New file. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list + (posix_fadvise64): Remove. + * sysdeps/unix/sysv/linux/sparc/sparc64/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/posix_fadvise64.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list + (posix_fadvise64): Remove. + +2004-03-02 Andreas Schwab + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/xstat.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fxstat.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/lxstat.c: New file. + +2004-03-01 Ulrich Drepper + + * nscd/nscd_getgr_r.c (nscd_getgr_r): Add missing initialization + of return value. + * nscd/nscd_gethst_r.c (nscd_gethst_r): Likewise. + + * sysdeps/unix/sysv/linux/kernel-features.h: Add support for + __ASSUME_GETDENTS32_D_TYPE. + * sysdeps/unix/sysv/linux/getdents.c: For 2.6.4+ kernels use + getdents syscall again since it provides d_type information. + +2004-02-29 Andreas Jaeger + + * manual/install.texi (Tools for Compilation): Autoconf 2.53 is + required. + (Supported Configurations): Add x86_64-*-linux. + +2004-02-28 Ulrich Drepper + + * sysdeps/i386/i686/memcmp.S: Move table to .rodata. Patch by HJ Lu. + +2004-02-27 Jakub Jelinek + + * elf/rtld.c (dl_main): Adjust l->l_ld of the vDSO by l->l_addr. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Only set + GL(dl_sysinfo) if non-zero. + + * sysdeps/unix/sysv/linux/sysconf.c: Include stdlib.h. + +2004-02-26 Ulrich Drepper + + * nss/getXXbyYY_r.c: Pass result also to the nscd_* function. Don't + set *result here. + * nscd/nscd_proto.h: Add new argument for pointer to result pointer + to all nscd_* functions. + * nscd/nscd_getgr_r.c (nscd_getgr_r): Add new parameter. Store result + pointer in the address provided by the new parameter if successful. + Otherwise store NULL. Return zero if no entry found. + (__nscd_getgrnam_r, __nscd_getgrgid_r): Add new parameter and pass + it on. + * nscd/nscd_gethst_r.c (nscd_gethst_r): Add new parameter. Store + result pointer in the address provided by the new parameter if + successful. Otherwise store NULL. Return zero if no entry found. + (__nscd_gethostbyname_r, __nscd_gethostbyname2_r, + __nscd_gethostbyaddr_r): Add new parameter and pass it on. + * nscd/nscd_getpw_r.c (nscd_getpw_r): Add new parameter. Store result + pointer in the address provided by the new parameter if successful. + Otherwise store NULL. Return zero if no entry found. + (__nscd_getpwnam_r, __nscd_getpwuid_r): Add new parameter and pass + it on. + +2004-02-26 Jakub Jelinek + + * sysdeps/unix/sysv/linux/clock_settime.c (SYSDEP_SETTIME): Set + retval to -1 on error. + +2004-02-26 Ulrich Drepper + + * stdlib/canonicalize.c (__realpath): Simplify. + + * posix/regcomp.c (parse_expression): Avoid duplication in calls + to build_charclass_op. + +2004-02-26 Jakub Jelinek + + * elf/rtld.c (dl_main): Correctly set up l_map_end and l_addr + in vDSO's link_map, don't assume l_addr == 0. Set GL(dl_sysinfo) + from e_entry only if AT_SYSINFO not present and adjust by l_addr. + Take vDSO into account when inserting rtld into _dl_loaded chain. + +2004-02-26 Ulrich Drepper + + * sunrpc/svcauth_des.c (authdes_getucred): Removed fixed limit on + number of groups in the cache. Relax the disconnect between the + interface of authdes_getucred and netname2user a bit. + * sunrpc/auth_unix.c (authunix_create_default): Don't allocate + huge arrays on the stack. + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Use the official + not cancelable interfaces. + +2004-02-24 Arnold D. Robbins + + * posix/regex_internal.c (build_wcs_upper_buffer): Enclose + `offsets_needed' label in `#ifdef _LIBC' to silence `unused label' + compiler warning. + +2004-02-24 Nelson H.F. Beebe + + * posix/regcomp.c (parse_expression): Add cast to (const unsigned + char *) in calls to `build_charclass_op'. + * posix/regex_internal.c (build_wcs_buffer): Add cast to char* in call + to `wcrtomb'. + * posix/regex_internal.h (bitset_not, bitset_merge, bitset_not_merge, + bitset_mask, re_string_char_size_a, re_string_wchar_at, + re_string_elem_size_at): Change to use prototypes. + (re_string_char_size_at, re_string_wchar_at, + re_string_elem_size_at): Declare as `internal_function'. + +2004-02-25 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Handle + _SC_NGROUPS_MAX. + +2004-02-23 Jakub Jelinek + + * wcsmbs/mbrtowc.c (__mbrtowc): Cap s + n at the end of address space. + * stdlib/Makefile (tests): Add testmb2. + (testmb2-ENV): New. + * stdlib/testmb2.c: New test. + +2004-02-23 Jakub Jelinek + + * sysdeps/posix/getaddrinfo.c (gaih_inet): If _res has not been + inited yet, try to init it before saving old _res.options. + * posix/Makefile (xtests): Add bug-ga2. + (generated): Add bug-ga2.mtrace and bug-ga2-mem. + (xtests): Depend on bug-ga2-mem. + ($(objpfx)bug-ga2-mem, bug-ga2-ENV): New. + * posix/bug-ga2.c: New test. + +2004-02-22 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Pop register + content also in case of an overflow in the parameter. + Reported by Momchil Velikov . + +2004-02-21 Ulrich Drepper + + * elf/dynamic-link.h (elf_get_dynamic_info): Recognize DF_1_NOW. + In ld.so, neither DT_FLAGS nor DT_FLAGS_1 must be used. + +2004-02-21 Andreas Jaeger + + * posix/bug-ga1.c: Include for memset prototype. + + * elf/dl-load.c (_dl_map_object_from_fd): Fix casts used as lvalue. + + * iconv/gconv_simple.c (internal_ucs4le_loop): Remove cast used as + lvalue. + +2004-02-19 Carlos O'Donell + + * sysdeps/generic/framestate.c [__USING_SJLJ_EXCEPTIONS__] + (__frame_state_for): Set frame_State_for to abort if the compiler + is using sjlj. + * sysdeps/generic/unwind-dw2.c: Allow sjlj enabled compilers to + build the code by removing __USING_SJLJ_EXCEPTIONS__ wrapper. + +2004-02-20 Alexandre Oliva + + * resolv/Versions: Remove semicolon from the end of libresolv's + GLIBC_2.3.2 version block. + * Versions.def (libresolv): Add GLIBC_2.3.2. + +2004-02-19 Carlos O'Donell + + * sysdeps/hppa/fpu/feholdexcpt.c (feholdexcept): Fix order of fp + status register loads. + +2004-02-20 Thorsten Kukuk + + * nscd/nscd.c (termination_handler): Use _exit instead of exit + +2004-02-20 Ulrich Drepper + + * nscd/nscd.c (main): Report fork errors. + + * dlfcn/dlsym.c: Get ld.so loading lock before the call into ld.so. + * dlfcn/dlvsym.c: Likewise. + * elf/dl-addr.c: Get loading lock while using _dl_loaded data. + * elf/dl-fini.c: Likewise. + Patch by Shunichi Sagawa . + +2004-02-20 Jakub Jelinek + + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Add ulps for the + 2003-11-27 atan2 test. + + * sysdeps/powerpc/fpu/bits/mathinline.h (lrint, lrintf): Protect + with #ifndef __powerpc64__. + + * sysdeps/generic/ldsodefs.h (_dl_argv, _dl_argv_internal): If + DL_ARGV_NOT_RELRO defined, don't use attribute_relro. + * sysdeps/alpha/dl-machine.h (DL_ARGV_NOT_RELRO): Remove. + * sysdeps/ia64/dl-machine.h (DL_ARGV_NOT_RELRO): Remove. + * sysdeps/sparc/sparc32/dl-machine.h (DL_ARGV_NOT_RELRO): Remove. + * sysdeps/sparc/sparc64/dl-machine.h (DL_ARGV_NOT_RELRO): Remove. + * sysdeps/alpha/dl-sysdep.h: New file. + * sysdeps/ia64/dl-sysdep.h: New file. + * sysdeps/sparc/dl-sysdep.h: New file. + +2004-02-19 Jakub Jelinek + + * sysdeps/sparc/sparc32/bits/atomic.h: Add __make_section_unallocated + for .gnu.linkonce.b.__sparc32_atomic_locks section. + (__sparc32_atomic_locks): Add __sec_comment at the end of section name. + +2004-02-19 Steven Munroe + + * sysdeps/generic/libc-start.c [LIBC_START_DISABLE_INLINE] (STATIC): + Define as static. + * sysdeps/powerpc/elf/libc-start.c: Define LIBC_START_DISABLE_INLINE + because gcc does not allow inline of functions that call setjmp. + +2004-02-19 Steven Munroe + + * sysdeps/powerpc/powerpc64/Makefile: Use -finline-limit. + +2004-02-19 Jakub Jelinek + + * elf/rtld.c (_dl_argv): If DL_ARGV_NOT_RELRO defined, don't + use attribute_relro for _dl_argv. + * sysdeps/alpha/dl-machine.h (DL_ARGV_NOT_RELRO): Define. + * sysdeps/ia64/dl-machine.h (DL_ARGV_NOT_RELRO): Define. + * sysdeps/sparc/sparc32/dl-machine.h (DL_ARGV_NOT_RELRO): Define. + * sysdeps/sparc/sparc64/dl-machine.h (DL_ARGV_NOT_RELRO): Define. + +2004-02-19 Ulrich Drepper + + * libio/iopopen.c (_IO_new_proc_open): It's not kosher to use + vfork instead of fork. + * libio/oldiopopen.c (_IO_old_proc_open): Likewise. + + * sysdeps/unix/clock_settime.c (clock_settime): Fix typo which + prevented system-dependent handling from being used. + +2004-02-18 Carlos O'Donell + + * test-skeleton.c (main): If set, use environment variable + TIMEOUTFACTOR to scale test TIMEOUT. + +2004-02-18 Ulrich Drepper + + * nscd/nscd_conf.c: Include . + +2004-02-16 Ulrich Drepper + + * stdlib/test-canon.c (do_test): Test realpath(,NULL) in the loop + as well. + + * stdlib/canonicalize.c (__realpath): Remove unnecessary copy + operations. + + * nscd/nscd_conf.c (nscd_parse_file): Little optimization. + +2004-02-14 Thorsten Kukuk + + * nscd/dbg_log.c (set_logfile): Only save name of logfile, + don't open it. + (init_logfile): New function, open logfile if requested. + * nscd/dbg_log.h: Adjust protoype for set_logfile, add init_logfile. + * nscd/nscd.c (main): Call init_logfile after forking in background. + * nscd/nscd_conf.c (nscd_parse_file): Adjust for new set_logfile. + +2004-02-16 Ulrich Drepper + + * elf/rtld.c (dl_main): Don't fail execution if file named in + ld.so.preload is not present [BZ #18]. + + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Undo unintended + changes in last patch. + + * posix/regexec.c (transit_state): Fix typo in commented-out code + [BZ #6]. + + * sysdeps/posix/getaddrinfo.c (match_prefix): Correctly match + partial bytes [BZ #24]. + * posix/Makefile (tests): Add bug-ga1. + * posix/bug-ga1.c: New file. + +2004-02-13 Steven Munroe + + * sysdeps/powerpc/powerpc64/__longjmp-common.S: New file. + * sysdeps/powerpc/powerpc64/__longjmp.S [NOT_IN_libc](__longjmp): + Non-versioned __longjmp for rtld-__longjmp. + [!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as + default version of __longjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)] + (__novmx__longjmp): Original version of __longjmp. + * sysdeps/powerpc/powerpc64/bsd-_setjmp.S [NOT_IN_libc](_setjmp): + Non-versioned _setjmp for rtld-_setjmp. + [!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define + as default version of _setjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)] + (__novmx_setjmp): Original version of _setjmp. + * sysdeps/powerpc/powerpc64/bsd-setjmp.S (__vmxsetjmp): Branch to + __vmx__sigsetjmp and define as default version of setjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)] + (__novmxsetjmp): Original version of setjmp. + * sysdeps/powerpc/powerpc64/setjmp-common.S: New file. + * sysdeps/powerpc/powerpc64/setjmp.S [NOT_IN_libc](__setjmp): + Non-versioned __sigsetjmp for rtld-setjmp. + [!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define + as default version of __sigsetjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)] + (__novmx__sigsetjmp): Original version of __sigsetjmp. + + * sysdeps/powerpc/powerpc32/__longjmp-common.S: New File + * sysdeps/powerpc/powerpc32/__longjmp.S [NOT_IN_libc](__longjmp): + Non-versioned __longjmp for rtld-__longjmp. + [!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as + default version of __longjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)] + (__novmx__longjmp): Original version of __longjmp. + * sysdeps/powerpc/powerpc32/bsd-_setjmp.S [NOT_IN_libc](_setjmp): + Non-versioned _setjmp for rtld-_setjmp. + [!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define + as default version of _setjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)] + (__novmx_setjmp): Original version of _setjmp. + * sysdeps/powerpc/powerpc32/bsd-setjmp.S (__vmxsetjmp): Branch to + __vmx__sigsetjmp and define as default version of setjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)] + (__novmxsetjmp): Original version of setjmp. + * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: New file. + * sysdeps/powerpc/powerpc32/fpu/__longjmp.S [NOT_IN_libc](__longjmp): + Non-versioned __longjmp for rtld-__longjmp. + [!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as + default version of __longjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)] + (__novmx__longjmp): Original version of __longjmp. + * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: New file. + * sysdeps/powerpc/powerpc32/fpu/setjmp.S [NOT_IN_libc](__setjmp): + Non-versioned __sigsetjmp for rtld-setjmp. + [!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define + as default version of __sigsetjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)] + (__novmx__sigsetjmp): Original version of __sigsetjmp. + * sysdeps/powerpc/powerpc32/setjmp-common.S: New file. + * sysdeps/powerpc/powerpc32/setjmp.S [NOT_IN_libc](__setjmp): + Non-versioned __sigsetjmp for rtld-setjmp. + [!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define + as default version of __sigsetjmp. + [SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)] + (__novmx__sigsetjmp): Original version of __sigsetjmp. + + * sysdeps/powerpc/Dist: New File. + * sysdeps/powerpc/Makefile (sysdep_routines): Add novmx-longjmp.c + and novmx-sigjmp.c + * sysdeps/powerpc/Versions (libc): To GLIBC_2.3_4 add _longjmp, + __sigsetjmp, _setjmp, longjmp, and setjmp. To GLIBC_PRIVATE add + __novmx__libc_longjmp, __novmx__libc_siglongjmp, __vmx__libc_longjmp, + and __vmx__libc_siglongjmp. + * sysdeps/powerpc/bits/setjmp.h: Define JB_VRSAVE, JB_VRS, and adjust + JB_SIZE to add VMX regs to __jmp_buf. + * sysdeps/powerpc/longjmp.c: New file. + * sysdeps/powerpc/novmxsetjmp.h: New file. + * sysdeps/powerpc/novmx-longjmp.c: New file. + * sysdeps/powerpc/novmx-sigjmp.c: New file. + * sysdeps/powerpc/sigjmp.c: New file. + +2004-02-13 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/fpu/s_llrintf.c (__lrintf, lrintf): + Define. + (__lrintl, lrintl): Remove. + * sysdeps/powerpc/powerpc64/fpu/s_llrint.c (__lrint): Fix a typo in + strong_alias spelling. + * sysdeps/powerpc/powerpc64/fpu/s_lrintf.S: Remove. + * sysdeps/powerpc/powerpc64/fpu/s_lrint.S: New file. + +2004-02-12 Ulrich Drepper + + * posix/getopt.h: Add some non-gcc support. Patch by Aharon Robbins. + +2004-02-12 Mark Brown + + * sysdeps/ia64/fpu/e_fmodf.S: Added text of Intel license. + +2004-02-12 Jakub Jelinek + + * sysdeps/powerpc/fpu/s_lrint.c: Move to... + * sysdeps/powerpc/powerpc32/fpu/s_lrint.c: ... here. + * sysdeps/powerpc/fpu/s_llrint.c: Move to... + * sysdeps/powerpc/powerpc32/fpu/s_llrint.c: ... here. + * sysdeps/powerpc/fpu/s_llrintf.c: Move to... + * sysdeps/powerpc/powerpc32/fpu/s_llrintf.c: ... here. + * sysdeps/powerpc/powerpc64/fpu/s_llrint.c: New file. + * sysdeps/powerpc/powerpc64/fpu/s_lrintf.S: New file. + * sysdeps/powerpc/powerpc64/fpu/s_llrintf.c: New file. + + * math/libm-test.inc (lrint_test): Add new test. + (llrint_test, lround_test, llround_test): Likewise. + * sysdeps/ieee754/ldbl-128/s_lroundl.c (__lroundl): Fix special case + with result taking up 48 bits. + * sysdeps/ieee754/ldbl-128/s_lrintl.c (__lrintl): Likewise. + * sysdeps/ieee754/ldbl-128/s_llroundl.c (__llroundl): Likewise. + * sysdeps/ieee754/ldbl-96/s_llrintl.c (__llrintl): Fix special case + with result taking up 31 bits. + +2004-02-12 Ulrich Drepper + + * locale/programs/locale.c (show_locale_vars): Don't print a value + for LANG if it is not set. + +2004-02-11 Jakub Jelinek + + * posix/regexec.c (check_node_accept_bytes): Return 0 if char_len is 0. + (find_collation_sequence_value): Don't look beyond end of + SYMB_EXTRAMB table. + * posix/Makefile (tests): Add bug-regex23. + (bug-regex23-ENV): New. + * posix/bug-regex23.c: New file. + +2004-02-10 Roland McGrath + + * sysdeps/mach/hurd/times.c (__times): Use union instead of cast. + * sysdeps/mach/hurd/sendmsg.c (__libc_sendmsg): Likewise. + + * sysdeps/mach/hurd/configure.in: Move `retcode' check to ... + * sysdeps/mach/configure.in: ... here. + * sysdeps/mach/hurd/configure: Regenerated. + * sysdeps/mach/configure.in: Regenerated. + +2004-02-10 Ulrich Drepper + + * sysdeps/generic/setenv.c (__add_to_environ): Don't let the + temporary copies of the variables accumulate on the stack. + + * stdio-common/_i18n_number.h: Finish last patch. + +2004-02-09 Ulrich Drepper + + * sysdeps/i386/i686/memcmp.S: New file. Patch by HJ Lu. + +2003-12-05 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/syscalls.list: Turn vm86 into vm86old + for vm86@GLIBC_2.0 version. Add new vm86@GLIBC_2.3.4. + * sysdeps/unix/sysv/linux/i386/Versions (libc: GLIBC_2.3.4): Add vm86. + * sysdeps/unix/sysv/linux/i386/sys/vm86.h: Update vm86 prototype. + +2004-02-09 Ulrich Drepper + + * nis/ypclnt.c: Cleanup last patch. + +2004-02-09 Andreas Jaeger + + * configure.in: Remove glibcbug creation. + * configure: Regenerated. + + * sysdeps/x86_64/fpu/s_copysignf.S: Only load 4 bytes. + +2004-02-03 Thorsten Kukuk + + * nis/ypclnt.c (__yp_bind_client_create): New, small chunk + of duplicated code from __yp_bind. + (__yp_bind_file): New, binding dir code from __yp_bind. + (__yp_bind_client_create): New, ypbind code from __yp_bind. + (__ypclnt_call): New, make NIS query. + (do_ypcall): At first use cached data, then try data from + binding directory, after this ask ypbind for a working ypserv. + Based on a patch from Jeff Bastian and + Chris Barrera + +2004-01-19 Roland McGrath + + * configure.in: Don't set CCVERSION. + * configure: Regenerated. + * glibcbug.in: File removed. + * Makefile (install-bin-script): Remove glibcbug. + (glibcbug): Target removed. + (distclean-1): Don't rm glibcbug. + (distribute): Remove glibcbug.in. + +2004-02-09 Roland McGrath + + * time/tzset.c (tzset_internal): Cap hour in POSIX $TZ rule format to + 24, not 23. + +2004-01-29 Roland McGrath + + * io/ftwtest-sh: Use $tmp consistently, not literal /tmp. + Reported by Kevin P. Fleming . + +2004-02-09 Ulrich Drepper + + * libio/genops.c (_IO_cleanup): Do not use locking when flushing + the buffers. Some thread might be using a stream. + +2004-02-09 Andreas Jaeger + + * sysdeps/x86_64/memcpy.S: Fix alignment [BZ #7]. + Patch by Jan Beulich . + +2004-02-09 Andreas Schwab + + * include/rpc/rpc.h: Declare thread variables with their correct type. + * sunrpc/clnt_perr.c: Don't cast thread variables. + * sunrpc/clnt_raw.c: Likewise. + * sunrpc/clnt_simp.c: Likewise. + * sunrpc/key_call.c: Likewise. + * sunrpc/svcauth_des.c: Likewise. + * sunrpc/svc.c: Likewise. + * sunrpc/svc_raw.c: Likewise. + * sunrpc/svc_simple.c: Likewise. + +2004-02-09 Ulrich Drepper + + * stdio-common/_i18n_number.h: Support printing localized decimal + point and thousand separator. + * wctype/wctrans.c: Add __wctrans alias. + * include/wctype.h: Declare __wctrans. + Based on a patch by Hamed Malek. + + * sysdeps/i386/fpu/fclrexcpt.c (__feclearexcept): Don't touch bits + other than the status bits [BZ #10]. + +2004-02-08 Ulrich Drepper + + Make stream locking operations really work. + * misc/Makefile (CFLAGS-mntent_r.c): Define. + * shadow/Makefile (CFLAGS-fgetspent_r.c): Define. + (CFLAGS-putspent.c): Define. + * grp/Makefile (CFLAGS-fgetgrent_r.c): Define. + (CFLAGS-putgrent.c): Define. + * pwd/Makefile (CFLAGS-fgetpwent_r.c): Define. + Reported by Shunichi Sagawa . + + * elf/dl-load.c (lose): Use noinline attribute instead of silly + alloca to prevent inlining. + * elf/dl-runtime.c (fixup): Likewise. + (profile_fixup): Likewise. + + * stdio-common/printf_size.c: Undo parts of patch from 2000-2-11. + Initialize width correctly. + +2004-02-07 Andreas Jaeger + + * iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as + lvalue. + (internal_ucs4le_loop_single): Likewise. + (ucs4_internal_loop): Likewise. + (BODY): Likewise. + (internal_ucs4_loop_single): Likewise. + * iconvdata/iso8859-1.c (BODY): Likewise. + * iconvdata/cp1255.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/cp1258.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/gb18030.c (BODY): Likewise. + * iconvdata/armscii-8.c (BODY): Likewise. + * stdlib/msort.c (msort_with_tmp): Likewise. + + * iconv/gconv_open.c (__gconv_open): Remove conditional expression + as lvalue. + +2004-02-06 Steven Munroe + + * sysdeps/powerpc/powerpc32/dl-machine.c: Declare __cache_line_size as + weak extern. + (__elf_machine_runtime_setup): Invalidate the instruction cache over + the whole range of the PLT. + +2004-02-06 Andreas Schwab + + * posix/regcomp.c (build_range_exp): Fix off-by-one. + (parse_bracket_exp): Likewise. + +2004-02-05 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: Define + _HAVE_STAT_NSEC and _HAVE_STAT64_NSEC. Patch by Anton Blanchard. + +2004-02-02 Paolo Bonzini + + * posix/regexec.c (check_matching): Add P_MATCH_FIRST parameter. + (re_search_internal): Pass new parameter to check_matching. + (check_matching): Unless a parenthesized group is found at the + beginning of the regexp, advance P_MATCH_FIRST until we entered + a state different from the initial state. + +2004-02-01 Ulrich Drepper + + * math/libm-test.inc (lround_test): Add new test. + (llround_test): Likewise. + (lrint_test): Likewise. + (llrint_test): Likewise. + * sysdeps/ieee754/dbl-64/s_lround.c (__lround): Fix special case + with result taking up 20 bits. + * sysdeps/ieee754/dbl-64/s_lrint.c (__lrint): Likewise. + * sysdeps/ieee754/dbl-64/s_llrint.c (__llrint): Likewise.. + * sysdeps/ieee754/ldbl-96/s_lroundl.c (__lroundl): Fix special + case with result taking up 31 bits. + * sysdeps/ieee754/ldbl-96/s_lrintl.c (__lrintl): Likewise. + + * po/nl.po: Update from translation team. + +2004-01-30 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (ILL_BREAK, + FPE_DECOVF, FPE_DECDIV, FPE_DECERR, FPE_INVASC, FPE_INVDEC, + SEGV_PSTKOVF): Remove underscore prefix from definition. + +2004-01-28 Paolo Bonzini + + Merge regex changes in gawk. + * posix/regcomp.c (build_range_exp) [!_LIBC]: Check validity + of collation elements. + * posix/regex.c: Include limits.h. + * posix/regex.h: Document REG_ECOLLATE correctly. + * posix/regex_internal.h [!_LIBC && !ENABLE_NLS]: Disable NLS. + +2004-01-24 Andreas Jaeger + + * malloc/obstack.h: Import gnulib version. + * malloc/obstack.c: Likewise. + +2004-01-26 David Mosberger + + * elf/link.h (struct dl_phdr_info): Fix typo in comment. + * elf/rtld.c (dl_main): After incrementing dl_nloaded, also + increment dl_load_adds. + * elf/dl-iteratephdr.c (__dl_iterate_phdr): Replace GL(dl_load_subs) + with equivalent GL(dl_load_adds - GL(dl_nloaded). + (dl_iterate_phdr): Likewise. + * elf/dl-close.c (_dl_close): Delete increment of GL(dl_load_subs). + * elf/dl-support.c: Remove global variable _dl_load_subs. + * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove + _dl_load_subs member. + +2004-01-27 Jakub Jelinek + + * elf/rtld.c (_dl_start_final): Don't set l_relro_* here. + (_dl_start): And neither here. + (dl_main): Set GL(dl_loaded)->l_relro_* and + GL(dl_rtld_map)->l_relro_*. + +2004-01-23 David Mosberger + + * sysdeps/generic/ldsodefs.h (struct rtld_global): Add members + _dl_load_adds and _dl_load_subs. + * elf/dl-support.c (_dl_load_adds): New variable. + (_dl_load_subs): Likewise. + * elf/dl-object.c (_dl_new_object): Increment dl_load_adds. + * elf/dl-close.c (_dl_close): Increment dl_load_subs. + * elf/link.h (struct dl_phdr_info): Add members dlpi_adds and + dlpi_subs. + * include/link.h: Likewise. + * elf/dl-iteratephdr.c (__dl_iterate_phdr): Initialize dlpi_adds + and dlpi_subs members. + (dl_iterate_phdr): Likewise. + * elf/tst-dlmodcount.c: New file. + * elf/Makefile (distribute): Mention tst-dlmodcount.c. + (tests): If build-shared, mention tst-dlmodcount. + ($(objpfx)tst-dlmodcount): If build-shared, build and + run tst-dlmodcount. + +2004-01-22 Jakub Jelinek + + * elf/dl-reloc.c (_dl_relocate_object): Move PT_GNU_RELRO protection + into... + (_dl_protect_relro): New routine. + * sysdeps/generic/ldsodefs.h (_dl_protect_relro): New prototype. + * elf/rtld.c (_dl_start_final): Copy l_relro_addr and l_relro_size + from bootstrap_map. + (_dl_main): Don't set GL(_dl_loaded)->l_relro_{addr,size} here. + Call _dl_protect_relro for libraries if prelinking. + +2004-01-23 Richard Henderson + + * Versions.def (libm): Replace GLIBC_2.3.3 with GLIBC_2.3.4. + * sysdeps/alpha/fpu/Versions (libm): Likewise. + * sysdeps/alpha/fpu/cfloat-compat.h (cfloat_versions): Likewise. + * sysdeps/alpha/fpu/s_clog10f.c (clog10f): Likewise. + +2004-01-22 Andreas Jaeger + + * sysdeps/ieee754/dbl-64/e_pow.c (log2): Rename to my_log2 to + avoid warnings for builtin function log2. + + * sysdeps/unix/sysv/linux/x86_64/setcontext.S: Add proper unwind + information. + +2004-01-20 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/epoll.h: Add EPOLLONESHOT. + * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: Likewise. + Patch by Davide Libenzi. + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_NO_CLONE_DETACHED for 2.6.2+ kernels. + + * catgets/Makefile ($(objpfx)de.msg): Run sed in C locale. + + * sysdeps/unix/sysv/linux/readahead.c (__readahead): Use off64_t + instead of loff_t. Include . + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Add readahead prototype. + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/cris/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise. + + * elf/dl-load.c: Don't add attribute_relro to max_dirnamelen. + + * sysdeps/generic/inttypes.h: Fix PRI*FAST{16,32} macros. + +2003-12-31 Bruno Haible + + * iconvdata/iso_6937-2.c (to_ucs4): Map 0x7E to U+007E, not U+203E. + Map 0xA6 to U+0023. Map 0xA8 to U+00A4. + (to_ucs4_comb): Map 0xC5 0x20 to U+00AF. + (from_ucs4): Map U+00ED to 0xC2 0x69, not 0xC2 0xE9. + (BODY for TO_LOOP): Don't map U+02DC. Map U+02DD to 0xCD 0x20, not + 0x00 0x20. Don't map U+2500..U+25E3. + +2004-01-19 Jakub Jelinek + + * posix/regexec.c (get_subexp): Remove bkref_str variable. + Extend buffers if needed before comparisons. + (get_subexp_sub): Handle clean_state_log_if_needed failure. + +2004-01-17 Ulrich Drepper + + * sysdeps/i386/i486/bits/atomic.h (atomic_add): Fix test for using + atomic_decrement. Patch by Davin McCall. + +2004-01-13 Daniel Jacobowitz + + * sysdeps/powerpc/nofpu/sim-full.c (__sim_exceptions) + (__sim_disabled_exceptions, __sim_round_mode): Declare with + hidden data and nocommon. + * sysdeps/powerpc/nofpu/soft-supp.h (__sim_exceptions) + (__sim_disabled_exceptions, __sim_round_mode): Use + libc_hidden_proto. + * sysdeps/powerpc/soft-fp/sfp-machine.h (__sim_exceptions) + (__sim_disabled_exceptions, __sim_round_mode): Likewise. + +2004-01-16 Ulrich Drepper + + * elf/elf.h: Define PT_IA_64_HP_OPT_ANOT, PT_IA_64_HP_HSL_ANOT, and + PT_IA_64_HP_STACK. + +2004-01-16 Richard Henderson + + * include/unistd.h (__libc_enable_secure): Mark attribute_relro. + (__libc_enable_secure_internal): Likewise. + + * elf/dl-load.c: Don't declare __libc_stack_end. + * sysdeps/generic/libc-start.c: Likewise. + * sysdeps/unix/sysv/linux/dl-execstack.c: Likewise. + * sysdeps/generic/segfault.c: Likewise. Include ldsodefs.h. + * sysdeps/generic/backtrace.c: Likewise. + +2004-01-15 Ulrich Drepper + + * Versions.def: Add GLIBC_2.3.4. + +2004-01-15 Richard Henderson + + * sysdeps/unix/alpha/sysdep.h: Revert last change. + +2004-01-15 Richard Henderson + + * sysdeps/alpha/dl-machine.h (RTLD_START): Use _dl_argv_internal. + + * sysdeps/unix/alpha/sysdep.h [PIC] (SYSCALL_ERROR_HANDLER): Use + !samegp relocation. + +2004-01-15 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/Makefile [stdlib]: Process + ucontext-offsets.sym. + * sysdeps/unix/sysv/linux/alpha/getcontext.S: New file. + * sysdeps/unix/sysv/linux/alpha/makecontext.S: New file. + * sysdeps/unix/sysv/linux/alpha/setcontext.S: New file. + * sysdeps/unix/sysv/linux/alpha/swapcontext.S: New file. + * sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym: New file. + +2004-01-15 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Prefix stubs with + __syscall_, move nop inside, adjust users by +4. + +2004-01-14 Steven Munroe + + * include/libc-symbols.h [HAVE_ASM_GLOBAL_DOT_NAME] + (_symbol_version): Use C_SYMBOL_DOT_NAME to create '.'ed symbols. + (_default_symbol_version): Use C_SYMBOL_DOT_NAME to create '.'ed + symbols. + * sysdeps/powerpc/Makefile: Add rtld-global-offsets.sym to + gen-as-const-headers. + * sysdeps/powerpc/elf/rtld-global-offsets.sym: New file. + * sysdeps/powerpc/sysdep.h: Define v# symbols for vector registers. + Define PPC_FEATURE_* masks for Aux Vector AT_HWCAP. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_SWAPCONTEXT_SYSCALL): Define for PPC and 2.6.0 kernels. + * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h [!__WORDSIZE == 32]: + Declare mcontext_t inline and include altivec state for 64-bit. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: Add GLIBC_2.3.4 + versions for setcontext, getcontext, and swapcontext. + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: Add GLIBC_2.3.4 + versions for setcontext, getcontext, swapcontext, and makecontext. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S + (__getcontext): Upgrade to save Altivec regs and version GLIBC_2_3_4. + [SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)] (__novec_getcontext): + Compatible with GLIBC_2.3.3 release. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S + (__makecontext): Use parm save area instead of compiler_dw to hold + context pointer. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S + (__setcontext): Upgrade to restore Altivec regs and version + GLIBC_2_3_4. + [SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)] (__novec_setcontext): + Compatible with GLIBC_2.3.3 release. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S + (__swapcontext): Upgrade to swap Altivec regs and version GLIBC_2_3_4. + [SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)] (__novec_swapcontext): + Compatible with GLIBC_2.3.3 release. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h + (SIGCONTEXT_V_REGS_PTR, SIGCONTEXT_V_RESERVE): Defined. + +2004-01-12 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Add GLIBC_2.3.4 + versions for setcontext, getcontext, swapcontext, and makecontext. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S + (__getcontext): Upgrade to save Altivec regs and version GLIBC_2_3_4. + [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)] (__novec_getcontext): + Compatible with GLIBC_2.3.3 release. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S + (__makecontext): Upgrade to align for Altivec regs and version + GLIBC_2_3_4. + [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)] (__novec_makecontext): + Compatible with GLIBC_2.3.3 release. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S + (__setcontext): Upgrade to restore Altivec regs and version + GLIBC_2_3_4. + [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)] (__novec_setcontext): + Compatible with GLIBC_2.3.3 release. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S + (__swapcontext): Upgrade to swap Altivec regs and version GLIBC_2_3_4. + [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)] + (__novec_swapcontext): Compatible with GLIBC_2.3.3 release. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: + (_UC_VSCR, _UC_VRSAVE): Define. + (_FRAME_BACKCHAIN, _FRAME_LR_SAVE,_FRAME_PARM_SAVE1,_FRAME_PARM_SAVE2, + _FRAME_PARM_SAVE3, _FRAME_PARM_SAVE4): Defined. + +2004-01-15 Ulrich Drepper + + * elf/rtld.c: Handle platforms with HP_TIMING_NONAVAIL defined. + +2004-01-16 Alfred M. Szmidt + + * sysdeps/generic/dl-execstack.c (_dl_make_stack_executable): Adjust + parameter type. + +2004-01-15 Ulrich Drepper + + * elf/elf.h: Fix typo in comment. + + * sysdeps/generic/dl-sysdep.c: Initialize __libc_stack_end. + * elf/rtld.c: Initialize _dl_argv to allow aliasing. + + * resolv/resolv.h: Add RES_USEBSTRING. + * resolv/res_debug.c (p_option): Add handling for RES_USE_INET6, + RES_ROTATE, RES_NOCHECKNAME, and RES_USEBSTRING. + * resolv/res_init.c (res_setioptions): Recognize ip6-bytestring. + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Only perform + bytestring IPv6 lookup with RES_USEBSTRING option is selected. + Otherwise use the two nibble formats. + +2004-01-14 Ulrich Drepper + + * configure.in: Define HAVE_Z_RELRO if the linker supports -z relro. + * config.h.in: Add entry for HAVE_Z_RELRO. + * include/libc-symbols.h: Define attribute_relro. + * elf/dl-load.c: Add attribute_relro to env_path_list, capstr, ncapstr, + max_capstrlen, and max_dirnamelen definitions. + * elf/rtld.c: Add attribute_relro to _dl_argc, _dl_argv, _dl_skip_args, + load_time, start_time, library_path, preloadlist, version_info, + any_debug. + Remove rtld_total_time. Make it a local variable. Pass pointer to + it to print_statistics. Change print_statistics accordingly. + * sysdeps/generic/dl-sysdep.c: Add attribute_relro to _dl_auxv. Use + attribute_relro instead of explicitly assigning variable to the + .data.rel.ro section for __libc_enable_secure and __libc_stack_end. + * sysdeps/generic/ldsodefs.h: Declare __libc_stack_end, _dl_argc, + _dl_argv, _dl_argv_internal with attribute_relro. + +2004-01-13 Segher Boessenkool + + * Makerules (gen-as-const): Don't silently continue on failure. + +2004-01-14 Steven Munroe + + * sysdeps/generic/dl-sysdep.c: Define __libc_stack_end with + rtld_hidden_data_def. + +2004-01-14 Ulrich Drepper + + * libio/libio.h: Add const to function tables types. + * libio/libioP.h: Likewise. + * login/utmp-private.h: Likewise. + * libio/fileops.c: Add const to jump table variable definition. + * libio/genops.c: Likewise. + * libio/iofopncook.c: Likewise. + * libio/iopopen.c: Likewise. + * libio/memstream.c: Likewise. + * libio/obprintf.c: Likewise. + * libio/oldfileops.c: Likewise. + * libio/oldiopopen.c: Likewise. + * libio/strops.c: Likewise. + * libio/vsnprintf.c: Likewise. + * libio/vswprintf.c: Likewise. + * libio/wfileops.c: Likewise. + * libio/wstrops.c: Likewise. + * login/getutent_r.c: Likewise. + * login/getutid_r.c Likewise. + * login/getutline_r.c: Likewise. + * sysdeps/generic/utmp_file.c: Likewise. + +2004-01-09 Bruno Haible + + * intl/gmo.h (MO_REVISION_NUMBER_WITH_SYSDEP_I): New definition. + * intl/loadmsgcat.c (get_sysdep_segment_value): Handle "I". + (_nl_load_domain): Treat major revision 1 like major revision 0. + +2004-01-11 Bruno Haible + + * stdio-common/vfprintf.c (vfprintf): Disallow the 'I' flag after + width or precision has been seen. + +2004-01-08 Bruno Haible + + * intl/loadmsgcat.c (_nl_load_domain): When a string pair uses a system + dependent segment not known to this version of the library, ignore + the string pair instead of crashing. + +2004-01-13 Ulrich Drepper + + * configure.in: Rewrite test to give gcc to clean up after itself. + Patch by Greg Schafer. + + * posix/regex.c: Support crappy compilers and platforms which have + problems with alloca. + * posix/regex_internal.h: Likewise. + Patch by Paolo Bonzini. + +2004-01-12 Paolo Bonzini + + * posix/regcomp.c [_LIBC && !RE_ENABLE_I18N]: + Drop code to support this, it is never true. + (build_range_exp) [!_LIBC]: Do not create a range + in MBCSET for a single-byte character set. + (build_range_exp) [_LIBC]: Do not create a range + in MBCSET for a single-byte character set without + collation elements. + (init_dfa): Do not conditionalize on _LIBC, it + just makes the code less clear. + (parse_bracket_exp): Use NON_MATCH variable in + addition to "mbcset->non_match", not as an + alternative. + (build_charclass_op): rename NOT parameter to + NON_MATCH, use it instead of declaring a variable. + (parse_bracket_exp) [!_LIBC]: Pass NULL for MBCSET + if the character set is single-byte. + +2004-01-14 Jakub Jelinek + + * posix/regcomp.c (peek_token_bracket): Check remaining + string length before re_string_peek_byte (x, 1). + (parse_bracket_symbol): Likewise. + * posix/regex_internal.h (re_string_is_single_byte_char): Return + true at last byte in the string. + * posix/bug-regex22.c (main): Add new test. + +2004-01-13 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c: Move __libc_enable_secure into + .data.rel.ro. + + * sysdeps/x86_64/dl-machine.h: Include . + + * elf/rtld.c (_dl_start_final): Initialze __libc_stack_end here. + * sysdeps/generic/dl-sysdep.c: Define __libc_stack_end with + rtld_hidden_def and move into .data.rel.ro section. + * sysdeps/generic/ldsodefs.h: Declare __libc_stack_end with + rtld_hidden_proto. + * sysdeps/generic/libc-start.c: Only initialize __libc_stack_end here + if !SHARED. + +2004-01-13 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Fix typo. + +2004-01-13 Ulrich Drepper + + * sysdeps/unix/sysv/linux/dl-execstack.c + (_dl_make_stack_executable): Move common code in front. Use + __builtin_expect. + + * sysdeps/unix/sysv/linux/dl-execstack.c: Change interface. Add + challenge for caller. + * sysdeps/generic/ldsodefs.h: Change declaration and type of hook + member in rtld_global appropriately. + * elf/dl-support.c: Likewise. + * elf/dl-load.c (_dl_map_object_from_fd): Take additional paramter. + Pass it on to the changed function. + (_dl_map_object): Pass new parameter to _dl_map_object_from_fd. + +2004-01-13 Richard Henderson + + * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_xxx_8_int): + Cast old up to uint64_t before back down to inner width. + (__arch_compare_and_exchange_xxx_16_int): Likewise. + (__arch_compare_and_exchange_xxx_32_int): Likewise. + (__arch_compare_and_exchange_xxx_64_int): Likewise. + (__arch_compare_and_exchange_val_8_int): Cast result to + the type of the memory. + (__arch_compare_and_exchange_val_16_int): Likewise. + (__arch_compare_and_exchange_val_32_int): Likewise. + (__arch_compare_and_exchange_val_64_int): Likewise. + (atomic_compare_and_exchange_bool_acq): Use __atomic_bool_bysize. + (atomic_compare_and_exchange_bool_rel): Likewise. + + * sysdeps/unix/alpha/sysdep.h: Select inline_syscall_r0_asm + based on HAVE___THREAD instead of USE_TLS. + + * sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIMEX32): New. + (__adjtimex_tv64): Use it. + + * sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Cast + to void* rather than directly to the compatibility structure type. + * sysdeps/unix/sysv/linux/alpha/shmctl.c (__new_shmctl): Likewise. + + * sysdeps/unix/sysv/linux/alpha/sigaction.c (struct kernel_sigaction): + Forward declare. + +2004-01-13 Richard Henderson + + * Versions.def (libm): Add GLIBC_2.3.3. + * sysdeps/alpha/fpu/Versions: Add __c1_c*f and c*f to GLIBC_2.3.3. + * sysdeps/alpha/fpu/cabsf.c, sysdeps/alpha/fpu/cargf.c, + sysdeps/alpha/fpu/cfloat-compat.h, sysdeps/alpha/fpu/cimagf.c, + sysdeps/alpha/fpu/conjf.c, sysdeps/alpha/fpu/crealf.c, + sysdeps/alpha/fpu/s_cacosf.c, sysdeps/alpha/fpu/s_cacoshf.c, + sysdeps/alpha/fpu/s_casinf.c, sysdeps/alpha/fpu/s_casinhf.c, + sysdeps/alpha/fpu/s_catanf.c, sysdeps/alpha/fpu/s_catanhf.c, + sysdeps/alpha/fpu/s_ccosf.c, sysdeps/alpha/fpu/s_ccoshf.c, + sysdeps/alpha/fpu/s_cexpf.c, sysdeps/alpha/fpu/s_clog10f.c, + sysdeps/alpha/fpu/s_clogf.c, sysdeps/alpha/fpu/s_cpowf.c, + sysdeps/alpha/fpu/s_cprojf.c, sysdeps/alpha/fpu/s_csinf.c, + sysdeps/alpha/fpu/s_csinhf.c, sysdeps/alpha/fpu/s_csqrtf.c, + sysdeps/alpha/fpu/s_ctanf.c, sysdeps/alpha/fpu/s_ctanhf.c: New files. + * sysdeps/alpha/fpu/bits/mathdef.h: Rename complex float + functions for gcc 3.3. + + * sysdeps/generic/s_cacosf.c, sysdeps/generic/s_cacoshf.c, + sysdeps/generic/s_casinf.c, sysdeps/generic/s_casinhf.c, + sysdeps/generic/s_catanf.c, sysdeps/generic/s_catanhf.c, + sysdeps/generic/s_ccosf.c, sysdeps/generic/s_ccoshf.c, + sysdeps/generic/s_cexpf.c, sysdeps/generic/s_clog10f.c, + sysdeps/generic/s_clogf.c, sysdeps/generic/s_cpowf.c, + sysdeps/generic/s_cprojf.c, sysdeps/generic/s_csinf.c, + sysdeps/generic/s_csinhf.c, sysdeps/generic/s_csqrtf.c, + sysdeps/generic/s_ctanf.c, sysdeps/generic/s_ctanhf.c: Don't + weak_alias if the function name has been #defined. + + * math/cabsf.c: Move ... + * sysdeps/generic/cabsf.c: ... here. + * math/cargf.c: Move ... + * sysdeps/generic/cargf.c: ... here. + * math/cimagf.c: Move ... + * sysdeps/generic/cimagf.c: ... here. + * math/conjf.c: Move ... + * sysdeps/generic/conjf.c: ... here. + * math/crealf.c: Move ... + * sysdeps/generic/crealf.c: ... here. + +2004-01-13 Ulrich Drepper + + * Makeconfig: Define relro-LDFLAGS if have-z-relro==yes. Add it to + LDFLAGS.so and LDFLAGS-rtld. + (+link): Add relro-LDFLAGS. + * Makeconfig (shlib.lds): Place __libc_subfreeres, __libc_atexit, and + __libc_thread_subfreeres sections after .jcr section. + * config.make.in: Add have-z-relro. + * configure.in: Add check for -z relro option. + * include/link.h (struct link_map): Add relro_addr and relro_size + members. + * elf/dl-load.c (_dl_map_object_from_fd): Recognize PT_GNU_RELRO. + * elf/dl-reloc.c (_dl_relocate_object): At the end, make relro + part of loaded segments read-only. + * elf/elf.h: Define PT_GNU_RELRO. + * elf/rtld.c (_dl_start): Recognize PT_GNU_RELRO of ld.so. + (dl_main): Recognize PT_GNU_RELRO of the application. Call + _dl_debug_initialize and initialize l_info[DT_DEBUG] before + relocations. + +2004-01-12 Jakub Jelinek + + * sysdeps/x86_64/strcspn.S: Fix typo in last patch. + +2004-01-11 Andreas Jaeger + + * sysdeps/x86_64/__longjmp.S: Add cfi directives. + +2004-01-10 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/__start_context.S: Add cfi directives. + * sysdeps/unix/x86_64/sysdep.S (__syscall_error): Likewise. + * sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise. + * sysdeps/x86_64/strcspn.S: Likewise. + * sysdeps/x86_64/strspn.S: Likewise. + +2004-01-08 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/clone.S (__clone): Add cfi_endproc + right before syscall and cfi_startproc before PSEUDO_END. + Clear %rbp in thread_start. + +2004-01-05 Jakub Jelinek + + * posix/regcomp.c (regcomp): Fix comment typo. + (regfree): Free preg->translate, clear buffer, allocated, fastmap + and translate fields. + + * posix/regcomp.c (build_charclass, buld_charclass_op): Change first + argument to unsigned RE_TRANSLATE_TYPE. + * posix/regex_internal.h (re_string_t): Change trans type to + unsigned RE_TRANSLATE_TYPE. + * posix/regex_internal.c (re_string_construct_common): Cast + trans to unsigned RE_TRANSLATE_TYPE. + (re_string_peek_byte_case, re_string_fetch_byte_case): Avoid fast + path if pstr->trans. Never translate the character through + pstr->trans. + * posix/Makefile (tests): Add bug-regex22. + (bug-regex22-ENV): Set. + * posix/bug-regex22.c: New test. + +2004-01-02 Paolo Bonzini + + * posix/regex_internal.c (re_node_set_add_intersect, + re_node_set_merge): Rewritten. + (re_node_set_insert, re_node_set_remove_at): + Avoid memmove, we know what direction we should copy and that we + are copying 32-bit words. + (re_node_set_compare): Iterate backwards. + +2003-12-30 Paul Eggert + + * time/mktime.c (verify): New macro. + (time_t_is_integer, twos_complement_arithmetic, + right_shift_propagates_sign, base_year_is_a_multiple_of_100, + C99_integer_division): Document these longstanding assumptions in the + code, and verify them at compile-time. + +2004-01-02 Jakub Jelinek + + * posix/regex_internal.h (re_match_context_t): Add dfa member. + * posix/regexec.c (match_ctx_free_subtops, search_cur_bkref_entry, + match_ctx_add_sublast, sift_ctx_init, acquire_init_state_context, + prune_impossible_nodes, check_halt_state_context, proceed_next_node, + sift_states_backward, update_cur_sifted_state, check_dst_limits, + check_dst_limits_calc_pos, sift_states_bkref, transit_state, + check_subexp_matching_top, transit_state_sb, transit_state_mb, + transit_state_bkref, get_subexp, get_subexp_sub, check_arrival, + check_arrival_add_next_nodes, expand_bkref_cache, check_node_accept): + Remove dfa parameter. Get dfa from mctx. Adjust callers. + (re_search_internal): Initialize mctx.dfa. + + * posix/regex_internal.c (re_node_set_insert): Remove unused variables. + + * posix/regex_internal.h (re_dfa_t): Add syntax field. + * posix/regcomp.c (parse): Initialize dfa->syntax. + * posix/regexec.c (acquire_init_state_context, + prune_impossible_nodes, check_matching, check_halt_state_context, + proceed_next_node, sift_states_iter_mb, sift_states_backward, + update_cur_sifted_state, sift_states_bkref, transit_state, + transit_state_sb, transit_state_mb, transit_state_bkref, + get_subexp, get_subexp_sub, check_arrival, expand_bkref_cache, + build_trtable): Remove preg argument, add dfa argument instead + and remove dfa = preg->buffer initialization in the body. + Adjust all callers. + (check_node_accept_bytes, group_nodes_into_DFAstates, + check_node_accept): Likewise. Use dfa->syntax instead of + preg->syntax. + (check_arrival_add_next_nodes): Remove preg argument. + + * posix/regex_internal.h (re_match_context_t): Make input + re_string_t instead of a pointer to it. + * posix/regex_internal.c (re_string_construct_common): Don't clear + pstr here... + (re_string_construct): ... but only here. + * posix/regexec.c (match_ctx_init): Remove input argument. Don't + initialize fields to zero. + (re_search_internal): Move input into mctx.input. + (acquire_init_state_context, check_matching, + check_halt_state_context, proceed_next_node, + clean_state_log_if_needed, sift_states_bkref, sift_states_iter_mb, + transit_state, transit_state_sb, transit_state_mb, + transit_state_bkref, get_subexp, check_arrival, + check_arrival_add_next_nodes, check_node_accept, extend_buffers): + Change mctx->input into &mctx->input and mctx->input->field into + mctx->input.field. + +2004-01-02 Jakub Jelinek + Paolo Bonzini + + * posix/regex_internal.h (re_const_bitset_ptr_t): New type. + (re_string_t): Add newline_anchor, word_char and word_ops_used fields. + (re_dfa_t): Change word_char type to bitset. Add word_ops_used field. + (re_string_context_at, re_string_reconstruct): Remove last argument. + * posix/regex_internal.c (re_string_allocate): Initialize + pstr->word_char and pstr->word_ops_used. + (re_string_context_at): Remove newline_anchor argument. + Use input->newline_anchor instead, swap && conditions. + Only use IS_WIDE_WORD_CHAR if input->word_ops_used != 0. + Use input->word_char bitmap instead of IS_WORD_CHAR. + (re_string_reconstruct): Likewise. + Adjust re_string_context_at caller. + * posix/regexec.c (acquire_init_state_context, + check_halt_state_context, transit_state, transit_state_sb, + transit_state_mb, transit_state_bkref, check_arrival, + check_node_accept): Adjust re_string_context_at and + re_string_reconstruct callers. + (re_search_internal): Likewise. Set input.newline_anchor. + (build_trtable): Use dfa->word_char bitmap instead of IS_WORD_CHAR. + * posix/regcomp.c (init_word_char): Change return type to void. + Set dfa->word_ops_used. + (free_dfa_content): Don't free dfa->word_char. + (parse_expression): Remove error handling for init_word_char. + +2004-01-01 Paolo Bonzini + + * posix/regex_internal.h (re_dfastate_t): Fix size of the CONTEXT + bitfield. + + * posix/regex_internal.c (re_node_set_insert): Rewrite. + +2004-01-01 Ulrich Drepper + + * posix/getconf.c: Update copyright year. + * nss/getent.c: Likewise. + * nscd/nscd_nischeck.c: Likewise. + * iconv/iconvconfig.c: Likewise. + * iconv/iconv_prog.c: Likewise. + * elf/ldconfig.c: Likewise. + * catgets/gencat.c: Likewise. + * csu/version.c: Likewise. + * elf/ldd.bash.in: Likewise. + * elf/sprof.c (print_version): Likewise. + * locale/programs/locale.c: Likewise. + * locale/programs/localedef.c: Likewise. + * nscd/nscd.c (print_version): Likewise. + * debug/xtrace.sh: Likewise. + * malloc/memusage.sh: Likewise. + * malloc/mtrace.pl: Likewise. + +2004-01-01 Petter Reinholdtsen + + * stdlib/strfmon.c: Make formatting of left-justified currency + values match the the POSIX standard. When using format string + "[%-14#5.4n]" to print -123.45, the result should be + "[-$ 123.4500 ]", not "[-$123.4500 ]". + +2004-01-01 Andreas Jaeger + + * resolv/Makefile (generated): New. + +2003-12-31 Joseph S. Myers + + * CONFORMANCE: Update. + +2003-12-30 Paul Eggert + + * time/mktime.c: (my_mktime_localtime_r): + Remove. All uses changed to __localtime_r. + (__localtime_r) [!defined _LIBC]: New macro. Include "time_r.h" to + get its implementation. + Fix compile-command to allow for TIME_R_POSIX. + + * time/strftime.c (my_strftime_gmtime_r, my_strftime_localtime_r): + Remove. All uses changed to __localtime_r and __gmtime_r. + (__gmtime_r, __localtime_r) [!HAVE_TM_GMTOFF]: New macros. + Include "time_r.h" to get their implementations. + + * time/timegm.c: Allow use in GNU applications outside glibc. + [defined HAVE_CONFIG_H]: Include . + [!defined _LIBC]: Include "timegm.h", . + Define __gmtime_r, and declare __mktime_internal. + (timegm): Define via a prototype, since we can safely assume C89 now. + + * time/mktime.c (check_result): Use less-confusing report format. + "long" -> "long int", as per usual GNU style. + (main): Likewise. + Don't loop if the iteration overflows time_t. + Allow a negative step in the iteration. + + * time/mktime.c: Assume freestanding C89 or better. + (HAVE_LIMITS_H, STDC_HEADERS) [defined _LIBC]: Remove; + assume they're 1. + (__P): Remove; not used. + (CHAR_BIT, INT_MIN, INT_MAX): Remove; defines them. + (mktime, not_equal_tm, print_tm, check_result, main): Use prototypes. + Prototypes use const * where appropriate. + (main) [DEBUG]: Fix typo in testing code uncovered by above changes, + which caused the testing code to dump core on some hosts. + +2003-12-31 Ulrich Drepper + + * locale/setlocale.c (setlocale): Avoid duplicating locale names + if we can reuse old strings. + + * inet/rcmd.c: Provide better error message in case of unknown + host. Remove USE_IN_LIBIO. + + * nscd/nscd.init: Updated version, more conforming with current + init file standards. + + * nscd/nscd-client.h (_PATH_NSCDPID): Move the file into + /var/run/nscd directory. + (_PATH_NSCDSOCKET): Likewise. + + * test-skeleton.c (timeout_handler): Fix error message. + + * elf/dl-dst.h (DL_DST_REQUIRED): Avoid the complex operations if + CNT == 0. + +2003-12-30 Jakub Jelinek + + * posix/regexec.c (get_subexp): Only set bkref_str after the first + loop, use buf + bkref_str_off in the loop instead. + * posix/bug-regex11.c (tests): Add 3 new tests. + + * posix/regexec.c (clean_state_log_if_need): Rename to... + (clean_state_log_if_needed): ...this. + (transit_state_mb, get_subexp_sub): Adjust callers. + + * sunrpc/pmap_clnt.c (pmap_set): Do CLNT_DESTROY even if CLNT_CALL + failed. Reported by Steve Grubb. + +2003-12-29 Ulrich Drepper + + * elf/elf.h: Add a few definitions from Solaris 9. + +2003-12-29 Andreas Schwab + + * stdio-common/Makefile (CFLAGS-errlist.c, CFLAGS-siglist.c): Add + $(fno_unit_at_a_time) to avoid reordering assembler output. + +2003-12-29 Jakub Jelinek + + * posix/regexec.c (re_copy_regs): Revert comment change. + Avoid memory leak if realloc fails. + (proceed_next_node): Return -2 if re_node_set_insert fails. + Return -2 if push_fail_stack fails. + (push_fail_stack): Change fs->alloc only after successful realloc. + (pop_fail_stack): Formatting. + (set_regs): If proceed_next_node returns -2, free eps_via_nodes and fs. + (check_arrival_add_next_nodes): Merge identical statements + from if branches. + + * signal/Makefile (tests): Add tst-raise. + * signal/tst-raise.c: New test. + +2003-12-28 Ulrich Drepper + + * posix/regcomp.c (mark_opt_subexp_iter): Declare IDX as int. + + * posix/regexec.c (re_copy_regs): Fix testing for failed allocation. + (push_fail_stack): Add missing check for failed memory allocation. + + * libio/libio.h: Use __builtin_expect in _IO_getc_unlocked, + _IO_peekc_unlocked, _IO_putc_unlocked, _IO_getwc_unlocked, and + _IO_putwc_unlocked. + +2003-12-28 Andreas Jaeger + + * sysdeps/ieee754/dbl-64/e_j0.c (__ieee754_y0): Raise only + overflow for 0 as argument. Raise Invalid exception for negative args. + * sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_yn): Likewise. + * sysdeps/ieee754/dbl-64/e_j1.c (__ieee754_y0): Likewise. + * sysdeps/ieee754/ldb-128/e_jnl.c (__ieee754_ynl): Likewise. + * sysdeps/ieee754/ldb-128/e_j0l.c (__ieee754_y0l): Likewise. + * sysdeps/ieee754/ldb-128/e_j1l.c (__ieee754_y1l): Likewise. + * sysdeps/ieee754/ldb-96/e_jnl.c (__ieee754_ynl): Likewise. + * sysdeps/ieee754/ldb-96/e_j0l.c (__ieee754_y0l): Likewise. + * sysdeps/ieee754/ldb-96/e_j1l.c (__ieee754_y1l): Likewise. + * sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_ynf): Likewise. + * sysdeps/ieee754/flt-32/e_j0f.c (__ieee754_y0f): Likewise. + * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Likewise. + + * math/libm-test.inc (yn_test): Expect invalid exception for + negative arguments. + (y0_test): Likewise. + (y1_test): Likewise. + + * sysdeps/ieee754/dbl-64/e_exp.c (__ieee754_exp): Do not raise + execptions for exp(NaN). + +2003-12-23 Paolo Bonzini + + * posix/regex_internal.c (re_dfa_add_node): Initialize opt_subexp. + * posix/regex_internal.h (re_token_type_t): Put OP_DUP_PLUS + among the tokens, rather than among the epsilon-transiting nodes. + (re_token_t): Add the opt_subexp flag. + * posix/regcomp.c (optimize_utf8, calc_first, + calc_next, calc_epsdest): Don't consider OP_DUP_PLUS. + (mark_opt_subexp, mark_opt_subexp_iter): New functions. + (parse_dup_op): Mostly rewritten, lowering OP_DUP_PLUS to + OP_DUP_ASTERISK and marking optional subexpressions + as such using mark_opt_subexp. + * posix/regexec.c (set_regs): Initialize PREV_INDEX_MATCH + and pass it to update_regs. + (update_regs): Use the PREV_INDEX_MATCH parameter, together + with the opt_subexp flag, in order to discard a final empty + match of a repeated subexpression. + * posix/BOOST.tests: Adjust test vectors. + * posix/PCRE.tests: Likewise. + * posix/rxspencer/tests: Likewise. + +2000-05-22 Jakub Jelinek + + * sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Avoid using ?: + with omitted middle operand. + +2003-12-22 Jakub Jelinek + + * posix/regcomp.c: Remove C99-ism. + * posix/tst-rxspencer.c: Likewise. + Based on a patch by Alex Davis . + +2003-12-17 Paolo Bonzini + + * posix/regex_internal.h [!_LIBC] (internal_function): Define. + (re_string_allocate, re_string_construct, re_string_reconstruct, + re_string_realloc_buffers, build_wcs_buffer, + build_wcs_upper_buffer, build_upper_buffer, + re_string_translate_buffer, re_string_destruct, + re_string_elem_size_at, re_string_char_size_at, + re_string_wchar_at, re_string_context_at, + re_node_set_alloc, re_node_set_init_1 + re_node_set_init_2, re_node_set_init_copy, + re_node_set_add_intersect, re_node_set_init_union, + re_node_set_merge, re_node_set_insert + re_node_set_compare, re_node_set_contains + re_node_set_remove_at, re_dfa_add_node, + re_acquire_state, re_acquire_state_context, + free_state): Add internal_function to declaration. + + * posix/regexec.c (match_ctx_init, match_ctx_clean, + match_ctx_free, match_ctx_free_subtops, + match_ctx_add_entry, search_cur_bkref_entry, + match_ctx_clear_flag, match_ctx_add_subtop, + match_ctx_add_sublast, sift_ctx_init, + re_search_internal, re_search_2_stub, re_search_stub, + re_copy_regs, acquire_init_state_context, + prune_impossible_nodes, check_matching, + check_halt_node_context, check_halt_state_context + update_regs, proceed_next_node, push_fail_stack, + pop_fail_stack, set_regs, free_fail_stack_return, + sift_states_iter_mb, sift_states_backward + update_cur_sifted_state, add_epsilon_src_nodes, + sub_epsilon_src_nodes, check_dst_limits, + check_dst_limits_calc_pos, check_subexp_limits, + sift_states_bkref, clean_state_log_if_need, + merge_state_array, transit_state, + check_subexp_matching_top, transit_state_sb, + transit_state_mb, transit_state_bkref, + get_subexp, get_subexp_sub, find_subexp_node, + check_arrival, check_arrival_add_next_nodes, + find_collation_sequence_value, check_arrival_expand_ecl, + check_arrival_expand_ecl_sub, expand_bkref_cache, + build_trtable, check_node_accept_bytes, extend_buffers, + group_nodes_into_DFAstates, check_node_accept): Likewise. + + * posix/regex_internal.c (re_string_construct_common, + re_string_skip_chars, create_newstate_common, + register_state, create_ci_newstate, create_cd_newstate, + calc_state_hash): Likewise. + (re_string_peek_byte_case, re_fetch_byte_case): Change + declaration from ANSI to K&R. + +2003-12-16 Paolo Bonzini + + * posix/regexec.c (build_trtable): Don't allocate the trtable + until state->word_trtable is known. Don't hardcode UINT_BITS + iterations on each bitset item. + +2003-12-22 Maciej W. Rozycki + + * sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_init): + Initialize REF before passing it to _dl_lookup_symbol. + +2003-12-21 Roland McGrath + + * sysdeps/mach/hurd/dl-sysdep.c (_exit): Define with attribute_hidden. + +2003-12-21 Jakub Jelinek + + * posix/regcomp.c (duplicate_node, duplicate_node_closure): Revert + 2003-11-24 changes. + * posix/regexec.c (group_nodes_into_DFAstates): For CHARACTER with + NEXT_{,NOT}WORD_CONSTRAINT check word_char bit. + * posix/bug-regex19.c (tests): Add new tests. + + * posix/regexec.c (check_dst_limits_calc_pos): Fix formatting. + + * posix/regcomp.c (parse_dup_op): Return NULL if dup_elem is NULL, + after checking syntax. Optimize. + (calc_first): Fix comment. + * posix/bug-regex13.c (tests): Add new tests. + +2003-12-21 Roland McGrath + + * manual/arith.texi (Parsing of Integers): Typo fix. + +2003-12-20 Roland McGrath + + * sysdeps/generic/ifreq.c (__ifreq) [_HAVE_SA_LEN]: Fix typo: + add missing dereference of IFREQS before counting loop. + +2003-12-21 Andreas Schwab + + * sysdeps/m68k/m68020/bits/atomic.h: Avoid matching memory + constraints. + +2003-12-20 Ulrich Drepper + + * elf/rtld.c (dl_main): Optimize order of subexpressions in if(). + +2003-12-18 Ulrich Drepper + + * stdio-common/printf_fp.c: Add support to use alternative decimal + digits. + * stdio-common/vfprintf.c (vfprintf): Pass use_outdigits flags to + __printf_fp. Patch by Hamed Malek . + +2003-12-18 Carlos O'Donell + + * sysdeps/unix/sysv/linux/hppa/clone.S (__clone) [PIC]: Save PIC, + reload PIC if we need to call __syscall_error, cleanup asm. + +2003-12-17 Carlos O'Donell + + * sysdeps/hppa/fpu/fclrexcpt.c (feclearexcept): Right shift + FE_ALL_EXCEPT before complimenting. + * sysdeps/hppa/fpu/fegetenv.c (fegetenv): Use asm 'ma,' completer, + and gcc '+r' constraint. + * sysdeps/hppa/fpu/feholdexcpt.c (feholdexcept): Likewise. + * sysdeps/hppa/fpu/fesetenv.c (fesetenv): Likewise. + * sysdeps/hppa/fpu/feupdateenv.c (feupdateenv): Read raised + exception bits, OR with envp, pass to fesetenv. + * sysdeps/hppa/fpu/fraiseexcpt.c (feraiseexcept): Add delayed + exception flushing, FE_UNDERFLOW is DBL_MIN/3.0, FE_INEXACT is + triggered by M_PI/69.69 converted to single precision. + * sysdeps/hppa/fpu/fsetexcptflg.c (fesetexceptflag): Set enable + bits not raised exception bits. + + * sysdeps/hppa/Makefile: Add dl-symaddr and dl-fptr to the + correct build strings. + * sysdeps/hppa/dl-fptr.h: New file. + * sysdeps/hppa/dl-fptr.c: Removed. + * sysdeps/hppa/dl-symaddr.c (_dl_symbol_address): Use _dl_make_ftpr, + remove const qualifier for map. + (_dl_function_address): Removed. + * sysdeps/hppa/dl-lookupcfg.h: DL_LOOKUP_ADDRESS must clear + PLABEL32 bits, define DL_AUTO_FUNCTION_ADDRESS and + DL_STATIC_FUNCTION_ADDRESS, DL_DT_INIT_ADDRESS and + DL_DT_FINI_ADDRESS use the previous two macros. + +2003-12-17 Jakub Jelinek + + * malloc/mtrace.c (tr_old_memalign_hook): New variable. + (tr_memalignhook): New function. + (mtrace): Register tr_memalignhook. + (muntrace): Deregister tr_memalignhook. + * malloc/malloc.c (__posix_memalign): If __memalign_hook != NULL, + call it directly instead of memalign_internal. + +2003-12-17 Ulrich Drepper + + * misc/mntent_r.c: Change encoding to match recently changed decoder. + Patch by Alexander Achenbach . + +2003-12-16 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Correct definition of + vrregset_t. + +2003-12-16 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h [!__PPC64_ELF_H]: Extend + conditional to include typedef elf_vrreg_t. + +2003-12-17 Paolo Bonzini + + * posix/regexec.c (re_search_internal): Limit search to the + beginning of the buffer if the initial states are empty for + contexts that do not include CONTEXT_BEGBUF or, if + !preg->newline_anchor, that do not include any one of + CONTEXT_BEGBUF and CONTEXT_NEWLINE. + +2003-12-17 Andreas Jaeger + + * sysdeps/generic/system.c (__libc_system): Fix typo, reported by + Kevin Pedretti . + +2003-12-17 Ulrich Drepper + + * elf/rtld.c: Don't use strong_alias to define _rtld_local. This + removes the visibility attributes which might be defined earlier + for some gcc versions. Instead spell out what strong_alias does + plus the visibility. + +2003-12-16 Petter Reinholdtsen + + * posix/regex_internal.h: Make sure the regex code compile + with non-GCC compilers by hiding attributes. + +2003-12-16 Jakub Jelinek + Paolo Bonzini + + * posix/regexec.c (group_nodes_into_DFAstates): Never produce + dests_ch items that are empty. + +2003-12-14 Paolo Bonzini + + * posix/regexec.c (check_arrival): Remove duplicate test. + +2003-12-15 Ulrich Drepper + + * posix/regcomp.c: Make !RE_ENABLE_I18N work again. + * posix/regex_internal.c: Likewise. + * posix/regexec.c: Likewise. + Patch by Paolo Bonzini. + +2003-12-14 Paolo Bonzini + + * posix/regex_internal.c (re_acquire_state_context): + Compare the node sets after all the other comparisons. + +2003-12-13 Paolo Bonzini + + * posix/regexec.c (find_subexp_node, check_arrival, + check_arrival_add_next_nodes, check_arrival_expand_ecl, + check_arrival_expand_ecl_sub, expand_bkref_cache): + Rename the FL_OPEN parameter to TYPE, which is either + OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP. Callers adjusted. + +2003-12-12 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/syscall.S: Pass also 6th argument + to syscall. + +2003-12-11 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Remove __ASSUME_VSYSCALL. + There might always be processes which have no vDSO. + * sysdeps/generic/dl-sysdep.c: Remove __ASSUME_VSYSCALL uses. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + +2003-12-11 Carlos O'Donell + + * sysdeps/generic/dl-fptr.c (COMPARE_AND_SWAP): Pass new and old + in the right order. + +2003-12-01 Jes Sorensen + + * rt/tst-clock.c (do_test): Print message when skipping + CLOCK_PROCESS_CPUTIME_ID test. + + * sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c: New file. + Provide CLOCK_PROCESS_CPUTIME_ID only if /proc/sal/itc_drift is 0. + +2003-12-02 David Mosberger + + * sysdeps/ia64/elf/initfini.c: Add unwind info. + + * sysdeps/ia64/dl-machine.h (elf_machine_matches_host): Mark with + attribute "unused". + (elf_machine_dynamic): Mark with attributes "unused" and "const". + (elf_machine_runtime_setup): Likewise. + + * sysdeps/generic/dl-fptr.c (make_fptr_table): Mark with + attribute "always_inline". + * sysdeps/ia64/dl-machine.h (__ia64_init_bootstrap_fdesc_table): + Likewise. + + * configure.in: Check whether compiler has libunwind support. + * config.make.in (have-cc-with-libunwind): New variable. + * config.h.in (HAVE_CC_WITH_LIBUNWIND): New macro. + * Makeconfig (gnulib): If have-cc-with-libunwind is "yes", also + mention -lunwind. + +2003-11-12 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Define DO_CALL_VIA_BREAK. + Redefine DO_CALL to use vdso if supported, otherwise DO_CALL_VIA_BREAK. + Likewise for DO_INLINE_SYSCALL. Make INTERNAL_SYSCALL use + DO_INLINE_SYSCALL. + + * sysdeps/unix/sysv/linux/ia64/vfork.S: Use DO_CALL_VIA_BREAK() + instead of DO_CALL(). + + * sysdeps/unix/sysv/linux/ia64/clone2.S: Use break directly instead + of DO_CALL(). + + * sysdeps/unix/sysv/linux/ia64/brk.S (__curbrk): Restructure it + to take advantage of DO_CALL() macro. + * sysdeps/unix/sysv/linux/ia64/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/ia64/getcontext.S: Likewise. + + * elf/rtld.c (dl_main): Restrict dl_sysinfo_dso check to first + program header. On ia64, the check failed previously because + there are two program headers. + +2003-12-10 Andreas Jaeger + Ruediger Oertel + + * sysdeps/alpha/fpu/e_sqrt.c: Mark sqrt_data as used. + +2003-12-07 Ulrich Drepper + + * sysdeps/i386/fpu/s_nexttowardf.c: Construct overflow value correctly. + * sysdeps/i386/fpu/s_nexttoward.c: Likewise. + * sysdeps/ieee754/ldbl-128/s_nexttoward.c: Likewise. + * sysdeps/ieee754/ldbl-96/s_nexttoward.c: Likewise. + * sysdeps/generic/s_nexttowardf.c: Likewise. + * math/Makefile (tests): Add bug-nexttoward. + * math/bug-nexttoward.c: New file. + + * sysdeps/generic/s_nextafter.c: Make sure overflow exception is set. + * sysdeps/ieee754/flt-32/s_nextafterf.c: Likewise. + * math/bug-nextafter.c (main): Add tests for overflow and negative + values. + +2003-12-06 Ulrich Drepper + + * math/Makefile (tests): Add bug-nextafter. + * math/bug-nextafter.c: New file. + * sysdeps/generic/s_nextafter.c: Construct overflow value correctly. + * sysdeps/ieee754/flt-32/s_nextafterf.c: Likewise. + * math/libm-test.inc (nextafter_test): Add test for overflow after + +/-FLT_MAX etc. + +2003-12-04 Steven Munroe + + * sysdeps/powerpc/fpu/fgetexcptflg.c (__fegetexceptflag): Add masking + of fenv. + * sysdeps/powerpc/nofpu/fgetexcptflg.c (__fegetexceptflag): Likewise. + +2003-12-05 Martin Schwidefsky + + * sysdeps/s390/s390-32/elf/setjmp.S (setjmp, __setjmp): Add END + statements. + * sysdeps/s390/s390-64/elf/setjmp.S (setjmp, __setjmp): Likewise. + * sysdeps/s390/s390-32/sysdep.h (ENTRY): Add cfi_startproc directive. + (END): Add cfi_endproc directive. + * sysdeps/s390/s390-64/sysdep.h (ENTRY, END): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Remove + cfi_startproc and cfi_endproc directive. + * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise. + * sysdeps/s390/s390-32/addmul_1.S (__mpn_addmul_1): Add CFI directives. + * sysdeps/s390/s390-32/add_n.S (__mpn_add_n): Likewise. + * sysdeps/s390/s390-64/add_n.S (__mpn_add_n): Likewise. + * sysdeps/s390/s390-32/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Likewise. + * sysdeps/s390/s390-64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Likewise. + * sysdeps/s390/s390-32/mul_1.S (__mpn_mul_1): Likewise. + * sysdeps/s390/s390-32/sub_n.S (__mpn_sub_n): Likewise. + * sysdeps/s390/s390-64/sub_n.S (__mpn_sub_n): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S (__mmap64): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/mmap.S (__mmap): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add CFI + directives. Move thread_start out of ENTRY/PSEUDO_END block to + make backchain terminate. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise. + + * sysdeps/s390/s390-32/backtrace.c (trace_arg): New structure. + (unwind_backtrace, unwind_getip): New variables. + (init, __backchain_backtrace, backtrace_helper): New functions. + (__backtrace): Use unwind info for backtrace instead of backchain + walking if the unwind functions can be found. + * sysdeps/s390/s390-64/backtrace.c: Likewise. + + * sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c: New file. + + * sysdeps/unix/sysv/linux/s390/sys/procfs.h (ELF_NGREG32): New #define. + (elf_greg_t32, elf_gregset_t32, elf_fpregset_t32): New types. + (elf_prstatus32, elf_prpsinfo32): New structures. + (prgregset32_t, prfpregset32_t, prstatus32_t, prpsinfo32_t): New types. + + * scripts/data/c++-types-s390-linux-gnu.data: New file. + * scripts/data/c++-types-s390x-linux-gnu.data: New file. + +2003-11-30 Petter Reinholdtsen + + * stdlib/strfmon.c: Correct formatting of international currency + values. The international currency formatting should prefer the + int_* values if they are set for a locale, and use the domestic + values if the int_* values are unset. + +2003-12-03 Jakub Jelinek + + * posix/Makefile (distribute): Add BOOST.tests. + (tests): Add tst-boost, depend on tst-boost-mem. + (generated): Add tst-boost-mem and tst-boost.mtrace. + (tst-boost-ARGS, tst-boost-ENV): Set. + ($(objpfx)tst-boost-mem): New. + * posix/tst-boost.c: New test. + * posix/BOOST.tests: New file. + + * posix/Makefile (distribute): Add PCRE.tests. + (tests): Add tst-pcre, depend on tst-pcre-mem. + (generated): Add tst-pcre-mem and tst-pcre.mtrace. + (tst-pcre-ARGS, tst-pcre-ENV): Set. + ($(objpfx)tst-pcre-mem): New. + * posix/tst-pcre.c: New test. + * posix/PCRE.tests: New file. + +2003-12-02 Jakub Jelinek + + * intl/locale.alias: Use nb_NO instead of no_NO for bokm.l. + + * sysdeps/powerpc/fpu/libm-test-ulps: Regenerated. + * sysdeps/s390/fpu/libm-test-ulps: Regenerated. + +2003-12-03 Ulrich Drepper + + * locale/programs/locarchive.c (enlarge_archive): Print size info + only in verbose mode. + + * locale/iso-3166.def: Three letter code of Romania changed. + +2003-12-02 Roland McGrath + + * scripts/config.sub: Update from master, timestamp='2003-10-20'. + * scripts/config.guess: Update from master, timestamp='2003-10-20'. + +2003-11-30 Andreas Jaeger + + * config.make.in (fno-unit-at-a-time): Define. + + * configure.in: Add test for -fno-unit-at-a-time. + Fix text for -fpie. + + * csu/Makefile (CFLAGS-initfini.s): Add $(fno_unit_at_a_time). + * locale/Makefile (CFLAGS-loadlocale.c): Likewise. + +2003-12-01 Automatic + + * version.h (VERSION): Bump to 2.3.3. + +2003-11-30 Andreas Jaeger + + * stdio-common/vfprintf.c: Do not inline buffered_vfprintf to + decrease stack usage. + +2003-11-30 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sysdep.h (PSEUDO_ERRVAL) + (PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + +2003-11-29 Ulrich Drepper + + * misc/mntent_r.c (decode_name): Be compatible with util-linux and + recognize \134 as well. + +2003-10-09 H.J. Lu + + * sysdeps/ia64/fpu/fraiseexcpt.c: Don't include . + +2003-10-08 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Don't include + . + (struct ia64_fpreg): New definition. + + * sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Don't include + . + (ELF_NGREG): New #define. + (ELF_NFPREG): Likewise. + (elf_greg_t): New type. + (elf_gregset_t): Likewise. + (elf_fpreg_t): Likewise. + (elf_fpregset_t): Likewise. + +2003-10-08 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Include + . + (__ptrace_request): Add PTRACE_GETREGS and PTRACE_SETREGS. + (pt_all_user_regs): New type. + +2003-10-10 Simon Josefsson + + * argp/argp-namefrob.h [!_LIBC]: Include mempcpy.h, strcase.h, + strchrnul.h, strndup.h (from gnulib). + * argp/argp-parse.c: Add alloca.h include snippet verbatim from + Autoconf manual. + * argp/argp-help.c: Replace alloca.h include snipper with verbatim + Autoconf manual version. + * argp/argp.h: Map __restrict to restrict or empty string when + necessary, copied verbatim from posix/regex.h. + +2003-10-09 Steven Munroe + + * Makefile: Allow for c++-types-$(config-machine)-$(config-os).data in + addition to c++-types-$(base-machine)-$(config-os).data. + * scripts/data/c++-types-powerpc-linux-gnu.data: New file. + * scripts/data/c++-types-powerpc64-linux-gnu.data: New file. + +2003-11-28 Ulrich Drepper + + * misc/mntent_r.c (decode_name): Fix decoding of tab, add decoding + of newline. + * manual/sysinfo.texi (mtab): Adjust description accordingly. + Reported by Andries.Brouwer@cwi.nl. + + * sysdeps/x86_64/fpu/libm-test-ulps: Add some more minor changes + to compensate other setup. + +2003-11-27 Andreas Jaeger + + * sysdeps/x86_64/fpu/libm-test-ulps: Add ulps for new atan2 test. + + * math/libm-test.inc (atan2_test): Add test that run infinitly. + Reported by "Willus" . + +2003-11-27 Michael Matz + + * sysdeps/ieee754/dbl-64/mpsqrt.c (fastiroot): Fix 64-bit problem + with wrong types. + +2003-11-28 Jakub Jelinek + + * posix/regexec.c (acquire_init_state_context): Make inline. + Add always_inline attribute. + (check_matching): Add BE macro. Move if (cur_state->has_backref) + into if (dfa->nbackref). + (sift_states_backward): Fix comment. + (transit_state): Add BE macro. Move if (next_state->has_backref) + into if (dfa->nbackref && next_state). Don't check for next_state + != NULL twice. + * posix/regcomp.c (peek_token): Use opr.ctx_type instead of opr.idx + for ANCHOR. + (parse_expression): Only call init_word_char if word context will be + needed. + + * posix/bug-regex11.c (tests): Add new tests. + + * posix/tst-regex.c: Include getopt.h. + (timing): New variable. + (main): Set timing to 1 if --timing argument is present. + Add 2 new tests. + (run_test, run_test_backwards): Handle timing. + +2003-11-27 Jakub Jelinek + + * posix/regex_internal.h (re_string_t): Remove mbs_case field. + Add offsets, valid_raw_len, raw_len, raw_stop, mbs_allocated and + offsets_needed fields. Change icase, is_utf8 and map_notascii + type from int bitfield to unsigned char. + (MBS_ALLOCATED, MBS_CASE_ALLOCATED): Remove. + (build_wcs_upper_buffer): Change prototype to return int. + (re_string_peek_byte_case, re_string_fetch_byte_case): Remove + defines, add prototypes. + * posix/regex_internal.c (re_string_allocate): Don't initialize + stop here. Don't initialize mbs_case. Set valid_raw_len. + Use mbs_allocated instead of MBS_* macros. + (re_string_construct): Don't initialize stop and valid_len here. + Don't initialize mbs_case. Use mbs_allocated instead of MBS_* + macros. Reallocate buffers if build_wcs_upper_buffer converted + too few bytes. Set valid_len to bufs_len only for single byte + no translation and set in that case valid_raw_len as well. + (re_string_realloc_buffers): Reallocate offsets if not NULL. + Use mbs_allocated instead of MBS_ALLOCATED. Don't reallocate + mbs_case. + (re_string_construct_common): Initialize raw_len, mbs_allocated, + stop and raw_stop. + (build_wcs_buffer): Apply pstr->trans before mbrtowc instead of + after it. Set valid_raw_len. Don't set mbs_case. + (build_wcs_upper_buffer): Return REG_NOERROR or REG_ESPACE. + Only use the fast path if !pstr->offsets_needed. Apply pstr->trans + before mbrtowc instead of after it. If upper case character + uses different number of bytes than lower case, goto to the + slow path. Don't call towupper unnecessarily twice. Set + valid_raw_len as well. Handle in the slow path the case if + lower and upper case use different number of characters. + Don't set mbs_case. + (re_string_skip_chars): Use valid_raw_len instead of valid_len. + (build_upper_buffer): Don't set mbs_case. Add BE macro. Set + valid_raw_len. + (re_string_translate_buffer): Set mbs instead of mbs_case. Set + valid_raw_len. + (re_string_reconstruct): Use raw_len/raw_stop to initialize + len/stop. Clear valid_raw_len and offsets_needed when clearing + valid_len. Use mbs_allocated instead of MBS_* macros. + Check original offset against valid_raw_len instead of valid_len. + Remove mbs_case handling. Adjust valid_raw_len together with + valid_len. If is_utf8 and looking for tip context, apply + pstr->trans first. If buffers start with partial multi-byte + character, initialize mbs array as well if mbs_allocated. + Check return value of build_wcs_upper_buffer. + (re_string_peek_byte_case): New function. + (re_string_fetch_byte_case): New function. + (re_string_destruct): Use mbs_allocated instead of MBS_ALLOCATED. + Don't free mbs_case. Free offsets. + * posix/regcomp.c (init_dfa): Only check if charset name is UTF-8 + if mb_cur_max == 6. + * posix/regexec.c (re_search_internal): Initialize input.raw_stop + as well. Use valid_raw_len instead of valid_len when looking + through fastmap. Adjust registers through input.offsets. + (extend_buffers): Allow build_wcs_upper_buffer to fail. + * posix/bug-regex18.c (tests): Enable #ifdefed out tests. Add new + tests. + +2003-11-26 Jakub Jelinek + + * posix/regexec.c (check_subexp_limits): Only check close + subexpression limitation if one is found. Formatting. + (sift_states_backward, check_arrival, check_arrival_add_next_nodes): + Formatting. + * posix/bug-regex11.c (tests): Enable most #ifdefed out tests. + Add new test. + +2003-11-26 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_PROT_GROWSUPDOWN): Define for 2.6.1 and up. + * sysdeps/unix/sysv/linux/dl-execstack.c: Omit compatibility code + if __ASSUME_PROT_GROWSUPDOWN is defined. + +2003-11-26 Andreas Jaeger + + * sysdeps/unix/sysv/linux/dl-execstack.c + (_dl_make_stack_executable): Set dl_stack_flags always for + success. + +2003-06-22 Petter Reinholdtsen + + * locale/program/ld-monetary.c: Only check the first three + characters in int_curr_symbol against ISO-4217, to make the + separator character used by a locale independent of the content + in iso-4217.def. + * locale/iso-4217.def: Remove the space character from all + currency values to get the new test code in ld-monetary.c working. + +2003-11-21 David Mosberger + + * elf/soinit.c (_fini): Put _fini() in .init_array section if + HAVE_INITFINI_ARRAY is defined. + +2003-11-25 Ulrich Drepper + + * sysdeps/i386/fpu/bits/mathinline.h: Introduce __libc_sqrtl symbol. + Define it appropriately after last change. Use it where __sqrtl + was used. + +2003-11-25 H.J. Lu + + * sysdeps/i386/fpu/bits/mathinline.h (sqrt): Don't inline + sqrt for gcc 3.3 and above. + +2003-11-25 Ulrich Drepper + + * posix/runptests.c (main): Make errors fatal. + * posix/PTESTS: One test in GA135 and GA136 check functionality + which seems not guaranteed. + +2003-11-25 Jakub Jelinek + + * posix/regexec.c (re_search_internal): If prune_impossible_nodes + returned REG_NOMATCH, set match_last to -1. Don't initialize + pmatch[0] needlessly. Fix comment. + (prune_impossible_nodes): Don't segfault on NULL state_log entry. + (set_regs): Fix comment. + * posix/regcomp.c (parse_bracket_exp): Only set has_plural_match + if adding both SIMPLE_BRACKET and COMPLEX_BRACKET. + (build_charclass_op): Set has_plural_match if adding both + SIMPLE_BRACKET and COMPLEX_BRACKET. + * posix/bug-regex11.c (tests): Fix register values for one commented + out test. Add new tests. + + * posix/regex_internal.c (re_string_allocate): Make sure init_len + is at least dfa->mb_cur_max. + (re_string_reconstruct): If is_utf8, don't fall back into + re_string_skip_chars just because idx points into a middle of + valid UTF-8 character. Instead, set the wcs bytes which correspond + to the partial character bytes to WEOF. + * posix/regexec.c (re_search_internal): Allocate input.bufs_len + 1 + instead of dfa->nodes_len + 1 state_log entries initially. + * posix/bug-regex20.c (main): Uncomment backwards case insensitive + tests. + +2003-11-24 Jakub Jelinek + + * posix/regex_internal.h (re_token_t): Add word_char bit. Add + comment. + (re_dfa_t): Add sb_char field. + (bitset_mask): New function. + * posix/regcomp.c (free_dfa_content): Free sb_char. + (init_dfa): Don't initialize word_char unnecessarily. + Initialize sb_char. + (duplicate_node): Don't duplicate !word_char CHARACTERs with + NEXT_WORD_CONSTRAINT constraint or word_char CHARACTERs with + NEXT_NOTWORD_CONSTRAINT. Return -1 in *new_idx instead. + (duplicate_node_closure): Handle clone_dest == -1 from + duplicate_node. + (peek_token): Initialize word_char bit. + (parse_expression, parse_dup_op): Add comments. + (parse_bracket_exp): Don't set bitmask bits for multi-byte char + starting bytes here at the beginning. Mask off the bits right + before creating SIMPLE_BRACKET. + (build_charclass_op): Likewise. + * posix/regexec.c (group_nodes_into_DFAstates) : Only + set accept bits for single-byte characters. + (group_nodes_into_DFAstates): Don't rely on characters 0 .. 127 + being single byte encoded and the rest multi-byte. + * posix/bug-regex19.c (tests): Add new tests. + (do_mb_tests): Initialize t to *test. + (main): Fail even on do_mb_tests errors. + +2003-11-23 Ulrich Drepper + + * posix/regexec.c: Correct several memory allocation problems. + Add more BE. + * posix/regex_internal.c: Likewise. + * posix/regcomp.c: Likewise. + + * posix/regexec.c: Add const in a number of places. + * posix/regex_internal.h: Make EPSILON_BIT a macro to help + debugging. Its value isn't important. + +2003-11-22 Ulrich Drepper + + * posix/PTESTS: Fix first test of GA143. + +2003-11-21 Ulrich Drepper + + * posix/regex_internal.c (re_dfa_add_node): Add BE, reallocation + isn't likely. + + * locale/programs/charmap.c (charmap_read): If encoding is found + not ASCII compatible, set enc_not_ascii_compatible. + * locale/programs/charmap.h: Declare enc_not_ascii_compatible. + * locale/programs/ld-ctype.c (ctype_startup): If + enc_not_ascii_compatible is set, initialize to_nonascii to 1. + +2003-11-22 Jakub Jelinek + + * elf/rtld.c (process_envvars): Only honor LD_USE_LOAD_BIAS + if !__libc_enable_secure. + + * sysdeps/generic/ldsodefs.h (_dl_use_load_bias): New _rtld_global + field. + * elf/rtld.c (_rtld_global): Initialize _dl_use_load_bias field. + (dl_main): Set GL(dl_use_load_bias) default. + (process_envvars): Set GL(dl_use_load_bias) from LD_USE_LOAD_BIAS. + Add EXTRA_LD_ENVVARS_13. + * elf/dl-support.c (_dl_use_load_bias): New variable. + * elf/dl-load.c (_dl_map_object_from_fd): Mask c->mapstart + with GL(dl_use_load_bias). + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add + LD_USE_LOAD_BIAS. + * sysdeps/unix/sysv/linux/dl-librecon.h (EXTRA_LD_ENVVARS): Remove. + (EXTRA_LD_ENVVARS_LINUX): Renamed to... + (EXTRA_LD_ENVVARS_13): ... this. Remove case at the beginning. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS): + Don't undefine first. Remove EXTRA_LD_ENVVARS_LINUX. + +2003-11-21 Ulrich Drepper + + * posix/regcomp.c (duplicate_node): Remove unnecessary local variable. + + * posix/regcomp.c (re_dfa_add_tree_node): Make fourth parameter a + pointer. Adjust callers. + + * posix/regcomp.c (fetch_token): Change interface to match + peek_token. This avoids some copying and reduces code size. + +2003-11-21 Jakub Jelinek + + * posix/bug-regex19.c (tests): Add more tests. + + * posix/bug-regex11.c: And one more commented out test. + + * posix/tst-rxspencer.c (mb_tests): Don't run identical multi-byte + tests multiple times unnecessarily. + + * posix/bug-regex19.c (BRE, ERE): Define. + (tests): Add many new tests, remove UTF-8 ones. + (do_one_test, do_mb_tests): New functions. + (main): Rewritten using do_one_test and do_mb_tests. + +2003-11-20 Ulrich Drepper + + * posix/PTESTS: Fix first test in GA143. + +2003-11-20 Jakub Jelinek + + * posix/regex_internal.h (re_dfastate_t): Remove trtable_search. + Add word_trtable. + * posix/regex_internal.c (create_newstate_common, free_state): + Don't free trtable_search. + * posix/regexec.c (check_matching): Remove fl_search argument. + (transit_state_sb): Likewise. #ifdef out as unused. + (build_trtable): Remove fl_search argument. Set state->word_trtable + and state->trtable. Build separate word and non-word tables if + multi-byte and they differ for some character. + (transit_state): Remove fl_search argument. Don't update + state->trtable here. Handle state->word_trtable. + #ifdef out unused call to transit_state_sb. + (re_search_internal): Update check_matching caller. + (group_nodes_into_DFAstates): Don't clear non-ascii chars in accepts + bitmask for multi-byte locales. + * posix/bug-regex19.c (tests): Enable some commented out tests, add + 2 new tests. + * posix/tst-rxspencer.c (mb_tests): Don't test [[=b=]] for now as + multi-byte. Don't run identical multi-byte tests multiple times + unnecessarily. + (main): Check setlocale return value. + * posix/Makefile (tst-rxspencer-ARGS): Add --utf8 argument. + (tst-rxspencer-ENV): Remove MALLOC_TRACE, add LOCPATH. + ($(objpfx)tst-rxspencer-mem): Run another tst-rxspencer test + here, without --utf8 argument but with MALLOC_TRACE. + +2003-11-19 Jakub Jelinek + + * posix/regexec.c (extend_buffers): Don't allocate + twice as big state_log as needed. Don't modify pstr->valid_len + for mb_cur_max == 1 !icase !trans. + + * posix/regcomp.c (free_bin_tree): Removed. + (create_tree): Add dfa argument. Don't call re_malloc for + each tree, instead allocate from str_tree_storage. + (re_dfa_add_tree_node): New function. + (free_dfa_content): Handle freeing if dfa->nodes == NULL + or dfa->state_table == NULL. + (re_compile_internal): Call free_dfa_content if init_dfa + fails. Call free_workarea_compile, re_string_destruct + and free_dfa_content for most of the other failure paths. + (init_dfa): Initialize str_tree_storage_idx. + Don't clear any fields on allocation failure. + (free_workarea_compile): Free str_tree_storage chunks + instead of free_bin_tree (dfa->str_tree). + (parse): Call re_dfa_add_tree_node instead of re_dfa_add_node + followed by create_tree. Add dfa argument to remaining + create_tree calls. Remove new_idx variable. Remove calls + to free_bin_tree. + (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp, + parse_dup_op, parse_bracket_exp, build_charclass_op): Likewise. + (duplicate_tree): Remove calls to free_bin_tree, add dfa + argument to create_tree. + * posix/regex_internal.h (BIN_TREE_STORAGE_SIZE): Define. + (bin_tree_storage_t): New type. + (re_dfa_t): Add str_tree_storage and str_tree_storage_idx + fields. + * posix/Makefile (tests): Add bug-regex21. + (generated): Add bug-regex21-mem, bug-regex21.mtrace, + tst-rxspencer-mem and tst-rxspencer.mtrace. + (tests): Depend on $(objpfx)bug-regex21-mem + and $(objpfx)tst-rxspencer-mem. + (bug-regex21-ENV, tst-rxspencer-ENV): Set. + ($(objpfx)bug-regex21-mem, $(objpfx)tst-rxspencer-mem): New. + * posix/tst-rxspencer.c (main): Add call to mtrace. + Free line at the end. + * posix/bug-regex21.c: New test. + +2003-11-19 Ulrich Drepper + + * posix/bug-regex20.c: Correct invalid UTF-8 sequences. + + * posix/regex_internal.c (build_wcs_upper_buffer): If mbrtowc + fails, just use the byte, do no fancy conversions. + + * posix/regex_internal.h (re_string_first_byte): Use ->valid_len + not ->len. + (re_string_is_single_byte_char): Likewise. + +2003-11-18 Ulrich Drepper + + * posix/regexec.c (get_subexp): After calling get_subexp_sub + reload buf and bkref_str. Little optimization by avoiding memcmp. + +2003-11-14 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/sysdep.h + (GAS_ALIGN_BREAKS_UNWIND_INFO): Define this macro to indicate + that all existing GAS versions have a problem with .align inside + a function. + * sysdeps/ia64/memccpy.S: Work around GAS_ALIGN_BREAKS_UNWIND_INFO bug. + * sysdeps/ia64/memcpy.S: Likewise. + * sysdeps/ia64/memset.S: Likewise. + * sysdeps/ia64/memmove.S: Likewise. Also move the jump-table to + out of .text into .rodata, where it belongs. + + * sysdeps/unix/sysv/linux/ia64/pipe.S: There is no need to + save/restore input-arguments, because they're necessarily + preserved by the kernel to support syscall-restart. + +2003-11-18 Jakub Jelinek + + * posix/regex_internal.h (re_token_type_t): Remove unused ALT, + END_OF_RE_TOKEN_T and SUBEXP. Reorder values. Add OP_UTF8_PERIOD + and EPSILON_BIT. + (IS_EPSILON_NODE): Just test if EPSILON_BIT is set. + (ACCEPT_MB_NODE): Return 1 for OP_UTF8_PERIOD as well. + * posix/regex_internal.c (create_ci_newstate, create_cd_newstate): + Handle OP_UTF8_PERIOD. + (re_string_reconstruct): Set valid_len for single byte char searching + with no translation and case sensitivity. + * posix/regcomp.c (re_compile_fastmap_iter, calc_first): Handle + OP_UTF8_PERIOD. + (re_compile_internal): Don't call optimize_utf8 if preg->translate + != NULL. + (optimize_utf8): Remove BACK_SLASH case. + Transform OP_PERIOD into OP_UTF8_PERIOD if the searching can be + optimized. + (parse_bracket_exp): Don't create SIMPLE_BRACKET if it doesn't have + any bits set and COMPLEX_BRACKET is used. + * posix/regexec.c (transit_state_mb): Fix comment typo. + (group_nodes_into_DFAstates, check_node_accept): Handle + OP_UTF8_PERIOD. + (check_node_accept_bytes): Likewise. Reorder slightly so that + re_string_char_size_at and re_string_elem_size_at are called + only when needed. + * posix/bug-regex20.c (BRE, ERE): Define. + (tests): Use them to make lines shorter. Expect . to be + optimized. Add lots of new tests. + (main): Run (ATM just case sensitive) test with backwards searching + as well. + +2003-11-18 Jakub Jelinek + + * io/bug-ftw4.c: Include string.h. + * posix/fnmatch.c (mbsinit): Remove define. + +2003-11-17 Jakub Jelinek + + * posix/regcomp.c (optimize_utf8): Optimize multi-byte chars as + well. + * posix/bug-regex20.c (tests): Add new tests. Multi-byte char + followed by dup operator is expected to be optimized. + + * posix/regexec.c (check_node_accept_bytes): Move nrules and j + variables to the block where they are only used, initialize + nrules only immediately before using it. + +2003-11-15 Andreas Jaeger + + * sysdeps/x86_64/fpu/s_scalbnl.S: New file. + * sysdeps/x86_64/fpu/s_truncl.S: New file. + * sysdeps/x86_64/fpu/s_nearbyintl.S: New file. + * sysdeps/x86_64/fpu/s_floorl.S: New file. + * sysdeps/x86_64/fpu/s_ilogbl.S: New file. + * sysdeps/x86_64/fpu/e_remainderl.S: New file. + + * math/libm-test.inc (floor_test): Test also ±0.25. + (ceil_test): Test -0.25. + +2003-11-17 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c: Add support for destination address + selection according to RFC 3484. + +2003-11-15 Ulrich Drepper + + * posix/regex_internal.h: Add forward declaration of re_dfa_t. + Replace last two parameters of re_string_allocate and + re_string_construct with pointer to DFA. + (re_dfa_t): Add map_notascii field. + * posix/regcomp.c (re_compile_internal): Add call of + re_string_construct. + (init_dfa): Initialize map_notascii. + * posix/regex_internal.c: Adjust definitions of re_string_allocate + and re_string_construct. + Pass DFA to re_string_construct. Adjust definition. Initialize + map_notascii field. + (build_wcs_upper_buffer): If map_notascii is zero use simplified + method to map ASCII values to upper case. + * posix/regex.c: Include localeinfo.h. + * posix/regexec.c: Adjust call of re_string_allocate. + + * locale/langinfo.h: Add _NL_CTYPE_MAP_TO_NONASCII. + * locale/localeinfo.h (LIMAGIC): Change value. + * locale/categories.def. Add entry for _NL_CTYPE_MAP_TO_NONASCII. + * locale/C-ctype.h: Likewise. + * locale/programs/ld-ctype.c: Compute whether any mapping maps from + ASCII to non-ASCII value. Write out that value. + + * wcsmbs/mbsinit.c: Undef mbsinit and __mbsinit. + * include/wchar.h: Provide inline versions of mbsinit and __mbsinit. + +2003-11-14 Jakub Jelinek + + * posix/tst-rxspencer.c (check_match): @ without any following + characters must match only end of string. + (main): Fix filename in error message. + +2003-11-12 David Mosberger + + * sysdeps/ia64/dl-machine.h: Force inlining of + elf_machine_runtime_setup(). + +2003-11-13 Andreas Jaeger + + * math/Makefile (CFLAGS-test-float.c): Add -fno-builtin. + (CFLAGS-test-double.c): Likewise. + (CFLAGS-test-ldouble.c): Likewise. + (CPPFLAGS-test-ifloat.c): Likewise. + (CPPFLAGS-test-idouble.c): Likewise. + (CPPFLAGS-test-ildoubl.c): Likewise. + + * math/libm-test.inc (ceil_test): Test ceil (0.25). + +2003-11-04 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ifaddrs.c: Make sure it's the kernel who + sends the netlink data. + * sysdeps/unix/sysv/linux/check_pf.c: Likewise. + +2003-11-13 Jakub Jelinek + + * posix/regcomp.c (optimize_utf8): Optimize even if SIMPLE_BRACKET + with no bits set for >= 0x80 chars is seen. + * posix/bug-regex20.c (tests): Add new tests. Expect [ABC] to be + optimized. + (main): Run all tests with RE_ICASE as well. + +2003-11-13 Ulrich Drepper + + * posix/Makefile: Add rules to build and run tst-rxspencer. + (distribute): Add rxspencer/tests and rxspencer/COPYRIGHT. + * posix/tst-rxspencer.c: New file. + * posix/rxspencer/tests: New file. + * posix/rxspencer/COPYRIGHT: New file. + Patch mostly by Jakub Jelinek. + + * posix/regcomp.c (parse_bracket_exp): Don't check for range if + this is no option given the first token. + + * posix/regcomp.c (parse_bracket_exp): Fix test for EOS after + hyphen in range expression. Return EBRACK in this case. + + * posix/regcomp.c (parse_bracket_element): Reject hyphens unless + we expect them or it's the last element in the bracket expression. + Indicated by new parameter. Adjust all callers. + + * posix/runtests.c (run_a_test): If regcomp failed, reset last_pattern. + Prettier error messages. + + * posix/regcomp.c (parse_dup_op): Fail with REG_BADBR is first + number in {,} expression is larger. + +2003-11-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_TGKILL): + Define appropriately for x86_64. + (__ASSUME_UTIMES): Likewise. + (__ASSUME_CLONE_THREAD_FLAGS): Likewise. + + * sysdeps/x86_64/fpu/s_ceill.S: New file. + +2003-11-13 Ulrich Drepper + + * posix/regcomp.c (parse_expression): In BRE consecutive + duplications are not allowed. + +2003-11-12 Ulrich Drepper + + * posix/regcomp.c (parse_bracket_exp): If end of expression is + seen, return EBRACK error, not BADPAT. + + * posix/regcomp.c (parse_expression): If token is OP_OPEN_DUP_NUM + and RE_CONTEXT_INVALID_DUP syntax flag is set, fail. + * posix/regex.h (RE_CONTEXT_INVALUD_OPS): New macro. + (RE_SYNTAX_POSIX_BASIC): Use RE_CONTEXT_INVALUD_OPS. + + * posix/regcomp.c (parse_sub_exp): In case of not-matching ( ) + return REG_EPAREN. + + * posix/PTESTS: Cleanup. Fix typoes. Correct bugs in 2003.2. + * posix/runptests.c (main): Handle comments. + * posix/PTESTS2C.sed: Handle comments. + +2003-11-12 Jakub Jelinek + + * posix/regcomp.c (optimize_utf8): New function. + (re_compile_fastmap_iter): Use dfa->mb_cur_max > 1 instead + of !icase. + (re_compile_internal): Call optimize_utf8 if not case insensitive + and in UTF-8 locale. + * posix/regex_internal.h: Ifdef out some prototypes if + RE_NO_INTERNAL_PROTOTYPES is defined to shut up warnings. + * posix/Makefile (tests): Add bug-regex20. + (bug-regex20-ENV): Add LOCPATH. + * posix/bug-regex20.c: New test. + +2003-11-12 Jakub Jelinek + + * io/ftw.c (NFTW_NEW_NAME, NFTW_OLD_NAME): Add prototypes. + +2003-11-12 Jakub Jelinek + + * posix/tst-regex.c (umemlen): New variable. + (test_expr): Add expectedicase argument. Test case insensitive + searches as well as backwards searches (case sensitive and + insensitive) too. + (run_test): Add icase argument. Use it to compute regcomp flags. + (run_test_backwards): New function. + (main): Cast read to size_t to avoid warning. Set umemlen. + Add expectedicase arguments to test_expr. + * posix/regex_internal.c (re_string_reconstruct): If is_utf8, + find previous character by walking back instead of converting + all chars from beginning. + +2003-11-12 Jakub Jelinek + + * posix/regex_internal.h (struct re_string_t): Add is_utf8 + and mb_cur_max fields. + (struct re_dfa_t): Likewise. Reorder fields to make structure + smaller on 64-bit arches. + (re_string_allocate, re_string_construct): Add mb_cur_max and + is_utf8 arguments. + (re_string_char_size_at, re_string_wchar_at): Use pstr->mb_cur_max + instead of MB_CUR_MAX. + * posix/regcomp.c (re_compile_fastmap_iter): Use dfa->mb_cur_max + instead of MB_CUR_MAX. + (re_compile_internal): Pass new arguments to re_string_construct. + (init_dfa): Initialize mb_cur_max and is_utf8 fields. + (peek_token, peek_token_bracket): Use input->mb_cur_max instead + of MB_CUR_MAX. + (parse_expression, parse_bracket_exp, parse_charclass_op): Use + dfa->mb_cur_max instead of MB_CUR_MAX. + * posix/regex_internal.c (re_string_construct_common): Add + mb_cur_max and is_utf8 arguments. Initialize fields with them. + (re_string_allocate, re_string_construct): Add mb_cur_max and + is_utf8 arguments, pass them to re_string_construct_common. + Use mb_cur_max instead of MB_CUR_MAX. + (re_string_realloc_buffers): Use pstr->mb_cur_max instead of + MB_CUR_MAX. + (re_string_reconstruct): Likewise. + (re_string_context_at): Use input->mb_cur_max instead of + MB_CUR_MAX. + (create_ci_newstate, create_cd_newstate): Use dfa->mb_cur_max + instead of MB_CUR_MAX. + * posix/regexec.c (re_search_internal): Likewise. + Pass new arguments to re_string_allocate. + (check_matching, transit_state_sb): Use dfa->mb_cur_max instead of + MB_CUR_MAX. + (extend_buffers): Use pstr->mb_cur_max instead of MB_CUR_MAX. + +2003-11-12 Jakub Jelinek + + * posix/Makefile (tests): Add bug-regex19. + (bug-regex19-ENV): Add LOCPATH. + * posix/bug-regex19.c: New test. + +2003-11-11 Jakub Jelinek + + * posix/regcomp.c (re_compile_fastmap_iter): Handle RE_ICASE + with MB_CUR_MAX > 1 locales in the fastmap. + +2003-11-11 Jakub Jelinek + + * posix/regex_internal.c (build_wcs_buffer): Fix comment typo. + (build_wcs_upper_buffer): Likewise. Use towupper for wchar_t instead + of toupper. + * posix/Makefile (tests): Add bug-regex17 and bug-regex18. + (bug-regex17-ENV, bug-regex18-ENV): Add LOCPATH. + * posix/bug-regex17.c: New file + * posix/bug-regex18.c: New file. + +2003-10-08 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (pread, pwrite): + Define __NR_pread/__NR_pwrite if not done in kernel headers + +2003-11-11 Roland McGrath + + * manual/xtract-typefun.awk: Swallow [(){}*] from function names. + + * manual/Makefile (info): Don't depend on dir-add.info. + (libc.dvi libc.pdf libc.info): Depend on dir-add.texi. + (dir-add.info): Target removed, replaced with ... + (dir-add.texi): New target. + (distribute): Add it. + (install): Remove variant with --section arguments. + Let the @dircategory directives do their work. + (mostlyclean): Don't remove dir-add.info here. + (realclean): Remove dir-add.texi here. + * manual/libc.texinfo: @include dir-add.texi + * configure.in: Remove check for old Debian install-info. + * configure: Regenerated. + * config.make.in (OLD_DEBIAN_INSTALL_INFO): Variable removed. + +2003-11-08 Andreas Schwab + + * scripts/data/c++-types-ia64-linux-gnu.data: New file. + +2003-11-10 Carlos O'Donell + + * io/ftwtest-sh: Fix nested sed commands. + +2003-11-10 Jakub Jelinek + + * posix/regex_internal.h (re_string_char_size_at): Don't look beyond + valid_len wide chars. + +2003-11-09 Roland McGrath + + * manual/examples/dir2.c (one): Add const to argument type. + Reported by J de Haan . + +2003-11-07 Ulrich Drepper + + * po/pl.po: Update from translation team. + +2003-11-07 Jakub Jelinek + + * io/ftw.c (NFTW_OLD_NAME, NFTW_NEW_NAME): Define. + (ftw_dir, ftw_startup): Add __attribute ((noinline)). + (NFTW_OLD_NAME, NFTW_NEW_NAME): New functions. + (NFTW_NAME): Only define if !_LIBC, add versioned_symbol + and compat_symbol. + * io/ftw64.c (NFTW_OLD_NAME, NFTW_NEW_NAME): Define. + * io/Versions (libc): Export nftw@@GLIBC_2.3.3 + and nftw64@@GLIBC_2.3.3. + + * io/ftw.h (FTW_ACTIONRETVAL): New flag. + (FTW_CONTINUE, FTW_STOP, FTW_SKIP_SUBTREE, FTW_SKIP_SIBLINGS): New. + * io/ftw.c (ftw_dir): Add old_dir argument. + Clear result if it was FTW_SKIP_SIBLINGS after processing all + dir entries. Change cwd back if old_dir != NULL. + (process_entry): Adjust caller. Don't change cwd back here. + Change FTW_SKIP_SUBTREE result to 0. + (ftw_startup): Adjust ftw_dir caller. + Clear result if it was FTW_SKIP_SUBTREE or FTW_SKIP_SIBLINGS. + * io/ftwtest.c (skip_subtree, skip_siblings): New variables. + (options, main): Add --skip-subtree and --skip-siblings options. + (cb): Use return FTW_CONTINUE instead of return 0. + Handle --skip-subtree and --skip-siblings. + * io/ftwtest-sh: Add tests for FTW_ACTIONRETVAL. + * manual/filesys.texi: Document FTW_ACTIONRETVAL. + +2003-11-04 Jakub Jelinek + + * io/ftw.c (ftw_dir): Close dir if callback with FTW_D type returns + non-zero. + * io/Makefile (tests): Add bug-ftw4. + * io/bug-ftw4.c: New test. + +2003-10-27 Daniel Jacobowitz + + * libio/libioP.h [_IO_USE_OLD_IO_FILE] + (struct _IO_FILE_complete_plus): New type. + * libio/oldiofopen.c (_IO_old_fopen): Use _IO_FILE_complete_plus. + * libio/oldiofdopen.c (_IO_old_fdopen): Likewise. + * libio/oldiopopen.c (struct _IO_proc_file, _IO_old_popen): Likewise. + Call _IO_old_init instead of _IO_init. + +2003-11-03 Ulrich Drepper + + * intl/locale.alias: nb_NO is now the correct name, not no_NO. + + * locale/iso-639.def: Add Blin. + Patch by Daniel Yacob . + +2003-10-31 Steven Munroe + + * sysdeps/powerpc/powerpc32/strncmp.S: New File. + * sysdeps/powerpc/powerpc64/strncmp.S: New File. + +2003-11-01 Randolph Chung + + * sysdeps/unix/sysv/linux/hppa/sysdep.h (LOAD_ARGS_0, LOAD_ARGS_1, + LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4, LOAD_ARGS_5, LOAD_ARGS_6): + Add missing parentheses. + +2003-11-01 Roland McGrath + + * libio/bug-ftell.c (do_test): Add a cast. + +2003-09-26 Daniel Jacobowitz + + * Makerules (shlib.lds): Make sure that ld doesn't try to link + anything while generating the linker script. + +2003-10-31 Roland McGrath + + * locale/lc-ctype.c (_nl_postload_ctype): Update _nl_global_locale's + special members. + +2003-10-29 Ulrich Drepper + + * po/be.po: Update from translation team. + +2003-10-27 Ulrich Drepper + + * elf/rtld.c (map_doit): Pass __RTLD_OPENEXEC in last parameter to + _dl_map_object. + + * elf/sprof.c (load_shobj): Use l_map_start not l_addr to locate + ELF header. + + * inet/rcmd.c (__validuser2_sa): Remove unnecessary code to skip + rest of line. We use getline which means this cannot happen. + +2003-10-26 Ulrich Drepper + + * sysdeps/unix/sysv/linux/internal_statvfs.c (__internal_statvfs): + Avoid infinite loops in case the mounts file is hosed. + * io/Makefile: Add rules to build and run tst-statvfs. + * io/tst-statvfs.c: New file. + + * include/dlfcn.h (__RTLD_OPENEXEC): Define. + * elf/dl-load.c (_dl_map_object_from_fd): Don't allow loading + executables unless __RTLD_OPENEXEC flag is present. + * elf/rtld.c (dl_main): Pass __RTLD_OPENEXEC flag to + _dl_map_object when loading the executable. + + * sysdeps/generic/glob.c (glob): Handle GLOB_BRACE and escaping + correctly. + * posix/globtest.sh: Add tests for GLOB_BRACE and escaping. + + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Default + reverse lookup format for IPv6 addresses is using bitstring and + .ip6.arpa suffix. + * resolv/ns_name.c: Implement encoding and decoding bitstring in + hex format. + +2003-10-23 Jakub Jelinek + + * locale/programs/locale.c (show_info): Fix printing word values on + 64-bit big-endian architectures. + +2003-10-19 Bruno Haible + + * intl/hash-string.c (hash_string): Zero-extend each char from the + string; the old code did a sign-extend on some platforms. + +2003-10-22 Steven Munroe + + * sysdeps/powerpc/powerpc32/Makefile (+cflags, asm-CPPFLAGS): Don't + append options to these. + * sysdeps/powerpc/powerpc64/Makefile (+cflags, asm-CPPFLAGS): Likewise. + +2003-10-18 Carlos O'Donell + + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Fix merge error. + +2003-10-15 Roland McGrath + + * elf/dl-iteratephdr.c [! SHARED] (dl_iterate_phdr): New function. + Fake an entry for the main executable and then call __dl_iterate_phdr. + * elf/Makefile (routines): Remove dl-iteratephdr-static. + (elide-routines.os): Likewise. + (CFLAGS-dl-iterate-phdr-static.c): Variable removed. + * sysdeps/generic/dl-iteratephdr-static.c: File removed. + * sysdeps/unix/sysv/linux/ia64/dl-iteratephdr-static.c: File removed. + +2003-10-15 Jakub Jelinek + + * elf/rtld.c (print_statistics): Print also number of relative + relocations. + +2003-10-12 Carlos O'Donell + + * sysdeps/hppa/sysdep.h: Undef JUMPTARGET before use. + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Define PSEUDO_ERRVAL, + SYSCALL_ERROR_LABEL under all conditions, INTERNAL_SYSCALL_DECL, + INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO, INTERNAL_SYSCALL, + and undef JUMPTARGET before use. + [PIC]: Save pic register around syscall. + * sysdeps/unix/sysv/linux/hppa/sysdep.c (syscall): + Cleanup asm statment. + +2003-10-13 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/sysdep.h (DO_CALL): Add SYSCALL_INST_PAD + after trapa instruction. + +2003-10-09 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/syscalls.list: Add waitpid. + +2003-10-10 Carlos O'Donell + + * sysdeps/hppa/Makefile (CFLAGS-malloc.c): Variable removed. + +2003-10-09 Roland McGrath + + * elf/rtld.c (dl_main): Don't set l_name for sysinfo DSO, since there + is no file to name. + +2003-10-08 Jakub Jelinek + + * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): Don't generate + two identical copies of strings. + +2003-10-06 Ulrich Drepper + + * posix/bug-regex11.c: Add some more tests which fail so far. + Disable them. Patch by Paolo Bonzini . + +2003-10-05 Paolo Bonzini + + * posix/bug-regex11.c: Add more backreference-related test cases. + (main): Show the failing regex in the error messages. + * posix/regexec.c (check_dst_limits_calc_pos): + Simplify some nested conditionals. Replace if's with a switch + statement. + (check_dst_limits_calc_pos ): Rename parameter NODE to + FROM_NODE, it shadows a local variable; don't recurse if FROM_NODE + does not change in the recursive invocation, fixing an infinite loop + in the ()\1*\1* regex. + (sift_states_backward): Fix function comment. + * posix/regcomp.c (calc_epsdest): Add an assertion. + +2003-10-06 Ulrich Drepper + + * manual/examples/testopt.c: Fix warnings. Better error message + for missing -c argument. + Patch mostly by Gitonga Marete . + + * timezone/asia: Update from tzdata2003d. + * timezone/australasia: Likewise. + * timezone/backward: Likewise. + * timezone/europe: Likewise. + * timezone/iso3166.tab: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2003-10-05 Jakub Jelinek + + * sysdeps/ia64/backtrace.c: New file. + * sysdeps/x86_64/backtrace.c: New file. + * sysdeps/generic/unwind.h (_Unwind_Trace_Fn): New type. + (_Unwind_Backtrace): New prototype. + +2003-10-03 Ulrich Drepper + + * sysdeps/i386/elf/bsd-setjmp.S: Use linkonce section for PIC stub. + * sysdeps/i386/elf/setjmp.S: Likewise. + +2003-10-02 Roland McGrath + + * argp/argp-help.c (__argp_short_program_name): Move inside [! _LIBC]. + * argp/argp-namefrob.h + [_LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME] + (__argp_short_program_name): Don't declare fn, define it as a macro. + +2003-08-22 Simon Josefsson + + * argp/argp-fmtstream.h [!__attribute__]: Define to nothing. + + * argp/argp-help.c: Don't include malloc.h, some platforms + complain and it doesn't appear to be used. + [!_LIBC && HAVE_STRERROR_R && !HAVE_DECL_STRERROR_R]: Declare + strerror_r. + [!_LIBC && !HAVE_STRERROR_R && !HAVE_DECL_STRERROR]: Declare + strerror. + (hol_entry_long_iterate): Change __attribute to __attribute__. + (_help, __argp_error, __argp_failure) [!_LIBC && (HAVE_FLOCKFILE + && HAVE_FUNLOCKFILE)]: Protect call to flockfile and funlockfile. + (__argp_basename) [!_LIBC]: New. Taken from LSH, by Niels Möller, + modified after comments from Ulrich Drepper. + (__argp_short_program_name): Ditto. + (__argp_state_help, __argp_error, __argp_failure): Use it. + (__argp_failure): Use strerror when necessary. + + * argp/argp-namefrob.h (__flockfile, __funlockfile, __mempcpy) + (__strchrnul, __strerror_r, __strndup) [!_LIBC]: Remove __-prefix. + (clearerr_unlocked, feof_unlocked, ferror_unlocked) + (fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked) + (fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked) + (putc_unlocked, putchar_unlocked) [!_LIBC && !HAVE_DECL_*]: Map to + non-unlocked functions. + [!_LIBC]: Add prototypes for __argp_basename and + __argp_short_program_name. + + * argp/argp-parse.c (argp_default_parser): Only use + program_invocation{_short,}_name if declared. + (parser_init): Use __argp_short_program_name. + + * argp/argp-xinl.c [_LIBC || HAVE_FEATURES_H]: Add CPP check for + '#include features.h'. + + * argp/argp.h [!__attribute__]: Define to nothing. + +2003-09-26 Paolo Bonzini + + * posix/regcomp.c (parse_sub_exp): Pass RE_CARET_ANCHORS_HERE + for the first token in a subexpression as well. + +2003-10-02 Jakub Jelinek + + * posix/regcomp.c (peek_token): Add 2003-09-20 changes for anchor + handling again. + (parse_reg_exp): Likewise. + * posix/regex.h (RE_CARET_ANCHORS_HERE): Define. + + * posix/bug-regex11.c (tests): Add new tests. + * posix/bug-regex12.c (tests): Add new test. + +2003-10-01 Thorsten Kukuk + + * elf/dl-reloc.c (_dl_allocate_static_tls): Move definition of + variables only used if TLS_DTV_AT_TP is defined into the #if branch. + +2003-10-02 Jeroen Dekkers + + * sysdeps/mach/hurd/malloc-machine.h: Copy the tsd code from + the old thread-m.h header too. + +2003-10-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ): Go + back to 131027 since this is what the kernel enforces. + + * inet/getnameinfo.c: Move domain out of nrl_domainname scope and + define it with libc_freeres_ptr. + +2003-10-01 Roland McGrath + + * elf/rtld.c (dl_main): Add cast in last change. + +2003-09-10 Chris Demetriou + + * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Remove + "#if 0" surrounding most of contents. + (SYSCALL_ERROR_LABEL): Define. + (__SYSCALL_CLOBBERS): Add $10. + (internal_syscall7): Remove. + * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise. + +2003-09-30 Ulrich Drepper + + * elf/rtld.c (dl_main): Also set l_map_start. + +2003-09-30 Daniel Jacobowitz + + * elf/rtld.c (dl_main): Set l_libname and l_name for the sysinfo DSO + to work around kernel problem. + +2003-09-27 Wolfram Gloger + + * malloc/malloc.c: Include earlier instead of + "thread-m.h", so that default parameters can be overridden in a + system-specific malloc-machine.h. Remove extra ; from extern "C" + closing brace. + * sysdeps/generic/malloc-machine.h: New file. + * sysdeps/mach/hurd/malloc-machine.h: New file. + * malloc/thread-m.h: Removed. + * malloc/Makefile: Remove CFLAGS-malloc.c parameter addition, it + is in sysdeps/generic/malloc-machine.h now. + +2003-09-29 Ulrich Drepper + + * elf/dl-reloc.c (_dl_allocate_static_tls): Move definition of + variables only used if TLS_TCB_AT_TP is defined into the #if + branch. + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add __extension__ as + well to cover using long long in C90. + +2003-09-28 Alfred M. Szmidt + + * sysdeps/mach/hurd/bits/libc-lock.h (__libc_cleanup_pop): + Redefine and use __libc_cleanup_region_end instead. + +2003-09-29 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Use __inline and + fix prototypes for picky C++ compilers. + +2003-09-27 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ustat.c (ustat): Set errno to EINVAL if + the device ID is invalid and return -1. + * sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise. + +2003-09-26 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/getcontext.S: Pass fourth argument to + rt_sigprocmask system call. + +2003-09-25 Roland McGrath + + * sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable): + Don't check for zero __libc_stack_end, it should be initialized. + [_STACK_GROWS_DOWN] [PROT_GROWSDOWN]: Try using PROT_GROWSDOWN flag + and fall back if it fails with EINVAL. + [_STACK_GROWS_UP] [PROT_GROWSUP]: Likewise for PROT_GROWSUP. + +2003-09-25 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include + sysdeps/i386/dl-procinfo.c instead of + sysdeps/unix/sysv/linux/i386/dl-procinfo.c. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Avoid using + #include_next. + +2003-09-25 Ulrich Drepper + + * posix/regcomp.c (peek_token): Remove recent changes for anchor + handling again. + (parse_reg_exp): Likewise. + * posix/regex.h: Remove RE_CARET_ANCHORS_HERE. + + * csu/Makefile ($(objpfx)version-info.h): Fix sed script to handle + banners. + + * nis/nis_table.c (nis_list): Always strdup string used with + ibreq->ibr_name. Add several NULL pointer checks. + + * nis/nss_nisplus/nisplus-alias.c: Add check for NULL return value + of nis_list. + * nis/nss_nisplus/nisplus-ethers.c: Likewise. + * nis/nss_nisplus/nisplus-grp.c: Likewise. + * nis/nss_nisplus/nisplus-hosts.c: Likewise. + * nis/nss_nisplus/nisplus-netgrp.c: Likewise. + * nis/nss_nisplus/nisplus-network.c: Likewise. + * nis/nss_nisplus/nisplus-proto.c: Likewise. + * nis/nss_nisplus/nisplus-publickey.c: Likewise. + * nis/nss_nisplus/nisplus-pwd.c: Likewise. + * nis/nss_nisplus/nisplus-rpc.c: Likewise. + * nis/nss_nisplus/nisplus-service.c: Likewise. + * nis/nss_nisplus/nisplus-spwd.c: Likewise. + + * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Define PROT_GROWSDOWN + and PROT_GROWSUP. + * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/cris/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Likewise. + +2003-09-25 Jakub Jelinek + + * misc/syslog.c: Include locale.h. + (vsyslog): Add date always in C locale %h %e %T format. + +2003-09-24 Paul Eggert + + * argp/argp-fmtstream.c (__argp_fmtstream_ensure): Check for + size_t overflow when reallocating storage. + * argp/argp-help.c (make_hol, hol_append): Likewise. + (SIZE_MAX): New macro. + +2003-08-07 Alfred M. Szmidt + + * sysdeps/mach/hurd/bits/libc-lock.h + (__libc_cleanup_push, __libc_cleanup_pop): New macros. + +2003-08-01 Alfred M. Szmidt + + * sysdeps/i386/dl-procinfo.h: New file, contents taken from ... + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: ... here. + #include_next dl-procinfo.h to get them. + (_DL_HWCAP_COUNT): Moved to sysdeps/i386/dl-procinfo.h. + (_DL_PLATFORMS_COUNT): Likewise. + (_DL_FIRST_PLATFORM): Likewise. + (_DL_HWCAP_PLATFORM): Likewise. + (HWCAP_I386_FPU, HWCAP_I386_VME, HWCAP_I386_DE, HWCAP_I386_PSE, + HWCAP_I386_TSC, HWCAP_I386_MSR, HWCAP_I386_PAE, HWCAP_I386_MCE, + HWCAP_I386_CX8, HWCAP_I386_APIC, HWCAP_I386_SEP, HWCAP_I386_MTRR, + HWCAP_I386_PGE, HWCAP_I386_MCA, HWCAP_I386_CMOV, + HWCAP_I386_FCMOV, HWCAP_I386_MMX, HWCAP_I386_OSFXSR, + HWCAP_I386_XMM, HWCAP_I386_XMM2, HWCAP_I386_AMD3D, + HWCAP_IMPORTANT): Likewise. + (_DL_PROCINFO_H_): Likewise. + (_dl_hwcap_string, _dl_platform_string, _dl_string_hwcap): Likewise. + (_dl_string_platform): Likewise. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Moved to ... + * sysdeps/i386/dl-procinfo.c: ... here, new file. + +2003-09-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/dl-execstack.c + (_dl_make_stack_executable): Remember that we changed the permission. + + * sysdeps/ia64/dl-machine.h (RTLD_START): Remove setting of + __libc_stack_end. Patch by David Mosberger. + +2003-09-24 Jakub Jelinek + + * elf/Versions (ld): Export __libc_stack_end@GLIBC_2.1 instead of + __libc_stack_end@GLIBC_PRIVATE. + + * sysdeps/generic/dl-sysdep.c (DL_STACK_END): Define if not defined. + (_dl_sysdep_start): Set __libc_stack_end here. + * sysdeps/alpha/dl-machine.h (RTLD_START): Remove setting of + __libc_stack_end. + * sysdeps/arm/dl-machine.h (RTLD_START): Likewise. + * sysdeps/cris/dl-machine.h (RTLD_START): Likewise. + * sysdeps/i386/dl-machine.h (RTLD_START): Likewise. + * sysdeps/m68k/dl-machine.h (RTLD_START): Likewise. + * sysdeps/s390/s390-32/dl-machine.h (RTLD_START): Likewise. + * sysdeps/s390/s390-64/dl-machine.h (RTLD_START): Likewise. + * sysdeps/sh/dl-machine.h (RTLD_START): Likewise. + * sysdeps/x86_64/dl-machine.h (RTLD_START): Likewise. + * sysdeps/ia64/dl-machine.h (DL_STACK_END): Define. + * sysdeps/sparc/sparc32/dl-machine.h (DL_STACK_END): Define. + (RTLD_START): Remove setting of __libc_stack_end. + * sysdeps/sparc/sparc64/dl-machine.h (DL_STACK_END): Define. + (RTLD_START): Remove setting of __libc_stack_end. + +2003-09-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add gnu_dev_ prefix to + function definitions. Adjust macro expansions accordingly. + * sysdeps/unix/sysv/linux/Versions: Add gnu_dev_ prefix to major, + minor, makedev name. + * sysdeps/unix/sysv/linux/makedev.c: Likewise. + +2003-09-24 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sys/sysmacros.h (major, minor, makedev): + Add __THROW. + +2003-09-24 Jakub Jelinek + + * nscd/Makefile (others): Add nscd before including ../Rules. + +2003-09-24 Ulrich Drepper + + * nscd/Makefile: Add rules to build nscd as a PIE. + * configure.in: Check for -fpie and -pie compiler options. + * config.make.in (have-fpie): Define. + +2003-09-23 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Adjust for larger + kernel dev_t size. + * sysdeps/unix/sysv/linux/alpha/sys/sysmacros.h: Removed. + * sysdeps/unix/sysv/linux/sparc/sys/sysmacros.h: Removed. + * sysdeps/unix/sysv/linux/makedev.c: New file. + * sysdeps/unix/sysv/linux/Dist: Add makedev.c. + * sysdeps/unix/sysv/linux/Makefile [subdir=misc] + (sysdep_routines): Add makedev. + * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_2.3.3): Add + major, minor, makedev. + * sysdeps/unix/sysv/linux/ustat.c (ustat): Adjust for 32-bit + kernel dev_t. + * sysdeps/unix/sysv/linux/alpha/ustat.c: Removed. + * sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise. + * sysdeps/unix/sysv/linux/alpha/xmknod.c: Removed. + Code by Alexander Viro . + +2003-09-23 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions [libc] + (GLIBC_2.3.3): Add setcontext, getcontext, swapcontext, and + makecontext. + * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Correct change + for include Altivec support for PPC32. It was not compatible. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: Adjust + offsets for ucontext_t change. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Adjust + for ucontext_t change. Add compatibility code. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise. + Patch by Paul Mackerras . + +2003-02-25 Randolph Chung + + * sysdeps/hppa/Makefile: Include compat code in build. + * sysdeps/hppa/libgcc-compat.c: New file. + * sysdeps/hppa/Dist: Add libgcc-compat.c. + * sysdeps/hppa/Versions [GLIBC_2.2]: Add __clz_tab. + +2003-09-23 Roland McGrath + + * elf/rtld.c (dl_main): In rtld_is_main case, reinitialize + GL(dl_stack_flags) according to rtld's own PT_GNU_STACK. + Move GL(dl_make_stack_executable_hook) initialization up. + * elf/tst-execstack-prog.c: New file. + * elf/Makefile (tests-execstack-yes): Add it. + (LDFLAGS-tst-execstack-prog): New variable. + +2003-09-23 Jakub Jelinek + + * sysdeps/x86_64/dl-machine.h (RTLD_START): Set __libc_stack_end + before calling _dl_start, using %rip relative access. + Use %rip relative access to _dl_skip_args, _rtld_local._dl_loaded + and _dl_fini. + +2003-09-23 Roland McGrath + + * sysdeps/i386/dl-machine.h (RTLD_START): Set __libc_stack_end before + calling _dl_start, using GOTOFF access. + + * configure.in (libc_cv_z_execstack): New check. + * configure: Regenerated. + * config.make.in (have-z-execstack): New variable set by it. + * elf/tst-execstack.c: New file. + * elf/tst-execstack-mod.c: New file. + * elf/tst-execstack-needed.c: New file. + * elf/Makefile (tests-execstack-yes, modules-execstack-yes): New + variables. + (tests, modules-names): Conditionally include them. + (distribute): Add tst-execstack-mod.c here. + ($(objpfx)tst-execstack, $(objpfx)tst-execstack.out): New targets. + (LDFLAGS-tst-execstack, LDFLAGS-tst-execstack-mod): New variables. + ($(objpfx)tst-execstack-needed): New target. + (LDFLAGS-tst-execstack-needed): New variable. + + * sysdeps/generic/ldsodefs.h (struct rtld_global): Add _dl_stack_flags + and _dl_make_stack_executable_hook. Declare _dl_make_stack_executable. + * elf/rtld.c (_rtld_global): Add initializer for _dl_stack_flags. + (dl_main): Reset _dl_stack_flags according to PT_GNU_STACK phdr. + Initialize _dl_make_stack_executable_hook. + * elf/dl-support.c: Define those new variables. + (_dl_non_dynamic_init): Scan phdrs for PT_GNU_STACK. + (_dl_phdr): Fix type. + * elf/dl-load.c (_dl_map_object_from_fd): Grok PT_GNU_STACK phdr and + enable execute permission for the stack if necessary. + * sysdeps/generic/dl-execstack.c: New file. + * elf/Makefile (dl-routines): Add it. + * elf/Versions (ld: GLIBC_PRIVATE): Add _dl_make_stack_executable. + * sysdeps/unix/sysv/linux/dl-execstack.c: New file. + +2003-09-23 Ulrich Drepper + + * sysdeps/posix/sprofil.c (pc_to_index): Remove inline marker. + +2003-09-20 Alfred M. Szmidt + + * sysdeps/generic/utmp_file.c (setutent_file, LOCK_FILE, + UNLOCK_FILE, setutent_file): Use fcntl_not_cancel instead of + __fcntl_nocancel. + +2003-09-22 Ulrich Drepper + + * malloc/malloc.c: Include . + +2003-09-20 Paolo Bonzini + + * posix/regcomp.c (build_word_op): Rename like... + (build_charclass_op): ...this. Accept two extra parameters, + CLASS_NAME and EXTRA. Add EXTRA to the result, not only _. + (peek_token): Accept \s and \S as OP_SPACE and OP_NOTSPACE. + (parse_expression): Replace build_word_op with + build_charclass_op, add new arguments, accept OP_SPACE + and OP_NOTSPACE. + * posix/regex_internal.h (re_token_type_t): Add OP_SPACE + and OP_NOTSPACE. + + * posix/regcomp.c (peek_token): Don't look back for ( or | + to check whether to treat a caret as special. It fails + for the (extended) regex \(^. + (parse, parse_reg_exp): Pass RE_CARET_ANCHORS_HERE to fetch_token. + * posix/regex.h: Define RE_CARET_ANCHORS_HERE. + + * posix/regexec.c: Check out of bounds value before shifting. + + * posix/regex_internal.h: Define __attribute for non-gcc. + +2003-09-22 Jakub Jelinek + + * include/atomic.h (atomic_compare_and_exchange_val_rel, + atomic_compare_and_exchange_bool_rel): Swap oldval/newval arguments + to avoid confusion. + + * sysdeps/unix/opendir.c: Include string.h. + +2003-09-22 Ulrich Drepper + + * timezone/zdump.c: Update from tzcode2003c. + * timezone/zic.c: Likewise. + * timezone/leapseconds: Update from tzdata2003c. + +2003-09-19 Ulrich Drepper + + * elf/Makefile ($(objpfx)librtld.os): Create link map also for + final build to ease quality control. + + * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): If compiled for + ld.so, don't include NULL buffer pointer handling. + +2003-09-19 Jakub Jelinek + + * dlfcn/dlopen.c (dlopen): Add static_link_warning. + +2003-09-18 Jakub Jelinek + + * libio/memstream.c (open_memstream): Use _IO_init instead of + _IO_old_init. + +2003-09-17 Ulrich Drepper + + * sysdeps/generic/wordexp.c (eval_expr_val): Use strtol since we + have to recognize octal and hexadecimal numbers as well. Simplify + function, signs are handled in strtol. + * posix/wordexp-test.c: Add tests for octal and hexadecimal + numbers in arithmetic expressions. + +2003-09-17 Jakub Jelinek + + * elf/Makefile (distribute): Add tst-alignmod.c. + (tests): Add tst-align. + (modules-names): Add tst-alignmod. + (CFLAGS-tst-align.c, CFLAGS-tst-alignmod.c): Add + $(stack-align-test-flags). + ($(objpfx)tst-align): Depend on libdl. + ($(objpfx)tst-align.out): Depend on tst-alignmod.so. + * elf/tst-align.c: New file. + * elf/tst-alignmod.c: New file. + * misc/Makefile (CFLAGS-tst-tsearch.c): Add $(stack-align-test-flags). + * misc/tst-tsearch.c: Include tst-stack-align.h. + (stack_align_check): New array. + (cmp_fn, walk_action): Use TEST_STACK_ALIGN (). + (main): Report error if stack was not enough aligned + in cmp_fn or walk_action. + * stdlib/Makefile (CFLAGS-tst-qsort.c): Add $(stack-align-test-flags). + * stdlib/tst-qsort.c: Include tst-stack-align.h. + (align_check): New var. + (compare): Use TEST_STACK_ALIGN () macro. + (main): Report error if stack was not enough aligned in compare. + * sysdeps/i386/i686/Makefile (stack-align-test-flags): Remove + unneeded -mpreferred-stack-boundary=4. + * sysdeps/x86_64/tst-stack-align.h: New file. + + * libio/memstream.c (_IO_wmem_jumps): Remove unused structure. + (_IO_wmem_sync, _IO_wmem_finish): Remove unused functions. + +2003-09-17 Philip Blundell + + * sysdeps/arm/dl-machine.h (CALL_ROUTINE): Deleted. + (BX): Define. + (ELF_MACHINE_RUNTIME_TRAMPOLINE): Optimise a little. + + * sysdeps/arm/sysdep.h (DO_RET): New. + + * sysdeps/unix/sysv/linux/arm/vfork.S: Add #error if __NR_vfork + required but not defined. Improve test of error code. + +2003-09-17 Jakub Jelinek + + * sysdeps/i386/Makefile (stack-align-test-flags): Add + -malign-double -mpreferred-stack-boundary=4. + +2003-09-17 Ulrich Drepper + + * sysdeps/posix/utimes.c (__utimes): Truncate instead of round. + * sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise. + +2003-09-15 Jakub Jelinek + + * sysdeps/i386/Makefile (sysdep-CFLAGS): If not in math or csu + subdir, add -mpreferred-stack-boundary=4, with few exceptions. + +2003-09-17 Jakub Jelinek + + * Makeconfig (stack-align-test-flags): Set. + * stdlib/Makefile (CFLAGS-tst-bsearch.c): Add + $(stack-align-test-flags). + * stdlib/tst-bsearch.c: Include tst-stack-align.h. + (align_check): New var. + (comp): Use TEST_STACK_ALIGN macro. + (do_test): Fail if align_check != 1. + * sysdeps/generic/tst-stack-align.h: New file. + * sysdeps/i386/i686/Makefile (stack-align-test-flags): Add -msse. + * sysdeps/i386/i686/tst-stack-align.h: New file. + +2003-09-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/clone.S: Make sure child gets a + stack which is aligned (mod 16). + +2003-09-17 Uwe Reimann + Hans-Peter Nilsson + + * sysdeps/cris/dl-machine.h (elf_machine_type_class): Classify + R_CRIS_GLOB_DAT as ELF_RTYPE_CLASS_PLT. Clarify comment. + +2003-09-17 Jakub Jelinek + + * dirent/scandir.c: Include bits/libc-lock.h. + (struct scandir_cancel_struct): New type. + (cancel_handler): New function. + (SCANDIR): Add __libc_cleanup_{push,pop}, save state into + scandir_cancel_struct. + +2003-09-16 Ulrich Drepper + + * sysdeps/unix/sysv/linux/Dist: Remove internal_statvfs.c. + * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines): + Add internal_statvfs. + * sysdeps/unix/sysv/linux/fstatvfs.c: Call __internal_statvfs + instead of including "internal_statvfs.c". + * sysdeps/unix/sysv/linux/statvfs.c: Likewise. + * sysdeps/unix/sysv/linux/internal_statvfs.c: Make it a real function. + Add code to avoid the stat calls on all the reported mount points + when we can determine mismatch in advance. + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add AUTOFS_SUPER_MAGIC and + USBDEVFS_SUPER_MAGIC. + +2003-09-16 Jakub Jelinek + + * posix/Versions (sched_getaffinity, sched_setaffinity): Change + from GLIBC_2.3.2 to GLIBC_2.3.3 symbol version. + +2003-09-16 Bruno Haible + + * intl/tst-gettext2.sh: Set GCONV_PATH and LOCPATH only after + invoking msgfmt, not before. + +2003-09-15 Jakub Jelinek + + * argp/argp.h (argp_parse, __argp_parse): Remove __THROW. + * argp/Makefile (CFLAGS-argp-help.c, CFLAGS-argp-parse.c): Add + $(uses-callbacks). + * dirent/Makefile (CFLAGS-scandir.c, CFLAGS-scandir64.c): Likewise. + * elf/Makefile (CFLAGS-dl-iterate-phdr.c, + CFLAGS-dl-iterate-phdr-static.c): Add $(uses-callbacks). + * elf/dl-iteratephdr.c (cancel_handler): New function. + (__dl_iterate_phdr): Add __libc_cleanup_{push,pop}. + * elf/link.h (dl_iterate_phdr): Remove __THROW. + * io/Makefile (CFLAGS-fts.c): Merge into one assignment. + Add $(uses-callbacks). + (CFLAGS-ftw.c, CFLAGS-ftw64.c): Add $(uses-callbacks). + * misc/Makefile (CFLAGS-tsearch.c, CFLAGS-lsearch.c): Change + $(exceptions) to $(uses-callbacks). + * Makeconfig (uses-callbacks): Set to $(exceptions). + * posix/Makefile (CFLAGS-glob.c, CFLAGS-glob64.c): Add + $(uses-callbacks). + * stdlib/Makefile (CFLAGS-bsearch.c, CFLAGS-msort.c, CFLAGS-qsort.c): + Likewise. + +2003-09-15 Andreas Schwab + + * sysdeps/m68k/setjmp.c: Add hidden_def. + +2003-09-14 Ulrich Drepper + + * libio/memstream.c (open_memstream): Don't allow wide char operations. + + * dirent/dirent.h: Remove __THROW from scandir. + +2003-09-14 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/mmap.S: Use sys_mmap2 if it's known + to be available. + + * sysdeps/unix/sysv/linux/arm/mmap64.S: Optimise code a little. + + * sysdeps/arm/memset.S: Rewrite. + +2003-09-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New. + (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and + __SLONGWORD_TYPE otherwise. + +2003-09-14 Ulrich Drepper + + * io/Makefile (CFLAGS-ftw.c): Add -fexceptions. + (CFLAGS-ftw64.c): Likewise. + +2003-09-13 Ulrich Drepper + + * nscd/Makefile (CFLAGS-nscd_getpw_r.c): Add -fexceptions. + (CFLAGS-nscd_getgr_r.c): Likewise. + (CFLAGS-nscd_gethst_r.c): Likewise. + +2003-09-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/if_index.c: Use only non-cancelable + interfaces. + + * grp/Makefile (CFLAGS-getgrgid_r.c, CFLAGS-getgrnam_r.c, + CFLAGS-fgetgrent.c, CFLAGS-fgetgrent_r.c, CFLAGS-putgrent.c, + CFLAGS-initgroups.c, CFLAGS-getgrgid.c): Add -fexceptions. + * inet/Makefile (CFLAGS-either_ntoh.c, CFLAGS-either_hton.c, + CFLAGS-getnetgrent.c, CFLAGS-getnetgrent_r.c): Likewise. + * io/Makefile (CFLAGS-posix_fallocate.c, CFLAGS-posix_fallocate64.c): + Likewise. + * misc/Makefile (CFLAGS-err.c): Likewise. + * posix/Makefile (CFLAGS-getaddrinfo.c, CFLAGS-spawn.c, + CFLAGS-spawnp.c, CFLAGS-spawni.c, CFLAGS-pause.c, CFLAGS-glob.c, + CFLAGS-glob64.c): Likewise. + * pwd/Makefile (CFLAGS-getpw.c): Likewise. + * shadow/Makefile (CFLAGS-fgetspent.c, CFLAGS-fgetspent_r.c, + CFLAGS-putspent.c, CFLAGS-getspnam.c, CFLAGS-getspnam_r.c): Likewise. + * stdio-common/Makefile (CFLAGS-cuserid.c): Likewise. + * sunrpc/Makefile (CFLAGS-openchild.c): Likewise. + + * stdlib/Makefile (CFLAGS-mkstemp.c): Remove definition. + + * libio/stdio.h: Remove __THROW from cuserid prototype. + + * locale/loadarchive.c: Use only non-cancelable interfaces. + * resolv/herror.c (herror): Likewise. + + * malloc/hooks.c: Before using IO stream mark stream so it uses + only non-cancelable interfaces. + * malloc/malloc.c: Likewise. + * posix/getopt.c: Likewise. + + +2003-09-11 Jakub Jelinek + + * Makerules (LDFLAGS-c.so): Remove -u __register_frame. + +2003-09-12 Ulrich Drepper + + * stdio-common/stdio_ext.h: Mark most functions with __THROW. + + * misc/err.h: Remove __THROW from all prototypes. + + * posix/getopt.h (__THROW): Define if not already defined. Add + __THROW to the getopt functions. + +2003-09-11 Ulrich Drepper + + * io/Makefile (CFLAGS-lockf.c): Add -fexceptions. + (CFLAGS-fts.c): Likewise. + * io/fcntl.h: Remove __THROW from lockf prototypes. + * io/fts.h: Remove most __THROW. + +2003-09-11 H.J. Lu + + * elf/tls-macros.h (TLS_IE): Add a stop bit for ia64. + (TLS_LD): Likewise. + (TLS_GD): Likewise. + +2003-09-11 Jakub Jelinek + + * libio/fileops.c (_IO_new_file_overflow): Add INTUSE to + _IO_free_backup_area call. + +2003-09-10 Chris Demetriou + + * sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Fix + syscall invocation. + * sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise. + Also, only assert off_t size is 4 for N32 and O32, and clean up + white space. + * sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise. + +2003-09-10 Roland McGrath + + * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): + Don't use c_ispeed under [! _HAVE_STRUCT_TERMIOS_C_ISPEED]. + Don't use c_ospeed under [! _HAVE_STRUCT_TERMIOS_C_OSPEED]. + * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise. + Reported by Daniel Jacobowitz . + +2003-09-10 Jakub Jelinek + + * string/Makefile (strop-tests): Add memccpy. + * string/test-memccpy.c: New test. + +2003-09-09 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): Add + siginfo_t * argument before, change into struct ucontext *. + (SIGCONTEXT_EXTRA_ARGS): Define to _si,. + (GET_PC, GET_FRAME, GET_STACK): Adjust for ctx being a pointer + instead of structure. + * sysdeps/unix/sysv/linux/x86_64/register-dump.h (REGISTER_DUMP): + Likewise. + +2003-09-09 Ulrich Drepper + + * string/stratcliff.c (main): Check memccpy. + +2003-04-11 Jes Sorensen + + * sysdeps/ia64/memccpy.S: When recovering for src_aligned and the + character is found during recovery, use correct register when + determining the position of the found character. + +2003-04-01 Jes Sorensen + + * sysdeps/ia64/memccpy.S: Use speculatively loads for readahead to + avoid segfaults when reading from unmapped pages. For aligned + reload and continue, for misaligned, roll back and use byte copy. + Save ar.ec on entry and restore on exit. + +2003-09-09 Chris Demetriou + + * sysdeps/unix/mips/sysdep.h (PSEUDO_END): Undef before defining. + +2003-09-08 Chris Demetriou + + * sysdeps/mips/mips64/n32/Implies: Move ieee754/ldbl-128 to + the top of the list. + * sysdeps/mips/mips64/n64/Implies: Likewise. + +2003-09-08 Roland McGrath + + * sysdeps/unix/sysv/linux/speed.c + (cfsetospeed): Only set c_ospeed under [_HAVE_STRUCT_TERMIOS_C_OSPEED]. + (cfsetispeed): Only set c_ispeed under [_HAVE_STRUCT_TERMIOS_C_ISPEED]. + * sysdeps/unix/sysv/linux/bits/termios.h + (_HAVE_STRUCT_TERMIOS_C_ISPEED, _HAVE_STRUCT_TERMIOS_C_OSPEED): Define. + * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise. + +2003-09-08 Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/register-dump.h: Undo last change. + * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h: Likewise. + +2003-09-08 Jakub Jelinek + + * sysdeps/generic/bits/types.h (__quad_t): Make long int if 64-bit. + (__u_quad_t): Make unsigned long int if 64-bit. + (__SQUAD_TYPE): Make long int if 64-bit. + (__UQUAD_TYPE): Make unsigned long int if 64-bit. + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove. + +2003-09-08 Ulrich Drepper + + * Makefile (tests): Run check-c++-types.sh if possible. + * scripts/check-c++-types.h: New file. + * scripts/data/c++-types-i386-linux-gnu.data: New file. + +2003-09-08 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump): + Use struct sigcontext. + + * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): + Use struct sigcontext. + (GET_PC): Adopt. + (GET_FRAME): Likewise. + (GET_STACK): Likewise. + +2003-09-08 Wolfram Gloger + + * malloc/malloc.c (sYSMALLOc): Move foreign sbrk accounting into + contiguous case. Bug report from Prem Gopalan . + (mALLOPt): Avoid requirement of C99. + +2003-09-08 Ulrich Drepper + + * libio/bug-ftell.c: Include . + (main): Mark cp as const. + +2003-09-07 Jakub Jelinek + + * sysdeps/unix/sysv/linux/syscalls.list (fcntl): Remove. + * sysdeps/unix/sysv/linux/x86_64/fcntl.c: Remove. + +2003-09-05 Roland McGrath + + * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Fill in c_ispeed + and c_ospeed fields. + * sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Set c_ospeed field. + (cfsetispeed): Set c_ispeed field. + * sysdeps/unix/sysv/linux/tcsetattr.c (IBAUD0): Define unconditionally + to match corresponding speed.c code. + +2003-09-06 Ulrich Drepper + + * libio/wfileops.c (_IO_wfile_underflow): Mark beginning of the + narrow character buffer. + * libio/Makefile: Add rules to build and run bug-ftell. + * libio/bug-ftell.c: New file. + + * stdio-common/vfprintf.c: Don't use the first grouping number twice. + + * stdio-common/vfscanf.c (vfscanf): Fix recognition of characters + matching the decimal point and possibly leading the thousands + separator. This caused the recognition of thousands separators to + always fail. + +2003-09-05 Ulrich Drepper + + * libio/fileops.c (_IO_new_file_overflow): Handle switching to + write mode from read in backup buffer. + * libio/Makefile (tests): Add bug-ungetc2. + * libio/bug-ungetc2.c: New file. + +2003-09-05 Roland McGrath + + * nss/getXXbyYY.c (FUNCTION_NAME): Remove unused variable. + +2003-09-04 Roland McGrath + + * sysdeps/mach/hurd/mmap.c (__mmap): If io_map fails with MIG_BAD_ID, + EOPNOTSUPP, or ENOSYS, change it to ENODEV. + +2003-09-04 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ): + Fix a typo. + +2003-09-05 Andreas Jaeger + + * sysdeps/i386/bits/string.h (__memrchr): Do addition in assembler + to make it conforming C. + * sysdeps/i386/i486/bits/string.h (__memrchr): Likewise. + + * sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Change + prototype to use variable argument lists and get the possible one + argument via va_arg. + * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Likewise. + * sysdeps/unix/sysv/linux/x86_64/fcntl.c: New. + +2003-09-04 Ulrich Drepper + + * posix/unistd.h: Add back __THROW to sysconf, pathconf, fpathconf. + + * sysdeps/unix/sysv/linux/pathconf.c (__statfs_filesize_max): + Report correct value for vxfs. + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define VXFS_SUPER_MAGIC. + + * gmon/gmon.c: Use only not-cancelable syscalls to write profiling + data. + + * sysdeps/generic/utmp_file.c: Use not-cancelable syscalls all + over the place. It would be allowed to have these functions as + cancellation points but the cleanup would be ugly and a lot of + work. + + * sysdeps/generic/not-cancel.h (fcntl_not_cancel): Define. + * sysdeps/unix/sysv/linux/not-cancel.h (fcntl_not_cancel): Define. + + * include/fcntl.h (__fcntl_nocancel): Declare. + * sysdeps/unix/sysv/linux/fcntl.c: New file. + * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Only enable + cancellation if absolutely needed. + (__fcntl_nocancel): Define. + + * posix/unistd.h (gethostid): Remove __THROW. Clarify comment. + * sysdeps/unix/sysv/linux/Makefile (CFLAGS-gethostid.c): Add + -fexceptions. + * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Use + extend_alloca. + + * resolv/res_init.c (__res_nclose): Use close_not_cancel_no_status + instead of __close. + + * nss/getXXbyYY.c (FUNCTION_NAME): Add a few casts. Remove + unnecessary errno handling. + + * nss/getXXbyYY_r.c (INTERNAL): Use better variable name. + Initialize it in all cases. Change it to be a bit more like the + code we had before. + +2003-09-04 Jakub Jelinek + + * libio/fileops.c (_IO_file_read, _IO_new_file_write): Add + __builtin_expect. + (_IO_file_open): Likewise. Use close_not_cancel. + +2003-09-04 Ulrich Drepper + + * libio/libio.h: Define _IO_FLAGS2_NOTCANCEL. + * libio/fileops.c [_LIBC]: Remove close macro. + (_IO_file_open): If _IO_FLAGS2_NOTCANCEL is set, use open_not_cancel. + (_IO_new_file_open): Recognize 'c' flag in mode string. + (_IO_file_read): If _IO_FLAGS2_NOTCANCEL is set use read_not_cancel. + (_IO_new_file_write): If _IO_FLAGS2_NOTCANCEL is set use + write_not_cancel. + * iconv/gconv_conf.c: Use fopen with 'c' mode flag. + * inet/rcmd.c: Likewise. + * inet/ruserpass.c: Likewise. + * intl/localealias.c: Likewise. + * malloc/mtrace.c: Likewise. + * misc/getpass.c: Likewise. + * misc/getttyent.c: Likewise. + * misc/mntent_r.c: Likewise. + * misc/getusershell.c: Likewise. + * nss/nsswitch.c: Likewise. + * resolv/res_hconf.c: Likewise. + * resolv/res_init.c: Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + * time/getdate.c: Likewise. + * time/tzfile.c: Likewise. + * misc/fstab.h: Undo last change. + * misc/mntent.h: Likewise. + * misc/Makefile: Remove CFLAGS-mntent_r.c, CFLAGS-mntent.c, and + CFLAGS-fstab.c definition. + +2003-09-04 Jakub Jelinek + + * sysdeps/generic/unwind.h (_Unwind_GetBSP): Add prototype. + +2003-09-03 Ulrich Drepper + + * nss/getXXbyYY_r.c (INTERNAL): Explicitly set errno and avoid + returning ERANGE if this wasn't intended. + +2003-09-03 Jakub Jelinek + + * intl/loadmsgcat.c (open, close, read, mmap, munmap): Define as + function-like macros. + +2003-09-03 Ulrich Drepper + + * grp/Makefile (CFLAGS-getgrent_r.c): Add -fexceptions. + (CFLAGS-getgrent.c): Likewise. + * pwd/Makefile (CFLAGS-getpwent_r.c): Add -fexceptions. + (CFLAGS-getpwent.c): Likewise. + * shadow/Makefile (CFLAGS-getspent_r.c): Add -fexceptions. + (CFLAGS-getspent.c): Likewise. + + * inet/Makefile: Add -fexceptions to CFLAGS for the various + getXXent and getXXbyYY functions. + + * locale/loadlocale.c: Use not-cancelable variants of open, close, + and read. + +2003-09-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove + rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, rt_sigqueueinfo and + rt_sigpending. + * sysdeps/unix/sysv/linux/alpha/sigaction.c (__syscall_rt_sigaction): + New prototype. + * sysdeps/unix/sysv/linux/arm/syscalls.list (__syscall_*): Remove + unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/arm/Makefile (sysdep_routines): Remove + rt_*. + * sysdeps/unix/sysv/linux/cris/Makefile: Removed. + * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list + (__syscall_recvfrom, __syscall_sendto): Remove unused aliases. + * sysdeps/unix/sysv/linux/mips/syscalls.list (__syscall_*): Remove + unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines): Remove rt_*. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list + (__syscall_*): Remove unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list + (__syscall_*): Likewise. + * sysdeps/unix/sysv/linux/powerpc/Makefile (sysdep_routines): Remove + rt_*. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__syscall_*): + Remove unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/sh/Makefile (sysdep_routines): Remove rt_*. + * sysdeps/unix/sysv/linux/rt_sigaction.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigpending.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigprocmask.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigreturn.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigsuspend.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Removed. + * sysdeps/unix/sysv/linux/s_pread64.c: Removed. + * sysdeps/unix/sysv/linux/s_pwrite64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/gethostname.c: Remove unused + __syscall_* prototypes. + * sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fchown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getmsg.c: Likewise. + * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lockf64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/putmsg.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setregid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/m68k/chown.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/execve.c: Likewise. + * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/reboot.c: Likewise. + * sysdeps/unix/sysv/linux/_exit.c: Likewise. + * sysdeps/unix/sysv/linux/ftruncate64.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/gai_sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/readahead.c: Likewise. + * sysdeps/unix/sysv/linux/getcwd.c: Likewise. + * sysdeps/unix/sysv/linux/sigwait.c: Likewise. + * sysdeps/unix/sysv/linux/getdents.c: Likewise. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + * sysdeps/unix/sysv/linux/getpriority.c: Likewise. + * sysdeps/unix/sysv/linux/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ipc_priv.h: Likewise. + * sysdeps/unix/sysv/linux/llseek.c: Likewise. + * sysdeps/unix/sysv/linux/sysctl.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/mmap64.c: Likewise. + * sysdeps/unix/sysv/linux/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/poll.c: Likewise. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + * sysdeps/unix/sysv/linux/pread.c: Likewise. + * sysdeps/unix/sysv/linux/ptrace.c: Likewise. + * sysdeps/unix/sysv/linux/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + * sysdeps/unix/sysv/linux/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/xstat64.c: Likewise. + +2003-09-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Revert last change. + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: New file. + * sysdeps/unix/sysv/linux/sparc/syscalls.list: New file. + +2003-09-02 Ulrich Drepper + + * stdio-common/Makefile (CFLAGS-vprintf.c): Add -fexceptions. + + * intl/loadmsgcat.c: For _LIBC, call not cancelable versions of + open, close, and read. + + * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Also define + *_nocancel name. + + * sysdeps/unix/sysv/linux/i386/syscalls.list: Add waitpid. + + * libio/Makefile (CFLAGS-oldtmpfile.c): Add -fexceptions. + * sysdeps/generic/tmpfile.c (tmpfile): Use __unlink instead of remove. + * libio/oldtmpfile.c (__old_tmpfile): Likewise. + + * misc/Makefile (CFLAGS-getusershell.c): Add -fexceptions. + + * io/Makefile (CFLAGS-statfs.c): Add -fexceptions. + (CFLAGS-fstatfs.c): Likewise. + (CFLAGS-statvfs.c): Likewise. + (CFLAGS-fstatvfs.c): Likewise. + +2003-09-01 Ulrich Drepper + + * misc/Makefile (CFLAGS-getsysstats.c): Add -fexceptions. + * posix/unistd.h: Remove __THROW from pathconf, fpathconf, + sysconf. + * posix/Makefile (CFLAGS-sysconf.c): Add -fexceptions. + (CFLAGS-pathconf.c): Likewise. + (CFLAGS-fpathconf.c): Likewise. + + * misc/Makefile (CFLAGS-fstab.c): Add -fexceptions. + * misc/fstab.h: Remove all __THROW. + * misc/Makefile (CFLAGS-mntent.c): Add -fexceptions. + (CFLAGS-mntent_r.c): Likewise. + * misc/mntent.h: Remove most __THROW. + + * misc/Makefile (CFLAGS-mkstemp.c): Add -fexceptions. + (CFLAGS-mkstemp64.c): Likewise. + + * sysdeps/generic/wordexp.c (parse_comm): Disable cancellation + around call to exec_comm. + * posix/wordexp.h: Remove __THROW from wordexp. + * posix/Makefile (CFLAGS-wordexp.c): Add -fexceptions. + + * sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Use + not-cancelable functions. + + * libio/Makefile (CFLAGS-oldiofopen.c): Add -fexceptions. + (CFLAGS-iofopen.c): Likewise. + (CFLAGS-iofopen64.c): Likewise. + + * stdlib/fmtmsg.c (fmtmsg): Disable cancellation around output + functions. + * stdlib/Makefile (CFLAGS-fmtmsg.c): Add -fexceptions. + * stdlib/fmtmsg.h: Remove __THROW from fmtmsg. + + * stdlib/stdlib.h: Remove __THROW from posix_openpt and getpt. + * login/Makefile (CFLAGS-getpt.c): Add -fexceptions. + +2003-09-01 Thorsten Kukuk + + * nis/nss_compat/compat-spwd.c (getspnam_plususer): Return + NSS_STATUS_SUCCESS if entry was found. + (getspent_next_file): Store user in blacklist after entry + was found, use innetgr. + +2003-09-01 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c: New. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c: New. + + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Fix tls offset + computation for TCB_AT_TP. Support l_firstbyte_offset != 0 for + DTV_AT_TP, optimize. + +2003-08-31 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/Versions: Add posix_fadvise64 and + posix_fallocate64 at GLIBC_2.3.3. + * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO_ERRVAL): Define. + (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise. + +2003-08-08 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove __syscall_ + functions. + +2003-08-31 Ulrich Drepper + + * libio/libioP.h (_IO_acquire_lock_fct): Define as inline function. + Code by Richard Henderson. + +2003-08-31 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/Versions: Add posix_fadvise64 and + posix_fallocate64 at GLIBC_2.3.3. + +2003-08-31 Ulrich Drepper + + * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET. + * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp. + +2003-08-30 Jakub Jelinek + + * sysdeps/generic/sysdep.h (cfi_window_save, CFI_WINDOW_SAVE): Define. + * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Allow file to be + included multiple times. + * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Pass + ptid, tls, ctid arguments to the kernel. + * sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c (__getpagesize): + Use INTERNAL_SYSCALL instead of __syscall_getpagesize. + * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c + (__libc_sigaction): Use INLINE_SYSCALL instead of + __syscall_rt_sigaction. + * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list + (__syscall_getgroups, __syscall_getpagesize, __syscall__llseek, + __syscall_setfsgid, __syscall_setfsuid, __syscall_setgid, + __syscall_setgroups, __syscall_setregid, __syscall_setreuid, + __syscall_ipc, __syscall_setuid, __syscall_rt_sigaction, + __syscall_rt_sigpending, __syscall_rt_sigprocmask, + __syscall_rt_sigqueueinfo, __syscall_rt_sigsuspend, + __syscall_rt_sigtimedwait): Remove unneeded syscall stubs. + * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (sysdep_routines): + Remove rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, + rt_sigqueueinfo, rt_sigaction and rt_sigpending. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h + (__CLONE_SYSCALL_STRING): Define. + * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Add + CFI directives. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h + (__CLONE_SYSCALL_STRING): Define. + * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_CLONE_SYSCALL): + Define. + * sysdeps/unix/sysv/linux/sparc/system.c: New file. + +2003-08-30 Ulrich Drepper + + * sunrpc/rpc/clnt.h: Remove a few __THROW. + * sunrpc/Makefile (CFLAGS-auth_unix.c): Add -fexceptions. + (CFLAGS-key_call.c): Likewise. + (CFLAGS-pmap_rmt.c): Likewise. + (CFLAGS-clnt_perr.c): Likewise. + * sunrpc/rpc/auth.h: Remove serveral __THROW. + + * inet/Makefile (CFLAGS-gethstbyad_r.c): Add -fexceptions. + (CFLAGS-gethstbynm_r.c): Likewise. + (CFLAGS-gethstbynm2_r.c): Likewise. + (CFLAGS-rcmd.c): Likewise. + * resolv/Makefile (CFLAGS-res_hconf.c): Add -fexceptions. + + * argp/Makefile (CFLAGS-argp-help.c): Add -fexceptions. + (CFLAGS-argp-fmtstream.c): Likewise. + * argp/argp.h: Remove a number of __THROW. + + * misc/sys/syslog.h (vsyslog): Remove __THROW. + + * misc/Makefile (CFLAGS-getpass.c): Add -fexceptions. + * misc/getpass.c (getpass): Add cleanup handler to ensure the + stream is closed even if the thread is canceled. + (call_fclose): New function. + * posix/unistd.h: Remove __THROW from getpass prototype. + + * posix/Makefile (CFLAGS-getopt.c): Add -fexceptions. + + * signal/signal.h (psignal): Remove __THROW. + * stdio-common/Makefile (CFLAGS-psignal.c): Add -fexceptions. + + * misc/Makefile (CFLAGS-error.c): Define. + * misc/error.c (error): Disable cancellation handling around the + actual output. The message should in any case be printed. + (error_at_line): Likewise. + + * misc/error.h: Protect parameter names with leading __. + +2003-08-28 Carlos O'Donell + + * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop. + +2003-08-29 Jakub Jelinek + + * libio/iofgetpos64.c (_IO_new_fgetpos64): Move lock release to the + end. + +2003-08-29 Ulrich Drepper + + * libio/stdio.h: Remove a few more __THROW. + +2003-08-29 Jakub Jelinek + + * libio/Makefile: Compile fputc.c, fputwc.c, freopen64.c, freopen.c, + fseek.c, fseeko64.c, fseeko.c, ftello64.c, ftello.c, fwide.c, getc.c, + getchar.c, getwc.c, getwchar.c, iofclose.c, iofflush.c, iofgetpos64.c, + iofgetpos.c, iofgets.c, iofgetws.c, iofputs.c, iofputws.c, iofread.c, + iofsetpos64.c, iofsetpos.c, ioftell.c, iofwrite.c, iogetdelim.c, + iogetline.c, iogets.c, iogetwline.c, ioputs.c, ioseekoff.c, + ioseekpos.c, iosetbuffer.c, iosetvbuf.c, ioungetc.c, ioungetwc.c, + oldfileops.c, oldiofclose.c, oldiofgetpos64.c, oldiofgetpos.c, + oldiofsetpos64.c, oldiofsetpos.c, peekc.c, putc.c, putchar.c, putwc.c, + putwchar.c and rewind.c with exceptions. + * sysdeps/generic/bits/stdio-lock.h (_IO_acquire_lock, + _IO_release_lock): Define. + * libio/fileops.c (_IO_new_file_underflow): Use it. + * libio/fputc.c (fputc): Likewise. + * libio/fputwc.c (fputwc): Likewise. + * libio/freopen64.c (freopen64): + * libio/freopen.c (freopen): Likewise. + * libio/fseek.c (fseek): Likewise. + * libio/fseeko64.c (fseeko64): Likewise. + * libio/fseeko.c (fseeko): Likewise. + * libio/ftello64.c (ftello64): Likewise. + * libio/ftello.c (ftello): Likewise. + * libio/fwide.c (fwide): Likewise. + * libio/getc.c (_IO_getc): Likewise. + * libio/getchar.c (getchar): Likewise. + * libio/getwc.c (_IO_getwc): Likewise. + * libio/getwchar.c (getwchar): Likewise. + * libio/iofclose.c (_IO_new_fclose): + * libio/iofflush.c (_IO_fflush): Likewise. + * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise. + * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. + * libio/iofgets.c (_IO_fgets): Likewise. + * libio/iofgetws.c (fgetws): Likewise. + * libio/iofputs.c (_IO_fputs): Likewise. + * libio/iofputws.c (fputws): Likewise. + * libio/iofread.c (_IO_fread): Likewise. + * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise. + * libio/iofsetpos.c (_IO_new_fsetpos): Likewise. + * libio/ioftell.c (_IO_ftell): Likewise. + * libio/iofwrite.c (_IO_fwrite): Likewise. + * libio/iogetdelim.c (_IO_getdelim): Likewise. + * libio/iogets.c (_IO_gets): Likewise. + * libio/ioputs.c (_IO_puts): Likewise. + * libio/ioseekoff.c (_IO_seekoff): Likewise. + * libio/ioseekpos.c (_IO_seekpos): Likewise. + * libio/iosetbuffer.c (_IO_setbuffer): Likewise. + * libio/iosetvbuf.c (_IO_setvbuf): Likewise. + * libio/ioungetc.c (_IO_ungetc): Likewise. + * libio/ioungetwc.c (ungetwc): Likewise. + * libio/oldiofclose.c (_IO_old_fclose): Likewise. + * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise. + * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise. + * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise. + * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise. + * libio/peekc.c (_IO_peekc_locked): Likewise. + * libio/putc.c (_IO_putc): Likewise. + * libio/putchar.c (putchar): Likewise. + * libio/putwc.c (putwc): Likewise. + * libio/putwchar.c (putwchar): Likewise. + * libio/rewind.c (rewind): Likewise. + * libio/wfileops.c (_IO_wfile_underflow): Likewise. + +2003-08-29 Ulrich Drepper + + * signal/signal.h: sighold, sigrelse, sigignore, sigset were + available in XPG4.2. + +2003-08-27 Phil Knirsch + Jakub Jelinek + + * sunrpc/svc.c (svc_getreqset): Fix fds_bits reading on 64-bit + big endian arches. Don't read beyond end of fds_bits array. + +2003-04-27 Bruno Haible + + * manual/message.texi (Advanced gettext functions): Add information + about Korean, Portuguese, Latvian. Gaeilge is also known as Irish. + Add section about Lithuanian, reported by Ricardas Cepas + . + Add information about Croatian. + Ukrainian is like Russian, reported by Andy Rysin . + Remove remark about continuation lines that is not true for PO files. + Fix formula for Slovenian, reported by Roman Maurer + . + +2003-08-27 Ulrich Drepper + + * math/math_private.h: Declare __copysignf. + * sysdeps/ieee754/flt-32/s_scalbnf.c: Use __copysignf instead of + copysignf. + + * sysdeps/x86_64/fpu/bits/mathinline.h: Define __signbitf, + __signbit, and __signbitl inline functions. + + * sysdeps/unix/sysv/linux/x86_64/__start_context.S: Use + HIDDEN_JUMPTARGET instead of JUMPTARGET to call exit(). + + * sysdeps/x86_64/bsd-_setjmp.S [PIC]: Jump to __GI___sigsetjmp. + * sysdeps/x86_64/setjmp.S: Add libc_hidden_def for __sigsetjmp. + +2003-08-27 Jakub Jelinek + + * inet/inet_mkadr.c (inet_makeaddr): Optimize. + +2003-08-27 Ulrich Drepper + + * include/stdio.h: Add declarations for __builtin_fwrite and + __builtin_fwrite_unlocked. + +2003-08-27 Jakub Jelinek + + * sysdeps/unix/opendir.c (__opendir): Make sure even struct dirent64 + fits into allocation. Add padding on 32-bit arches so that + dirp->data is enough aligned for struct dirent64. + Avoid clearing of the buffer, just clear DIR structure. + +2003-08-26 Ulrich Drepper + + * nss/nsswitch.c: Add libc_hidden_def for __nss_lookup_function. + * nss/nsswitch.h: Add libc_hidden_proto for __nss_lookup_function. + +2003-08-26 Steven Munroe + + * sysdeps/powerpc/powerpc64/elf/Makefile: New file. + +2003-08-26 Jakub Jelinek + + * login/programs/utmpdump.c (print_entry): Cast tv_usec to long + to match format string. + * sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (union semun): Add + __old_buf. + (__new_semctl): Shut up warning. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h + (_dl_string_hwcap): Add __attribute__ ((always_inline)). + +2003-08-26 Jakub Jelinek + + * elf/ldconfig.c (search_dir): When checking for GNU-style .so + link file use the real file name, not the resolved name we got by + following the symlinks. + +2003-08-25 Ulrich Drepper + + * libio/oldfileops.c (_IO_old_file_init): Initialize _mode field + if the object size is large enough. + +2003-08-25 Jakub Jelinek + + * elf/ldconfig.c (search_dir): Treat symlink as regular file + if it won't point to itself unless it is .so symlink for the linker. + +2003-08-25 Ulrich Drepper + + * libio/libio.h (_IO_fwide): In the mode==0 optimization, don't + use _mode if _IO_fwide_maybe_incompatible. + * libio/iofwide.c (_IO_fwide): Move the test for mode == 0 after + the compatibility test. + +2003-08-25 Jakub Jelinek + + * elf/cache.c (save_cache): Don't write beyond end of file_entries + buffer. + Duplicate last old cache entry if the count would be odd. + +2003-08-25 Andreas Jaeger + + * sysdeps/unix/sysv/linux/posix_fadvise64.c: Cast arguments of + __LONG_LONG_PAIR to long. + +2003-08-25 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_ERRVAL): Define. + (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise. + +2003-08-18 Alfred M. Szmidt + + * sysdeps/generic/bits/libc-lock.h (__libc_cleanup_pop): Redefine + and use __libc_cleanup_region_end instead. + +2003-08-25 Ulrich Drepper + + * elf/ldconfig.c (search_dir): Revert patch of 2003-7-21. + +2003-08-22 Ulrich Drepper + + * io/fcntl.h (posix_fallocate): Change type of third parameter to + off_t. + (posix_fallocate64): Change type of third parameter to off64_t. + * sysdeps/generic/posix_fallocate.c: Adjust for type change. + * sysdeps/posix/posix_fallocate.c: Likewise. + * sysdeps/generic/posix_fallocate64.c: Likewise. + * sysdeps/posix/posix_fallocate64.c: Likewise. Add compatibility + code for 32-bit platforms. + * sysdeps/unix/sysv/linux/i386/Versions: Add new version for + posix_fallocate64. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/Versions: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise. + +2003-08-19 Ulrich Drepper + + * string/bits/string2.h (__STRING2_COPY_TYPE): Add attribute to + the type, not to name. + + * stdio-common/test-vfprintf.c (main): Don't write temporary file + into source directory. + + * malloc/malloc.c (_int_free): Add cheap test for some invalid + block sizes. + + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo in + syscall name. + +2003-08-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Fold EISDIR error + into EINVAL. + +2003-08-18 H.J. Lu + + * sysdeps/ia64/dl-machine.h (elf_machine_rela): Use _dl_reloc_bad_type. + (elf_machine_lazy_rel): Likewise. + +2003-08-18 Art Haas + + * malloc/malloc.h: Remove unneeded ';' where closing the C++ + extern block. + +2003-08-18 Ulrich Drepper + + * sysdeps/ia64/dl-fptr.h (ELF_MACHINE_LOAD_ADDRESS): Support + loading big binaries where @gprel(sym) cannot be handled in 'add' + but instead has to be used with 'movl'. + +2003-08-17 Juergen Kreileder + Andreas Jaeger + + * sysdeps/x86_64/bits/byteswap.h: New file. + +2003-08-17 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo. + +2003-08-16 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/unix/alpha/sysdep.h (PSEUDO_ERRVAL, + ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/unix/mips/sysdep.h (PSEUDO_ERRVAL, + ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/unix/sparc/sysdep.h (PSEUDO_ERRVAL, + ret_ERRVAL): Define. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (PSEUDO_ERRVAL): + Define. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + * sysdeps/unix/sysdep.h (PSEUDO_END_ERRVAL): Define. + + * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64, + posix_fadvise64_64): Remove. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (posix_fadvise64): Add + V flag. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (posix_fadvise64): + Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list + (posix_fadvise64): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list + (posix_fadvise64): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list + (posix_fadvise64): Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (posix_fadvise64): + Likewise. + * sysdeps/unix/sysv/linux/i386/posix_fadvise64_64.S: Moved to... + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: ...here. + (__posix_fadvise64_l64): Fix a typo in fadvise64 syscall invocation. + (__posix_fadvise64_l32): New function. + * sysdeps/unix/sysv/linux/i386/Makefile: Revert last change. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions (libc): Export + posix_fadvise64@@GLIBC_2.3.3. + * sysdeps/unix/sysv/linux/s390/s390-32/Versions (libc): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (libc): Likewise. + * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Return + error value. + * sysdeps/unix/sysv/linux/posix_fadvise64.c: New file. + + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h + (SYSCALL_ERROR_HANDLER): Use TLS errno/__libc_errno if USE___THREAD. + +2003-08-15 Jakub Jelinek + + * sysdeps/sparc/sparc32/dl-machine.h (WEAKADDR): Remove. + (elf_machine_matches_host): Remove weak extern stuff. + Use GL(dl_hwcap) unconditionally and GL(dl_hwcap_mask) if SHARED. + (elf_machine_runtime_setup, sparc_fixup_plt): Remove weak extern + stuff. Use GL(dl_hwcap) unconditionally. + +2003-08-16 Alan Modra + + * sysdeps/powerpc/powerpc64/elf/start.S: Add a nop after + __libc_start_main branch. + +2003-08-16 Jakub Jelinek , + Andreas Jaeger + + * sysdeps/generic/posix_fadvise.c (posix_fadvise): Return ENOSYS + instead of setting errno. + * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise. + +2003-08-16 Andreas Jaeger + + * sysdeps/generic/posix_fadvise.c (posix_fadvise): Adjust prototype. + * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise. + +2003-08-15 Ulrich Drepper + + * io/fcntl.h (posix_fadvise64): Change type of third parameter to + off_t. + * sysdeps/unix/sysv/linux/posix_fadvise.c: Adjust definition. + * sysdeps/unix/make-syscalls.sh: Recognize V prefix to the parameter + description indicating the error value is returned, not -1. + * sysdeps/unix/sysv/linux/kernel-features.h: Add definition of + __ASSUME_FADVISE64_64_SYSCALL. + * sysdeps/unix/sysv/linux/syscalls.list: Don't define madvise and + posix_madvise in one file. Have posix_madvise defined with error + value returned. + Define posix_fadvise64_64 entry. Add version info to posix_fadvise64 + entry. + * sysdeps/unix/sysv/linux/i386/posix_fadvise.S: New file. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, and ret_ERRVAL. + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/i386/Versions [GLIBC_2.3.3]: Add + posix_fadvise64. + + * posix/Makefile (routines): Add posix_madvise. + * sysdeps/generic/madvise.c: Don't define posix_madvise. + * sysdeps/generic/posix_madvise.c: New file. + * sysdeps/unix/sysv/aix/posix_madvise.c: New file. + * sysdeps/unix/sysv/linux/i386/Makefile [subdir=io] (subdir_routines): + Add posix_fadvise64_64. + +2003-08-15 Jakub Jelinek + + * assert/assert.h (assert_perror): Use __builtin_expect for gcc >= + 3.0, not for !gcc or gcc < 3.0. + +2003-08-11 Carlos O'Donell + + * dlfcn/default.c (main): Cast dlsym loaded value to same type as main. + Address passed to test_in_mod1 and test_in_mod2 without casting. + * dlfcn/defaultmod1.c: Change prototype of test_in_mod1. + (test_in_mod1): Cast dlsym loaded value to same type as mainp. + * dlfcn/defaultmod2.c: Change prototype of test_in_mod2. + (test_in_mod2): Cast dlsym loaded value to same type as mainp. + +2003-08-15 Jakub Jelinek + + * sysdeps/sparc/sparc32/elf/configure.in (libc_cv_sparc32_tls): + Change quotes before using []. + + * sysdeps/unix/sysv/linux/sparc/sys/user.h: New file. + + * sysdeps/sparc/sparc32/bits/atomic.h (__sparc32_atomic_lock): + Renamed to... + (__sparc32_atomic_locks): ...this. Change into 64-byte array. + (__sparc32_atomic_do_lock, __sparc32_atomic_do_unlock): Add addr + argument. Select one of 64 locks from address bits. + (atomic_compare_and_exchange_val_acq, + atomic_compare_and_exchange_bool_acq): Pass memory address to + __sparc32_atomic_do_{,un}lock. + +2003-08-14 Ulrich Drepper + + * assert/assert.h (assert): Use !! in front of expression to allow + use of pointers. + + * iconvdata/cp932.c: Fixed checking of a few border of code areas. + Changed conversion of JIS X 0201 from using a table to calculating. + * iconvdata/euc-jp-ms.c: Fixed conversion table and rewrote + conversion routine. Changed CHARSET_NAME definition from EUCJP-MS to + EUC-JP-MS. + * iconvdata/tst-tables.sh: Add CP932 and EUC-JP-MS. + * iconvdata/CP932.irreversible: New file. + * iconvdata/EUC-JP-MS.irreversible: New file. + Patch by MORIYAMA Masayuki . + +2003-08-13 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/syscalls.list: Add time syscall. + + * elf/Makefile: Use LC_ALL=C in a few cases where we call external + text processing tools. + + * sysdeps/pthread/aio_misc.h (struct waitlist): Don't add caller_pid + element unless BROKEN_THREAD_SIGNALS is defined. + (struct requestlist): Likewise. + * sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Don't fill in + caller_pid of new request unless BROKEN_THREAD_SIGNALS is defined. + * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise. + * sysdeps/pthread/aio_notify.c (__aio_notify_only): Remove caller_pid + parameter unless BROKEN_THREAD_SIGNALS is defined. Adjust callers. + Pass current PID to __aio_sigqueue. + * sysdeps/pthread/lio_listio.c (lio_listio): Adjust __aio_notify_only + call. Don't initialize caller_pid field of waitlist element. + +2003-08-12 Jakub Jelinek + + * libio/libioP.h (_IO_vtable_offset): Define. + * libio/freopen.c (freopen): Use it. + * libio/ioputs.c (_IO_puts): Likewise. + * libio/freopen64.c (freopen64): Likewise. + * libio/genops.c (__underflow, __uflow, _IO_flush_all_lockp): + Likewise. + * libio/iofclose.c (_IO_new_fclose): Likewise. + * libio/iofputs.c (_IO_fputs): Likewise. + * libio/ioftell.c (_IO_ftell): Likewise. + * libio/iofwrite.c (_IO_fwrite): Likewise. + * libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise. + * libio/iosetbuffer.c (_IO_setbuffer): Likewise. + * stdio-common/vfprintf.c (ORIENT, vfprintf): Likewise. + * stdio-common/vfscanf.c (ORIENT): Likewise. + +2003-08-11 Ulrich Drepper + + * assert/assert.h: Use __builtin_expect in assert and + assert_perror definitions if possible. + +2003-08-07 Jakub Jelinek + + * sysdeps/generic/ldsodefs.h (_rtld_global): Add + _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive. + * elf/rtld.c (rtld_lock_default_lock_recursive, + rtld_lock_default_unlock_recursive): New functions. + (dl_main): Initialize _dl_rtld_lock_recursive and + _dl_rtld_unlock_recursive. + +2003-08-05 Jakub Jelinek + + * elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to + config_file directories instead of prepending. + +2003-08-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_CLONE_STOPPED. + +2003-08-01 Ulrich Drepper + + * sysdeps/generic/bits/libc-lock.h + (__libc_cleanup_push,__libc_cleanup_pop): Define even here. + +2003-08-01 Roland McGrath + + * sysdeps/mach/hurd/getdents.c: Just use sysdeps/generic/getdents.c. + +2003-07-31 Jakub Jelinek + + * sysdeps/generic/bits/types.h (__ssize_t): Use __SSIZE_T_TYPE + instead of __SWORD_TYPE. + * sysdeps/generic/bits/typesizes.h (__SSIZE_T_TYPE): Define. + * sysdeps/mach/hurd/bits/typesizes.h (__SSIZE_T_TYPE): Define. + * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h (__SSIZE_T_TYPE): + Define. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE): + Define. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE): + Define. + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file. + + * dlfcn/dlerror.c (once): New. + (dlerror): Call __libc_once. + (_dlerror_run): Remove once. + + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext): + Sync with 2.5.7 and 2.5.73 kernel changes. + + * dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings. + * elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd + formats to size_t. + * elf/dl-lookup.c (_dl_debug_bindings): Likewise. + * elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid. + * elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2. + * gmon/tst-sprofil.c (main): Add parens to shut up warning. + * iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer + difference argument. + * stdio-common/tst-wc-printf.c (main): Cast arguments with %C + format to wint_t. + * stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use + %d format and cast expected value to int. + * sysdeps/generic/libc-start.c (STATIC): Add + __attribute__((always_inline) if LIBC_START_MAIN is already defined. + * sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t + to ieee_float_shape_type. + (__sqrt): Avoid type punning. + * sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t + to ieee_float_shape_type. + (__sqrtf): Avoid type punning. + * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define + refsym if in dl-conflict.c. + * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf. + (__new_semctl): Shut up warning. + * sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf. + (__new_semctl): Shut up warning. + * sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines. + Change old into union of __old_shmid_ds and __old_shminfo structs. + Adjust all users. + * wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t. + + * sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and + modtime computation. + * sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise. + * sysdeps/posix/utimes.c (__utimes): Likewise. + +2003-07-30 Jakub Jelinek + + * elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value, + call dl_signal_error directly. If already relocated, call + GL(dl_init_static_tls) directly, otherwise queue it for later. + (CHECK_STATIC_TLS): Undo 2003-07-24 change. + * elf/rtld.c (dl_main): Initialize GL(dl_init_static_tls). + * elf/dl-open.c (dl_open_worker): Call GL_dl_init_static_tls + for all static TLS initializations delayed in _dl_allocate_static_tls. + * elf/dl-support.c (_dl_init_static_tls): New variable. + * include/link.h (struct link_map): Add l_need_tls_init. + * sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_init_static_tls. + (_dl_nothread_init_static_tls): New prototype. + (_dl_allocate_static_tls): Adjust prototype. + + * elf/tls-macros.h (VAR_INT_DEF): Add alignment directive. + +2003-07-31 Alexandre Oliva + + * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela, + elf_machine_rel_relative, elf_machine_rela_relative): Don't assume + reloc_addr is aligned. + * sysdeps/alpha/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela, + elf_machine_rel_relative, elf_machine_rela_relative): Adjust. + * sysdeps/cris/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/hppa/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela, + elf_machine_rel_relative, elf_machine_rela_relative): Adjust. + * sysdeps/ia64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/m68k/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/mips/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/powerpc/powerpc64/dl-machine.h + (elf_machine_rela_relative, elf_machine_rela): Adjust. + * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/sh/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/x86_64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + +2003-07-29 Ulrich Drepper + + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Restore + alignment of TCB used before the last change so that it matches + ld's output for IE code. + +2003-07-29 Jakub Jelinek + + * include/ctype.h (__ctype_b_loc, __ctype_toupper_loc, + __ctype_tolower_loc): Avoid "dereferencing type-punned pointer will + break strict-aliasing rules" warnings. + +2003-07-29 Roland McGrath + + * elf/Makefile: Revert accidental changes in last commit. + * elf/dl-support.c: Likewise. + + * rt/tst-timer2.c: New file. + * rt/Makefile (tests): Add it. + +2003-07-25 Jakub Jelinek + + * elf/dl-support.c (_dl_hwcap): Add nocommon attribute. + +2003-07-29 Roland McGrath + + * elf/Makefile (tests) [$(build-shared) = yes]: + Depend on $(test-modules). + * dlfcn/Makefile: Likewise. + +2003-07-28 Roland McGrath + + * sysdeps/generic/bits/types.h (__STD_TYPE): New macro. + Use that instead of `typedef' when using __*_TYPE macros in rhs. + + * elf/tst-tls14.c [USE_TLS && HAVE___THREAD]: Conditionalize on this. + * elf/tst-tlsmod14a.c: Likewise. + + * sysdeps/unix/sysv/linux/sys/sysctl.h: Include + before . + +2003-07-27 Ulrich Drepper + + * sysdeps/unix/sysv/syscalls.list: time syscall never fails. + * sysdeps/unix/sysv/linux/x86_64/time.S: time syscall never fails. + * sysdeps/unix/sysv/i386/time.S: time syscall never fails. + * sysdeps/unix/syscalls.list: umask syscall never fails. + +2003-07-27 Andreas Jaeger + + * sysdeps/unix/sysv/linux/init-first.c: Mark init as used. + +2003-07-25 Jakub Jelinek + + * sysdeps/unix/sysv/linux/a.out.h: Replace with i386 version. + Include bits/a.out.h. + * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add + bits/a.out.h. + * sysdeps/unix/sysv/linux/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/i386/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/m68k/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/x86_64/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/alpha/a.out.h: New file. + * sysdeps/unix/sysv/linux/alpha/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/sparc/a.out.h: New file. + * sysdeps/unix/sysv/linux/sparc/bits/a.out.h: New file. + +2003-07-24 Jakub Jelinek + + * sysdeps/pthread/aio_cancel.c (aio_cancel): Return AIO_ALLDONE + if aiocbp != NULL and has already completed. Return -1/EINVAL if + aiocbp->aio_fildes does not match fildes. + +2003-07-24 Ulrich Drepper + + * timezone/zic.c (rpytime): Replace cheap overflow check with a + functioning one. + + * include/link.h (struct link_map): Add l_tls_firstbyte_offset field. + * sysdeps/generic/dl-tls.c [TLS_TCB_AT_TP] (_dl_determine_tlsoffset): + Fix calculation of offsets to take misalignment of first byte in + file into account. + * elf/dl-load.c (_dl_map_object_from_fd): Initialize + l_tls_firstbyte_offset field. + * elf/rtld.c (_dl_start_final, _dl_start, dl_main): Likewise. + * elf/dl-reloc.c (_dl_allocate_static_tls): Change return type to int. + Take l_tls_firstbyte_offset information into account. + (CHECK_STATIC_TLS): _dl_allocate_static_tls can fail now. + * sysdeps/generic/ldsodefs.h: Adjust _dl_allocate_static_tls prototype. + * elf/Makefile: Add rules to build and run tst-tls14. + * elf/tst-tls14.c: New file. + * elf/tst-tlsmod14a.c: New file. + * elf/tst-tlsmod14b.c: New file. + +2003-07-23 Jakub Jelinek + + * sysdeps/pthread/lio_listio.c (LIO_OPCODE_BASE): Define. + (lio_listio): Use it. + * sysdeps/pthread/lio_listio64.c: Include lio_listio.c instead of + after few defines to avoid duplication. + +2003-07-22 Jakub Jelinek + + * include/stdio.h (__libc_fatal): Add libc_hidden_proto. + * include/dlfcn.h (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose): + Likewise. + * elf/dl-libc.c (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose): + Add libc_hidden_def. + * sysdeps/generic/libc_fatal.c (__libc_fatal): Likewise. + * sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise. + * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Likewise. + * elf/Versions (libc): Export __libc_dlopen_mode@@GLIBC_PRIVATE, + __libc_dlsym@@GLIBC_PRIVATE and __libc_dlclose@@GLIBC_PRIVATE. + * libio/Versions (libc): Export __libc_fatal@@GLIBC_PRIVATE. + * sysdeps/generic/unwind-dw2.c: Readd #ifs removed during last + change. + * sysdeps/generic/unwind.inc: Removed. + + * include/resolv.h (__resp): Declare. Define to __libc_resp + if in libc.so. + (_res): If USE___THREAD, define to (*__resp). + * resolv/res_libc.c (_res): Normal .bss variable with compat_symbol + even if USE___THREAD. + (__resp): New __thread variable. + (__libc_resp): New alias. + * resolv/Versions (libc): Export _res@GLIBC_2.0 even if + USE_TLS && HAVE___THREAD. Export __resp@@GLIBC_PRIVATE. + * sysdeps/generic/res-state.c (__res_state): Return __resp + if USE___THREAD. + +2003-07-22 H.J. Lu + + * elf/dl-support.c (_dl_hwcap): New variable. + (_dl_aux_init): Initialize GL(dl_hwcap) for static binaries. + + * sysdeps/i386/fpu/fclrexcpt.c: Include , + and . + (__feclearexcept): Clear MXCSR if needed. + * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. + + * sysdeps/i386/fpu_control.h (_FPU_GETCW, _FPU_SETCW): Document + that newer hardware needs more than these macros. + + * sysdeps/i386/setfpucw.c: New file. + +2003-07-22 Jakub Jelinek + + * elf/Makefile (CFLAGS-ldconfig.c): Define IS_IN_ldconfig. + * elf/ldconfig.c: Include dl-procinfo.c. + (PROCINFO_CLASS): Define. + * sysdeps/generic/ldsodefs.h (PROCINFO_CLASS): Define. + * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: New file. + * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: New file. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.c (PROCINFO_CLASS): + Define if not yet defined. Use it instead of EXTERN. Undefine + at the end of the file. + * sysdeps/unix/sysv/linux/arm/dl-procinfo.c (PROCINFO_CLASS): + Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c + (PROCINFO_CLASS): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c + (PROCINFO_CLASS): Likewise. + +2003-07-22 H.J. Lu + + * elf/ldconfig.c (main): Issue a fatal error if relative path + is used to build cache. + +2003-07-22 Ulrich Drepper + + * elf/readlib.c (process_file): Avoid possible overflow in assignment. + +2003-07-21 Art Haas + + * manual/charset.texi (Converting a Character): Fix example code so a + valid pointer is returned. + +2003-07-22 Andreas Jaeger + + * elf/readlib.c (process_file): Check that file is a shared + object. + + * elf/sofini.c (__FRAME_END__): Use attribute used so that gcc + will not optimize it away. + (__DTOR_END__): Likewise. + (__CTOR_END__): Likewise. + + * include/libc-symbols.h (_elf_set_element): Use attribute used so + that gcc will not optimize it away. + (link_warning): Likewise. + +2003-07-22 Ulrich Drepper + + * wcsmbs/wcpncpy.c (__wcpncpy): Correct destination pointer handling. + * wcsmbs/Makefile (tests): Add tst-wcpncpy. + * wcsmbs/tst-wcpncpy.c: New file. + +2003-07-21 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_STOPPED): Define. + + * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Reverse use of + stmxcsr and ldmxcsr. + + * Makerules (build-module-helper): Add -z defs unless explicitly said + not to do it. + * dlfcn/Makefile: Define various *-no-z-defs variables for test DSOs + which has undefined symbols. + * elf/Makefile: Likewise. + + * sysdeps/i386/fpu/fedisblxcpt.c: Use dl_hwcap, not dl_hwcap_mask. + * sysdeps/i386/fpu/feenablxcpt.c: Likewise. + * sysdeps/i386/fpu/feholdexcpt.c: Likewise. + * sysdeps/i386/fpu/fesetround.c: Likewise. + * sysdeps/i386/fpu/ftestexcept.c: Likewise. + +2003-07-21 HJ Lu + + * elf/ldconfig.c (search_dir): Treat symlink as regular file + if it won't point to itself. + +2003-07-20 Ulrich Drepper + + * sysdeps/ia64/hp-timing.h (REPEAT_READ): Cast to long int not to int. + +2003-07-20 Andreas Jaeger + + * iconvdata/cp932.c (BODY): STANDARD_ERR_HANDLER is now called + STANDARD_TO_LOOP_ERR_HANDLER. + * iconvdata/euc-jp-ms.c (BODY): Likewise. + +2003-07-19 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/sched.h (__CPU_ZERO): Fix typo. + + * sysdeps/unix/sysv/linux/syscalls.list: Remove affinity syscalls. + +2003-07-16 Daniel Jacobowitz + Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/shm.h (SHMLBA): Define to + 256K, remove unneeded declaration of __getpagesize. + +2003-07-16 Andreas Schwab + + * sysdeps/unix/sysv/linux/futimes.c: Include . + +2003-07-15 Ulrich Drepper + + * io/test-utime.c (main): Make test yet more robust. + +2003-07-14 Ulrich Drepper + + More cancellation handling fixups. + * sysdeps/unix/sysv/linux/not-cancel.h: Add waitpid_not_cancel. + * sysdeps/generic/not-cancel.h: Likewise. + * catgets/open_catalog.c: Use not-cancelable syscalls. + * time/Makefile (CFLAGS-getdate.c): Add -fexceptions. + * sysdeps/unix/sysv/linux/llseek.c: Must not be cancelable. + * sysdeps/unix/syscalls.list: Don't mark lseek as cancelable. + * dlfcn/dlfcn.h: Mark dlopen with __THROW again. + * io/fcntl.h: Don't mark posix_fallocate with __THROW. + * libio/fileops.c: Use not-cancelable syscalls for fclose. + * libio/iopopen.c: Use no-cancelable syscalls. + * libio/stdio.h: Mark popen and pclose with __THROW again. + * misc/Makefile (CFLAGS-syslog.c): Add -fexceptions. + * misc/syslog.c: Fix locking and cancellation cleanup handling. + * posix/unistd.h: Mark ttyname and ttyname_r again with __THROW. + * stdio-common/Makefile (CFLAGS-tmpfile.c, CFLAGS-tmpfile64.c, + CFLAGS-tempname.c): Add -fexceptions. + * stdlib/Makefile (CFLAGS-mkstemp.c): Add -fexceptions. + * string/string.h: Mark strerror and strerror_r with _THROW again. + * sysdeps/generic/unwind.inc: New file. Copied from gcc. + * sysdeps/generic/unwind-dw2.c: Update from gcc version. Remove + #ifs since we now need all the code compiled. + * sysdeps/posix/spawni.c: Use close_not_cancel instead of close. + * sysdeps/unix/closedir.c: Use not-cancelable syscalls. + * sysdeps/unix/opendir.c: Likewise. + + * iconvdata/Makefile (modules): Add CP932 and EUC-JP-MS. + Add rule for EUC-JP-MS dependency. + * iconvdata/cp932.c: New file. + * iconvdata/eucjp-ms.c: New file. + * iconvdata/gconv-modules: Add entries for CP932 and EUC-JP-MS. + Patch by MORIYAMA Masayuki . + +2003-07-15 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S (__socket): Add + cfi directives. + +2003-07-14 Franz Sirl + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_FIXED_CLONE_SYSCALL): New macro. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Use it. + + * sysdeps/unix/sysv/linux/utimes.c: Include sysdep.h. + +2003-07-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_TGKILL for Alpha appropriately. + +2003-07-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/statfs.h (_STATFS_F_FRSIZE): Define. + * sysdeps/unix/sysv/linux/alpha/bits/statfs.h (_STATFS_F_FRSIZE): + Likewise. + * sysdeps/unix/sysv/linux/s390/bits/statfs.h (_STATFS_F_FRSIZE): + Likewise. + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_UTIMES for x86 and kernels > 2.5.75. + + * sysdeps/unix/sysv/linux/futimes.c (__futimes): Handle case with + second parameter == NULL. + * sysdeps/unix/sysv/linux/utimes.c: New file. + +2003-07-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/futimes.c: Include kernel-features.h. + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_UTIMES): Fix + a typo. + +2003-07-12 Ulrich Drepper + + * time/sys/time.h: Namespace cleanup. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_UTIMES for the architectures which always had the syscall. + * sysdeps/unix/sysv/linux/futimes.c: New file. + +2003-07-12 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR + register across CENABLE and CDISABLE. + +2003-07-11 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sigwait.c: Include string.h. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. + * sysdeps/unix/sysv/linux/sleep.c (__sleep): Cast value to unsigned + int before assigning to max to avoid warnings. + +2003-07-11 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S (__socket): Add + cfi directives. + * sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise. + +2003-07-10 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/elf/start.S: Set section flags of + .data.rel.ro.local to "aw". + +2003-07-10 Ulrich Drepper + + * sysdeps/m68k/Makefile: Remove CLFAGS-.oS addition. + * Makeconfig (CFLAGS-.oS): Use PIC-ccflag instead of pic-ccflag. + (PIC-ccflag): Define. + +2003-07-04 Jakub Jelinek + + * sysdeps/s390/s390-32/elf/start.S: Emit position independent code + if PIC. + * sysdeps/s390/s390-64/elf/start.S: Likewise. + +2003-07-07 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address) + into .data.rel.ro.local section if PIC to avoid DT_TEXTREL. + +2003-07-07 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Version + __ASSUME_CORRECT_SI_PID and __ASSUME_TGKILL if possible. + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Adjust for + compilation with HAVE_AUX_SECURE defined. + +2003-07-05 Richard Henderson + + * sysdeps/alpha/elf/initfini.c: Avoid .ent/.end. + +2003-07-03 Ulrich Drepper + + * configure.in: Also check for .cfi_rel_offset pseudo-op. + +2003-07-03 Jakub Jelinek + + * sysdeps/unix/sysv/linux/prof-freq.c (__profile_frequency): Fix a + typo. + +2003-07-03 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_CLKTCK): + Define. + * sysdeps/unix/sysv/linux/prof-freq.h: New file. + +2003-07-02 Jakub Jelinek + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Protect new_sysinfo + decl and use with #ifdef NEED_DL_SYSINFO. + +2003-07-02 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't set + GL(dl_sysinfo) unles GL(dl_sysinfo_dso) is also set. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_VSYSCALL only for 2.5.69 and up since this is when the + vsyscall DSO was added. + + * posix/bits/posix1_lim.h (_POSIX_NGROUPS_MAX): Define to 8 or 0 + depending on selected standard. + (NGROUPS_MAX): Define to 8 if not defined. + +2003-07-02 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: New file. + +2003-05-04 H.J. Lu + + * malloc/arena.c (arena_get2): Add atomic_write_barrier. + * malloc/thread-m.h: Include . + (atomic_full_barrier): Provide default. + (atomic_read_barrier): Likewise. + (atomic_write_barrier): Likewise. + * sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define. + +2003-06-30 Ulrich Drepper + + * sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET. + +2003-06-30 Richard Henderson + + * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int): + Invert the sense of the return value. + (__arch_exchange_16_int): Fix paste-o. + (__arch_exchange_{32,64}_int): Fix think-o. + + * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly. + +2003-06-30 Richard Henderson + + * include/sys/resource.h (__getrusage): Mark hidden. + * include/sys/time.h (__settimeofday, __setitimer, __utimes): Likewise. + * include/sys/wait.h (__wait4): Likewise. + +2003-06-17 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/xstatconv.c: Handle STAT_IS_KERNEL_STAT + case. + (xstat_conv): Rename to __xstat_conv and remove static inline. + (xstat64_conv): Likewise. + +2003-06-29 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sleep.c (__sleep): Handle parameter + values which cannot be handled in one nanosleep call. + +2003-06-25 Alfred M. Szmidt + + * sysdeps/generic/bits/in.h (IPV6_HOPOPTS, IPV6_DSTOPTS): New macros. + (IPV6_RXHOPOPTS, IPV6_RXDSTOPTS): Use them. + + * sysdeps/generic/ifreq.h (__if_nextreq) [_HAVE_SA_LEN]: Typo fix. + +2003-06-04 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/net/if_arp.h: Sync with kernel header, + fix typo. + +2003-06-26 Steven Munroe + + * sysdeps/unix/sysv/linux/xstatconv.h [!STAT_IS_KERNEL_STAT]: + Conditionalize function definitions that use struct kernel_stat. + * sysdeps/unix/sysv/linux/fxstat.c: Remove __syscall_fstat extern. + * sysdeps/unix/sysv/linux/lxstat.c: Remove __syscall_lstat extern. + * sysdeps/unix/sysv/linux/xstat.c: Remove __syscall_stat extern. + +2003-06-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop): Add real + implementation. + +2003-06-07 Thorsten Kukuk + + * nis/nss_compat/compat-grp.c: Remove unused nis_first variable. + (getgrent_next_file): Don't store group name to early in blacklist. + + * nis/nss_compat/compat-pwd.c (internal_getpwuid_r): Save strlen result + and use memcpy instead of strcpy. + +2003-06-28 Ulrich Drepper + + * nis/nss_compat/compat-grp.c: Optimize several little things. Use + stream unlocked. + * nis/nss_compat/compat-initgroups.c: Likewise. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c: Likewise. + +2003-06-27 Thorsten Kukuk + + * nis/nss_compat/compat-initgroups.c: Don't use our own NIS/NIS+ + functions, dlopen corresponding NSS module instead. + +2003-06-27 Jeroen Dekkers + + * sysdeps/mach/hurd/alpha/init-first.c: Remove call to __libc_init. + * sysdeps/mach/hurd/i386/init-first.c: Likewise. + * sysdeps/mach/hurd/mips/init-first.c: Likewise. + * sysdeps/mach/hurd/powerpc/init-first.c: Likewise. + +2003-06-27 Ulrich Drepper + + * rt/Makefile (CFLAGS-librt-cancellation.c): Define. + +2003-06-26 Roland McGrath + + * sysdeps/mach/configure.in: Barf rather than define NO_CREATION_TIME. + * sysdeps/mach/configure: Regenerated. + * sysdeps/mach/hurd/times.c (times_init): Function removed. + (__times): Assume `creation_time' field is available. + * sysdeps/mach/hurd/Makefile [$(subdir) = csu] (sysdep_routines): + Don't append set-init. + * sysdeps/mach/hurd/set-init.c: File removed. + +2003-06-26 Roland McGrath + + * elf/elf.h (AT_SECURE): New macro. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Grok it, + set __libc_enable_secure. + (_dl_show_auxv): Add AT_SECURE to name table. + * elf/dl-support.c (_dl_aux_init): Grok AT_SECURE, set + __libc_enable_secure and __libc_enable_secure_decided. + * sysdeps/unix/sysv/linux/ldsodefs.h + [__ASSUME_AT_SECURE] (HAVE_AUX_SECURE): Define it. + * sysdeps/unix/sysv/linux/kernel-features.h + [__LINUX_KERNEL_VERSION >= 132426] (__ASSUME_AT_SECURE): Define it. + +2003-06-26 Ulrich Drepper + + * io/test-utime.c: If _STATBUF_ST_NSEC is defined, adjust lower + boundary test to take rounding of nanoseconds into account. + + * sysdeps/unix/sysv/linux/bits/stat.h: Define _STATBUF_ST_NSEC. + * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise. + +2003-06-26 Andreas Schwab + + * sysdeps/m68k/fpu/bits/mathinline.h: Don't inline frexp. + * sysdeps/m68k/fpu/s_frexp.c: Put implementation here. + * sysdeps/m68k/fpu/s_frexpl.c: Fix to handle unnormalized numbers. + +2003-06-17 Thorsten Kukuk + + * nis/Makefile: Remove NIS/NIS+ files from nss_compat module. + * nis/nss_compat/compat-grp.c: Don't use our own NIS/NIS+ functions, + dlopen corresponding NSS module instead. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c: Likewise. + * nis/nss_compat/compat-initgroups.c: Disabled for now. + * nss/Versions: Export __nss_lookup_function. + +2003-06-19 Daniel Jacobowitz + + * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features + for the SH architecture. + +2003-06-25 Thorsten Kukuk + + * csu/Makefile: Use CPPFLAGS to find correct linux/version.h. + +2003-06-25 Andreas Jaeger + + * stdlib/tst-strtod.c (main): Declare constant long double as + suggested by Jakub Jelinek and Andreas Schwab. + + * posix/tst-nanosleep.c: Include for nanosleep + declaration. + + * stdio-common/tst-fphex.c: Fix format string. + + * posix/transbug.c: Include for memset and strlen + declarations. + + * stdio-common/tst-sprintf.c: Include for free declaration. + + * stdlib/tst-strtod.c (main): Pass long double value. + + * test-skeleton.c: Include for nanosleep declaration. + +2003-06-25 Ulrich Drepper + + * include/time.h: Don't define CLOCK_IDFIELD_SIZE if _ISOMAC is + defined. + +2003-06-11 Jakub Jelinek + + * elf/Versions (libc): Add _dl_open_hook@GLIBC_PRIVATE. + * elf/dl-libc.c (struct dl_open_hook): New. + (_dl_open_hook): New variable. + (do_dlsym_private): New function. + (__libc_dlopen_mode) [!SHARED]: Lookup _dl_open_hook@GLIBC_PRIVATE + and initialize it if found. + (__libc_dlopen_mode) [SHARED]: If _dl_open_hook is non-NULL, + call dlopen_mode hook. + (__libc_dlsym) [SHARED]: If _dl_open_hook is non-NULL, + call dlsym hook. + (__libc_dlclose) [SHARED]: If _dl_open_hook is non-NULL, + call dlclose hook. + +2003-06-25 Ulrich Drepper + + * sysdeps/unix/sysv/linux/cris/sysdep.h (INLINE_SYSCALL): Cast + result to long int so that extensions to long long int work. + Patch by Uwe Reimann . + +2003-06-19 Jakub Jelinek + + * elf/ldconfig.c (main): Use add_system_dir instead of add_dir. + * sysdeps/generic/dl-cache.h (add_system_dir): Define. + * sysdeps/unix/sysv/linux/x86_64/dl-cache.h: Include sparc + dl-cache.h. + * sysdeps/unix/sysv/linux/s390/dl-cache.h: New file. + * sysdeps/unix/sysv/linux/mips/dl-cache.h: New file. + * sysdeps/unix/sysv/linux/powerpc/dl-cache.h: New file. + * sysdeps/unix/sysv/linux/sparc/dl-cache.h: New file. + +2003-06-19 Jakub Jelinek + + * test-skeleton.c (timeout_handler): If waitpid returned 0, + retry once after a second. If killed == 0, assume + WTERMSIG (status) == SIGKILL. + +2003-06-18 Roland McGrath + + * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Catch uninitialized + elements in the table instead of printing an empty name string. + +2003-06-05 Roland McGrath + + * elf/elf.h (PT_GNU_STACK): New macro. + +2003-06-24 Ulrich Drepper + + * include/time.h: Define CLOCK_IDFIELD_SIZE. + * sysdeps/posix/clock_getres.c: Recognize thread CPU clock IDs. + * sysdeps/unix/clock_gettime.c: Likewise. + * sysdeps/unix/clock_settime.c: Likewise. + * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Adjust for new + clock id for thread CPU clocks. + + * sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Add support + for the fstatfs64 syscall. + * sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Add support for + the statfs64 syscall. + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_STATFS64 appropriately. + + * sysdeps/unix/sysv/linux/internal_statvfs.c: Use f_frsize field + from statfs structure if it has been filled in. + + * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_frsize + field. + (struct statfs64): Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise. + +2003-06-24 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/syscalls.list (pread, pwrite): Use + the 64-bit syscall name. + + * sysdeps/alpha/setjmp.S (_setjmp, setjmp): Mark .prologue. + + * sysdeps/alpha/fpu/bits/mathinline.h: Honor + __LIBC_INTERNAL_MATH_INLINES. Implement __signbitf, __signbit. + + * sysdeps/unix/sysv/linux/alpha/clone.S: Use HIDDEN_JUMPTARGET. + * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use + libc_hidden_def. + * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/setfpucw.c: Use libc_hidden_proto + on them. + + * sysdeps/alpha/bits/atomic.h: New file. + +2003-06-24 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Update. + +2003-06-24 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/stat.h (_STAT_VER_LINUX): Avoid + redeclaration with 32-bit code. + +2003-05-19 Ed Connell + + * sysdeps/unix/sysv/linux/i386/getcontext.S (getcontext): Retain + floating point mask. + * sysdeps/i386/fpu/fegetenv.c (fegetenv): Likewise. + +2003-06-23 Ulrich Drepper + + * sysdeps/pthread/aio_misc.h: Mark __aio_requests_mutex, + __aio_enqueue_request, __aio_find_req, __aio_find_req_fd, + __aio_free_request, __aio_notify, and __aio_sigqueue as hidden. + + * sysdeps/pthread/aio_suspend.c (aio_suspend): Set errno to the result + of pthread_cond_wait if there was an error. Use pthread_cleanup_* + instead of __libc_cleanup_region_*. + +2003-06-20 Richard Henderson + + * sysdeps/unix/make-syscalls.sh: Implement ! prefix for strong aliases. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (open, open64): New. + +2003-06-20 Richard Henderson + + * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL1): Use __builtin_expect. + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ST_INO_64_BIT) + Unset for alpha. + (__ASSUME_TIMEVAL64): Set for alpha. + * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove + adjtimex, osf_sigprocmask, old_adjtimex. + * sysdeps/unix/sysv/linux/alpha/adjtime.c: Use INLINE_SYSCALL, + __ASSUME_TIMEVAL64. Reorg tv64 functions to avoid uninit variable. + * sysdeps/unix/sysv/linux/alpha/getitimer.S: Use __ASSUME_TIMEVAL64. + * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Streamline + PIC code sequence. + * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/sigaction.c: New file. + * sysdeps/unix/sysv/linux/alpha/sigprocmask.c: Use INLINE_SYSCALL. + * sysdeps/unix/sysv/linux/alpha/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove osf_sigprocmask, + sys_ustat, sys_mknod, adjtimex, old_adjtimex. + * sysdeps/unix/sysv/linux/alpha/sysdep.h (INLINE_SYSCALL): Don't + defer to __syscall_name; error for rt_sigaction. + * sysdeps/unix/sysv/linux/alpha/xstatconv.c: Include kernel_stat.h. + +2003-06-18 Ulrich Drepper + + * malloc/malloc.c (public_mALLINFo): Initialize malloc if it + hasn't happened yet. + + * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump): + Fix completely broken implementation. The second parameter is of + type struct ucontext*. + + * sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup): Always + inline. + + * sysdeps/i386/i686/dl-hash.h: Don't inline _dl_elf_hash. + * sysdeps/generic/dl-hash.h: Likewise. + + * sysdeps/generic/memcmp.c: Remove inline from + memcmp_common_alignment and memcmp_not_common_alignment definition. + + * intl/localealias.c (read_alias_file): Determine whether line is + read incompletely early, before we modify the line. + +2003-06-17 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela) + : Don't segfault on undefined symbols. + +2003-06-17 Paul Mackerras + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: New file. + * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Adjust. + +2003-06-17 Jakub Jelinek + + * posix/regcomp.c (build_word_op): Use alnum instead of alpha class. + +2003-06-17 Ulrich Drepper + + * sysdeps/unix/clock_nanosleep.c (clock_nanosleep): nanosleep + takes care of enabling cancellation. + + * sysdeps/pthread/aio_suspend.c (aio_suspend): Make aio_suspend + cancelable. It's not correct to disable cancellation. Instead of + a cleanup handler. + + * sysdeps/unix/sysv/linux/sigtimedwait.c: If SIGCANCEL is defined + and part of the incoming set, create a temporary set without this + signal. + * sysdeps/unix/sysv/linux/sigwait.c: Likewise. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + + * sysdeps/unix/sysv/linux/sleep.c: Use CANCELLATION_P if defined before + returning because seconds==0. Add __builtin_expect. + +2003-06-16 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/socket.S: Add unwind information. + + * sysdeps/unix/sysv/linux/wait.c (__libc_wait): Fix type of result + variable. + +2003-06-16 Thorsten Kukuk + + * include/libc-symbols.h: Add static_link_warning macro. + * grp/initgroups.c: Print linker warning if this function + is called in a static linked binary. + * nss/getXXbyYY.c: Likewise. + * nss/getXXbyYY_r.c: Likewise. + * nss/getXXent.c: Likewise. + * nss/getXXent_r.c: Likewise. + * sysdeps/posix/getaddrinfo.c: Likewise. + +2003-06-16 Bruno Haible + + * iconvdata/gconv-modules (ISO-8859-15): Add aliases ISO_8859-15, + LATIN-9. + (ISO-8859-16): Add aliases ISO_8859-16:2001, ISO_8859-16. + (IBM1047): Add alias IBM-1047. + (GBK): Add aliases MS936, WINDOWS-936. + +2003-06-16 Jakub Jelinek + + * sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Define even if + defined __ASSUME_STAT64_SYSCALL && defined XSTAT_IS_XSTAT64. + (__xstat64_conv): Change xstat_conv to __xstat_conv. + +2003-06-16 Ulrich Drepper + + * locale/iso-639.def: Update from current official ISO 639. + + * math/tgmath.h (__TGMATH_UNARY_IMAG_ONLY): Removed. + +2003-06-15 Andreas Jaeger + + * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Correct setting + of MXCSR. + * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Likewise. + * sysdeps/i386/fpu/feholdexcpt.c (feholdexcept): Likewise. + Reported by Arnaud Desitter . + + * math/tgmath.h (carg): Handle real arguments. + (conj): Likewise. + (cproj): Likewise. + (cimag): Likewise. + (creal): Likewise. + + * math/Makefile (CFLAGS-test-tgmath-ret.c): New. + (tests): Add test-tgmath-ret. + * math/test-tgmath-ret.c: New file. + + * math/tgmath.h (ilogb): Return always an int. + +2003-06-16 Ulrich Drepper + + * elf/rtld.c (dl_main): Use l_map_start not l_addr in Phdr + computation so that prelinking works. + +2003-06-15 Ulrich Drepper + + * elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic + linker's map. + * elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the + dynamic linker's map. + + Fix cancellation point handling wrt exception based cleanup. + * io/Makefile: Compile fcntl.c, poll.c, and lockf.c with exceptions. + * misc/Makefile: Compile pselect.c, readv.c, writev.c, and usleep.c + with exceptions. + * posix/Makefile: Compile pread.c, pread64.c, pwrite.c, pwrite64.c, + sleep.c, wait.c, waitid.c, and waitpid.c with exceptions. + * rt/Makefile: Compile aio_suspend.c and clock_nanosleep.c with + exceptions. + * signal/Makefile: Compile sigpause.c, sigsuspend.c, sigtimedwait.c, + sigwait.c, and sigwaitinfo.c with exceptions. + * stdlib/Makefile: Compile system.c with exceptions. + * sysvipc/Makefile: Compile msgrcv.c and msgsnd.c with exceptions. + * termios/Makefile: Compile tcdrain.c with exceptions. + * sysdeps/generic/lockf.c: Add comment explaining the cancellation + situation. + * sysdeps/generic/pselect.c: Likewise. + * sysdeps/posix/sigpause.c: Likewise. + * sysdeps/posix/system.c: Likewise. + * sysdeps/posix/waitid.c: Likewise. + * sysdeps/unix/sysv/linux/sleep.c: Likewise. + * sysdeps/unix/sysv/linux/usleep.c: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Major rewrite of + INTERNAL_SYSCALL to not use push inside asm statement so that + unwind info is correct around the syscall. + * sysdeps/unix/clock_nanosleep.c: Add cancellation support. + * sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise. + +2003-06-15 Andreas Jaeger + + * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Add CFI directives. + +2003-06-15 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/Makefile: Add missing endif and + create $(objpfx). + +2003-06-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/check_pf.c (__check_pf): Use __close, + not close. + + * inet/inet6_option.c (inet6_option_alloc): Add libc_hidden_def. + * include/netinet/in.h (inet6_option_alloc): Add libc_hidden_proto + definition. + + * inet/netinet/ip6.h (IP6OPT_PAD1, IP6OPT_PADN): Define. + * inet/netinet/in.h: Add prototypes for inet6_option_* functions. + * inet/Makefile (routines): Add inet6_option. + * inet/inet6_option.c: New file. + * inet/Versions [GLIBC_2.3.3] (libc): Add inet6_option_space, + inet6_option_init, inet6_option_append, inet6_option_alloc, + inet6_option_next, and inet6_option_find. + +2003-06-13 Ulrich Drepper + + * inet/netinet/ip6.h (struct ip6_ext): Define. + + * sysdeps/unix/sysv/linux/sys/param.h (howmany): Optimize for gcc. + + Fixing gcc 3.3 warnings, part II. + * argp/argp-help.c (hol_entry_long_iterate): Always inline. + * elf/dl-load.c (cache_rpath): Don't inline. + * iconvdata/cns11642l2.h: Always inline all functions. + * iconvdata/iso-ir-165.h: Likewise. + * locale/Makefile (aux): Add coll-lookup. + * locale/coll-lookup.c: New file. + * locale/coll-lookup.h (collidx_table_lookup): Do not define here. + (collseq_table_lookup): Likewise. + * locale/weightwc.h: Adjust collidx_table_lookup calls for name change. + * posix/fnmatch_loop.c: Adjust collseq_table_lookup calls for name + change. + * posix/regcomp.c: Likewise. + * posix/regexec.c: Likewise. + * locale/programs/3level.h (*_get): Always inline. + * locale/programs/locfile.h: Move definition of handle_copy to... + * locale/programs/locfile.c: ...here. + * locale/programs/ld-collate.c (obstack_int32_grow): Always inline. + (obstack_int32_grow_fast): Likewise. + (utf8_encode): Likewise. + (find_element): Avoid aliasing problems. + (insert_value): Likewise. + (collate_read): Likewise. + * nss/getent.c (print_hosts): Don't inline + (print_networks): Likewise. + (print_shadow): Likewise. + (build_doc): Likewise. + * nss/nss_files/files-parse.c [ENTDATA] (parser_stclass): Don't + inline. + * posix/regcomp.c (re_set_fastmap): Always inline. + (seek_collating_symbol_entry): Likewise. + (lookup_collation_sequence_value): Likewise. + (build_range_exp): Likewise. + (build_collating_symbol): Likewise. + * posix/regexec.c (acquire_init_state_context): Don't inline. + (clean_state_log_if_need): Likewise. + * resolv/res_send.c (eConsIovec): Rewrite to not return struct and + adjust all callers. + (evConsTime): Likewise. + (evAddTime): Likewise. + (evSubTime): Likewise. + (evNowTime): Likewise. + (evTimeSpec): Removed. + (__libc_res_nsend): Avoid aliasing problem. + * sysdeps/unix/sysv/linux/ifreq.h: Move old_siocgifconf definition to.. + * sysdeps/unix/sysv/linux/ifreq.c: ...here. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_dl_string_hwcap): + Always inline. + (_dl_string_platform): Likewise. + * wctype/wchar-lookup.h (wctype_table_lookup): Always inline. + (wcwidth_table_lookup): Likewise. + (wctrans_table_lookup): Likewise. + + * sysdeps/unix/sysv/linux/sys/epoll.h: Include . + +2003-06-12 Ulrich Drepper + + * wcsmbs/wchar.h: Define wint_t in std namespace, too [PR libc/5034]. + +2003-05-29 Jim Meyering + + * time/strftime.c (my_strftime) [!defined _NL_CURRENT + && HAVE_STRFTIME]: Use underlying_strftime for %r. + Suggested by Daniel Yacob . + +2003-06-12 Steven Munroe + + * sysdeps/powerpc/powerpc64/dl-machine.h (RTLD_START): Replace + @got notation with @toc. + * sysdeps/powerpc/powerpc64/sysdep.h (CALL_MCOUNT): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Likewise. + +2003-06-12 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Set no_inet6_date also + if only PF_INET address is needed. + + * nss/getXXbyYY_r.c: Make sure we always return a nonzero value in + case of an error. + + * scripts/config.guess: Update from upstream version. + * scripts/config.sub: Likewise. + +2003-06-12 Jakub Jelinek + + * locale/programs/ld-time.c (time_output): Also copy the era format, + not only the name. + +2003-06-12 H.J. Lu + + * posix/transbug.c (run_test): Return 1 for failure. + (do_test): Compare only if run_test is successful. + +2003-06-12 Simon Josefsson + + * argp/argp.h [!__THROW]: Define if undefined. + +2003-06-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/cris/sysdep.h: Fix handling of syscalls with + more than four parameters. + Patch by Uwe Reimann . + +2003-06-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file. + * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: New file. + * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: New file. + + * stdio-common/printf-parsemb.c: Include stdlib.h and sys/param.h. + +2003-06-12 Roland McGrath + + * Makerules ($(objpfx)stubs): Rewrite sed magic. + +2003-02-28 Isamu Hasegawa + + * posix/regcomp.c (parse_expression): Deliver translation to + build_word_op, and build_charclass. + (build_charclass): Apply translation for character classes too. + (build_word_op): Deliver translation to build_charclass. + * posix/transbug.c: New file. + * posix/Makefile (tests): Add transbug. + +2003-06-04 Paolo Bonzini + + * posix/regexec.c (group_nodes_into_DFAstates): Check for + NEXT_ENDBUF_CONSTRAINT. Move check for constraints which do a + 'continue' before the others. + +2003-06-11 Ulrich Drepper + + * dirent/scandir.c (SCANDIR): Reset errno after calling selector + function [PR libc/5045]. + + * sysdeps/i386/bits/byteswap.h (__bswap_32): Use bswap instruction + also for P4. + + * time/tzfile.c: Add a couple of __builtin_expect. + + Remove warnings gcc 3.3 shows. + * argp/argp-help.c (hol_entry_short_iterate): Don't inline. + * elf/dl-load.c (fillin_rpath): Likewise. + (add_path): Likewise. + * elf/dl-version.c (find_needed): Always inline. + * elf/do-lookup.c (FCT): Don't inline. + * iconv/Makefile: Extend vpath to intl subdir. + (iconvconfig-modules): Add hash-string. + * iconv/gconv_charset.h (strip): Don't inline. + (upstr): Always inline. + Move __gconv_compare_alias prototype to... + * iconv/gconv_int.h: ...here. + * iconv/gconv_db.c: Don't include gconv_charset.h. + * iconv/gconv_conf.c (add_alias): Don't inline. + (insert_module): Likewise. + * iconv/gconv_simple.c (internal_ucs4_loop): Always inline. + (internal_ucs4_loop_unaligned): Likewise. + (internal_ucs4_loop_single): Likewise. + (ucs4_internal_loop): Likewise. + (ucs4_internal_loop_unaligned): Likewise. + (ucs4_internal_loop_single): Likewise. + (internal_ucs4le_loop): Always inline. + (internal_ucs4le_loop_unaligned): Likewise. + (internal_ucs4le_loop_single): Likewise. + (ucs4le_internal_loop): Likewise. + (ucs4le_internal_loop_unaligned): Likewise. + (ucs4le_internal_loop_single): Likewise. + * iconv/loop.c: Always inline the defined functions. + * iconvdata/cns11642.h: Likewise. + * iconvdata/cns11642l1.h: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/gb2312.h: Likewise. + * iconvdata/jis0201.h: Likewise. + * iconvdata/jis0208.h: Likewise. + * iconvdata/jis0212.h: Likewise. + * iconvdata/jisx0213.h: Likewise. + * iconvdata/ksc5601.h: Likewise. + * iconvdata/utf-7.c (base64): Don't inline. + * include/libc-symbols.h (symbol_set_first_element): Add cast + (symbol_set_end_p): Likewise. + * include/set-hooks (RUN_HOOK): Likewise. + * inet/Makefile (aux): Add ifreq. + * intl/Makefile (aux): Add some entries from routines. Add + hash-string. + * intl/hash-string.c: New file. + * intl/hash-string.h: Remove hash_string definition. Declare + __hash_string. + * iconv/gconv_cache.c (find_module_idx): Adjust hash_string caller. + * iconv/iconvconfig.c (new_name): Likewise. + * intl/dcigettext.c (_nl_find_msg): Likewise. + * intl/loadmsgcat.c (_nl_load_domain): Likewise. + * io/ftw.c (open_dir_stream): Always inline. + (process_entry): Don't inline. + * locale/findlocale.c: Include gconv_int.h. + * locale/setlocale.c (new_composite_name): Don't inline. + * locale/weight.h (findidx): Always inline. + * locale/weightwc.h (findidx): Likewise. + * locale/programs/linereader.c (lr_ignore_rest): Define here. + * locale/programs/linereader.h (lr_ignore_rest): Don't define here, + just declare it. + (lr_getc): Always inline. + (lr_ungetc): Likewise. + * nss/nss_files/files-parse.c (parse_list): Likewise. + * stdio-common/Makefile (aux): Add printf-parsemb and + printf-parsewc. + * stdio-common/_itoa.h (_itoa_word): Always inline. + (_fitoa_word, _fitoa): Don't define here, only declare. + * stdio-common/_itoa.c (_iftoa_word): Add here. + (_fitoa): Likewise. + * stdio-common/_itowa.h (_itowa_word): Always inline. + * stdio-common/printf-parse.h (read_int): Don't inline. + (find_spec): Don't define. + Declare __find_specmb and __find_specwc. + (parse_one_spec): Don't define. + Declare __parse_one_specmb and __parse_one_specwc. + * stdio-common/printf-parsemb.c: New file. + * stdio-common/printf-parsewc.c: New file. + * stdio-common/vfprintf.c: Update calls to find_spec and + parse_one_spec for new names. + * stdio-common/printf-prs.c: Likewise. Define DONT_NEED_READ_INT. + * stdlib/Makefile (aux): Add grouping and groupingwc. + * stdlib/grouping.c: New file. + * stdlib/groupingwc.c: New file. + * stdlib/grouping.h (correctly_grouped_prefix): Don't define here. + Just prototype. + * stdlib/rpmatch.c (try): Don't inline. + * stdlib/strtod.c (round_and_return): Don't line. + (str_to_mpn): Likewise. + (__mpn_lshift_1): Always inline. Optimize only for constant count. + Adjust for name change of correctly_grouped_prefix. + * sysdeps/generic/strtol.c: Adjust for name change of + correctly_grouped_prefix. + * string/strxfrm.c (utf8_encode): Don't inline. + * sysdeps/generic/dl-cache.c: Define _dl_cache_libcmp. + * sysdeps/generic/dl-cache.h: Just declare _dl_cache_libcmp. + * sysdeps/generic/ifreq.c: New file. + * sysdeps/unix/sysv/linux/ifreq.c: New file. + * sysdeps/generic/ifreq.h (__ifreq): Only declare here. + * sysdeps/unix/sysv/linux/ifreq.h: Likewise. + * sysdeps/generic/ldsodefs.h (_dl_name_match_p): Always inline. + * sysdeps/generic/unwind-dw2-fde.c (start_fde_sort): Don't inline. + (fde_split): Likewise. + (fde_merge): Likewise. + (end_fde_sort): Likewise. + (init_object): Likewise. + (binary_search_unencoded_fdes): Likewise. + (binary_search_single_encoding_fdes): Likewise. + (binary_search_mixed_encoding_fdes): Likewise. + * sysdeps/generic/wordexp.c (w_addchar): Don't inline. + * sysdeps/i386/dl-machine.c (elf_machine_runtime_setup): Always inline. + * sysdeps/posix/sprofil.c (profil_count): Don't inline. + * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines): + Add xstatconv. + * sysdeps/unix/sysv/linux/xstatconv.h: New file. + * sysdeps/unix/sysv/linux/xstatconv.c: Don't inline the function. + Export them. Prepend __ to name. + * sysdeps/unix/sysv/linux/Dist: Add xstatconv.h. + * sysdeps/unix/sysv/linux/fxstat.c: Adjust for name change of + conversion functions. + * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/xstat64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max, + __statfs_filesize_max, __statfs_symlinks): Define here. __ prepended + to name. Change callers. + * sysdeps/unix/sysv/linux/pathconf.h (__statfs_link_max, + __statfs_filesize_max, __statfs_symlinks): Don't define here, just + declare. + * sysdeps/unix/sysv/linux/fpathconf.c: Change all callers. + * time/tzfile.c (decode): Always inline. + * wcsmbs/wcsnrtombs.c: Change type of inbuf to unsigned char*. + Remove cast in tomb function call. + * wcsmbs/wcsrtombs.c Likewise. + * wcsmbs/wcstob.c: Introduce new temp variable to take pointer in + tomb function call. + +2003-06-10 Ulrich Drepper + + * po/zh_CN.po: Update from translation team. + +2003-06-10 Jakub Jelinek + + * sysdeps/unix/sysv/linux/bits/in.h (IPV6_V6ONLY, IPV6_JOIN_ANYCAST, + IPV6_LEAVE_ANYCAST, IPV6_IPSEC_POLICY, IPV6_XFRM_POLICY): Define. + +2003-06-10 Ulrich Drepper + + * inet/Makefile (aux): Add check_pf. + * include/ifaddrs.h: Add prototype for __check_pf. + * sysdeps/generic/check_pf.c: New file. + * sysdeps/unix/sysv/linux/check_pf.c: New file. + * sysdeps/unix/sysv/linux/ifaddrs.h (__no_netlink_support): Renamed + from no_netlink_support. Export. + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't call getifaddrs, + call __check_pf. + + * sysdeps/generic/ifaddrs.h: Add libc_hidden_def. + + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't leak memory + from getifaddr calls. + +2003-06-09 Jakub Jelinek + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_SETRESGID_SYSCALL): Define. + * sysdeps/unix/sysv/linux/setegid.c: Use __ASSUME_SETRESGID_SYSCALL + instead of __ASSUME_SETRESUID_SYSCALL. + (setegid): Only use setresgid32 inline syscall if __NR_setresgid32 is + defined. + * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Only use setresgid32 + inline syscall if __NR_setresuid32 is defined. + * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use + __ASSUME_SETRESGID_SYSCALL instead of __ASSUME_SETRESUID_SYSCALL. + * sysdeps/unix/sysv/linux/i386/setregid.c: Backout last changes. + * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c (setegid): Protect + code handling non-existant setresgid32 syscall with + #if __ASSUME_SETRESGID_SYSCALL == 0. + +2003-06-09 Andreas Schwab + + * sunrpc/Makefile (generated): Remove rpc-proto.c, rpc-proto.d. + ($(rpcsvc:%.x=$(objpfx)x%$o)): Don't depend on + $(objpfx)rpc-proto.d. + (rpcsvc-dt-files, rpcsvc-depfiles): Define. Include + $(rpcsvc-depfiles) instead of $(objpfx)rpc-proto.d. + ($(objpfx)rpc-proto.d, $(objpfx)rpc-proto.c): Remove rules. + +2003-06-08 Ulrich Drepper + + * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Use setresuid32 + syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is + defined drop compatibility code. + * sysdeps/unix/sysv/linux/setegid.c (setegid): Use setresgid32 + syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is + defined drop compatibility code. + * sysdeps/unix/sysv/linux/i386/seteuid.c (seteuid): Use + setresuid32 syscall directly if possible. + * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use + setresgid32 syscall directly if possible. + * sysdeps/unix/sysv/linux/i386/setregid.c (__setregid): Make POSIX + compliant. Don't change sgid. + * sysdeps/unix/sysv/linux/i386/setreuid.c (__setreuid): Make POSIX + compliant. Don't change suid. + + * config.h.in: Add have-forced-unwind. + * configure.in: Add AC_SUBST(libc_cv_forced_unwind). + +2003-06-07 Ulrich Drepper + + * test-skeleton.c (main): If EXPECTED_STATUS is defined check that + returned status from child matches. + + * Makeconfig (gnulib): Add -lgcc_eh once again. + +2003-06-06 Ulrich Drepper + + * test-skeleton.c (main): Use TEMP_FAILURE_RETRY with waitpid. + + * sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Only allow + %edx for first parameter. This means no pushl and therefore the + unwind info isn't screwed up. + +2003-06-04 Richard Henderson + + * sysdeps/alpha/dl-machine.h (RTLD_START): Fix top-of-stack backtrace. + * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. + * sysdeps/alpha/elf/start.S: Likewise. Remove pointless allocation. + * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Use standard ldgp + entry sequence and explicit relocs. Add unwind info for sigreturn + and rt_sigreturn. + * configure.in (libc_cv_asm_cfi_directives): Test .cfi_remember_state. + + * sysdeps/unix/sysv/linux/alpha/syscalls.list (semtimedop): New. + Annotate some parameters. + * sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_semtimedop): New. + + * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Fix typo in conversion. + + * include/libc-symbols.h (symbol_set_declare): Use arrays + of unspecified size. + +2003-06-04 Jakub Jelinek + + * config.make.in (ASFLAGS-config): New. + * Makeconfig (ASFLAGS): Append $(ASFLAGS-config). + * configure.in (libc_cv_as_noexecstack): New check. + (ASFLAGS_config): Substitute. + +2003-06-04 Jakub Jelinek + + * sysdeps/i386/fpu/bits/mathinline.h (log1p, asinh, acosh, atanh, + hypot, logb): Protect with #ifdef __FAST_MATH__. + +2003-06-04 Thorsten Kukuk + + * sysdeps/i386/fpu/bits/mathinline.h (ldexpf, ldexpl): Protect with + #ifdef __FAST_MATH__. + +2003-06-03 Ulrich Drepper + + * sysdeps/generic/glob.c [HAVE_D_TYPE] (glob_in_dir): Also allow + DT_LNK entries if GLOB_ONLYDIR is set [PR libc/5043]. + * posix/globtest.sh: Adjust for this change. + + * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_open): Call getsockname + to get the actual PID value used in the records passed up. + (getifaddrs): Don't initialize nh.pid here. + +2003-06-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_receive): Minor + optimization. + + * po/zh_CN.po: Update from translation team. + + * posix/getconf.c (main): Also recognize names without the + _POSIX_ prefix. + + * elf/Makefile (CFLAGS-dl-lookup.c): Define. + +2003-06-02 Bernd Schmidt + + * sysdeps/i386/fpu/bits/mathinline.h (sqrt, __sqrtl, ldexp, + ldexpf, ldexpl): Only define if __FAST_MATH__. + +2003-06-02 Richard C. Bilson + + Replace hard-coded offsets into struct sigcontext with generated file. + * sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: New file. + * sysdeps/unix/sysv/linux/ia64/Makefile + [$(subdir) = stdlib] (gen-as-const-headers): Add it. + * sysdeps/unix/sysv/linux/ia64/ucontext_i.h: Include it instead of + defining SC_* macros here. + +2003-06-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_PID): Remove. + +2003-06-01 Jakub Jelinek + + * sysdeps/i386/dl-machine.h: Include . + +2003-06-01 Ulrich Drepper + + * test-skeleton.c (main): Request getopt to not reorder the + command line. + + * elf/Makefile (CFLAGS-dl-runtime.c): Define. + + * wcsmbs/wcpncpy.c (__wcpncpy): Fix broken implementation to match + stpncpy. + +2003-05-31 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h (SA_NOCLDWAIT): Define. + +2003-05-31 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_plt_conflict): + New function. + (elf_machine_rela) : Avoid + RESOLVE_CONFLICT_FIND_MAP. If RESOLVE_CONFLICT_FIND_MAP is defined, + call elf_machine_plt_conflict instead of elf_machine_fixup_plt. + +2003-05-31 Ulrich Drepper + + * sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add + CFI directives. + + * csu/Makefile: Fix Makefile warnings regarding Scrt1.o. + + * libio/fileops.c (_IO_file_open): Don't mark as inline. + + * sysdeps/ia64/elf/initfini.c (gmon_initializer): Mark with + attribute used. + +2003-05-30 Ulrich Drepper + + * scripts/config.guess: Update from master copy. + * scripts/config.sub: Likewise. + +2003-05-30 Guido Guenther + + * sysdeps/mips/mips64/bsd-_setjmp.S: Include for + SETUP_GP64 and friends. + * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Fix register + names in internal_syscall{6,7}. + * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c [_MIPS_SIM == _ABI64]: Fix + number of syscall arguments. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + +2003-05-30 Andreas Jaeger + + * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Add CFI directives. + + * sysdeps/unix/sysv/linux/x86_64/sigaction.c (RESTORE2): Add CFI + directives. + + * sysdeps/generic/sysdep.h: Add CFI_* macros for C files. + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): + Add CFI directives. + +2003-05-30 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with + SHARED. + +2003-05-11 Andreas Schwab + + * Makerules: Always use -MP together with -MD. + (sed-remove-dotot): Substitute $(..) also at start of line. + ($(stdio_lim:h=st)): Use -MD instead of SUNPRO_DEPENDENCIES. + Generated defines with a single compiler call. + Use $(sed-remove-dotdot). + * mach/Makefile ($(objpfx)mach-syscalls.mk): Use -MD instead + of DEPENDENCIES_OUTPUT, and use $(sed-remove-objpfx). + * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): + Use -MD instead of SUNPRO_DEPENDENCIES, and use $(sed-remove-objpfx). + * sysdeps/unix/sysv/linux/mips/Makefile + ($(objpfx)syscall-%.h): Likewise. + +2003-05-28 Roland McGrath + + * malloc/malloc.h [! __GNUC__] (__const): Define if undefined. + +2003-05-26 Aldy Hernandez + + * soft-fp/soft-fp.h (FP_EX_UNDERFLOW): Define to 0. + +2003-05-28 Roland McGrath + + * sysdeps/unix/sysv/linux/ia64/setcontext.S: Pass fourth argument to + rt_sigprocmask system call. + * sysdeps/unix/sysv/linux/ia64/ucontext_i.h (SC_MASK): Fix value. + From Peter A. Buhr . + +2003-05-28 Ulrich Drepper + + * include/libc-symbols.h: Define hidden attribute for real also if + LIBC_NONSHARED is defined. Patch by Jakub Jelinek. + + * csu/Makefile: Add rules to build Scrt1.o. + * sysdeps/i386/elf/start.S: Make code compilable with SHARED. + * sysdeps/x86_64/elf/start.S: Likewise. + +2003-05-27 Jakub Jelinek + + * stdio-common/vfprintf.c (process_arg, process_string_arg): Use + pa_int/pa_u_int instead of pa_short_int, pa_u_short_int and pa_char. + * stdio-common/printf-parse.h (union printf_arg): Remove pa_char, + pa_short_int, pa_u_short_int and pa_float. + +2003-05-26 Jakub Jelinek + + * libio/strops.c (_IO_str_init_static): Change into a wrapper around + _IO_str_init_static_internal. + (_IO_str_init_static_internal): Moved from _IO_str_init_static, + change size argument to _IO_size_t, don't limit sprintf to 64M. + (_IO_str_init_readonly): Call _IO_str_init_static_internal. + * libio/wstrops.c (_IO_wstr_init_static): Change size argument to + _IO_size_t, don't limit swprintf to 256M. + (_IO_wstr_init_readonly): Remove. + * libio/libioP.h (_IO_str_init_static_internal, _IO_wstr_init_static): + Adjust prototypes. + (_IO_wstr_init_readonly): Remove prototype. + * libio/iovsprintf.c (_IO_vsprintf): Use + _IO_str_init_static_internal instead of INTUSE(_IO_str_init_static). + * libio/iovsscanf.c (_IO_vsscanf): Likewise. + * libio/memstream.c (open_memstream): Likewise. + * libio/obprintf.c (_IO_obstack_vfprintf): Likewise. + * libio/vasprintf.c (_IO_vasprintf): Likewise. + * libio/vsnprintf.c (_IO_vsnprintf): Likewise. + * stdio-common/tst-sprintf.c (main): Add new test. + +2003-05-26 Ulrich Drepper + + * stdio-common/vfprintf.c (vfprintf): Be bug-compatible with some + other implementation in respect of multiple uses of parameter with + different types. + +2003-05-25 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_FUTEX_REQUEUE for >= 2.5.70. + +2003-05-22 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: Add CFI + directives. + * sysdeps/unix/sysv/linux/x86_64/time.S: Likewise. + * sysdeps/x86_64/strtok.S: Likewise. + +2003-05-20 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Change SI_ASYNCNL + to -60 and define SI_TKILL. + +2003-05-21 H.J. Lu + + * math/test-fenv.c (feexcp_nomask_test): Fix comment. + (feexcp_mask_test): Likewise. + +2003-05-21 Ulrich Drepper + + * locale/programs/locale.c (main): Fix typo in last patch. + + * csu/elf-init.c: Mark __preinit_array_start, __preinit_array_end, + __init_array_start, __init_array_end, __fini_array_start, and + __fini_array_end as hidden. + +2003-05-21 Petter Reinholdtsen + + * locale/programs/locale.c (main): Report an error if setlocale() + fails [PR libc/2254]. + +2003-05-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/system.c: New file. + +2003-05-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (LOADARGS_0, + LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, + LOADARGS_6): Don't error if syscall argument is a string literal. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (LOADARGS_0, + LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, + LOADARGS_6): Likewise. + +2003-05-21 Andreas Jaeger + + * sysdeps/generic/sysdep.h (cfi_offset, cfi_startproc, + cfi_endproc, cfi_def_cfa, cfi_def_ccfa_register, + cfi_def_cfa_offset, cfi_adjust_cfa_offset, cfi_offset): Define. + + * sysdeps/x86_64/sysdep.h (CALL_MCOUNT): Add cfi directives. + (ENTRY): Likewise. + (END): Likewise. + + * configure.in: Test for asm cfi directives. + + * config.h.in: Add HAVE_ASM_CFI_DIRECTIVES. + +2003-05-17 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/syscall.S: Revert last patch. + + * rt/tst-clock_nanosleep.c: Include for clock_nanosleep. + +2003-05-16 Ulrich Drepper + + * rt/Makefile (tests): Add tst-clock_nanosleep. + * rt/tst-clock_nanosleep.c: New file. + * posix/Makefile (tests): Add tst-nanosleep. + * posix/tst-nanosleep.c: New file. + + * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Fix definition. + + * include/features.h (__USE_XOPEN2K): Define also for + _POSIX_C_SOURCE>=200112L. + + * sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Fold + SI_TKILL code into SI_USER. + * sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise. + + * sysdeps/posix/sigpause.c (do_sigpause): Use sigdelset after all. + +2003-05-15 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): + Remove sym argument, always use refsym. + (__process_machine_rela): Adjust callers. + * sysdeps/powerpc/powerpc64/dl-machine.c (_dl_reloc_overflow): + Likewise. + * sysdeps/powerpc/powerpc32/dl-machine.h (_dl_reloc_overflow): + Adjust prototype. + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise. + +2003-05-15 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Fix typo + (DL_NEED_SYSINFO -> NEED_DL_SYSINFO). If aux value is not known + print numeric values. + +2003-05-12 Thorsten Kukuk + + * inet/netinet/igmp.h: Sync with Linux Kernel 2.5.69 and *BSD. + +2003-05-14 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/umount.c: New file. + +2003-05-14 Jakub Jelinek + + * elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope + even if no DT_NEEDED is present. + +2003-05-13 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix the fix from + 2003-03-27: setjmp is NOT a leaf-routine (due to the call to + __sigjmp_save) so we can't keep the saved unat value in a scratch + register (r16). Use loc2 instead. + +2003-05-13 Ulrich Drepper + + * csu/Makefile: Do compile elf-init with PIC flag since in dynamic + binaries it has to be relocatable. + + * sysdeps/unix/sysv/linux/waitpid.c: Use waitpid syscall is available. + +2003-05-12 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h + (__arch_compare_and_exchange_bool_8_rel): Define. + (__arch_compare_and_exchange_bool_16_rel): Define. + (__ARCH_REL_INSTR): Define if not already defined. + (__arch_atomic_exchange_and_add_32): Add "memory" to clobber list. + (__arch_atomic_decrement_if_positive_32): + Add "memory" to clobber list. + (__arch_compare_and_exchange_val_32_acq): Remove release sync. + (__arch_compare_and_exchange_val_32_rel): Define. + (__arch_atomic_exchange_32): Remove. + (__arch_atomic_exchange_32_acq): Define. + (__arch_atomic_exchange_32_rel): Define. + (atomic_compare_and_exchange_val_rel): Define. + (atomic_exchange_acq): Use __arch_atomic_exchange_*_acq forms. + (atomic_exchange_rel): Define. + * sysdeps/powerpc/powerpc32/bits/atomic.h + (__arch_compare_and_exchange_bool_32_acq): Remove release sync. + (__arch_compare_and_exchange_bool_32_rel): Define. + (__arch_compare_and_exchange_bool_64_rel): Define. + (__arch_compare_and_exchange_val_64_rel): Define. + (__arch_atomic_exchange_64): Remove. + (__arch_atomic_exchange_64_acq): Define. + (__arch_atomic_exchange_64_rel): Define. + * sysdeps/powerpc/powerpc64/bits/atomic.h + (__arch_compare_and_exchange_bool_32_rel): Define. + (__arch_compare_and_exchange_bool_64_acq): Remove release sync. + (__arch_compare_and_exchange_bool_64_rel): Define. + (__arch_compare_and_exchange_val_64_acq): Remove release sync. + (__arch_compare_and_exchange_val_64_rel): Define. + (__arch_atomic_exchange_64): Remove. + (__arch_atomic_exchange_64_acq): Define. + (__arch_atomic_exchange_64_rel): Define. + (__arch_atomic_exchange_and_add_64): Add "memory" to clobber list. + (__arch_atomic_decrement_if_positive_64): + Add "memory" to clobber list. + [!UP](__ARCH_REL_INSTR): Define as lwsync. + +2003-05-11 Andreas Schwab + + * io/Makefile ($(objpfx)ftwtest.out): Use absolute file names. + +2003-05-11 Ulrich Drepper + + * time/tst-strftime.c (do_test): Add tests for - flag. + +2003-05-11 Jim Meyering + + * time/strftime.c (my_strftime): Let the `-' (no-pad) flag affect + the space-padded-by-default conversion specifiers, %e, %k, %l. + +2003-05-11 Andreas Schwab + + * sysdeps/generic/sched_setaffinity.c: Fix parameter name. + +2003-05-10 Ulrich Drepper + + * sysdeps/generic/bits/sched.h: Define cpu_set_t only if not + already defined and when really needed. + * sysdeps/unix/sysv/linux/bits/sched.h: Likewise. + +2003-05-09 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/netinet/igmp.h: Don't include kernel + headers, add defines from kernel header, move it from here... + * inet/netinet/igmp.h: ... to here. + * inet/Makefile (headers): Add netinet/igmp.h. + * sysdeps/unix/sysv/linux/Makefile: Remove netinet/igmp.h. + * sysdeps/unix/sysv/linux/Dist: Remove netinet/igmp.h. + +2003-05-10 Ulrich Drepper + + * sysdeps/pthread/lio_listio64.c (lio_listio64): If SIG == NULL, + use dummy sigevent structure with SIGEV_NONE [PR libc/5015]. + +2003-05-09 Thorsten Kukuk + + * libio/bits/stdio.h: Sync prototypes with libio/stdio.h + (remove __THROW from possible cancellation points). + +2003-05-10 Ulrich Drepper + + * posix/sched.h (CPU_SETSIZE): Define. + +2003-05-09 Ulrich Drepper + + * Makeconfig (gnulib): Remove -lgcc_eh again. + + * posix/sched.h: Change prototypes of sched_getaffinity and + sched_setaffinity. Define CPU_SET, CPU_CLR, CPU_ISSET, and CPU_ZERO. + * sysdeps/generic/sched_getaffinity.c: Adjust definition. + * sysdeps/generic/sched_setaffinity.c: Likewise. + * sysdeps/generic/bits/sched.h: Define __CPU_SETSIZE, __NCPUBITS, + __CPUELT, __CPUMASK, cpu_set_t, __cpu_mask, __CPU_ZERO, __CPU_SET, + __CPU_CLR, and __CPU_ISSET. + * sysdeps/unix/sysv/linux/bits/sched.h: Likewise. + * sysdeps/unix/sysv/linux/sched_getaffinity.c: New file. + * sysdeps/unix/sysv/linux/sched_setaffinity.c: New file. + + * include/atomic.h (atomic_exchange_acq): Renamed from atomic_exchange. + (atomic_exchange_rel): New #define. + * sysdeps/ia64/bits/atomic.h: Likewise. + * sysdeps/i386/i486/bits/atomic.h (atomic_exchange_acq): Renamed from + atomic_exchange. + * sysdeps/m68k/m68020/bits/atomic.h: Likewise. + * sysdeps/powerpc/bits/atomic.h: Likewise. + * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: Likewise. + * sysdeps/sparc/sparc64/bits/atomic.h: Likewise. + * sysdeps/x86_64/bits/atomic.h: Likewise. + * csu/tst-atomic.c: Use atomic_exchange_acq instead of atomic_exchange. + + * sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c: New file. + +2003-05-08 Ulrich Drepper + + * malloc/thread-m.h: Remove special handling of thread_atfork if + HAVE_register_atfork_malloc is defined. + +2003-05-07 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/syscall.S: Add DWARF2 unwind + information. + +2003-05-06 Ulrich Drepper + + * libio/oldiofdopen.c (_IO_old_fdopen): Use _IO_old_init not _IO_init. + * libio/oldiofopen.c (_IO_old_fopen): Likewise. + * libio/libioP.h: Declare _IO_old_init. + * libio/genops.c (_IO_no_init): Split in two. New function + _IO_old_init. + +2003-05-05 Ulrich Drepper + + * sysdeps/generic/enbl-secure.c (__libc_enable_secure_decided): New + variable. + (__libc_init_secure): Don't do anything if __libc_enable_secure_decided + is nonzero. + * include/unistd.h: Declare __libc_enable_secure_decided. + * elf/dl-support.c (_dl_aux_init): Recognize AT_UID, AT_EUID, AT_GID, + and AT_EGID. If all found, set __libc_enable_secure and + __libc_enable_secure_decided. + + * sysdeps/generic/libc-start.c [!SHARED]: Call + __libc_check_standard_fds after __libc_init_first. + +2003-05-05 Roland McGrath + + * Makerules (common-before-compile): New variable. + ($(common-objpfx)%.make): Depend on that instead of $(before-compile). + ($(common-objpfx)%.h $(common-objpfx)%.h.d): Likewise. Move this rule + to after all setting of before-compile. + +2003-05-05 Jakub Jelinek + + * sysdeps/ia64/bits/atomic.h (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq): Cast 0 to mem's type. + * sysdeps/powerpc/powerpc32/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h + (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq, + __arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/sparc/sparc64/bits/atomic.h + (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq): Likewise. + * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq, + __arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/unix/sysv/linux/sh/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/s390/s390-64/backtrace.c (__backtrace): Add cast to shut + up warning. + * sysdeps/s390/fpu/fegetenv.c (fegetenv): Likewise. + + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h + (INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0): + Return long instead of int. + (INTERNAL_SYSCALL_ERROR_P): Cast val to unsigned long, replace + 0xfffff001u with -4095UL. + +2003-05-05 Andreas Jaeger + + * sysdeps/x86_64/fpu_control.h: New from i386. + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (__NR_semtimedop): + Define if not defined. + + * sunrpc/Makefile (generated-dirs): New variable. + * resolv/Makefile (generated): New variable. + +2003-05-04 Roland McGrath + + * csu/Makefile ($(csu-dummies) target rule): Don't use a temp C file. + Depend on $(before-compile). + + * csu/Makefile ($(objpfx)crt%.o): Replace implicit rule with a static + pattern rule. The implicit rule could be ruled out when $(objpfx) + didn't exist at the time of its consideration (ugh!). + + * Makerules (+make-deps): Fix target matching. + Use $(sed-remove-dotdot). + +2003-05-03 Ulrich Drepper + + * nscd/nscd.c (main): Parse config file right after parsing + parameters. Then, if get_stats is true, call receive_print_stats. + Drop parameter from nscd_init call. + (get_stats): New variable. + (parse_opt): Set get_stats, don't call receive_print_stats here. + * nscd/nscd.h: Declare dbs, stat_user, and stat_uid. Adjust nscd_init + prototype. + * nscd/connections.c (stat_user, stat_uid): New variables. + (dbs): Make global. + (nscd_init): Don't read configuration file here. Drop parameter. + (handle_request): Cleanup handling of non-database lookup requests. + * nscd/nscd_conf.c (nscd_parse_file): Recognize stat-user entry. + Get UID of the specified user. Use xstrdup instead of strdup. + * nscd/nscd_stat.c (receive_print_stats): Check UID. If not zero, + check stat_user. + * nscd/Makefile (nscd-modules): Add xstrdup. + * nscd/nscd.conf: Document stat-user entry. + +2003-05-03 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_semtimedop): Define + if not defined. + +2003-04-22 Roland McGrath + + * elf/elf.h (AT_SYSINFO_EHDR): New macro, replaces AT_SYSINFO_EH_FRAME. + * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove + dl_sysinfo_eh_frame member, add dl_sysinfo_dso member instead. + * elf/dl-support.c: Update defn. + * sysdeps/generic/libc-start.c: Don't call __register_frame_info_bases. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]: + Set GL(dl_sysinfo_dso) from AT_SYSINFO_EHDR. + (_dl_show_auxv): Grok AT_SYSINFO_EHDR, not AT_SYSINFO_EH_FRAME. + * elf/rtld.c (dl_main) [NEED_DL_SYSINFO]: If GL(dl_sysinfo_dso) is + set, set up a link_map for the preloaded, prelinked object. + +2003-05-03 Roland McGrath + + * sysdeps/gnu/Makefile (generated): Append errlist-compat.c here, ... + * stdio-common/Makefile: ... not here. + + * csu/Makefile ($(objpfx)initfini.s): Depend on $(before-compile). + * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): Likewise. + +2003-05-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/s390/semtimedop.c: New file. + + * sysdeps/unix/sysv/linux/alpha/ipc_priv.h (IPCOP_semtimedop): Define. + + * sysdeps/generic/dl-fptr.c (_dl_make_fptr): Use 0 not NULL for + comparing ftab elements. + (_dl_unmap): Fix typo in test. + (_dl_make_fptr): Fix typos introduced in last change. + + * sysdeps/generic/dl-fptr.c: Put back one optimization from the + original patch. Use non-exported symbols. Mark translatable + strings. Pretty printing. + +2003-05-02 Roland McGrath + + * Makerules (do-stamp): Do $(make-target-directory). + +2003-04-07 H.J. Lu + + * sysdeps/generic/dl-fptr.c: Modify to remove the lock. + +2003-04-03 H.J. Lu + + * sysdeps/ia64/dl-fptr.c: Moved to ... + * sysdeps/generic/dl-fptr.c: Here. + + * sysdeps/generic/dl-fptr.h: New. + * sysdeps/ia64/dl-fptr.h: New. + + * sysdeps/ia64/dl-symaddr.c: Moved to ... + * sysdeps/generic/dl-symaddr.c: here. + + * sysdeps/ia64/dl-machine.h: Include . + (IA64_BOOT_FPTR_TABLE_LEN): Removed. + (ia64_fdesc): Likewise. + (ia64_fdesc_table): Likewise. + (__ia64_make_fptr): Likewise. + (__ia64_init_bootstrap_fdesc_table): Replace __ia64_boot_fptr_table + with _dl_boot_fptr_table. + (elf_machine_runtime_setup): Replace `struct ia64_fdesc' with + `struct fdesc'. + (elf_machine_rela): Replace __ia64_make_fptr with _dl_make_fptr. + +2003-05-01 Roland McGrath + + * sysdeps/generic/bp-thunks.h: Protect includes with [!__ASSEMBLER__]. + * sysdeps/unix/sysv/linux/i386/bp-thunks.h: Likewise. + + * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): + Use $(make-target-directory). + * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Likewise. + + * Makerules (compile-mkdep-flags): New variable, pass -MD -MF $@.d. + (compile-command.S): Don't use ifndef. Append $(compile-mkdep-flags). + (compile-command.s, compile-command.c): Likewise. + ($(objpfx)%.d): All such pattern rules removed. + ($(+sysdir_pfx)sysd-rules): Don't generate them. + ($(common-objpfx)dummy.d): Target removed. + (make-dummy-dep): Variable removed. + (generate-md5): Likewise. + (%.d: %.dt): New pattern rule. + (+depfiles): Use $(wildcard) function to get just existing *.d files + and .d files for existing *.dt files. + (common-clean): Remove all *.d and *.dt files. + (before-compile): Add $(objpfx). when it doesn't exist, + regardless of $(no_deps). + * elf/rtld-Rules ($(objpfx)rtld-%.d): All such pattern rules removed. + (rtld-depfiles): Use .os.d instead of .d names. + Include existing *.d files and .d files for existing *.dt files. + + * Makerules ($(common-objpfx)%.make): Protect with [! subdir]. + Use -MD, -MT and -MF flags instead of SUNPRO_DEPENDENCIES variable. + + * sysdeps/unix/Makefile ($(common-objpfx)s-%.d): Remove compat.h hack. + Do s-*.d includes only if we have some syscall routines in this subdir. + + * include/libc-symbols.h (libc_freeres_ptr): Use %nobits instead of + @nobits. The former is accepted by gas on any ELF platform. + +2003-05-01 Ulrich Drepper + + * sysdeps/unix/sysv/linux/semtimedop.c: New file. + + * malloc/malloc.c (mSTATs): Call ptmalloc_init if necessary. + +2003-04-29 Andreas Schwab + + * string/test-strcat.c (do_one_test): Fix attribute name. + +2003-04-30 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h (ucontext): Make + uc_flags long for all ABIs. + +2003-04-30 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h + (DR_CONTROL_RESERVED): Use correct value for 64-bit. + Reported by Andrew Derrick Balsa . + Add bi-arch support. + +2003-04-30 Ulrich Drepper + + * malloc/malloc.c (mEMALIGn): Define alias __memalign_internal. + (__posix_memalign): Use __memalign_internal instead of memalign. + +2003-04-29 Roland McGrath + + * configure.in: Search for AUTOCONF unconditionally. + Just don't complain about missing it under --without-cvs. + + * include/libc-symbols.h (__symbol_set_attribute): New macro, + give hidden for [SHARED] and weak for [! SHARED]. + (symbol_set_declare): Use that. Never need weak_extern these days. + * Makerules ($(common-objpfx)shlib.lds): Go back to using PROVIDE. + Depend on $(..)Makerules. + +2003-04-29 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Use __ protected + variants of socket, bind, recvmsg, and sendto. + + * sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word. + + * include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset. + * signal/sigaddset.c: Add libc_hidden_def. + * signal/sigdelset.c: Likewise. + +2003-04-29 Jakub Jelinek + + * sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move + to the end of the file. + + * configure.in: Change __oline__ to $LINENO. + (HAVE_BUILTIN_REDIRECTION): New check. + * config.h.in (HAVE_BUILTIN_REDIRECTION): Add. + * include/libc-symbols.h (libc_hidden_builtin_proto, + libc_hidden_builtin_def, libc_hidden_builtin_weak, + libc_hidden_builtin_ver): Define. + * include/string.h (memchr, memcpy, memmove, memset, strcat, strchr, + strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr, + strspn, strstr): Add libc_hidden_builtin_proto. + * intl/plural.y: Include string.h. + * sysdeps/alpha/alphaev6/memchr.S (memchr): Add + libc_hidden_builtin_def. + * sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise. + * sysdeps/alpha/alphaev6/memset.S (memset): Likewise. + * sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise. + * sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise. + * sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise. + * sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise. + * sysdeps/alpha/memchr.S (memchr): Likewise. + * sysdeps/alpha/memset.S (memset): Likewise. + * sysdeps/alpha/strcat.S (strcat): Likewise. + * sysdeps/alpha/strchr.S (strchr): Likewise. + * sysdeps/alpha/strcmp.S (strcmp): Likewise. + * sysdeps/alpha/strcpy.S (strcpy): Likewise. + * sysdeps/alpha/strlen.S (strlen): Likewise. + * sysdeps/alpha/strncmp.S (strncmp): Likewise. + * sysdeps/alpha/strncpy.S (strncpy): Likewise. + * sysdeps/alpha/strrchr.S (strrchr): Likewise. + * sysdeps/arm/memset.S (memset): Likewise. + * sysdeps/arm/strlen.S (strlen): Likewise. + * sysdeps/generic/memchr.c (memchr): Likewise. + * sysdeps/generic/memcpy.c (memcpy): Likewise. + * sysdeps/generic/memmove.c (memmove): Likewise. + * sysdeps/generic/memset.c (memset): Likewise. + * sysdeps/generic/strcat.c (strcat): Likewise. + * sysdeps/generic/strchr.c (strchr): Likewise. + * sysdeps/generic/strcmp.c (strcmp): Likewise. + * sysdeps/generic/strcpy.c (strcpy): Likewise. + * sysdeps/generic/strcspn.c (strcspn): Likewise. + * sysdeps/generic/strlen.c (strlen): Likewise. + * sysdeps/generic/strncmp.c (strncmp): Likewise. + * sysdeps/generic/strncpy.c (strncpy): Likewise. + * sysdeps/generic/strpbrk.c (strpbrk): Likewise. + * sysdeps/generic/strrchr.c (strrchr): Likewise. + * sysdeps/generic/strspn.c (strspn): Likewise. + * sysdeps/generic/strstr.c (strstr): Likewise. + * sysdeps/i386/i486/strcat.S (strcat): Likewise. + * sysdeps/i386/i486/strlen.S (strlen): Likewise. + * sysdeps/i386/i586/memcpy.S (memcpy): Likewise. + * sysdeps/i386/i586/memset.S (memset): Likewise. + * sysdeps/i386/i586/strchr.S (strchr): Likewise. + * sysdeps/i386/i586/strcpy.S (strcpy): Likewise. + * sysdeps/i386/i586/strlen.S (strlen): Likewise. + * sysdeps/i386/i686/memcpy.S (memcpy): Likewise. + * sysdeps/i386/i686/memmove.S (memmove): Likewise. + * sysdeps/i386/i686/memset.S (memset): Likewise. + * sysdeps/i386/i686/strcmp.S (strcmp): Likewise. + * sysdeps/i386/memchr.S (memchr): Likewise. + * sysdeps/i386/memset.c (memset): Likewise. + * sysdeps/i386/strchr.S (strchr): Likewise. + * sysdeps/i386/strcspn.S (strcspn): Likewise. + * sysdeps/i386/strlen.c (strlen): Likewise. + * sysdeps/i386/strpbrk.S (strpbrk): Likewise. + * sysdeps/i386/strrchr.S (strrchr): Likewise. + * sysdeps/i386/strspn.S (strspn): Likewise. + * sysdeps/ia64/memchr.S (memchr): Likewise. + * sysdeps/ia64/memcpy.S (memcpy): Likewise. + * sysdeps/ia64/memmove.S (memmove): Likewise. + * sysdeps/ia64/memset.S (memset): Likewise. + * sysdeps/ia64/strcat.S (strcat): Likewise. + * sysdeps/ia64/strchr.S (strchr): Likewise. + * sysdeps/ia64/strcmp.S (strcmp): Likewise. + * sysdeps/ia64/strcpy.S (strcpy): Likewise. + * sysdeps/ia64/strlen.S (strlen): Likewise. + * sysdeps/ia64/strncmp.S (strncmp): Likewise. + * sysdeps/ia64/strncpy.S (strncpy): Likewise. + * sysdeps/m68k/memchr.S (memchr): Likewise. + * sysdeps/m68k/strchr.S (strchr): Likewise. + * sysdeps/mips/mips64/memcpy.S (memcpy): Likewise. + * sysdeps/mips/mips64/memset.S (memset): Likewise. + * sysdeps/mips/memcpy.S (memcpy): Likewise. + * sysdeps/mips/memset.S (memset): Likewise. + * sysdeps/powerpc/powerpc32/memset.S (memset): Likewise. + * sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise. + * sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise. + * sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise. + * sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise. + * sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise. + * sysdeps/powerpc/powerpc64/memset.S (memset): Likewise. + * sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise. + * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise. + * sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise. + * sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise. + * sysdeps/powerpc/strcat.c (strcat): Likewise. + * sysdeps/sparc/sparc32/memchr.S (memchr): Likewise. + * sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise. + * sysdeps/sparc/sparc32/memset.S (memset): Likewise. + * sysdeps/sparc/sparc32/strcat.S (strcat): Likewise. + * sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise. + * sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise. + * sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise. + * sysdeps/sparc/sparc32/strlen.S (strlen): Likewise. + * sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise. + * sysdeps/sparc/sparc64/memchr.S (memchr): Likewise. + * sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise. + * sysdeps/sparc/sparc64/memset.S (memset): Likewise. + * sysdeps/sparc/sparc64/strcat.S (strcat): Likewise. + * sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise. + * sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise. + * sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise. + * sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise. + * sysdeps/sparc/sparc64/strlen.S (strlen): Likewise. + * sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise. + * sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise. + * sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise. + * sysdeps/sparc/sparc64/strspn.S (strspn): Likewise. + * sysdeps/sh/memcpy.S (memcpy): Likewise. + * sysdeps/sh/memset.S (memset): Likewise. + * sysdeps/sh/strlen.S (strlen): Likewise. + * sysdeps/s390/s390-32/memchr.S (memchr): Likewise. + * sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise. + * sysdeps/s390/s390-32/memset.S (memset): Likewise. + * sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise. + * sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise. + * sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise. + * sysdeps/s390/s390-64/memchr.S (memchr): Likewise. + * sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise. + * sysdeps/s390/s390-64/memset.S (memset): Likewise. + * sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise. + * sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise. + * sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise. + * sysdeps/x86_64/memcpy.S (memcpy): Likewise. + * sysdeps/x86_64/memset.S (memset): Likewise. + * sysdeps/x86_64/strcat.S (strcat): Likewise. + * sysdeps/x86_64/strchr.S (strchr): Likewise. + * sysdeps/x86_64/strcmp.S (strcmp): Likewise. + * sysdeps/x86_64/strcpy.S (strcpy): Likewise. + * sysdeps/x86_64/strcspn.S (strcspn): Likewise. + * sysdeps/x86_64/strlen.S (strlen): Likewise. + * sysdeps/x86_64/strspn.S (strspn): Likewise. + * string/string-inlines.c: Move... + * sysdeps/generic/string-inlines.c: ...here. + (__memcpy_g, __strchr_g): Remove. + (__NO_INLINE__): Define before including , + undefine after. Include bits/string.h and bits/string2.h. + * sysdeps/i386/i486/string-inlines.c: New file. + * sysdeps/i386/string-inlines.c: New file. + * sysdeps/i386/i486/Versions: Remove. + All GLIBC_2.1.1 symbols moved... + * sysdeps/i386/Versions (libc): ...here. + +2003-04-29 Ulrich Drepper + + * sysdeps/i386/fpu/Makefile: New file. + * sysdeps/i386/fpu/fedisblxcpt.c: Also set SSE control word. + * sysdeps/i386/fpu/feenablxcpt.c: Likewise. + * sysdeps/i386/fpu/feholdexcpt.c: Likewise. + * sysdeps/i386/fpu/fesetround.c: Also set SSE rounding mode + [PR libc/4987]. + +2003-04-28 Ulrich Drepper + + * nscd/nscd_getgr_r.c: Compact code a bit. Add some __builtin_expect. + * nscd/nscd_getpw_r.c: Likewise. + * nscd/nscd_gethst_r.c: Likewise. + +2003-04-27 Ulrich Drepper + + * nscd/pwdcache.c: Initialize .version element in result. + * nscd/grpcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + +2003-04-27 Andreas Schwab + + * Makeconfig ($(common-objpfx)sysd-sorted): Fix for running in + subdirectory. + +2003-04-27 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/semtimedop.S: New file. + +2003-04-27 Ulrich Drepper + + * nscd/connections.c (client_queued): New variable. + (nscd_run): Revamp the loop. Don't call poll except for cleanup + threads. Keep track of the number of delays caused because of busy + worker threads. + * nscd/nscd.h: Declare client_queued. + * nscd/nscd_stat.c: Transmit and print client_queued information. + + * locale/programs/locale.c (show_info): Use '\177' instead of CHAR_MAX. + + * Makerules ($(common-objpfx)shlib.lds): Don't use PROVIDE to + define __start_libc_freeres_ptrs and __stop___libc_freeres_ptrs. + +2003-04-26 Ulrich Drepper + + * elf/dl-close.c [USE_TLS && TLS_TCB_AT_TP] (_dl_close): Reimplement + tracking of freed memory in static TLS block. + * elf/Makefile: Add rules to build and run tst-tls13. + * elf/tst-tls13.c: New file. + * elf/tst-tlsmod13.c: New file. + * elf/tst-tlsmod13a.c: New file. + + * elf/tst-tls8.c: Adjust types of variables to avoid warnings. + + * elf/dl-reloc.c: Pretty printing. + +2003-04-26 Roland McGrath + + * Makerules ($(common-objpfx)shlib.lds): New target. + (common-generated): Add it. + (build-shlib, build-module): Use that instead of generating every time. + ($(common-objpfx)libc.so): Depend on it. + (lib%.so rule): Likewise. + (build-module-helper-objlist): Remove %.lds. + (LDSEDCMD-c.so): Variable removed. + * iconvdata/extra-module.mk ($(objpfx)$(mod).so): + Depend on $(common-objpfx)shlib.lds. + * dlfcn/Makefile ($(test-modules)): Likewise. + +2003-04-26 Roland McGrath + + * sysdeps/mach/hurd/tmpfile.c: Remove USE_IN_LIBIO conditionals. + +2003-04-26 Andreas Schwab + + * elf/dl-close.c (remove_slotinfo): Fix missing parens. + +2003-04-25 Ulrich Drepper + + * nscd/cache.c (cache_search): Keep track of how many chain links + we searched and update table statistics. + (cache_add): Keep track of how many values are in the table. + (prune_cache): Likewise. Keep track of locking success. + Print messages about removed entries in separate pass. + * nscd/connections.c (handle_request): Don't print debug message here. + The caller will do it. Keep track of locking success. + (nscd_run): Print debug message. Also print PID of the client process. + * nscd/nscd.c (start_time): New variable. + (main): Remember start time. + * nscd/nscd.h: Declare start_time. + (struct database): Add more members for new statistics. + * nscd/nscd_stat.c: Add support for sending, receiving, and printing + of new statistics. + + * sysdeps/posix/getaddrinfo.c: Include . + +2003-04-22 Jakub Jelinek + + * include/link.h (NO_TLS_OFFSET): Define to 0 if not defined. + * elf/dl-close.c (_dl_close): Use NO_TLS_OFFSET. + * elf/dl-object.c (_dl_new_object): Initialize l_tls_offset to + NO_TLS_OFFSET. + * elf/rtld.c (_dl_start_final, _dl_start): Likewise. + * elf/dl-reloc.c (CHECK_STATIC_TLS): Use NO_TLS_OFFSET. + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Likewise. + * sysdeps/powerpc/dl-tls.h (TLS_TPREL_VALUE): Don't subtract + TLS_TCB_SIZE. + +2003-04-24 Ulrich Drepper + + * nss/getent.c: Implement alternative host database lookup via + getaddrinfo. + + * include/ifaddrs.h: New file. + * include/netdb.h: Move definitions of AI_V4MAPPED, AI_ALL, and + AI_ADDRCONFIG... + * resolv/netdb.h: ...here. + * sysdeps/gnu/ifaddrs.c. Use libc_hidden_def where appropriate. + * sysdeps/unix/sysv/linux/ifaddrs.c: Likewise. + * sysdeps/posix/getaddrinfo.c: Implement AI_V4MAPPED, AI_ALL, and + AI_ADDRCONFIG. + +2003-04-24 Roland McGrath + + * elf/dl-reloc.c (_dl_allocate_static_tls): Add internal_function. + +2003-04-24 Jakub Jelinek + + * elf/dl-reloc.c (allocate_static_tls): Rename to... + (_dl_allocate_static_tls): ... this function. No longer static. + (CHECK_STATIC_TLS): Adjust. + * sysdeps/generic/ldsodefs.h (_dl_allocate_static_tls): New prototype. + * sysdeps/powerpc/powerpc32/dl-machine.h (__process_machine_rela): + Add SYM_MAP argument. + (elf_machine_rela): Adjust caller. Declare SYM_MAP unconditionally. + Check if SYM_MAP != NULL for R_PPC_DTPREL32. Only handle 32-bit + TLS relocs here. #ifdef out relocs which never appear in + .gnu.conflict section from dl-conflict.c processing. + * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): + Add SYM_MAP argument. Handle 16-bit TLS relocs here. + + * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): #ifdef + out relocs which never appear in .gnu.conflict section from + dl-conflict.c processing. + * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/i386/dl-machine.h (elf_machine_rela): Likewise. + Use r_type in RESOLVE macro. + +2003-04-23 Ulrich Drepper + + * nis/ypclnt.c (__yp_bind): Expect YPDB parameter to always be != + NULL. Remove code made redundant by this assumption. + (__yp_unbind): Add call to free. Adjust all callers. + + * nis/ypclnt.c (yp_all): Free the dom_binding object after + unbinding it. + + * grp/initgroups.c (getgrouplist): Don't copy too much into the + user buffer if more groups are found than fit into it. + + * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Use + extend_alloca. + +2003-04-23 Jakub Jelinek + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Check for rc == ERANGE, + not rc == errno. Use extend_alloca. + + * elf/tst-tls12.c (main): Fix declaration. + * elf/tst-tls10.c (dummy): Make hidden instead of static. + * elf/tst-tlsmod7.c (dummy): Likewise. + * elf/tst-tlsmod8.c (dummy): Likewise. + * elf/tst-tlsmod9.c (dummy): Likewise. + +2003-04-22 Roland McGrath + + * sysdeps/unix/sysv/linux/not-cancel.h: Put parens around macro args. + (open_not_cancel): Make last argument non-optional. + * sysdeps/generic/check_fds.c (check_one_fd): Update caller. + * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Likewise. + * iconv/gconv_cache.c (__gconv_load_cache): Likewise. + + * include/tls.h: Protect against multiple inclusion. + +2003-04-22 Ulrich Drepper + + * nscd/nscd-client.h: Add declaration for __nscd_open_socket. + * nscd/nscd_gethst_r.c (__nscd_open_socket): Renamed from + open_socket. Not static anymore. + (nscd_gethst_r): Use __nscd_open_socket. + * nscd/nscd_getgr_r.c (open_socket): Removed. + (nscd_getgr_r): Use __nscd_open_socket. + * nscd/nscd_getpw_r.c (open_socket): Removed. + (nscd_getpw_r): Use __nscd_open_socket. + + * nscd/nscd.c (main): Change type of fdn to long int and use strtol. + * nscd/connections.c (handle_request): Add cast to avoid warning. + +2003-04-21 Ulrich Drepper + + * signal/sigfillset.c: Moved to... + * sysdeps/generic/sigfillset.c: ...here. If SIGCANCEL is defined + do not set the corresponding bit. + + * sysdeps/unix/sysv/linux/sigprocmask.c: Prevent changing mask for + SIGCANCEL. + * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Define SI_TKILL. + +2003-04-20 Ulrich Drepper + + * sysdeps/unix/sysv/linux/not-cancel.h (open_not_cancel): Cast + first syscall parameter to const char*. + +2003-04-19 Ulrich Drepper + + * intl/Makefile ($(objpfx)msgs.h): Use C locale for sed run. + + * configure.in: Add AC_PROG_CXX. + * config.make.in (CXX): Define. + + * sysdeps/i386/i686/hp-timing.h (HP_TIMING_PRINT): Change type of + __len to size_t to avoid warnings. + +2003-04-18 Jes Sorensen + + * libc/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Sync with Linux + 2.5.67. + * libc/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. + +2003-04-19 Ulrich Drepper + + * stdlib/cxa_finalize.c (__cxa_finalize): Don't call + UNREGISTER_ATFORK if d == NULL. + + * catgets/nl_types.h: Remove __THROW marker from cancellation points. + * dirent/dirent.h: Likewise. + * dlfcn/dlfcn.h: Likewise. + * grp/grp.h: Likewise. + * iconv/iconv.h: Likewise. + * io/fcntl.h: Likewise. + * io/ftw.h: Likewise. + * libio/stdio.h: Likewise. + * misc/sys/mman.h: Likewise. + * misc/sys/select.h: Likewise. + * misc/sys/syslog.h: Likewise. + * misc/sys/uio.h: Likewise. + * posix/spawn.h: Likewise. + * posix/unistd.h: Likewise. + * posix/sys/wait.h: Likewise. + * pwd/pwd.h: Likewise. + * resolv/netdb.h: Likewise. + * rt/aio.h: Likewise. + * shadow/shadow.h: Likewise. + * signal/signal.h: Likewise. + * socket/sys/socket.h: Likewise. + * stdlib/stdlib.h: Likewise. + * streams/stropts.h: Likewise. + * string/string.h: Likewise. + * sysdeps/gnu/utmpx.h: Likewise. + * sysvipc/sys/msg.h: Likewise. + * termios/termios.h: Likewise. + * time/time.h: Likewise. + * wcsmbs/wchar.h: Likewise. + * iconv/gconv_cache.c: Include and use non-cancelable + functions. + * misc/daemon.c: Likewise. + * sysdeps/generic/backtracesymsfd.c: Likewise. + * sysdeps/generic/check_fds.c: Likewise. + * sysdeps/unix/sysv/linux/gethostid.c: Likewise. + * sysdeps/unix/sysv/linux/not-cancel.h: New file. + * sysdeps/generic/not-cancel.h: New file. + * csu/Makefile (distribute): Add not-cancel.h. + * sysdeps/unix/sysv/linux/fatal-prepare.h: New file. + * sysdeps/unix/sysv/linux/Makefile: Define FATAL_PREPARE_INCLUDE + for assert.c and assert-perr.c to include . + * sysdeps/unix/sysv/linux/Dist: Add fatal-prepare.h. + + * sysdeps/posix/remove.c (remove): Rewrite. No need to restore + errno and unlink first. + + * io/ftw.c (ftw_dir): In all places assume fchdir is available. + +2003-04-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Use + INTERNAL_SYSCALL instead of INLINE_SYSCALL. + +2003-04-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/Makefile: Remove db2 directory handling. + + * malloc/Makefile (CFLAGS-malloc.c): Define DEFAULT_TOP_PAD to 128k. + * sysdeps/unix/sysv/linux/Makefile (CFLAGS-malloc.c): Add to, not + replace. + + * signal/Makefile (tests): Add tst-sigsimple. + * signal/tst-sigsimple.c: New file. + +2003-04-16 Jakub Jelinek + + * elf/Makefile (distribute): Add tst-tlsmod{[7-9],1[0-2]}.c and + tst-tls10.h. + (tests): Add tst-tls1[0-2]. + (modules-names): Add tst-tlsmod{[7-8],1[0-2]}. + ($(objpfx)tst-tlsmod8.so): Depend on tst-tlsmod7.so. + ($(objpfx)tst-tlsmod10.so): Depend on tst-tlsmod9.so. + ($(objpfx)tst-tlsmod12.so): Depend on tst-tlsmod11.so. + ($(objpfx)tst-tls10): Depend on tst-tlsmod8.so. + ($(objpfx)tst-tls11): Depend on tst-tlsmod10.so. + ($(objpfx)tst-tls12): Depend on tst-tlsmod12.so. + * elf/tst-tls10.c: New test. + * elf/tst-tls11.c: New test. + * elf/tst-tls12.c: New test. + * elf/tst-tls10.h: New file. + * elf/tst-tlsmod7.c: New file. + * elf/tst-tlsmod8.c: New file. + * elf/tst-tlsmod9.c: New file. + * elf/tst-tlsmod10.c: New file. + * elf/tst-tlsmod11.c: New file. + * elf/tst-tlsmod12.c: New file. + +2003-04-15 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h: Moved ppc32/64 specific code to ... + * sysdeps/powerpc/powerpc32/bits/atomic.h: New file. + * sysdeps/powerpc/powerpc64/bits/atomic.h: New file. + +2003-04-17 Ulrich Drepper + + * posix/regex.h: Include . + + * signal/sigrelse.c (sigrelse): Use sigdelset and not __sigdelset. + The signal number must be checked. + * signal/sighold.c (sighold): Use sigaddset and not __sigaddset. + The signal number must be checked [PR libc/5004]. + + * sysdeps/unix/sysv/linux/system.c: If compiled without threads + don't do anything fancy. + + * sysdeps/generic/bits/libc-lock.h: Define + __rtld_lock_define_initialized_recursive. + + * nss/getXXbyYY_r.c [USE_NSCD] (REENTRANT_NAME): Only retry + contacting nscd if NOT_USENSCD_NAME > 0. + * nss/nsswitch.c (__nss_disable_nscd): New function. + * nss/nsswitch.h: Declare it. + * nss/Versions [GLIBC_PRIVATE]: Export __nss_disable_nscd. + * nscd/nscd.c (main): Call __nss_disable_nscd. + +2003-04-16 Ulrich Drepper + + * stdio-common/perror.c (perror): We don't need to set the offset + to _IO_pos_bad, this is how streams are initialized. + + * locale/programs/ld-time.c (TESTARR_ELEM): Make i unsigned. + (time_output): If necessary, allocate new buffer for .name string if + padding is required. + + * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Check lengths + before copying. This might leave holes in the list. Adjust + pointers if necessary. + (netlink_receive): Allocate only one block. + (free_netlink_handle): Adjust appropriately. + (getifaddrs): Lots of cleanups. + + * string/test-strncpy.c (do_one_test): Mark start and stop as + possibly unused. + * string/test-memchr.c: Likewise. + * string/test-memcmp.c: Likewise. + * string/test-memcpy.c: Likewise. + * string/test-memmove.c: Likewise. + * string/test-memset.c: Likewise. + * string/test-strcat.c: Likewise. + * string/test-strchr.c: Likewise. + * string/test-strcmp.c: Likewise. + * string/test-strcpy.c: Likewise. + * string/test-strlen.c: Likewise. + * string/test-strncmp.c: Likewise. + * string/test-strpbrk.c: Likewise. + * string/test-strrchr.c: Likewise. + * string/test-strspn.c: Likewise. + +2003-04-15 Roland McGrath + + * libio/fileops.c (_IO_file_close_it): Macro tweak to avoid warning. + + * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO]: Add decl for + INTUSE(__register_frame_info_bases). + +2003-04-15 Ulrich Drepper + + * elf/elf.h: Define AT_SYSINFO_EH_FRAME. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Handle + AT_SYSINFO_EH_FRAME. Adjust string width. + (_dl_show_auxv):Display AT_SYSINFO_EH_FRAME value. + * sysdeps/generic/ldsodefs.h [NEED_DL_SYSINFO] (struct rtld_global): + Add _dl_sysinfo_eh_frame field. + * elf/dl-support.c [NEED_DL_SYSINFO]: Define _dl_sysinfo_eh_frame. + * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO] Define eh_obj + variable. + [NEED_DL_SYSINFO] (LIBC_START_MAIN): Call __register_frame_info_bases + if _dl_sysinfo_eh_frame is non-NULL. + + * Makeconfig (gnulib): Add -lgcc_eh. + + * config.h.in: Define HAVE_FORCED_UNWIND. + +2003-04-15 Steven Munroe + + * sysdeps/powerpc/powerpc64/strcmp.S: Convert to full 64-bit. + * sysdeps/powerpc/powerpc64/strcpy.S: Likewise. + +2003-04-15 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Avoid + checking R_PPC_RELATIVE, R_PPC_NONE and whether relocation is + against local symbol in conflict processing. + +2003-04-15 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h + [__powerpc64] (__arch_compare_and_exchange_val_64_acq): Define. + [! __powerpc64] (__arch_compare_and_exchange_val_64_acq): Defined + as abort stub. + (__arch_compare_and_exchange_val_32_acq): Define. + (atomic_compare_and_exchange_val_acq): Define. + +2003-04-15 Ulrich Drepper + + * include/atomic.h: Pretty printing. + +2003-04-14 Ulrich Drepper + + * stdio-common/vfscanf.c: Add casts to avoid warnings. + +2003-04-14 Jakub Jelinek + + * sysdeps/i386/i486/bits/atomic.h: Rename LOCK to LOCK_PREFIX. + * sysdeps/x86_64/bits/atomic.h: Likewise. + +2003-04-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Change PUSHARGS_1 and + POPARGS_1 to emit labels for the mov instructions. + +2003-04-14 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (ret_NOERRNO): Define. + +2003-04-14 Roland McGrath + + * sysdeps/generic/unwind-dw2.c (_Unwind_GetCFA): Add a cast to silence + compiler warning. + + * sysdeps/generic/unwind-pe.h: Fix decl hacks broken in merge. + +2003-04-14 Ulrich Drepper + + * string/strxfrm.c (STRXFRM): Terminate rulearr at correct + position. Reported by jreiser@BitWagon.com. + +2003-04-13 Ulrich Drepper + + * sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version. + * sysdeps/generic/unwind-dw2-fde.h: Likewise. + * sysdeps/generic/unwind-dw2.c: Likewise. + * sysdeps/generic/unwind-pe.h: Likewise. + +2003-04-13 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/profil-counter: New. + * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Port to n32/n64. + * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: New. + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Port to n32/n64. + (mcontext_t): Make it match the 32-bit mips kernel in o32. + * sysdeps/unix/sysv/linux/mips/sys/user.h: Bring in constants from + the mips and mips64 headers. + (struct user): Port to n32/n64. + +2003-04-12 Ulrich Drepper + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add cast to + avoid warning. + + * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): If + __ASSUME_VSYSCALL is defined don't add restorer. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_VSYSCALL for 2.5.53. + +2003-04-11 Ulrich Drepper + + * sysdeps/generic/libc-start.c: Cleanup MAIN_AUXVEC_ARG handling. + Remove HAVE_CANCELBUF code. Replace with code using the new + initializers for unwind-based cleanup handling. + * sysdeps/generic/unwind.h: Update from latest gcc version. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Define labels in a few + places to allow unwind data generation. + * sysdeps/i386/bits/setjmp.h: Allow file to be included multiple times. + * sysdeps/x86_64/bits/setjmp.h: Likewise. + * sysdeps/sh/bits/setjmp.h: Likewise. + * sysdeps/powerpc/bits/setjmp.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise. + * sysdeps/alpha/bits/setjmp.h: Likewise. + +2003-04-11 Roland McGrath + + * csu/tst-empty.c: New file. + * csu/Makefile (tests, tests-static): Add it. + +2003-04-11 Jakub Jelinek + + * string/test-strcmp.c (do_random_tests): Test whether return value + has been promoted to wordsize if the ABI requires caller to do so. + * string/test-strncmp.c (do_random_tests): Likewise. + * string/test-memcmp.c (do_random_tests): Likewise. + + * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Sign extend rRTN + before returning. + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c + (__fe_nomask_env): Try prctl even if __ASSUME_NEW_PRCTL_SYSCALL + is not defined, but the prctl constants are. + + * string/tester.c (test_strcmp): Fix a typo. + +2003-04-09 Ulrich Drepper + + * sysdeps/alpha/fpu/bits/mathdef.h: Remove FLT_EVAL_METHOD definition. + * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise. + +2003-04-08 Alexandre Oliva + + * sysdeps/mips/sys/regdef.h (t4,t5,t6,t7): Renamed to t0..t3 on + NewABI. + (ta0, ta1, ta2, ta3): Defined to t4..t7 on o32, and a4..a7 on + NewABI. + * sysdeps/mips/mips64/memcpy.S: Adjust register naming + conventions. + * sysdeps/mips/mips64/memset.S: Likewise. + * sysdeps/unix/mips/sysdep.S (__syscall_error) [_LIBC_REENTRANT]: + Use t0 instead of t4 as temporary. + +2003-04-07 Ulrich Drepper + + * elf/ldconfig.c (parse_conf): Ignore leading whitespace. Use + feof_unlocked instead of feof. + (add_dir): Ignore trailing whitespace. + +2003-04-07 Jakub Jelinek + + * posix/bug-regex4.c (main): Cap RANGE and STOP arguments to + sum of SIZE1 and SIZE2 arguments. + +2003-04-06 Ulrich Drepper + + * iconv/iconv_prog.c (process_block): Don't print message about + invalid input if the -c option is used. + (main): Correctly append IGNORE string for -c option. + +2003-04-06 Kaz Kojima + + * sysdeps/sh/bits/atomic.h: Moved to ... + * sysdeps/unix/sysv/linux/sh/bits/atomic.h: ... here. Add comments. + (__arch_compare_and_exchange_val_*_acq): Add parens around macro + arguments. + (atomic_bit_set, atomic_bit_test_set): Likewise. + (atomic_exchange_and_add): Likewise. Don't evaluate VALUE argument + twice. + (atomic_add, atomic_add_negative, atomic_add_zero): Likewise. + +2003-04-06 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/swapcontext.S: Rewrite register + restoration as done for setcontext yesterday. + +2003-04-06 Jakub Jelinek + + * elf/rtld.c: Revert 2003-03-14 change. + * elf/dl-conflict.c (_dl_resolve_conflicts): Move + #if ! ELF_MACHINE_NO_RELA conditional into the routine. + +2003-04-05 Ulrich Drepper + + * sunrpc/xdr.c (xdr_string): Catch nodesize == 0 [PR libc/4999]. + + * sysdeps/ieee754/ldbl-96/e_gammal_r.c (__ieee754_gammal_r): + Always initialize *signgamp before returning an error. + +2003-04-05 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/setcontext.S: Rewrite to avoid writing + below the stack pointer even if switching to the same context we are + running right now. + +2003-04-05 Ulrich Drepper + + * catgets/gencat.c (read_input_file): Make sure that \n is not + alone on the line before testing for continuation. + + * math/test-tgmath.c (compile_test): Initialize c. + +2003-04-05 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c: New. + * sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c: New. + * sysdeps/unix/sysv/linux/kernel-features.h: fcntl64 is available + on mips n32. + * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Explain why + XSTAT_IS_XSTAT64 must not be used for mips n64. Use 64-bit data + structure on n32 as well. + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Use POSIX-compliant + data types on n32 and n64. + +2003-04-05 Ulrich Drepper + + * libio/fileops.c (_IO_new_file_fopen): Don't free step data right + after getting them. + + * malloc/thread-m.h [PTHREAD_MUTEX_INITIALIZER]: If + HAVE_register_atfork_malloc is defined use __register_atfork_malloc + instead of __register_atfork. + +2003-04-05 Jakub Jelinek + + * stdio-common/reg-printf.c (__register_printf_function): Calloc + instead of malloc __printf_arginfo_table and __printf_function_table. + Reported by John Reiser . + +2003-04-04 Steven Munroe + + * sysdeps/powerpc/powerpc64/strchr.S: 64-bit optimizations. + * sysdeps/powerpc/powerpc64/strlen.S: 64-bit optimizations. + + * sysdeps/powerpc/fpu/bits/mathdef.h (FLT_EVAL_METHOD): Undef before + defining. + +2003-04-04 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (struct flock): Adjust + for n64 abi. + +2003-04-03 Roland McGrath + + * configure.in: Fix up use of compilation flags to match the build: + For .s files, $ASFLAGS; + For .S files, $CPPFLAGS $ASFLAGS; + For .c files, $CFLAGS $CPPFLAGS; + when linking, add $LDFLAGS. + * configure: Regenerated. + +2003-04-03 Jakub Jelinek + + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Reverse test + for atomic_compare_and_exchange_bool_acq failure. + +2003-04-03 Ulrich Drepper + + * posix/unistd.h: Define _POSIX_VERSION, _POSIX2_VERSION, + _POSIX2_C_BIND, _POSIX2_C_DEV, _POSIX2_SW_DEV, and + _POSXI2_LOCALEDEF to 200112L. Remove _POSIX2_C_VERSION. + Remove declaration of pthread_atfork. + +2003-04-02 Ulrich Drepper + + * locale/iso-639.def: Add many more languages from the current ISO 639. + + * sysdeps/unix/sysv/linux/ipc_priv.h: Define IPCOP_semtimedop. + * sysdeps/generic/semtimedop.c: New file. + * sysdeps/unix/sysv/linux/i386/semtimedop.S: New file. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add semtimedop. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. + * sysvipc/Makefile (routines): Add semtimedop. + * sysvipc/Versions [GLIBC_2.3.3] (glibc): Add semtimedop. + * sysvipc/sys/sem.h: Declare semtimedop. + +2003-04-02 Daniel Jacobowitz + + * configure.in: Check for __register_frame_info in both + -lgcc and -lgcc_eh. + * configure: Regenerated. + +2003-04-01 Roland McGrath + + * scripts/abilist.awk: Allow dots in soname suffix. + + * scripts/abilist.awk (emit): Fix bailout condition. + +2003-04-01 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Use the + IA-64 version. + + * elf/tls-macros.h [__ia64__] (TLS_IE, TLS_LD, TLS_GD): Add gp + register as input to asm. + +2003-04-01 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (sigevent_t): Fix a typo. + +2003-04-01 Andreas Jaeger + + * configure.in: Output as/ld as name if version is too old. + +2003-03-31 Daniel Jacobowitz + + * configure.in: Don't require an installed C library in the test + for ".set" assembler support. + +2003-03-31 Roland McGrath + + * signal/tst-sigset.c: New file. + * signal/Makefile (tests): Add it. + +2003-03-31 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/bits/signum.h (_NSIG): Define to 65. + * sysdeps/unix/sysv/linux/hppa/bits/signum.h (_NSIG): Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Likewise. + * sysdeps/unix/sysv/linux/bits/signum.h (_NSIG): Likewise. + (__SIGRTMAX): Adjust accordingly. + * sysdeps/gnu/siglist.c: If OLD2_SIGLIST_SIZE is defined define + second compatibility symbol set. + * sysdeps/unix/sysv/linux/siglist.h (OLD2_SIGLIST_SIZE): Define. + +2003-03-31 Andreas Schwab + + * sysdeps/m68k/m68020/bits/atomic.h (atomic_increment_and_test): + Define. + (atomic_decrement_and_test): Fix test. + +2003-03-31 Jakub Jelinek + + * sysdeps/sparc/sparc32/bits/atomic.h: New file. + * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: New file. + * sysdeps/sparc/sparc64/bits/atomic.h: New file. + * sysdeps/sparc/sparc32/atomicity.h: Removed. + * sysdeps/sparc/sparc32/sparcv9/atomicity.h: Removed. + * sysdeps/sparc/sparc64/atomicity.h: Removed. + +2003-03-30 Roland McGrath + + * scripts/abilist.awk: Grok .opd foo plus .text .foo as "foo F" alone. + + * intl/po2test.sed: Anchor substitution regexps to fix last change. + +2003-03-29 Paolo Bonzini + + * intl/po2test.sed: Unify the transformations for msgid and msgstr + and remove a useless s/// command. + +2003-03-27 David Mosberger + + * sysdeps/ia64/dl-machine.h (RTLD_START): Wrap ".save rp, r0" + directive into empty .prologue region to ensure that call-chain + is terminated even for the first instruction. + + * sysdeps/ia64/elf/start.S (_start): Use ".save rp, r0" idiom + to terminate call-chain right from the get-go. + + * sysdeps/unix/sysv/linux/ia64/fork.S (fork): Remove unnecessary + stop bit between compare & branch. + +2003-03-29 Ulrich Drepper + + * stdlib/strtod.c (INTERNAL): Recognize first digit after decimal + point correctly [PR libc/4993]. + + * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Avoid + netlink_open calls if netlink is known to not be available. + +2003-03-29 Alexandre Oliva + + * configure.in: Add mips64* support. + * sysdeps/mips/bits/endian.h: Make it bi-endian. + * sysdeps/mips/mipsel/bits/endian.h: Removed. + * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed. + * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed. + * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32. + * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32. + * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64. + * sysdeps/mips/Implies: Moved wordsize-32 to... + * sysdeps/mips/mips32/Implies: New file. + * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO, + ret_NOERRNO): New. + (ret, PSEUDO_END): Moved past END. + (PSEUDO): Moved to... + * sysdeps/unix/mips/mips32/sysdep.h: New file. + * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO. + * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to... + * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file. + + * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): + Re-introduce ENTRY. + +2003-03-28 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/ifaddrs.c: New file. + * inet/test-ifaddrs.c: Allow AF_PACKET. + * sysdeps/unix/sysv/linux/kernel-features.h: Add + __ASSUME_NETLINK_SUPPORT. + +2003-03-28 Ulrich Drepper + + * elf/vismain.c (do_test): Comment out tests which fail in the moment. + +2003-03-26 H.J. Lu + + * elf/vismod.h (getvarlocal1): Return const char **. + (getvarinmod1): Likewise. + (getvaritcpt1): Likewise. + (getvarlocal2): Likewise. + (getvarinmod2): Likewise. + (getvaritcpt2): Likewise. + (getvaritcpt3): Likewise. + * elf/vismain.c (do_test): Adjusted. + * elf/vismod1.c (getvarlocal1): Return address. + (getvarinmod1): Likewise. + (getvaritcpt1): Likewise. + * elf/vismod2.c (getvarlocal2): Likewise. + (getvarinmod2): Likewise. + (getvaritcpt2): Likewise. + * elf/vismod3.c (getvaritcpt3): Likewise. + +2003-03-28 Roland McGrath + + * elf/vismain.c (do_test): Print both addresses when they don't match. + + * scripts/abilist.awk: If given -v filename_regexp and/or -v + libname_regexp when parsing names, then produce output only + for those matching the given regexps. In combine mode, save all + stanzas for a final sorting by stanza header at the end. + Emit a blank line between stanzas. + + * scripts/abilist.awk: When given -v combine=1, do parse_names and + emit a single output stream with lib name in stanza header lines. + + * scripts/abilist.awk: Emit A for all *ABS* regardless of type. + +2003-03-27 Roland McGrath + + * sysdeps/powerpc/bits/atomic.h [! __powerpc64__] + (__arch_atomic_decrement_if_positive_64): Fix bogus definition. + +2003-03-28 Kaz Kojima + + * sysdeps/sh/bits/atomic.h (__arch_compare_and_exchange_val_8_acq): + Return old value. Make asm output reg constraint earlyclobber. + Renamed from... + (__arch_compare_and_exchange_8_acq): ... this. + (__arch_compare_and_exchange_val_16_acq): + Return old value. Make asm output reg constraint earlyclobber. + Renamed from... + (__arch_compare_and_exchange_16_acq): ... this. + (__arch_compare_and_exchange_val_32_acq): + Return old value. Make asm output reg constraint earlyclobber. + Renamed from... + (__arch_compare_and_exchange_32_acq): ... this. + (__arch_compare_and_exchange_val_64_acq): + Renamed from... + (__arch_compare_and_exchange_64_acq): ... this. + (atomic_exchange_and_add): Use local variables and + __arch_compare_and_exchange_val_64_acq. + (atomic_add): Likewise. + (atomic_add_negative, atomic_add_zero): Use local variables. + +2003-03-28 Alexandre Oliva + + * sysdeps/unix/mips/sysdep.S: Include sys/asm.h. + +2003-03-27 Ulrich Drepper + + * Makefile: Remove libmd5crypt goal. + +2003-03-25 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Restore + special handling of relocations against local symbols. + +2003-03-27 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h + (__arch_compare_and_exchange_bool_32_acq): Move to [!__powerpc64__]. + [__powerpc64__] (__arch_compare_and_exchange_bool_32_acq): + Define PPC64 specific version. + [__powerpc64__] (__arch_compare_and_exchange_bool_64_acq): + Change (mem) constraint to "b". + [__powerpc64__] (__arch_atomic_exchange_and add_64): + Replace addi with add. Change (value) contraint to "r". + Change (mem) constraint to "b". + [__powerpc64__] (__arch_atomic_decrement_if_positive_64): New macro. + (__arch_atomic_exchange_32): Change (mem) constraint to "b". + (__arch_atomic_exchange_and_add_32): Change (mem) constraint to "b". + (__arch_atomic_decrement_if_positive_32): New macro. + (atomic_decrement_if_positive): Use __arch* macros. + +2003-03-27 Jakub Jelinek + + * sysdeps/ia64/fpu/libm-test-ulps: Update. + +2003-03-27 Roland McGrath + + * scripts/rpm2dynsym.sh: New file. + * Makefile (distribute): Add it. + +2003-03-27 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's + ar.unat before returning. Add missing .mem.offset directives + to ensure file gets assembled without warnings. + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise. + +2003-03-27 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>: + Return -1 instead of 0 if clock_getres failed. + +2003-03-27 Roland McGrath + + * scripts/abilist.awk: If variable `parse_names' is set, grok the file + header lines and write out foo.symlist files for each foo.so.NN listed. + + * libio/libioP.h (_IO_wfile_jumps): Remove attribute_hidden. + This symbol is exported, and we don't want to hide it. + Add libc_hidden_proto instead. + (_IO_file_jumps): Add libc_hidden_proto. + * libio/wfileops.c (_IO_wfile_jumps): Add libc_hidden_data_def. + Remove INTVARDEF. + * libio/fileops.c (_IO_file_jumps): Likewise. + * libio/stdfiles.c: Don't use INTUSE on them. + * libio/iofdopen.c (_IO_new_fdopen): Likewise. + * libio/iofopen.c (__fopen_internal): Likewise. + * libio/freopen.c (freopen): Likewise. + * libio/freopen64.c (freopen64): Likewise. + * libio/iovdprintf.c (_IO_vdprintf): Likewise. + + * Makerules (check-abi) [$(enable-check-abi) = warn]: + Ignore exit status from diff. + * configure.in (enable_check_abi): Document possible value "warn". + Change default to no for now. + * configure: Regenerated. + + * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Emit stub_warning + macro calls and a #include at the end. + * Makerules ($(objpfx)stubs): Tweak sed commands. + + * sysdeps/unix/sysv/linux/syscalls.list: Use - rather than EXTRA in + caller column for *xattr syscalls, since they are in sysdeps/generic. + + * sysdeps/unix/sysv/linux/i386/setfsuid.c: setfsgid -> setfsuid + * sysdeps/unix/sysv/linux/i386/setfsgid.c: setfsuid -> setfsgid + +2003-03-26 Roland McGrath + + * Makerules (check-abi-config): Use /thread instead of /tls when + use-thread and not just use-tls is set. + + * Makerules (update-abi): Put quotes around $(update-abi-config). + + * elf/Makefile (check-abi): Depend on check-abi-ld. + (update-abi): Depend on update-abi-ld. + +2003-03-26 GOTO Masanori + + * sysdeps/unix/sysv/linux/i386/setfsuid.c: Use INTERNAL_SYSCALL and + do not check for errors (unless testing for 32bit variant). + * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. + +2003-03-27 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET_NOERRNO): Use + unconditional mov. Remove nop. + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_VFORK_SYSCALL): Define for kernel 2.4 on arm. + * sysdeps/unix/sysv/linux/arm/vfork.S: Elide compatibility code + when __ASSUME_VFORK_SYSCALL is defined. + * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise for + __ASSUME_MMAP2_SYSCALL. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise for + __ASSUME_REALTIME_SIGNALS. + +2003-03-26 Ulrich Drepper + + * sysdeps/generic/ldsodefs.h (ELF_RTYPE_CLASS_COPY): Define to 2 + only if DL_NO_COPY_RELOCS is not defined. + * sysdeps/ia64/dl-lookupcfg.h: Define DL_NO_COPY_RELOCS. + +2003-03-26 Roland McGrath + + * sysdeps/unix/make-syscalls.sh: When an undefined syscall has + SOURCE=-, append its symbol names to make variable unix-stub-syscalls. + * sysdeps/unix/Makefile [$(subdir) = misc] [unix-stub-syscalls] + (sysdep_routines): Add stub-syscalls. + ($(objpfx)stub-syscalls.c): New target. + (generated): Add stub-syscalls.c. + + * tls.make.c: Also define use-tls according to USE_TLS macro. + +2003-03-26 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (struct siginfo): Avoid + no-op padding element. + * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + +2003-03-26 GOTO Masanori + + * sysdeps/unix/sysv/linux/i386/getgroups.c: Fix the error + condition check for the return value of getgroups32. + +2003-03-26 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_NOERRNO): + Fix a typo. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_NOERRNO, + PSEUDO_END_NOERRNO): Define. + * sysdeps/unix/sysdep.h (PSEUDO_END_NOERRNO): Fix a typo. + Define to PSEUDO_END. + +2003-03-26 Ulrich Drepper + + * abilist/librt.abilist: Add new timer interfaces for 64-bit archs. + +2003-03-25 Jiro SEKIBA + + * iconvdata/euc-tw.c (from_euc_tw): Fix return value of TO_LOOP. + * iconvdata/bug-iconv4.c: New file. + * iconvdata/Makefile (tests): Add bug-iconv4. + +2003-03-25 H.J. Lu + + * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected + symbols twice. + (_dl_lookup_versioned_symbol): Likewise. + +2003-03-26 Jakub Jelinek + + * csu/tst-atomic.c (do_test): Add some new + atomic_compare_and_exchange_val_acq, atomic_add_zero, + atomic_compare_and_exchange_bool_acq and atomic_add_negative tests. + * include/atomic.h (atomic_add_negative, atomic_add_zero): + Prefix local variable so that it doesn't clash with the one + in atomic_exchange_and_add. + * sysdeps/ia64/bits/atomic.h (atomic_exchange): Fix for long/void * + pointers. + (atomic_exchange_and_add): Implement using __sync_fetch_and_add_?i. + * sysdeps/powerpc/bits/atomic.h (atomic_exchange_and_add): Force + value into register. + * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_64_acq): + Cast newval to long. + * sysdeps/x86_64/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Cast newval and oldval to + long. + (atomic_exchange): Cast newvalue to long if sizeof == 8. + (atomic_exchange_and_add): Cast value to long if sizeof == 8. + (atomic_add, atomic_add_negative, atomic_add_zero): Likewise. + (atomic_bit_set): Shift 1L up in all cases to shut up warnings. + +2003-03-21 Martin Schwidefsky + + * sysdeps/s390/s390-32/backtrace.c (__backtrace): Remove high order + bit from backtrace addresses. + +2003-03-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/i386/chown.c: Don't define any versioned + __chown symbols. + +2003-03-25 Roland McGrath + + * config.make.in (enable-check-abi): New variable from configure. + * configure.in (enable_check_abi): New substituted variable, + controlled by --{enable,disable}-check-abi (default yes). + * configure: Regenerated. + * Makerules [$(enable-check-abi) = yes] (tests): Put this condition + on check-abi dependency. + +2003-03-26 Andreas Schwab + + * sysdeps/m68k/m68020/bits/atomic.h: Fix typos. + * include/atomic.h: Likewise. + + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Define ret_NOERRNO. + +2003-03-25 Roland McGrath + + * sysdeps/powerpc/bits/atomic.h (__arch_atomic_exchange_32): New macro. + (__arch_atomic_exchange_64): New macro. + (atomic_exchange): Use them. + (__arch_atomic_exchange_and_add_32): New macro. + (__arch_atomic_exchange_and_add_64): New macro. + (atomic_exchange_and_add): Use them. + Original patch from Steven Munroe . + +2003-03-25 Alexandre Oliva + + * sysdeps/mips/sgidefs.h (_MIPS_ISA_MIPS32, _MIPS_ISA_MIPS64): + Define. + * sysdeps/mips/sys/asm.h: Test _MIPS_ISA against them on all + ISA tests. + (ALSZ, ALMASK, SZREG, REG_S, REG_L): Define based on ABI, not ISA. + (PTR_ADD, etc): Test _MIPS_SZPTR instead of _MIPS_SZLONG. + * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR + to decide whether to add padding. + * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR + to decide whether to add padding. + * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h (struct + old_kernel_sigaction): Likewise. + +2003-03-25 Ulrich Drepper + + * csu/tst-atomic.c: Adjust tests to what atomic_add_negative and + atomic_add_zero were supposed to do. + * include/atomic.h: Adjust atomic_add_negative and atomic_add_zero + to x86 behavior. + + * sysdeps/generic/bits/typesizes.h (__TIMER_T_TYPE): Define as void*. + This matches the new timer implementation. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__TIMER_T_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__TIMER_T_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/bits/siginfo.h (struct siginfo): Adjust + timer info for what the kernel provides these days. + (struct sigevent): Add _tid field. + Define SIGEV_THREAD_ID. + Remove struct __pthread_attr_s forward declaration. + * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + + * Versions.def (librt): Add GLIBC_2.3.3. + + * abilist/libpthread.abilist: Update for nptl. + +2003-03-24 Jon Grimm + + * inet/netinet/in.h: Add IPPROTO_SCTP. + +2003-03-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define. + +2003-03-24 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL): + Remove a1 from clobber list. + +2003-03-24 Ulrich Drepper + + * timezone/antarctica: Update from tzdata2003a. + * timezone/asia: Likewise. + * timezone/australasia: Likewise. + * timezone/europe: Likewise. + * timezone/iso3166.tab: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2003-03-24 Steven Munroe + + * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_END_NOERRNO): Fix typo. + +2003-03-23 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (ret_NOERRNO): Avoid + unwanted expansion by definining to ret. Patch by Ian Wienand. + + * sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of + the parameter description to denote no error checking. Generate + appropriate pseudo asm code. + * sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'. + * sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid, + getpgrp, and getppid with 'E'. + * sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO, + PSEUDO_END_NOERRNO, and ret_NOERRNO. + * sysdeps/powerpc/powerpc64/sysdep.h: Likewise. + * sysdeps/unix/sysdep.h: Likewise. + * sysdeps/unix/alpha/sysdep.h: Likewise. + * sysdeps/unix/sparc/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + +2003-03-23 Roland McGrath + + * Makeconfig (+includes): Don't use $(last-includes). + +2003-03-22 Alexandre Oliva + + * sysdeps/unix/sysv/linux/configure.in: Update mips64 patterns. + * sysdeps/unix/sysv/linux/configure: Rebuilt. + +2003-03-23 Jakub Jelinek + + * sysdeps/alpha/fpu/libm-test-ulps: Update. + * sysdeps/arm/libm-test-ulps: Update. + * sysdeps/hppa/fpu/libm-test-ulps: Update. + * sysdeps/ia64/fpu/libm-test-ulps: Update. + * sysdeps/mips/fpu/libm-test-ulps: Update. + * sysdeps/powerpc/nofpu/libm-test-ulps: Update. + * sysdeps/powerpc/fpu/libm-test-ulps: Update. + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. + * sysdeps/sh/sh4/fpu/libm-test-ulps: Update. + * sysdeps/s390/fpu/libm-test-ulps: Update. + * sysdeps/x86_64/fpu/libm-test-ulps: Update. + +2003-03-22 Roland McGrath + + * include/atomic.h: Put parens around all macro arguments. + (__atomic_val_bysize, __atomic_bool_bysize): New macros. + (atomic_compare_and_exchange_val_acq): Use it. + (atomic_compare_and_exchange_bool_acq): Likewise. + (atomic_increment_and_test): Invert sense of test. + (atomic_decrement_and_test): Likewise. + * csu/tst-atomic.c: Update those tests to match. + +2003-03-22 Jakub Jelinek + + * include/atomic.h (atomic_compare_and_exchange_val_acq): Add comment. + Don't define if __arch_compare_and_exchange_val_32_acq is not defined. + (atomic_compare_and_exchange_bool_acq): Add comment. Don't use + __oldval variable in the macro, since it might be macro argument. + (atomic_decrement_if_positive): Initialize __memp, remove setting + of non-existent variable. + (atomic_bit_test_set): Cast 1 to __typeof (*mem) before shifting. + * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Implement + using atomic_compare_and_exchange_val_acq. + (atomic_decrement_if_positive, atomic_bit_test_set): Define. + * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq): + Renamed from... + (__arch_compare_and_exchange_bool_8_acq): ... this. + (__arch_compare_and_exchange_val_16_acq): Renamed from... + (__arch_compare_and_exchange_bool_16_acq): ... this. + (__arch_compare_and_exchange_val_32_acq): Return old value. Renamed + from... + (__arch_compare_and_exchange_bool_32_acq): ... this. + (__arch_compare_and_exchange_val_64_acq): Return old value. Renamed + from... + (__arch_compare_and_exchange_bool_64_acq): ... this. + (__arch_compare_and_exchange_val_32_acq): Use __typeof for local + variables types instead of assuming int. + Change prefix of local variables to __arch. + * sysdeps/generic/bits/atomic.h (arch_compare_and_exchange_acq): + Remove. + (atomic_compare_and_exchange_val_acq, + atomic_compare_and_exchange_bool_acq): Define. + + * csu/tst-atomic.c: New test. + * csu/tst-atomic-long.c: New test. + * csu/Makefile (tests): Add tst-atomic and tst-atomic-long. + + * malloc/memusagestat.c (main): Kill warning if uint64_t is ulong. + + * sysdeps/s390/Versions: Add trailing newline. + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Kill warning + if INTERNAL_SYSCALL_ERROR_P doesn't use its first argument. + +2003-03-22 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Update. + + * sysdeps/m68k/m68020/bits/atomic.h: New file. + * sysdeps/m68k/m68020/atomicity.h: Removed. + +2003-03-22 Alexandre Oliva + + * sysdeps/mips/elf/ldsodefs.h: Add mips-specific elf64 relocation + data structures and macros. Protect from multiple inclusion. + + * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Fix harmless + typo in #if test. + +2003-03-21 Andreas Jaeger + + * sysdeps/i386/fpu/libm-test-ulps: Update. + + * math/libm-test.inc (tgamma_test): Recompute some constants with + 36 digits precision. + (lgamma_test): Likewise. + (ccos_test): Likewise. + (ccosh_test): Likewise. + (clog10_test): Likewise. + (csin_test): Likewise. + (csinh_test): Likewise. + (ctan_test): Likewise. + (ctanh_test): Likewise. + +2003-03-19 Jakub Jelinek + + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerated. + +2003-03-21 Roland McGrath + + * sysdeps/i386/i486/bits/atomic.h (atomic_bit_set): Use "ir" + constraint to permit non-constant BIT argument. + (atomic_bit_test_set): Likewise. + * sysdeps/x86_64/bits/atomic.h (atomic_bit_test_set): Likewise. + (atomic_bit_set): Likewise. Use 1UL in case that BIT might be >= 32. + For quadword case, use "i" constraint if __builtin_constant_p and < 32 + or "r" constraint otherwise. + + * configure.in: Move AC_PROG_CC and other program-finding before all + the version checks. + * configure: Regenerated. + +2003-03-21 Alexandre Oliva + + * sysdeps/mips/mips64/memcpy.S: Fix porting bug that broke + unaligned copying of 8-15 bytes. From Chris Demetriou + . Fix label names. + * sysdeps/mips/mips64/memset.S: Fix label names. Make similar + change as to memcpy.S. + * sysdeps/mips/memcpy.S: Formatting changes. + * sysdeps/mips/memset.S: Likewise. + +2003-03-21 Roland McGrath + + * sysdeps/arm/sysdep.h (CALL_MCOUNT): Add trailing semicolon. + +2003-03-21 Alexandre Oliva + + * sysdeps/mips/mips64/memcpy.S, sysdeps/mips/mips64/memset.S: New. + * sysdeps/mips/memcpy.S, sysdeps/mips/memset.S: Update comments. + +2003-03-21 Roland McGrath + + * sysdeps/i386/i486/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Rewrite abort-calling + version of the macro to avoid compile-time warnings. + [! __PIC__] (__arch_compare_and_exchange_64_acq): Rename to above. + (atomic_exchange_and_add, atomic_add): Fix name and usage of it. + (atomic_increment, atomic_decrement): Likewise. + +2003-03-21 Ulrich Drepper + + * sysdeps/x86_64/bits/atomic.h: Don't use matching memory constraints. + * sysdeps/i386/i486/bits/atomic.h: Likewise. + +2003-03-21 Roland McGrath + + * include/atomic.h (atomic_compare_and_exchange_bool_acq): Typo fix. + +2003-03-20 Ulrich Drepper + + * include/atomic.h: Define atomic_compare_and_exchange_val_acq, + atomic_compare_and_exchange_val_rel, + atomic_compare_and_exchange_bool_acq, and + atomic_compare_and_exchange_bool_rel instead of + atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel. + * sysdeps/i386/i486/bits/atomic.h: Define + __arch_compare_and_exchange_val_*_acq instead of + __arch_compare_and_exchange_*_acq. + * sysdeps/x86_64/bits/atomic.h: Likewise. + * sysdeps/ia64/bits/atomic.h: Define + __arch_compare_and_exchange_bool_*_acq instead of + __arch_compare_and_exchange_*_acq. + * sysdeps/powerpc/bits/atomic.h: Likewise. + * sysdeps/s390/bits/atomic.h: Likewise. + * gmon/mcount.c: Adjust for new form of compare&exchange macros. + * malloc/set-freeres.c: Likewise. + * nscd/cache.c: Likewise. + * stdlib/cxa_finalize.c: Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + +2003-03-20 Alexandre Oliva + + * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs. + * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust. + * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise. + + * sysdeps/unix/sysv/linux/mips/pread.c: Don't break up offset + into high and low halves on n64. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + +2003-03-20 Ulrich Drepper + + * include/atomic.h (atomic_decrement_if_positive): Adjust for the + correct atomic_compare_and_exchange_acq semantics. + +2003-03-20 Alexandre Oliva + + * sysdeps/mips/ieee754.h: Remove excess #endif. + +2003-03-20 Roland McGrath + + * sysdeps/powerpc/bits/atomic.h (atomic_exchange): Remove unused + variable. Remove superfluous memory clobber. + + * include/atomic.h: Syntax braino fix. + + * posix/tst-nice.c (do_test): Use %m formats instead of printing errno + in decimal. Don't bail if niced at start. Just check that nice call + bumps the total at all. + +2003-03-20 Alexandre Oliva + + * sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers, + including pc, gp, sp and fp, as long long. + * sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux. + * sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments. + Add gp argument, and set gp in the jmpbuf to it. + * sysdeps/mips/setjmp_aux.c: Revert to o32-only. + +2003-03-20 Ulrich Drepper + + * include/atomic.h: Define atomic_exchange and + atomic_decrement_if_positive if not already defined. Add some + __builtin_expect. + * sysdeps/i386/i486/bits/atomic.h: Define atomic_exchange. + * sysdeps/x86_64/bits/atomic.h: Likewise. + * sysdeps/ia64/bits/atomic.h: Pretty printing. Define atomic_exchange. + * sysdeps/powerpc/bits/atomic.h: Pretty printing. Define + atomic_exchange, atomic_exchange_and_add, and + atomic_decrement_if_positive + +2003-03-20 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: Sign-extend + with a single instruction. + + * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Define + properly for n64. + (elf_machine_runtime_setup): Cast link_map pointer to Elf Addr + type. + (elf_machine_rel, elf_machine_rel_relative): Cast symidx to Elf + Word before comparing with gotsym. Take reloc_addr argument as + void*. Remove the code added for the compiler to drop any + alignment assumptions. + +2003-03-19 Ulrich Drepper + + * Makefile (distribute): Add include/atomic.h and bits/atomic.h. + * include/atomic.h: New file. + * sysdeps/i386/i486/bits/atomic.h: New file. + * sysdeps/x86_64/bits/atomic.h: New file. + * sysdeps/s390/bits/atomic.h: New file. + * sysdeps/sh/bits/atomic.h: New file. + * sysdeps/ia64/bits/atomic.h: New file. + * sysdeps/powerpc/bits/atomic.h: New file. + * sysdeps/generic/bits/atomic.h: New file. + * sysdeps/i386/i486/atomicity.h: Removed. + * sysdeps/x86_64/atomicity.h: Removed. + * sysdeps/s390/s390-32/atomicity.h: Removed. + * sysdeps/s390/s390-64/atomicity.h: Removed. + * sysdeps/ia64/atomicity.h: Removed. + * sysdeps/powerpc/powerpc32/atomicity.h: Removed. + * sysdeps/powerpc/powerpc64/atomicity.h: Removed. + * elf/dl-profile.c: Use atomic.h instead of atomicity.h. Adjust + use of macros from atomicity.h to new names and semantics. + * gmon_mcount.c: Likewise. + * malloc/set-freeres.c: Likewise. + * nscd/cache.c: Likewise. + * stdlib/cxa_finalize.c: Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + +2003-03-19 Alexandre Oliva + + * sysdeps/mips/ieee754.h: New file, suitable to replace both + ../ieee754/ieee754.h and ../ieee754/ldbl-128/ieee754.h, kept + mips-specific for now. + +2003-03-19 Ulrich Drepper + + * stdlib/strtod.c (INTERNAL): While eating trailing zeros handle + hexdigits correctly. Reported by Fred Tydeman . + * stdlib/tst-strtod.c: Add test for the bug. + + * posix/tst-nice.c (do_test): Remove invalid of return value. + Don't run test if initial level != 0. + +2003-03-19 Amos Waterland + + * posix/tst-nice.c: New file. + * posix/Makefile (tests): Add tst-nice. + +2003-03-18 Roland McGrath + + * abilist: New directory of libfoo.abilist files maintained using + scripts/merge-abilist.awk and "make update-abi" rules. + * Makefile (distribute): Add abilist/*.abilist. + * Makerules [$(build-shared) = yes] [$(subdir)] (tests): + Depend on check-abi. + + * configure.in: Move $critic_missing check after all AC_CHECK_PROG_VER. + * configure: Regenerated. + + * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64): Fix name. + +2003-03-18 Ulrich Drepper + + * sysdeps/posix/sysconf.c (__sysconf): Handle _SC_MONOTONIC_CLOCK + correctly. + +2003-03-18 Steven Munroe + + * sysdeps/powerpc/powerpc64/memcpy.S: New file. + +2003-03-18 Ulrich Drepper + + * Versions.def: Add GLIBC_2.3.3 for libpthread. + +2003-03-17 Ulrich Drepper + + * sysdeps/generic/libc-start.c [!SHARED && + !LIBC_START_MAIN_AUXVEC_ARG]: Compute beginning of auxvec correctly. + +2003-03-17 Roland McGrath + + * include/ctype.h: Revert last change. + +2003-03-17 Ulrich Drepper + + * argp/tst-argp1.c: Use test-skeleton.c. + * locale/tst-C-locale.c: Likewise. + +2003-03-17 Alexandre Oliva + + * sysdeps/mips/mips64/Implies: Move wordsize-64 to... + * sysdeps/mips/mips64/n64/Implies: New file. + * sysdeps/mips/mips64/n64/Makefile: New file. + * sysdeps/mips/mips64/n64/el/bits/endian.h: New file. + * sysdeps/mips/mips64/n32/Implies: New file. + * sysdeps/mips/mips64/n32/Makefile: New file. + * sysdeps/mips/mips64/n32/el/bits/endian.h: New file. + * sysdeps/unix/mips/mips64/n32/sysdep.h: New file. + * sysdeps/unix/mips/mips64/n64/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file. + * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file. + * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file. + + * sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use + lib64 for mips64/n64 and lib32 for mips64/n32. + (ldd_rewrite_script): Needed for all mips64 configurations. + * sysdeps/unix/sysv/linux/configure: Rebuilt. + * sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed: New file. + * sysdeps/unix/sysv/linux/mips/mips64/Dist: New file. + + * sysdeps/mips/machine-gmon.h (MCOUNT): Define for N32 and N64 as + well. + + * sysdeps/unix/sysv/linux/mips/configure.in: New. Pre-process + asm/unistd.h into asm-unistd.h. + * sysdeps/unix/sysv/linux/mips/configure: Generated. + * sysdeps/unix/sysv/linux/mips/Makefile: Do custom processing + of syscall list. + * sysdeps/unix/sysv/linux/mips/sys/syscall.h: New file. + * sysdeps/unix/sysv/linux/mips/clone.S: Don't include + asm/unistd.h. + + * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: New file. + * sysdeps/unix/sysv/linux/mips/ptrace.c: New file. Use long + long type for registers on n32. + + * sysdeps/mips/bits/wordsize.h: New file, appropriate for all + 3 ABIs. + * sysdeps/mips/mips64/gmp-mparam.h: New file. Define + BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs. + * sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros. + (__sigsetjmp_aux): Use them. Adjust for all 3 ABIs. + * sysdeps/mips/elf/start.S: Adjust for all 3 ABIs. + * sysdeps/unix/mips/brk.S: Likewise. + * sysdeps/unix/mips/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. + * sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise. + * sysdeps/mips/sys/ucontext.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise. + * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise. + * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. + * sysdeps/mips/mips64/bsd-setjmp.S: Likewise. + * sysdeps/mips/mips64/setjmp.S: Likewise. + * sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete. + * sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for + 64-bit types. + +2003-03-16 Ulrich Drepper + + * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Define tv here, + not at function level. + * sysdeps/unix/clock_gettime.c (HANDLE_REALTIME): Likewise. + +2003-03-15 Roland McGrath + + * nis/nss_nis/nis-hosts.c (internal_gethostbyname2_r): int -> size_t + * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Likewise. + * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Likewise. + * nis/nis_table.c (__create_ib_request): Likewise. + + * posix/fnmatch_loop.c: Add casts for signedness. + * nss/nss_files/files-hosts.c: Likewise. + * nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise. + * gmon/gmon.c (write_call_graph): Use u_long for FROM_LEN. + * nscd/nscd_getgr_r.c (nscd_getgr_r): Use nscd_ssize_t for CNT. + + * configure.in (libc_cv_visibility_attribute): Use AC_TRY_COMMAND, + get errors into the log file. + (libc_cv_broken_visibility_attribute): Likewise. + (libc_cv_broken_alias_attribute): Likewise. + (libc_cv_asm_weak_directive): Likewise. + (libc_cv_need_minus_P): Likewise. + (libc_cv_dot_text): Likewise. + (libc_cv_asm_global_directive): Likewise. + (libc_cv_asm_type_prefix): Likewise. + * configure: Regenerated. + + * nscd/cache.c (cache_search): Give first arg type `request_type'. + * nscd/nscd.h: Update decl. + + * nscd/nscd_getpw_r.c (nscd_getpw_r): Add casts for signedness. + * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise. + * elf/dl-close.c (_dl_close): Likewise. + * sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): int -> size_t + * io/fts.c (fts_build): Likewise. + * elf/cache.c (add_to_cache): Likewise. + * locale/programs/locarchive.c (show_archive_content): Likewise. + + * posix/fnmatch.c (fnmatch): Tweak __builtin_expect use. + + * include/ctype.h (__ctype_b_loc): Tweak type punning to make gcc 3.3 + happy. + (__ctype_toupper_loc, __ctype_tolower_loc): Likewise. + +2003-03-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/system.c: Use the generic Linux + code for most parts. + +2003-03-15 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/system.c: Moved to ... + * sysdeps/unix/sysv/linux/system.c: ... here. + (FORK): Don't #define if already #define'd. + * sysdeps/unix/sysv/linux/s390/system.c: File removed. + * sysdeps/unix/sysv/linux/kernel-features.h [__powerpc__]: + (__ASSUME_CLONE_THREAD_FLAGS): Define for kernel >= 2.5.64. + + * dlfcn/tst-dlinfo.c: New file. + * dlfcn/Makefile (tests): Add tst-dlinfo. + ($(objpfx)tst-dlinfo): New target. + + * dlfcn/dlinfo.c: New file. + * dlfcn/Makefile (libdl-routines): Add it. + * dlfcn/Versions (libdl: GLIBC_2.3.3): Add dlinfo. + * dlfcn/dlfcn.h [__USE_GNU]: Declare dlinfo. + [__USE_GNU] (RTLD_DI_*): New enum constants. + [__USE_GNU] (Dl_serpath, Dl_serinfo): New types. + * elf/dl-load.c (cache_rpath): New inline function. + (_dl_map_object): Use it. + (_dl_rtld_di_serinfo): New function. + * sysdeps/generic/ldsodefs.h: Declare it. + * elf/Versions (ld: GLIBC_PRIVATE): Add it. + + * sysdeps/powerpc/elf/libc-start.c (AUX_VECTOR_INIT): Define it. + (LIBC_START_MAIN, LIBC_START_MAIN_AUXVEC_ARG, MAIN_AUXVEC_ARG) + (INIT_MAIN_ARGS): Define, and #include . + (__libc_start_main): Just call the generic one for most of the work. + + * sysdeps/generic/libc-start.c [LIBC_START_MAIN]: If defined, define a + static function by that name instead of BP_SYM (__libc_start_main). + [LIBC_START_MAIN_AUXVEC_ARG]: Take AUXVEC as argument. + [MAIN_AUXVEC_ARG]: Pass 4th argument to MAIN. + [INIT_MAIN_ARGS]: Give INIT the same args as MAIN. + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [DL_PLATFORM_AUXV]: + Use this macro for extra AT_* cases. + * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_PLATFORM_AUXV): + New macro, guts from ... + (__aux_init_cache): ... here, function removed. + (DL_PLATFORM_INIT): Don't define this. + + * sysdeps/powerpc/powerpc32/memset.S: Put __cache_line_size in bss. + * sysdeps/powerpc/powerpc64/memset.S: Likewise. + + * Versions.def (libthread_db): Add GLIBC_2.3.3 set. + +2003-03-14 Roland McGrath + + * dlfcn/dlerror.c (dlerror): If objname is "", don't put ": " after it. + +2003-03-14 Jakub Jelinek + + * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Fix a typo. + + * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Include + sysdeps/posix/pause.c instead of sysdeps/unix/common/pause.c. + +2003-03-14 Alexandre Oliva + + * sysdeps/mips/fpu/bits/mathdef.h: New. + (__NO_LONG_DOUBLE_MATH): Define for o32. + + * sysdeps/mips/sys/asm.h: Formatting changes. + (PTR, PTRSIZE, PTRLOG): Adjust for all 3 ABIs. + (CPADD): Define for all of them. + (SETUP_GP, SETUP_GPX, SETUP_GPX_L, SAVE_GP, SETUP_GP64, + SETUP_GPX64, SETUP_GPX64_L, RESTORE_GP64, USE_ALT_CP, + NARGSAVE): Define per ABI spec. + (END): Don't redefine. + (LONG_SLL, LONG_SLLV, LONG_SRL, LONG_SRLV, LONG_SRA, + LONG_SRAV): Remove duplicate definitions. + (PTR_ADD, PTR_ADDI, PTR_ADDU, PTR_ADDIU, PTR_SUB, PTR_SUBI, + PTR_SUBU, PTR_SUBIU, PTR_L, PTR_S, PTR_SLL, PTR_SLLV, PTR_SRL, + PTR_SRLV, PTR_SRA, PTR_SRAV, PTR_SCALESHIFT): Define for n32. + (PTR_LA): Define for all 3 ABIs. + + * sysdeps/mips/dl-machine.h: Include sys/asm.h. + (elf_machine_matches_host): Prevent linking of o32 and n32 + together. + (elf_machine_dynamic): Document assumption on $gp. + (STRINGXP, STRINGXV, STRINGV_): New macros. + (elf_machine_load_address): Use them to stringize PTR_LA and + PTR_SUBU. + (ELF_DL_FRAME_SIZE, ELF_DL_SAVE_ARG_REGS, + ELF_DL_RESTORE_ARG_REGS, IFABIO32): New macros used in... + (_dl_runtime_resolve): Adjust it for all 3 ABIs. + (__dl_runtime_resolve): Cast the symtab initializer to the + right type. + (RTLD_START): Use it. Adjust it for all 3 ABIs. + (elf_machine_rel): Mark as always_inline in RTLD_BOOTSTRAP. + Handle 64-bit R_MIPS_REL composite relocation and accept + R_MIPS_64 relocations to shift addend size to 64 bits. + Document assumption regarding local GOT entries. Document + backward-compatibility departing from the ABI behavior in + applying relocations that reference section symbols, no longer + used. Support relocations to mis-aligned offsets. + * sysdeps/mips/mips64/dl-machine.h: Deleted, obsolete. + + * sysdeps/unix/sysv/linux/mips/readelflib.c: New file. + + * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h + (_KERNEL_NSIG_BPW): Define in terms of _MIPS_SZLONG. + * sysdeps/unix/sysv/linux/mips/sigaction.c: Define restore and + restore_rt functions. Use them. + + * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't + .set mips2 on new abis. + +2003-03-13 Ulrich Drepper + + * posix/getconf.c: Recognize POSIX2_SYMLINKS. + * sysdeps/generic/bits/confname.h: Define _PC_2_SYMLINKS. + * sysdeps/posix/fpathconf.c: Handle _PC_2_SYMLINKS. + * sysdeps/posix/pathconf.c: Likewise. + * sysdeps/unix/sysv/linux/fpathconf.c: Likewise. + * sysdeps/unix/sysv/linux/pathconf.c: Likewise. + * sysdeps/unix/sysv/linux/pathconf.h: Define statfs_symlinks. + + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define some more magic + words. + +2003-03-14 Alexandre Oliva + + * include/gmp.h: Include/gmp-mparam.h. + * stdlib/strtod.c: Include gmp-mparam.h before gmp.h and + gmp-impl.h. + + * elf/dl-conflict.c: Don't compile _dl_resolve_conflicts if + ELF_MACHINE_NO_RELA is set. + * elf/rtld.c (dl_main): No prelink support for REL-only. + + * sysdeps/generic/ldconfig.h (FLAG_MIPS64_LIBN32, + FLAG_MIPS64_LIBN64): Define. + * elf/cache.c (print_entry): Handle mips64 n32 and n64. + + * sysdeps/mips/memcpy.S: Map t0-3 to a4-7 on new abis. + * sysdeps/mips/memset.S: Likewise. + * sysdeps/mips/sys/regdef.h: Alias a4-7 or t0-3 to $8-11 + depending on the ABI. + + * sysdeps/mips/atomicity.h (exchange_and_add, atomic_add): + Don't .set mips2 on new abi. + (compare_and_swap): Likewise. Support 64-bit longs on n64. + + * stdlib/fpioconst.h: Include gmp.h with angle brackets. + +2003-03-13 Roland McGrath + + * elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs + found. Reported by Alexandre Oliva . + +2003-03-13 Alexandre Oliva + + * stdio-common/_itoa.c (_itoa_base_table): Make 64-bit + literals long long. + * stdlib/fpioconst.c: Likewise. + * stdlib/strtod.c: Likewise. + + * sysdeps/mips/add_n.S: Use L macro for local labels. + * sysdeps/mips/addmul_1.S: Likewise. + * sysdeps/mips/lshift.S: Likewise. + * sysdeps/mips/memcpy.S: Likewise. + * sysdeps/mips/memset.S: Likewise. + * sysdeps/mips/mul_1.S: Likewise. + * sysdeps/mips/rshift.S: Likewise. + * sysdeps/mips/sub_n.S: Likewise. + * sysdeps/mips/submul_1.S: Likewise. + * sysdeps/mips/mips64/add_n.S: Likewise. + * sysdeps/mips/mips64/addmul_1.S: Likewise. + * sysdeps/mips/mips64/lshift.S: Likewise. + * sysdeps/mips/mips64/mul_1.S: Likewise. + * sysdeps/mips/mips64/rshift.S: Likewise. + * sysdeps/mips/mips64/sub_n.S: Likewise. + * sysdeps/mips/mips64/submul_1.S: Likewise. + * sysdeps/unix/mips/sysdep.h: Define L() according to ABI + conventions. Define END as in sys/asm.h. + * sysdeps/unix/mips/sysdep.S: Likewise. + * sysdeps/unix/mips/wait.S: Likewise. + * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. + + * sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double): + Cast shifted values that may be too narrow to mp_limb_t. + * sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double): + Likewise. + * sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float): + Likewise. + * sysdeps/ieee754/ldbl-128/ldbl2mpn.c + (__mpn_extract_long_double): Likewise. + * sysdeps/ieee754/ldbl-128/mpn2ldbl.c + (__mpn_construct_long_double): Likewise. + * sysdeps/ieee754/ldbl-96/ldbl2mpn.c + (__mpn_extract_long_double): Likewise. + * sysdeps/ieee754/ldbl-96/mpn2ldbl.c + (__mpn_construct_long_double): Likewise. + +2003-03-13 Roland McGrath + + * elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line + entries in the map file match too. + +2003-03-13 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local + label .Lthread_start since current binutils don't allow branches + to globally visible symbols. + +2003-03-13 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (BREAK_INSN_1, BREAK_INSN, + ASM_OUTARGS_0, ASM_OUTARGS_1, ASM_OUTARGS_2, ASM_OUTARGS_3, + ASM_OUTARGS_4, ASM_OUTARGS_5, ASM_OUTARGS_6): Define. + (INTERNAL_SYSCALL, INLINE_SYSCALL): Use it. Make syscall arguments + clobbered by the syscall. + (ASM_ARGS_1, ASM_ARGS_2, ASM_ARGS_3, ASM_ARGS_4, ASM_ARGS_5, + ASM_ARGS_6): Change constraints from r to index of corresponding + output register. + * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Swap + ptid and ctid to match kernel. + * sysdeps/unix/sysv/linux/ia64/system.c (FORK): Likewise. + +2003-03-12 Steven Munroe + + * sysdeps/powerpc/powerpc64/elf/configure.in: Remove + AC_DEFINE(PI_STATIC_AND_HIDDEN). Not supported for PowerPC64. + * sysdeps/powerpc/powerpc64/elf/configure: Regenerated. + +2003-03-11 Roland McGrath + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): + Check SYM_MAP rather than SYM as definedness check. + Handle R_PPC64_ADDR32, R_PPC64_ADDR30, and R_PPC64_REL64 relocs. + Don't handle R_PPC64_REL24 reloc. + Mostly from Steven Munroe . + + * sysdeps/powerpc/powerpc64/dl-machine.h + [USE_TLS] (elf_machine_type_class): Match all the TLS relocs in a + block, so we cover all the TPREL16* flavors without 6 ||s. + [USE_TLS] (elf_machine_tprel): New function. + (elf_machine_rela) [USE_TLS]: Use elf_machine_tprel for TPREL64 reloc, + and handle TPREL16 relocs too. Return rather than break for DTPREL64. + Mostly from Steven Munroe . + +2003-03-11 Ralf Baechle + + * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): Use jal + instead of jalr to invoke subroutine so restoring the $gp register + will work properly. + +2003-03-11 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread64): Define + to __NR_pread if not defined. + (__NR_pwrite64): Define to __NR_pwrite if not defined. + +2003-03-11 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/system.c: New file. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_CLONE_THREAD_FLAGS): Define for IA-64 and s390* with + kernel >= 2.5.64. + +2003-03-11 Jakub Jelinek + + * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): If CNT == 1, + allocate space even for the trailing '/'. + Reported by John Reiser . + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_6, ASM_ARGS_6, + ASM_CLOBBERS_6): Define. + (ASM_CLOBBERS_5): Use ASM_CLOBBERS_6. + * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Reorder arguments + to match IA-32 order. + * sysdeps/unix/sysv/linux/i386/clone.S: Fix comment. + +2003-03-10 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Don't clobber R7. + Copy extra params for NPTL to registers used in clone syscall. + +2003-03-10 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Correct system + call names for pread and pwrite. + +2003-03-10 Roland McGrath + + * dlfcn/Makefile (libdl-routines): Add dladdr1. + * dlfcn/dladdr1.c: New file. + * dlfcn/dlfcn.h [__USE_GNU]: Declare dladdr1. + [__USE_GNU] (RTLD_DL_SYMENT, RTLD_DL_LINKMAP): New enum constants. + * elf/dl-addr.c (_dl_addr): Take new args, a struct link_map ** and + a const ElfNN_Sym ** to fill in. + * include/dlfcn.h: Update decl. Include . + * dlfcn/dladdr.c (dladdr): Update caller. + * malloc/mtrace.c (tr_where): Likewise. + * sysdeps/generic/elf/backtracesyms.c: Likewise. + * sysdeps/generic/elf/backtracesymsfd.c: Likewise. + * dlfcn/Versions (libdl: GLIBC_2.3.3): New set, add dladdr1. + * Versions.def (libdl): Define GLIBC_2.3.3 set. + + * sysdeps/unix/make-syscalls.sh: Generate $(compile-syscall) for + assembler command. + * sysdeps/unix/Makefile (compile-syscall): New variable. + Pass -g0 to compiler for assembling syscall stubs from stdin. + + * sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO] + (STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END): + Define these to do nothing. + + * configure.in: New check for -g on .S files. + * configure: Regenerated. + * config.make.in (have-cpp-asm-debuginfo): New variable. + * config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef. + * Makeconfig (ASFLAGS): New variable, if undefined and + $(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS). + * Makerules (compile.S, COMPILE.S): Use $(ASFLAGS). + +2003-03-09 Roland McGrath + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Take 3 new args + used by NPTL on new kernels. From Paul Mackerras . + +2003-03-09 Ulrich Drepper + + * po/fi.po: Update from translation team. + * po/ca.po: Likewise. + * po/da.po: Likewise. + +2003-03-08 Ulrich Drepper + + * rt/tst-aio7.c (do_test): Change BYTES into a #define. + +2003-03-07 Ulrich Drepper + + * rt/tst-aio7.c (do_test): Give BUFF permanent extent, too. + + * sysdeps/powerpc/fpu/w_sqrt.c: Fix comment. + +2003-03-07 Roland McGrath + + * sysdeps/s390/s390-32/sysdep.h (L): Use .Lfoo instead of foo. + * sysdeps/s390/s390-64/sysdep.h (L): Likewise. + +2003-03-04 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove unneeded + stubs, we have INLINE_SYSCALL. + * sysdeps/unix/sysv/linux/mips/bits/mman.h: Define MAP_POPULATE, + MAP_NONBLOCK. + +2003-03-06 Roland McGrath + + * rt/tst-aio7.c (do_test): Revert last change. Instead, give CB1 + permanent extent and add a comment about testing its implicit teardown. + +2003-03-06 Martin Schwidefsky + + * rt/tst-aio7.c (do_test): Cancel i/o on CB1 before it's out of scope. + +2003-03-05 Ulrich Drepper + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Fix + reversed __builtin_expect expectation. + +2003-03-05 Roland McGrath + + * stdio-common/sscanf.c: Use prototype defn with ... syntax. + * libio/swscanf.c: Likewise. + * libio/swprintf.c: Likewise. + +2003-03-04 Roland McGrath + + * sysdeps/powerpc/powerpc64/dl-machine.h: Include . + (elf_machine_rela): Always use RESOLVE_MAP, needed for + R_PPC64_JMP_SLOT as well as TLS cases. + (BIT_INSERT): Move parenthesis where it ought to have been. + Reported by Steven Munroe . + + * posix/confstr.c (confstr): Correct STRING_LEN values for + _CS_GNU_LIBC_VERSION and _CS_GNU_LIBPTHREAD_VERSION, add missing + break. Reported by Alexandre Julliard . + +2003-03-04 Jakub Jelinek + + * sysdeps/ia64/fpu/libm-test-ulps: Regenerated. + +2003-03-04 Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/clone.S: Add support for the new + clone parameters. + + * po/sv.po: Update from translation team. + +2003-03-04 Andreas Jaeger + Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Fix comments. + +2003-03-03 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.h: Add double include protection. + + * po/tr.po: Update from translation team. + + * elf/dl-load.c (_dl_map_object_from_fd): Determine whether there + are holes between the segments. Only call mprotect to set + proection to PROT_NONE if there are some. + + * elf/dl-load.c (struct filebuf): Actually use FILEBUF_SIZE. + Update comment. + + * include/sched.h (__clone2): Use ... instead of adding all the + new parameters. + +2003-03-03 Roland McGrath + + * elf/dl-load.c (struct filebuf): Fix typo in last change. + + * sysdeps/powerpc/powerpc32/elf/configure.in: Don't define + PI_STATIC_AND_HIDDEN. + +2003-03-03 Ian Wienand + + * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone + flags. + * include/sched.h: Update clone2 prototype. + +2003-03-03 Andreas Jaeger + + * math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition. + (llrint): Use it to correct return type. + (lrint): Likewise. + (lround): Likewise. + (llround): Likewise. + +2003-03-03 Ulrich Drepper + + * elf/dl-load.c (struct filebuf): For 64-bit platforms use 640 + byte filebuf size. + + * libio/fileops.c (_IO_new_file_fopen): Close stillborn descriptor + if ccs parameter isn't valid. Reported by Andreas Schwab. + +2003-03-03 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Add support + for system call numbers > 255. + * sysdeps/unix/sysv/linux/s390/s390-32/syscall.h (DO_CALL, + INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0, + INTERNAL_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscall.h (DO_CALL, + INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0, + INTERNAL_SYSCALL): Likewise. + +2003-03-03 Martin Schwidefsky + + * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Don't free the dtv + array if it is the initial dtv. + +2003-03-03 Ulrich Drepper + + * po/es.po: Update from translation team. + * po/fr.po: Likewise. + * po/gl.po: Likewise. + * po/sk.po: Likewise. + * po/sv.po: Likewise. + + * sysdeps/unix/sysv/linux/syscalls.list: Add remap_file_pages entry. + * misc/sys/mman.h: Add prototype for remap_file_pages. + * sysdeps/generic/remap_file_pages.c: New file. + * misc/Makefile (routines): Add remap_file_pages. + * misc/Versions [libc:GLIBC_2.3.3]: Add remap_file_pages. + + * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_POPULATE + and MAP_NONBLOCK. + * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise + * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. + +2003-03-03 Roland McGrath + + * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Revert last change. + * sysdeps/ia64/dl-machine.h: Likewise. + * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Remove const from + argument type. + * sysdeps/ia64/dl-lookupcfg.h: Update decl. + + * sysdeps/wordsize-64/strtol_l.c (strtoll_l): Define as weak alias. + * sysdeps/wordsize-64/strtoul_l.c (strtoull_l): Define as weak alias. + * locale/Versions (libc: GLIBC_2.3): Move those to ... + * sysdeps/wordsize-32/Versions (libc: GLIBC_2.3): ... here, new file. + * sysdeps/wordsize-64/Versions (libc: GLIBC_2.3.3) Likewise. + * Versions.def (libc): Add GLIBC_2.3.3 set. + + * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Add const to MAP arg. + * sysdeps/ia64/dl-machine.h: Update decl. + +2003-03-03 Andreas Jaeger + + * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Add missing brace. + +2003-03-02 Roland McGrath + + * scripts/abilist.awk: Reject data items with apparent 0 size. + + * scripts/merge-abilist.awk: Restore hack to elide pattern foo.*/bar + after foo.* as if it were a duplicate. + + * sysdeps/unix/sysv/linux/ia64/brk.S: Add .type and .size for __curbrk. + +2003-03-02 Ulrich Drepper + + * elf/dl-load.c (struct filebuf): Reduce buf array to 512 bytes. + + * sysdeps/generic/bits/time.h: Define CLOCK_MONOTONIC. + * sysdeps/posix/clock_getres.c: Define code for CLOCK_REALTIME only + if not already defined. Use SYSDEP_GETRES to allow other files to + provide alternative implementations. + * sysdeps/unix/sysv/linux/clock_getres.c: New file + * sysdeps/unix/clock_gettime.c: Define code for CLOCK_REALTIME only + if not already defined. Use SYSDEP_GETTIME to allow other files to + provide alternative implementations. + * sysdeps/unix/sysv/linux/clock_gettime.c: New file. + * sysdeps/unix/clock_settime.c: Define code for CLOCK_REALTIME only + if not already defined. Use SYSDEP_GETTIME to allow other files to + provide alternative implementations. + * sysdeps/unix/sysv/linux/clock_settime.c: New file. + * sysdeps/unix/clock_nanosleep.c: Use SYSDEP_NANOSLEEP to allow + other files to provide alternative implementations. Rearrange + tests for invalid parameters. + * sysdeps/unix/sysv/linux/clock_nanosleep.c: New file. + * sysdeps/unix/sysv/linux/sysconf.c: New file. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_POSIX_TIMERS for Linux 2.5.63 and up. + * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define + _POSIX_MONOTONIC_CLOCK. + +2003-03-02 Roland McGrath + + * scripts/merge-abilist.awk: More checks for bogus input. + Uniquify duplicate config names. + + * scripts/abilist.awk: Don't distinguish weak symbols in normal output. + + * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): Renamed + from dl_reloc_overflow, make global. + (__process_machine_rela): Update callers. + * sysdeps/powerpc/powerpc32/dl-machine.h: Declare _dl_reloc_overflow. + Add attribute_hidden to __process_machine_rela decl. + (elf_machine_type_class, elf_machine_rela): Handle 16-bit TLS relocs. + + * sysdeps/generic/libc-start.c (__libc_start_main): Don't assign const + variable. + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_fixup_plt): + Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED]. + (elf_machine_rela): Clean up. + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up. + + PowerPC TLS support contributed by Paul Mackerras . + * sysdeps/powerpc/powerpc32/elf/configure.in: New file. + * sysdeps/powerpc/powerpc32/elf/configure: New generated file. + * elf/tls-macros.h [__powerpc__ && !__powerpc64__] + (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them. + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support + new relocs for TLS. + + * sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these + macros out of [SHARED]. + (TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros. + + * elf/elf.h: Define R_PPC_* relocs for TLS support. + Clean up R_PPC64_* macro definition comments. + + * configure.in: In "running configure fragment for" message, + omit $srcdir from the name if we prepended it. + * configure: Regenerated. + + * elf/dl-reloc.c (allocate_static_tls): Fix calculations. + From Jakub Jelinek . + + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Revert last change, + which duplicated the O_DIRECT defn. + +2003-03-01 GOTO Masanori + + * stdlib/stdlib.h: Add missing __USE_BSD enclosure for BSD derived + random functions. + +2003-03-01 Andreas Schwab + + * resolv/Makefile (tests): Don't depend on + $(objpfx)mtrace-tst-leaks when cross compiling. + + * sysdeps/m68k/dl-machine.h (_dl_start_user): Access + __libc_stack_end through GOT since it is a global symbol. + +2003-03-01 GOTO Masanori + + * argp/argp.h: Fix a typo. + Reported by H.S.Teoh . + + * manual/terminal.texi: Fix cfmakeraw() definition from int to void. + +2003-02-27 Pat Rankin + + * posix/regexec.c (proceed_next_node): Cast re_string_get_buffer to + char *. + (get_subexp): Likewise. + +2003-03-01 GOTO Masanori + + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (O_DIRECT): Define. + +2003-02-26 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (O_DIRECT): Define. + +2003-02-27 Roland McGrath + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Remove + special case for dl_rtld_map in R_PPC64_RELATIVE; it's harmless to + repeat it and avoids the test for the common case. + Clean up and fix calculations for TLS relocs. + + * sysdeps/powerpc/powerpc64/dl-tls.h: Moved to ... + * sysdeps/powerpc/dl-tls.h: ... here. + (TLS_TP_OFFSET): New macro. + + * sunrpc/svc_udp.c (svcudp_recv): Add a cast to last change. + +2003-02-27 Ulrich Drepper + + * sysdeps/i386/fpu/libm-test-ulps: Increase ULPs for yn due to + code generation changes in recent gcc. + +2003-02-26 Steven Munroe + + * sysdeps/powerpc/fpu/fpu_control.h (_FPU_GETCW, _FPU_SETCW): + Rename argument to avoid symbol conflict. + + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h + [__USE_GNU] (O_DIRECT): New macro. + +2003-02-24 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/sysdep.S (__syscall_error): Fix + unwind info. + +2003-02-27 Ulrich Drepper + + * resolv/res_libc.c [USE___THREAD] (_res): Don't need the + initializer anymore now that res_thread_freeres is more careful. + + * sunrpc/svc_udp.c (svcudp_recv): Remove all control messages + except the PKTINFO. Reset interface in PKTINFO. + Patch by Neil Brown [PR libc/4973]. + +2003-02-25 Steven Munroe + + * elf/elf.h: Add new R_PPC64_* relocs for TLS. + * elf/tls-macros.h [__powerpc64__] (TLS_LE, TLS_IE, TLS_LD, TLS_GD): + Define. + * sysdeps/powerpc/powerpc64/elf/configure.in: New file. + * sysdeps/powerpc/powerpc64/elf/configure: New file (generated). + * sysdeps/powerpc/powerpc64/dl-machine.h: Support new TLS relocs. + * sysdeps/powerpc/powerpc64/dl-tls.h: New file. + + * sysdeps/powerpc/elf/libc-start.c (__libc_start_main): + Do DL_SYSDEP_OSCHECK here, matching 2002-12-01 change to generic file. + +2003-02-25 Andreas Jaeger + + * manual/memory.texi (Malloc Tunable Parameters): Clarify + behaviour of M_MMAP_THRESHOLD. + +2003-02-25 Roland McGrath + + * resolv/res_init.c (res_thread_freeres): Bail out if _res.nscount is + zero, inidicating _res was not initialized yet. + +2003-02-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Remove EACCES + test. + +2003-02-24 Roland McGrath + + * sysdeps/posix/pause.c: Add LIBC_CANCEL_HANDLED. + +2003-02-23 Roland McGrath + + * sysdeps/posix/pause.c: New file. + * sysdeps/unix/common/pause.c: File removed. + +2003-02-23 Ulrich Drepper + + * sysdeps/generic/bits/confname.h: Remove #ifs. + + * posix/Makefile (CFLAGS-regex.c): Remove RE_ENABLE_I18N definition. + * posix/regex_internal.h (RE_ENABLE_I18N): Pretty printing. + + * resolv/res_libc.c [USE___THREAD] (_res): Initialize _vcsock + element to -1. + +2003-02-22 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c: Avoid warning. + +2003-02-22 Roland McGrath + + * resolv/tst-leaks.c: New file by Daniel Jacobowitz . + * resolv/Makefile (tests): Add tst-leaks. + ($(objpfx)tst-leaks): Depend on $(objpfx)libresolv.so. + (tst-leaks-ENV): New variable. + ($(objpfx)mtrace-tst-leaks): New target. + (tests): Depend on it. + + * include/libc-internal.h: Declare __libc_thread_freeres. + + * Makerules: Fix last change to use $($(subdir)-version) when set. + + * Makerules (install-lib-nosubdir): Depend on installed + libfoo-X.Y.Z.so and libfoo.so.NN files so they are installed + regardless of the libfoo.so target's dependencies. + + * MakeTAGS (sub-make-vars): New variable, includes generating=t. + Use that in $(MAKE) calls. + +2003-02-22 Ulrich Drepper + + * catgets/gencat.c (read_input_file): Collision between + auto-assigned numbers and user-defined nubmers is not fatal. + Handle it. + Patch by Michael M. Lampkin . + * catgets/Makefile: Add rules to run test2.msg test. + * catgets/test2.msg: New file. + + * catgets/gencat.c (main): Return 1 if messages have been printed. + + * iconv/iconv_prog.c (main): Unify messages. + + * stdlib/strtod.c (INTERNAL): Remove bogus clearing of second word + when shifting retval. + * stdlib/tst-strtod.c (main): Add strtold test case. + Reported by Fred J. Tydeman . + +2003-02-21 Roland McGrath + + * malloc/thread-freeres.c: Conditionalize on _LIBC_REENTRANT. + * sunrpc/rpc_thread.c: Likewise for text_set_element use. + (__rpc_thread_destroy): Add it to __libc_subfreeres too. + + * include/resolv.h: Add libc_hidden_proto for __res_nclose. + * resolv/res_init.c (__res_nclose): Add libc_hidden_def. + (res_thread_freeres): New function, on __libc_thread_subfreeres and + __libc_subfreeres. + + * malloc/Versions (libc: GLIBC_PRIVATE): Add __libc_thread_freeres. + * malloc/thread-freeres.c: New file. + * malloc/Makefile (aux): Add it. + * sunrpc/Versions (libc: GLIBC_PRIVATE): Removed. + * sunrpc/rpc_thread.c (__rpc_thread_destroy): Put in special section + "__libc_thread_freeres_fn" and add to __libc_thread_subfreeres set. + + * sysdeps/unix/sysv/linux/i386/geteuid.c (__geteuid): Typo fix. + * sysdeps/unix/sysv/linux/i386/getgid.c (__getgid): Typo fix. + +2003-02-21 Roland McGrath + + * sysdeps/mach/hurd/opendir.c (__opendir): Use O_NONBLOCK in open. + + * iconvdata/Makefile (tests): Add bug-iconv3 only if + [$(have-thread-library) = yes]. + +2003-02-21 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/signum.h (__SIGRTMAX): Define as _NSIG. + + * sysdeps/unix/sysv/linux/i386/getuid.c: Use INTERNAL_SYSCALL and do + not chechk for errors (unless testing for 32bit variant). + * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise. + +2003-02-21 Jakub Jelinek + + * sysdeps/x86_64/dl-machine.h (elf_machine_rela) : + Check for signed overflow, not unsigned. + + * sysdeps/sparc/sparc64/elf/configure.in: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile (sysdep-CFLAGS): + Use -fcall-used-g6, not -fcall-used-g7. + +2003-02-21 Andreas Jaeger + + * sysdeps/x86_64/fpu/fesetenv.c (fesetenv): Fix setting of default + mode. + + * sysdeps/x86_64/fpu/fsetexcptflg.c (fesetexceptflag): Do not + clear whole mxcsr but only exceptions. + +2003-02-21 Roland McGrath + + * Makerules: Filter $(install-lib-ldscripts) out of list of targets + for libfoo.so that need $(make-link) rules. + +2003-02-21 Roland McGrath + + * sysdeps/mach/hurd/bits/typesizes.h (__DEV_T_TYPE): Use __U32_TYPE + to match existing struct stat layout in mig protocols. + +2003-02-20 Ulrich Drepper + + * version.h (VERSION): Bump to 2.3.2. + + * elf/Makefile (distribute): Add reldep9.c, tst-array1.exp, + tst-array2.exp, tst-array4.exp, tst-array2dep.c, check-textrel.c, + and dl-sysdep.h. + * sysdeps/generic/Dist: Add sysdep-cancel.h. + * sysdeps/powerpc/nofpu/Dist: Add soft-supp.h. + * sysdeps/unix/Dist: Add s-proto-bp.S and s-proto-cancel.S. + * sysdeps/unix/sysv/linux/Dist: Add pathconf.h. + * sysdeps/unix/sysv/linux/i386/Dist: Add bp-thunk.h. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/Dist: Add fe_nomask.c and + ucontext_i.h. + * Makefile (distribute): Add include/stubs-prologue.h, + include/gnu/stubs.h, scripts/merge-abilist.awk, and + scripts/extract-abilist.awk. + +2003-02-20 Roland McGrath + + * math/Makefile (distribute): Don't add generated files. + +2003-02-20 Ulrich Drepper + + * math/Makefile: Rearrange variable definitions slightly to get + definition in the right order. + +2003-02-20 Roland McGrath + + * Makerules: Clean up conditional around include of tls.make. + * Make-dist: Export generating=t to prevent using that. + (+distinfo): Likewise for $(shell $(MAKE) ...) runs. + +2003-02-20 Ulrich Drepper + + * inet/rcmd.c (rresvport_af): Avoid using invliad values. Wrap + around in search if port IPPORT_RESERVED/2 has been test. + +2003-02-20 Paolo Bonzini + + * posix/regcomp.c: Remove inclusions. + * posix/regexec.c: Likewise. + * posix/regex_internal.c: Likewise. + * posix/regex_internal.h: Add inclusions here. + * posix/regex.c: Only include sys/types.h before regex.h. Include + regex_internal.h here. Include regex_internal.c before regcomp.c + and regexec.c (might expose more opportunities to the C compiler). + + * posix/regcomp.c (parse_expression): Fix construct rejected by SGI CC. + + * posix/regex_internal.h [!_LIBC] (__mempcpy): Fix typo. + [!_LIBC] (__wcrtomb): New definition. + [!_LIBC]: Conditionalize enabling of I18N on HAVE_WCSCOLL and + HAVE_LOCALE_H as well. + +2003-02-20 Ulrich Drepper + + * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Remove obsolete + patch to check for system call errors. + +2002-07-24 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/ioperm.c (init_iosys): Yield ENODEV + on unknown systems. + +2003-02-20 Franz Sirl + + * sysdeps/powerpc/powerpc32/atomicity.h: Remove compiler workaround. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_NEW_PRCTL_SYSCALL): Defined for ppc32 too. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: Use prctl + if possible. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: Avoid short + interprocedure branches. + * sysdeps/powerpc/soft-fp/Dist (sim-full.c, fenv_const.c): Move to... + * sysdeps/powerpc/nofpu/Dist: ...here. + * sysdeps/unix/sysv/linux/powerpc/Dist (fe_nomask.c): Move to... + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Dist: ...here. + * sysdeps/unix/sysv/linux/s390/s390-64/Dist (kernel_stat.h): Delete. + * sysdeps/unix/sysv/linux/sparc/Dist (bits/utmpx.h): Delete. + * sysdeps/unix/sysv/linux/x86_64/Dist (bits/utmpx.h): Delete. + +2003-02-18 Alan Modra + + * sysdeps/powerpc/powerpc32/sysdep.h (HIDDEN_JUMPTARGET): Redefine. + +2003-02-20 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (INLINE_SYSCALL): Add + missing arguments to INTERNAL_SYSCALL_ERROR_P and + INTERNAL_SYSCALL_ERRNO. + +2003-02-20 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/chown.c (__real_chown): Test + for __ASSUME_32BITUIDS. + +2003-02-20 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Add MADV_* and + POSIX_MADV_* constants. + +2003-02-20 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/pread.c: New file. + * sysdeps/unix/sysv/linux/sh/pread64.c: New file. + * sysdeps/unix/sysv/linux/sh/pwrite.c: New file. + * sysdeps/unix/sysv/linux/sh/pwrite64.c: New file. + +2003-02-19 Jiro Sekiba + + * iconvdata/utf-16.c (gconv_end): Fix range of low surrogate. + +2003-02-16 Roland McGrath + + * signal/signal.h: Include , not . + +2003-02-19 Ulrich Drepper + + * stdlib/strtod.c (INTERNAL): Up the safety margin for cutting off + decimal input digits. + * stdlib/tst-strtod.c (main): Add test for strtof bug. + +2003-02-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Recognize + invalid file descriptors and missing access permissions. + +2003-02-17 Ulrich Drepper + + * nss/getXXbyYY_r.c (REENTRANT_NAME): Return 0 if no entry has + been found. + + * sysdeps/posix/sysconf.c (__sysconf): Test for LOGIN_NAME_MAX and + TTY_NAME_MAX and not the _POSIX_* minimal value macros. + * sysdeps/unix/sysv/linux/bits/local_lim.h: Define TTY_NAME_MAX + and LOGIN_NAME_MAX. + +2003-02-17 Kevin B. Hendricks + Franz Sirl + + * sysdeps/powerpc/elf/libc-start.c: Handle NONTLS_INIT_TP. + * sysdeps/powerpc/powerpc32/__longjmp.S: Remove R2 handling. + * sysdeps/powerpc/powerpc32/setjmp.S: Likewise. + * sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Likewise. + * sysdeps/powerpc/powerpc32/fpu/setjmp.S: Likewise. + +2003-02-17 Franz Sirl + + * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Delete. + * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Delete. + * sysdeps/unix/sysv/linux/powerpc/pread64.c: Delete. + * sysdeps/unix/sysv/linux/powerpc/pread.c: Delete. + * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Delete. + * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Delete. + + * sysdeps/unix/sysv/linux/powerpc/fe_nomask.c: Move file... + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: ...here. + * sysdeps/unix/sysv/linux/powerpc/glob64.c: Move file... + * sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c: ...here. + + * sysdeps/unix/sysv/linux/tcgetattr.c: Use INLINE_SYSCALL. + * sysdeps/unix/sysv/linux/tcsetattr.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/tcgetattr.c: Delete. + * sysdeps/unix/sysv/linux/powerpc/tcsetattr.c: Delete. + +2003-02-14 Thorsten Kukuk + + * nss/getent.c (print_hosts): Print all IP addresses of one host. + +2003-02-15 Roland McGrath + + * sysdeps/mach/hurd/tls.h: New file. + * sysdeps/mach/hurd/i386/tls.h: New file. + + * mach/errsystems.awk: Include in generated output. + + * sysdeps/mach/Makefile (mach-before-compile rule): Pass generating=t, + use target mach-before-compile instead of generated. + (mach-before-compile): New target. + * Makerules: Disable use of tls.make if $(generating) is set. + * mach/Makefile: Include mach-syscalls.mk even if no_deps=t. + * sysdeps/mach/hurd/Makefile: Make generated hurd headers depend on + mach-shortcuts.h so mach/ generation happens before hurd/. + +2003-02-14 Ulrich Drepper + + * sysdeps/i386/fpu/s_nextafterl.c: Decrement high word of mantissa + of demorm correctly if low word is zero. + Reported by Fred J. Tydeman . + * math/libm-test.inc (nextafter_test): New test, but disabled due + to gcc bug. + + * sysdeps/generic/libc-start.c [HAVE_PTR_NTHREADS]: Decrement thread + counter and only call __exit_thread if this is not the last thread. + +2003-02-13 Jakub Jelinek + + * sysdeps/alpha/dl-machine.h (elf_machine_rela): Add instead of + subtracting map->l_tls_offset. + +2003-02-12 Ulrich Drepper + + * sysdeps/generic/bits/confname.h: Define _CS_GNU_LIBC_VERSION and + _CS_GNU_LIBPTHREAD_VERSION. + * posix/conststr.c: Handle these new values. + * posix/getconf.c: Likewise. + + * sysdeps/mips/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Fix + masking of version index. + Patch by Lance Larsh . + +2003-02-11 Ulrich Drepper + + * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Compute alignment + correctly. Reported by Thorsten Kukuk. + +2003-02-10 Ulrich Drepper + + * elf/Makefile (check-textrel-CFLAGS): Pass _XOPEN_SOURCE and + _BSD_SOURCE to compiler. + * elf/check-textrel.c (SWAP): Add parenthesis to avoid warnings. + Patches by Alan Modra. + +2003-02-08 Ulrich Drepper + + * io/ftwtest.c: Get current working directory before and after the + nftw call and make sure they match. + +2003-02-08 Jim Meyering + + * io/ftw.c (ftw_startup): When using FTW_CHDIR, always remember + the current directory, not just when DIR contains a slash. + Reported by Manoj Srivastava. + +2003-02-07 Jim Meyering + + * io/ftw.c: Add autoconf-recommended block of alloca-related code. + Include autoconf-recommended block of dirent/NAMELEN-related + definitions and includes. Use NAMELEN throughout, rather than + _D_EXACT_NAMLEN. + [_LIBC]: Define NAMELEN to _D_EXACT_NAMLEN. + [!_LIBC] (__getcwd): Define to xgetcwd and declare xgetcwd. + (stpcpy): Declare, if necessary. + (mempcpy): Define, if necessary. + [!_LIBC] (__stpcpy, __mempcpy): Define. + [!_LIBC] (LXSTAT, XSTAT): Define. + (lstat) [!LIBC && !LSTAT_FOLLOWS_SLASHED_SYMLINK]: Define to rpl_lstat. + (find_object): Don't use c99-style struct initializer. + Tweak wording in a couple comments. + +2003-02-07 Kaz Kojima + + * elf/tls-macros.h: Add non-PIC TLS macros and fix clobber list + for SH. + * sysdeps/unix/sysv/linux/sh/brk.c: Add SYSCALL_INST_PAD + after the trapa instruction. + * sysdeps/unix/sysv/linux/sh/clone.S (__clone): Add additional + parameters. + * sysdeps/unix/sysv/linux/sh/sh4/sysdep.h: New file. + (NEED_SYSCALL_INST_PAD): Define. + * sysdeps/unix/sysv/linux/sh/sys/user.h (start_thread): Undef to + avoid to use definition for the kernel. + * sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER): + Save and restore the frame pointer. + (SYSCALL_INST_PAD): Define. + (INLINE_SYSCALL): Make use of INTERNAL_SYSCALL. + (INTERNAL_SYSCALL): Make use of ERR parameter. Add SYSCALL_INST_PAD + after trapa instruction. + (INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, + INTERNAL_SYSCALL_ERROR_P): Adjust accordingly. + +2003-02-07 Jakub Jelinek + + * resolv/res_libc.c (_res): Ensure _res is not common symbol, + so that it can have aliases. + * inet/herrno.c (h_errno): Put it into .bss not .data section. + +2003-02-07 Ulrich Drepper + + * elf/dl-runtime.c (fixup): Correct typo in version index computation. + (profile_fixup): Likewise. + Patch by Lance Larsh . + +2002-11-24 Robert Love + + * posix/sched.h: Second parameter of sched_setaffinity and + sched_getaffinity is `unsigned int', not `unsigned long'. + * sysdeps/generic/sched_setaffinity.c: Likewise. + * sysdeps/generic/sched_getaffinity.c: Likewise. + +2003-02-05 Ulrich Drepper + + * debug/catchsegv.sh: Fix typo in error messsage. + Reported by John Levon . + + * sysdeps/unix/sysv/linux/posix_fadvise.c: New file. + * sysdeps/unix/sysv/linux/syscalls.list: Add posix_fadvise64 syscall. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + + * libio/putwc_u.c: Use _IO_putwc_unlocked, not _IO_putc_unlocked. + Patch by Moritz Schulte . + +2003-02-05 Jim Meyering + + Fix a heap-corrupting bug. + * io/ftw.c: Include . + (PATH_MAX) [!defined PATH_MAX]: Define to 1024. + (process_entry): Allocate enough space to hold the resulting + file name. Don't presume that 2*dirbufsize is enough. + (ftw_startup): Always use PATH_MAX to compute buffer size, now that + it is guaranteed to be defined. + +2003-02-04 Ulrich Drepper + + * iconvdata/Makefile: Add rules to build and run bug-iconv3. + * iconvdata/bug-iconv3.c: New file. + +2003-02-04 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/system.c: New file. + +2003-02-03 Jakub Jelinek + + * sysdeps/sparc/sparc32/elf/configure.in (BROKEN_SPARC_WDISP22): New + check. + * config.h.in (BROKEN_SPARC_WDISP22): Add. + +2003-02-03 Ulrich Drepper + + * sysdeps/i386/i686/memmove.S: New file. + +2003-01-31 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c: + Include kernel-features.h + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise. + +2003-02-02 Jakub Jelinek + + * elf/tls-macros.h [sparc] (TLS_LD, TLS_GD): Add "cc" clobbers. + +2003-01-25 Jim Meyering + + * io/ftw.c (object_compare): Compare inode numbers before device + numbers, since the former are much more likely to differ. + +2003-02-01 Ulrich Drepper + + * time/tzfile.c (__tzfile_compute): Change return value type to + void. Adjust return statements. + * include/time.h (__tzfile_compute): Adjust prototype. + +2003-02-01 Jim Meyering + + * time/tzset.c (__tz_convert): Remove dead code; __tzfile_compute + always returns 1. + +2003-01-31 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c + [!__ASSUME_NEW_PRCTL_SYSCALL]: Noop prctl syscall and set ENOSYS. + +2003-01-31 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S + [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Generate ENOSYS stub. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S + [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S + [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S + [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise. + +2003-01-31 Steven Munroe + + * sysdeps/unix/sysv/linux/configure.in: Change arch_minimum_kernel + back to 2.4.19 for powerpc64. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_NEW_PRCTL_SYSCALL): Define for powerpc64. + (__ASSUME_NEW_RT_SIGRETURN_SYSCALL): Define for powerpc64. + +2003-02-01 Ulrich Drepper + + * wcsmbs/wcscpy.c (wcscpy): Add alternative implementation for + platforms with strange alignment requirements on wchar_t. + +2003-01-31 Andreas Schwab + + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove __GI_* + aliases, already added by make-syscalls.sh. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/syscalls.list: Likewise. + * sysdeps/unix/inet/syscalls.list: Likewise. + * sysdeps/unix/syscalls.list: Likewise. + +2003-01-31 Andreas Schwab + + * sysdeps/m68k/Makefile (sysdep-CFLAGS): Don't define, not needed + any more. + +2003-01-30 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Use lg, + not l to load tls from stack. + +2003-01-30 Roland McGrath + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Move check for + null argument before all else. + Reported by Martin Schwidefsky . + +2003-01-30 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_lazy_rel): + Move to RESOLVE protected part of the header. + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_lazy_rel): + Likewise. + +2003-01-30 Ulrich Drepper + + * stdio-common/Makefile (tests): Add bug15. + (bug15-ENV): Define. + * stdio-common/bug15.c: New file. + +2002-10-07 Wolfram Gloger + + * malloc/malloc.c (sYSMALLOc): Only check for breakage due + to foreign sbrk()'s if arena is contiguous. Bug report from + Bruno Haible . + +2003-01-30 Jakub Jelinek + + * sysdeps/s390/libc-tls.c: Include stdlib.h. + +2003-01-30 Jakub Jelinek + + * stdio-common/vfprintf.c (vfprintf): Only subtract lowest 3 bits of + ps.__count. + +2003-01-30 Ulrich Drepper + + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Fix storing and + restoring of %r6. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. Use + 64-bit load. + Patch by Martin Schwidefsky . + +2003-01-30 Jakub Jelinek + + * elf/dl-reloc.c (CHECK_STATIC_TLS): Move _dl_signal_error... + (allocate_static_tls): ...here. Add __attribute_noinline__. + Don't return on failure. + (_dl_reloc_bad_type): Add __attribute_noinline__. + * elf/do-rel.h (elf_dynamic_do_rel): Add + __attribute__((always_inline)). + * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela, + elf_machine_rel_relative, elf_machine_rela_relative, + elf_machine_lazy_rel): Add prototypes with + __attribute__((always_inline)). + +2003-01-29 David Mosberger + + * elf/dl-support.c (_dl_aux_init): Handle AT_SYSINFO. + +2003-01-29 Roland McGrath + + * configure.in: Barf if configured in $srcdir. + +2003-01-28 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c + (__fe_nomask_env): Change __prctl call to INTERNAL_SYSCALL. + +2003-01-28 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Reorder additional + clone parameters to match the order used on ia32. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. + +2003-01-27 Martin Schwidefsky + + * elf/elf.h: Add new s390 relocs. + * elf/tls-macros.h: Add s390 versions. + * sysdeps/s390/Versions [GLIBC_2.3] (ld): Export __tls_get_offset. + * sysdeps/s390/dl-tls.h: New file. + * sysdeps/s390/libc-tls.c: New file. + * sysdeps/s390/s390-32/dl-machine.h (elf_machine_type_class): Add TLS + relocs for class PLT. + (elf_machine_rela): Handle TLS relocs. + * sysdeps/s390/s390-64/dl-machine.h: Likewise. + * sysdeps/s390/s390-32/elf/configure.in: Add TLS check. + * sysdeps/s390/s390-64/elf/configure.in: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Add support for + CLONE_CHILD_*TID flags. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S: Use branch with 32 + bit offset. + * sysdeps/unix/sysv/linux/s390/s390-64/socket.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error): + Support USE___THREAD. Define RTLD_PRIVATE_ERRNO variant. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: + (SYSCALL_ERROR_LABEL): Move define next to SYSCALL_ERROR_HANDLER. + (SYSCALL_ERROR_HANDLER): Add USE___THREAD and RTLD_PRIVATE_ERRNO + variants. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: + (SYSCALL_ERROR_LABEL): Move define next to SYSCALL_ERROR_HANDLER. Use + direct branch to syscall_error for !PIC and PIC && !_LIBC_REENTRANT. + (SYSCALL_ERROR_HANDLER): Add USE___THREAD and RTLD_PRIVATE_ERRNO + variants. + +2003-01-28 Ulrich Drepper + + * sysdeps/unix/common/pause.c (do_pause): New function. Split + from __libc_pause. Implement using sigsuspend. + (__libc_pause): Call do_pause to do the real work. + + * sysdeps/posix/sigpause.c (do_sigpause): Check range of + sig_or_mask parameter is is_sig != 0. + +2003-01-21 Philip Blundell + + * sysdeps/unix/sysv/linux/bits/ioctls.h (SIOCSIFNAME): Define. + +2003-01-27 Steven Munroe + + * stdio-common/Makefile: Add bug14-ENV to set LOCPATH for make check. + +2003-01-27 Ulrich Drepper + + * stdio-common/bug14.c: Use official name for the locale. + + * stdio-common/vfprintf.c [USE_IN_LIBIO]: Use _IO_cleanup_region_start + instead of __libc_cleanup_region_start and _IO_cleanup_region_end + instead of __libc_cleanup_region_end. + + * sysdeps/unix/sysv/linux/i386/system.c (CLEANUP_HANDLER): Pass 1 + as first parameter to __libc_cleanup_region_start. + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c + (__fe_nomask_env): Use __prctl not prctl. + * sysdeps/unix/sysv/linux/syscalls.list: Add __prctl alias for + prctl syscall. + + * elf/dl-reloc.c (CHECK_STATIC_TLS): Improve error message. + + * elf/dl-open.c (_dl_tls_static_size): Bump to 2048. + + * elf/dl-reloc.c (allocate_static_tls): Avoid arithmetic + wrap-around in test. + +2003-01-26 Andreas Schwab + + * sysdeps/wordsize-32/divdi3.c: Export the functions only as + compatibility symbols. Remove INTDEF for __divdi3. + * sysdeps/wordsize-32/lldiv.c: Don't use __divdi3_internal. + * sysdeps/powerpc/powerpc32/divdi3.c: Remove. + * sysdeps/powerpc/powerpc32/Makefile (CPPFLAGS-divdi3.c): Don't + define. + * sysdeps/powerpc/powerpc32/Dist: Remove divdi3.c. + +2003-01-24 Jakub Jelinek + + * elf/tls-macros.h: Add SPARC 32-bit definitions. + * sysdeps/sparc/sparc32/elf/configure.in: Add TLS check. + * sysdeps/sparc/sparc32/dl-machine.h: Add dl_machine_h guards + for the first half of the header. Include tls.h. + (elf_machine_type_class): Return ELF_RTYPE_CLASS_PLT for TLS + relocs too. + (elf_machine_rela): Handle TLS relocs. + * sysdeps/sparc/dl-tls.h: New file. + + * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Add cancellation + support. + + * sysdeps/sparc/sparc32/sparcv9/hp-timing.h: Use %g6 instead of %g7. + * sysdeps/sparc/sparc32/memchr.S: Likewise. + * sysdeps/sparc/sparc32/memcpy.S: Likewise. + * sysdeps/sparc/sparc32/strcat.S: Likewise. + * sysdeps/sparc/sparc32/strchr.S: Likewise. + * sysdeps/sparc/sparc32/strcmp.S: Likewise. + * sysdeps/sparc/sparc32/strcpy.S: Likewise. + * sysdeps/sparc/sparc64/sparcv9b/memcpy.S: Likewise. + * sysdeps/sparc/sparc64/hp-timing.h: Likewise. + * sysdeps/sparc/sparc64/memcpy.S: Likewise. + * sysdeps/sparc/sparc64/stpcpy.S: Likewise. + * sysdeps/sparc/sparc64/stpncpy.S: Likewise. + * sysdeps/sparc/sparc64/strcat.S: Likewise. + * sysdeps/sparc/sparc64/strchr.S: Likewise. + * sysdeps/sparc/sparc64/strcmp.S: Likewise. + * sysdeps/sparc/sparc64/strcpy.S: Likewise. + * sysdeps/sparc/sparc64/strncmp.S: Likewise. + * sysdeps/sparc/sparc64/strncpy.S: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise. + +2003-01-24 Andreas Schwab + + * elf/dl-close.c (_dl_close): Don't relocate DT_FINI_ARRAY + elements, and process them backwards. + * elf/Makefile ($(objpfx)tst-array4): New target. + ($(objpfx)tst-array4.out): Likewise. + (tests) [$(have-initfini-array) = yes]: Add tst-array4. + * elf/tst-array4.c: New file. + * elf/tst-array4.exp: Likewise. + +2003-01-24 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c: New file. + +2003-01-27 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/sysdep.h (SYSCALL_ERROR_LABEL): Define. + * sysdeps/unix/sysv/linux/mips/pread.c: Add support for + cancellation handling and handle both __NR_pread64 and __NR_pread. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Add support for + cancellation handling and handle both __NR_pwrite64 and __NR_pwrite. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * sysdeps/unix/mips/sysdep.S: Don't set errno in the _LIBC_REENTRANT + case, use register names consistently. + +2003-01-27 Wolfram Gloger + + * malloc/hooks.c (mem2chunk_check): Check alignment of mem + pointer, not of the computed chunk. Bug report from Carlos + O'Donell . + +2003-01-25 Andreas Schwab + + * sysdeps/m68k/dl-machine.h (_dl_start_user): Use pc-relative + addressing to save GOT entries. + +2003-01-21 Jakub Jelinek + + * sysdeps/unix/alpha/sysdep.h (inline_syscall0, + inline_syscall1, inline_syscall2, inline_syscall3, + inline_syscall4, inline_syscall5, inline_syscall6): Add __volatile__. + * sysdeps/unix/sysv/linux/alpha/sysdep.h (INTERNAL_SYSCALL): Add + __attribute__((unused)) to ChEcK. + +2003-01-20 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (INTERNAL_SYSCALL): + Fix inline assembler constraints. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (INTERNAL_SYSCALL): + Likewise. + + * sysdeps/s390/s390-64/Makefile (pic-ccflag): Use -fpic instead of + -fPIC. + +2003-01-20 Segher Boessenkool + + * sysdeps/ieee754/dbl-64/sincos32.c (__mpcos): Really + compute the cosine, not the sine, even if x > 0.8. + +2003-01-19 Ulrich Drepper + + * nis/nss_nis/nis-spwd.c: Make _nss_nis_endspent an alias of + _nss_nis_setspent. Work around the different prototypes. + * nis/nss_nis/nis-rpc.c (internal_nis_setrpcent): Use + internal_nis_endrpcent. + (internal_nis_endrpcent): Change return type to void. Change callers. + * nis/nss_nis/nis-pwd.c: Make _nss_nis_endpwent an alias of + _nss_nis_setpwent. Work around the different prototypes. + * nis/nss_nis/nis-proto.c (_nss_nis_endprotoent): Split out body + of the function to... + (internal_nis_endprotoent): ... here. New function. + (internal_nis_setprotoent): Use internal_nis_endprotoent. + * nis/nss_nis/nis-network.c: Make _nss_nis_endnetent an alias of + _nss_nis_setnetent. Work around the different prototypes. + * nis/nss_nis/nis-netgrp.c (_nss_nis_endnetgrent): Split out body + of the function to... + (internal_nis_endnetgrent): ... here. New function. + (_nss_nis_setnetgrent): Use internal_nis_endnetgrent. + +2003-01-19 Jim Meyering + + * time/strftime.c: (widen): Merge nearly-identical definitions. + (nl_get_alt_digit) [! defined my_strftime]: Define. + (my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of + _nl_get_alt_digit and _nl_get_walt_digit. + +2003-01-19 Ulrich Drepper + + * time/strftime.c (my_strftime): Handle very large width + specifications for numeric values correctly. Improve checks for + overflow. + * time/Makefile (tests): Add tst-strftime. + * time/tst-strftime.c: New file. + +2003-01-18 Ulrich Drepper + + * nis/nss_nis/nis-hosts.c: Make _nss_nis_endhostent an alias of + _nss_nis_sethostent. Work around the different prototypes. + * nis/nss_nis/nis-grp.c: Make _nss_nis_endgrent an alias of + _nss_nis_setgrent. Work around the different prototypes. + * nis/nss_nis/nis-ethers.c (internal_nis_endetherent): New + function. Split out from _nss_nis_endetherent. + (internal_nis_setetherent): Use internal_nis_endetherent instead of + duplicating the code. + * nis/nss_nis/nis-alias.c: Make _nss_nss_nis_endaliasent an alias + of _nss_nis_setaliasent. + * nis/nss_nis/nis-service.c (internal_nis_setservent): Reuse + internal_nis_endservent code, don't duplicate it. + + * inet/rexec.c (rexec_af): Protect socket operations with + TEMP_FAILURE_RETRY. Use writev instead of multiple write. + * inet/rcmd.c (rcmd_af): Likewise. + +2003-01-17 Roland McGrath + + * math/libm-test.inc (sin_test, cos_test, sincos_test) [TEST_DOUBLE]: + Add test of value 0.80190127184058835. + + * elf/dl-open.c: Fix typo ifdef -> ifndef on _dl_tls_static_size defn. + +2003-01-17 Richard Henderson + + * sysdeps/alpha/dl-machine.h (elf_machine_type_class): Add TLS + relocs for class PLT. + * sysdeps/alpha/libc-tls.c: New file. + * sysdeps/unix/alpha/sysdep.S (EPILOGUE, GPSAVEREG): New. + (LOADGP) [!PIC]: Rewrite to preserve caller's gp. + +2003-01-17 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_init): Use + __libc_lock_{,un}lock_recursive instead of __libc_lock_{,un}lock + on _dl_static_lock. + +2003-01-17 Andreas Jaeger + + * stdio-common/bug14.c: Include stdlib.h for exit prototype. + +2003-01-16 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h: New file. + * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: New file. + * sysdeps/unix/sysv/linux/configure.in: Minimum kernel for PPC64 + is 2.4.21. + +2003-01-16 Ulrich Drepper + + * sysdeps/generic/glob.c (glob): Assume sysconf() always returns + values != -1 for _LIBC. Use extend_alloca to reallocate alloca'ed + buffers. + + * sysdeps/generic/sysconf.c: Unconditionally implement + _SC_GETPW_R_SIZE_MAX and _SC_GETGR_R_SIZE_MAX. + * sysdeps/posix/sysconf.c: Likewise. + +2003-01-16 Jakub Jelinek + + * posix/regcomp.c (parse_bracket_exp): If build_charclass fails, + set *err to the returned error, not to REG_ESPACE unconditionally. + (build_word_op): Likewise. + * posix/Makefile (tests): Add bug-regex16. + * posix/bug-regex16.c: New test. + +2003-01-16 Jakub Jelinek + + * elf/dl-load.c (_dl_map_object_from_fd): Use + GL(dl_tls_dtv_slotinfo_list) != NULL to check whether TLS has + been already initialized. + +2003-01-15 Dmitry V. Levin + + * sysdeps/unix/sysv/linux/ptsname.c: Fix typo in comment. + +2003-01-16 Jakub Jelinek + + * posix/regcomp.c (re_compile_internal): If clearing buffer, clear + allocated too. Reported by Al Viro . + +2003-01-16 Roland McGrath + + Tweak merged .abilist file format to merge duplicate symbols in + different sets into multi-version stanzas with new "| SET regexp..." + header continuation lines. + * scripts/merge-abilist.awk: Rewritten for new format. + * scripts/extract-abilist.awk: Likewise. + +2003-01-15 Ulrich Drepper + + * nscd/connections.c (nscd_run): Remove bogus return which isn't + necessary with gcc 3.2+. + (nscd_init): Don't use error() to print message, use dbg_log. + + * iconv/gconv_simple.c (STORE_REST): Explicitly store the total + expected size into state. + (UNPACK_BYTES): Do the reverse. + * iconv/loop.c: Use CLEAR_STATE if defined to clear __state element. + * wcsmbs/tst-mbrtowc.c (utf8_test_1): Add test for the bug. + Reported by Al Viro . + + * stdio-common/Makefile (tests): Add bug14. + * stdio-common/bug14.c: New file. + + * stdio-common/vfscanf.c: When recognizing multibyte characters in + string reset the byte counter after mbrtowc reported it is not a + partial character. Reported by Al Viro . + +2003-01-15 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Include + sysdep-cancel.h, not sysdep.h. + +2003-01-15 Ulrich Drepper + + * nscd/connections.c (nscd_run): Protect accept call with + TEMP_FAILURE_RETRY. + +2003-01-15 Andreas Schwab + + * sysdeps/unix/Makefile: Include $(common-objpfx)s-proto-bp.d. + (common-generated): Add s-proto-bp.d. + * sysdeps/unix/make-syscalls.sh: Use s-proto-bp.d for dependencies + of bp thunks. + * sysdeps/unix/s-proto-bp.S: New file. + * sysdeps/generic/bp-thunks.h: Don't include here. + Use instead of . + * sysdeps/unix/sysv/linux/i386/bp-thunks.h: New file. + +2003-01-15 Roland McGrath + + * Makerules: Use -include for tls.make, suppresses warning. + Move gen-as-const-headers rules up so before-compile is set in time. + (sed-remove-dotdot): Fix to work right for subdirs or top dir. + +2003-01-15 Ulrich Drepper + + * nscd/nscd.c (main): Make code to close all file descriptors + faster and more robust. + + * nscd/nscd_getpw_r.c (nscd_getpw_r): Consolidate writing of the + request with one writev call. Protect all read calls with + TEMP_FAILURE_RETRY. + * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise. + * nscd/nscd_gethst_r.c (nscd_gethst_r): Likewise. + + * nscd/hstcache.c: Use extend_alloca to reallocate alloca'd buffer. + Protect writev calls with TEMP_FAILURE_RETRY. + * nscd/grpcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + + * nscd/hstcache.c (addhstbynamev6): Don't interpret hostname as + IPv6 address in debug output. + +2003-01-14 Roland McGrath + + * Makerules (check-abi-%): Use two rules for $(common-objpfx) and + $(objpfx) directories, and get rid of vpath directives. The previous + arrangement resulted in files being written to the source directories + when run in a clean build. Find all .abilist files in $(..)abilist/. + (update-abi-%): Likewise. + (generated): Don't add .symlist files, they'll be intermediates. + + * sysdeps/generic/init-first.c: Add a comment. + + * elf/Makefile ($(objpfx)ld.so): Pass -z defs in link. + + * scripts/gen-as-const.awk: Grok lone "--" as a separator between + #includes and expressions. + + * scripts/merge-abilist.awk: Omit cpu-.*-os.*/modifier from merged + config list when it already contains cpu-.*-os.* without / part. + + * Makerules (sed-remove-dotdot): New variable. + ($(common-objpfx)%.make): Use it. Depend on $(before-compile). + ($(common-objpfx)%.h $(common-objpfx)%.h.d): Likewise. + (check-abi-config): New variable, append /tls or /notls to the tuple. + (check-abi-%): Use that for -v config value. + Find .abilist files in abilist/libfoo.abilist, not in subdir. + * Rules: Move bits/stdio_lim.h generation rules to Makerules. + +2003-01-14 Ulrich Drepper + + * manual/install.texi: Correct description of header preparation for + Linux build. Patch by mhwood@Ameritech.Net [PR libc/4941]. + +2003-01-14 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_SYSCALL, + INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, + INTERNAL_SYSCALL_ERROR_P, INLINE_SYSCALL): Define. + +2003-01-14 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h + (INTERNAL_SYSCALL): Make use of ERR parameter. + (INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, + INTERNAL_SYSCALL_ERROR_P): Adjust accordingly. + (INLINE_SYSCALL): Make use of INTERNAL_SYSCALL. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file. + +2003-01-14 Ulrich Drepper + + * sunrpc/pm_getport.c (pmap_getport): Open TCP socket if protocol + == IPPROTO_TCP. + Patch by James Strandboge [PR libc/4943]. + + * sysdeps/unix/sysv/linux/i386/dl-procinfo.c (_dl_x86_cap_flags): + Fix entry for bit 31. + + * iconvdata/Makefile: Add rules to build IBM866NAV. + * iconvdata/ibm866nav.c: New file. + * iconvdata/tst-tables.sh: Add IBM866NAV. + * iconvdata/gconv-modules: Add entries for IBM866NAV. + +2003-01-13 Ulrich Drepper + + * string/tester.c (test_strcpy): Use the previously #if 0'ed code + to test void* parameters. + + * sysdeps/i386/i486/bits/string.h (__STRING_SMALLL_GET16): Cast + source pointer before dereferencing. + (__STRING_SMALLL_GET32): Likewise. + (__memset_gc): Add missing parenthesis around macro arguments. + Patch by Denis Zaitsev . + + * sysdeps/i386/i486/bits/string.h (__strspn_cg): Tell the compiler + that %eax is modified. Reported by Denis Zaitsev . + +2003-01-14 Jakub Jelinek + + * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL): Undefined before + defining. + +2003-01-13 Martin Schwidefsky + + * sysdeps/s390/s390-64/initfini.c: Avoid unterminated string literals. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (L): Don't define it + here. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (L): Likewise. + +2003-01-13 Martin Schwidefsky + + * sysdeps/s390/s390-32/sysdep.h (JUMPTARGET): Move branch instructions + from here... + (PSEUDO): ... to here. + * sysdeps/s390/s390-64/sysdep.h (JUMPTARGET): Move branch instruction + from here... + (PSEUDO): ... to here. + +2003-01-13 Ulrich Drepper + + * locale/programs/charmap-dir.c (charmap_readdir): Use struct + dirent64 instead of struct dirent for dirent. Call readdir64 + instead of readdir. + + * locale/programs/locfile.c (siblings_uncached): Use struct + dirent64 instead of struct dirent for other_dentry. Call + readdir64 instead of readdir. + + * elf/ldconfig.c (direntry): Change type to struct dirent64. + (search_dir): Use readdir64 instead of readdir. + Patch by Zhangfan Xing . + +2003-01-12 Roland McGrath + + * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Use strtoul, + not strtol. The former is usable in ld.so, the latter not. + + * include/fcntl.h: Declare __libc_creat. + + * sysdeps/mach/hurd/Makefile (libmachuser-link.so-no-z-defs, + libhurduser-link.so-no-z-defs): New variables. + + * malloc/malloc.c: Revert last change. + * malloc/malloc.h (_int_*): Move these decls to ... + * include/malloc.h: ... here. Add attribute_hidden. + (_int_valloc): Declare it too. + +2003-01-12 Ulrich Drepper + + * elf/dl-close.c (_dl_close): Fix typo, must be == not = in + search for removed searchlist. Reported by Roland McGrath. + + * io/ftwtest-sh: Add test for case of symlink to nonexisting file + given as start file. + + * io/ftw.c (ftw_startup): Use correct name in check for symlink + without existing target. Patch by Jim Meyering. + + * Makerules (build-shlib-helper): Don't use -z defs linker option + if no-z-defs is defined either. + +2003-01-10 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Remove unused + file. + +2003-01-10 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list: Add vfork. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. + +2003-01-12 Ulrich Drepper + + * io/ftwtest-sh: Add test case for relative path with /. at the end. + +2003-01-12 Jim Meyering + + * io/ftw.c (ftw_startup): When trying to stat the starting directory, + use the basename if we've already chdir'd into its parent directory. + +2003-01-12 Ulrich Drepper + + * io/ftw.c (process_entry): Use relative path when using chdir() + to change directory after call to ftw_dir. + * io/ftwtest-sh: Add test for relative path argument to nftw() + with FTW_CHDIR option. + +2003-01-12 Franz Sirl + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_VFORK_SYSCALL): + Define for powerpc. + * sysdeps/unix/sysv/linux/powerpc/syscall.S: Take register alignment + into account. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h + (INTERNAL_SYSCALL): Make use of ERR parameter. + (INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, + INTERNAL_SYSCALL_ERROR_P): Adjust accordingly. + (INLINE_SYSCALL): Make use of INTERNAL_SYSCALL. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: New file. + +2003-01-09 Richard Henderson + + * sysdeps/alpha/dl-machine.h (elf_machine_rela): Compute + DTPREL64 and TPREL64 without loadbase applied. + +2003-01-09 Richard Henderson + + * sysdeps/unix/alpha/sysdep.S: Use correct definition of errno + for NOT_IN_libc. + + * sysdeps/unix/sysv/linux/alpha/sysdep.h: Move inline syscall bits... + * sysdeps/unix/alpha/sysdep.h: ... here. + (PSEUDO_LOADGP): Remove. + (PSEUDO_PROLOGUE): Load GP in non-pic case. + (SYSCALL_ERROR_LABEL): New. + (PSEUDO): Use it in error branch. + (PSEUDO_END): Add $syscall_error label. + +2003-01-12 Andreas Jaeger + + * math/bits/mathcalls.h: Round is a const function. + +2003-01-11 Jim Meyering + + * io/ftw.c [HAVE_CONFIG_H]: Include . + [HAVE_SYS_PARAM_H || _LIBC]: Guard inclusion of . + Include , not , if !_LIBC. + [!_LIBC] (__chdir, __closedir, __fchdir, __getcwd, __opendir): Define. + [!_LIBC] (__readdir64, __tdestroy, __tfind, __tsearch): Define. + [!_LIBC] (internal_function, dirent64, MAX): Define. + (__set_errno): Define if not already defined. + (open_dir_stream): When FTW_CHDIR is enabled, invoke opendir on + the basename, not the entire file name. + (process_entry): When FTW_CHDIR is enabled, invoke XSTAT or LXSTAT on + the basename, not the entire file name. + +2003-01-12 Ulrich Drepper + + * string/tester.c (test_strcpy): Disable last added strcpy until + it is fixed. + +2003-01-11 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/socket.S: Add cancellation support. + +2003-01-11 Andreas Schwab + + * Makerules: Add vpath for %.dynsym and %.so so that the + implicit rule chaining for check-abi works. + +2003-01-11 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER): + Add non-PIC case. + +2003-01-11 Jakub Jelinek + + * elf/tls-macros.h [__ia64__] (__TLS_CALL_CLOBBERS): Define. + [__ia64__] (TLS_LE, TLS_IE): Fix typos. Add ;; at start of asm if + gp is used early. + [__ia64__] (TLS_LD, TLS_GD): Likewise. Use __TLS_CALL_CLOBBERS. + * elf/Makefile ($(objpfx)tst-tlsmod5.so, $(objpfx)tst-tlsmod6.so): + Ensure libc.so in DT_NEEDED. + * sysdeps/alpha/dl-machine.h (elf_machine_rela): Move + CHECK_STATIC_TLS before l_tls_offset use. + * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela): + Likewise. + * sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage) [TLS_DTV_AT_TP]: + Allocate TLS_PRE_TCB_SIZE bytes below result. + (_dl_deallocate_tls) [TLS_DTV_AT_TP]: Adjust before freeing. + * sysdeps/generic/libc-tls.c (__libc_setup_tls): If + TLS_INIT_TP_EXPENSIVE is not defined, allocate even if no PT_TLS + segment has been found. If TLS_DTV_AT_TP, allocate TLS_PRE_TCB_SIZE + bytes below result and add tcb_offset to memsz. + * sysdeps/ia64/dl-tls.h (__tls_get_addr): New prototype. + * sysdeps/ia64/dl-machine.h: Include tls.h. + (elf_machine_type_class): Return ELF_RTYPE_CLASS_PLT for TLS relocs + too. + (elf_machine_rela): Assume if sym_map != NULL sym is non-NULL too. + Handle R_IA64_DTPMOD*, R_IA64_DTPREL* and R_IA64_TPREL* relocations. + * sysdeps/ia64/libc-tls.c: New file. + +2003-01-10 Steven Munroe + + * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_RET): Add branch hit. + * sysdeps/unix/sysv/linux/powerpc/bits/stat.h (STAT_VER_LINUX): + Fix type. Move definition out of #if. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/ftruncate64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Add cancellation + support. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Remove + ftruncate64, pread64, pwrite64, truncate64 entries. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h + (INLINE_SYSCALL): New version that supports function call like + syscalls. Add __builtin_expect. + (LOADARGS_n): Add argument size safety checks. + (INTERNAL_SYSCALL): New Macro. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/truncate64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h [__PPC_ELF_H]: Avoid + redefinition of elf_fpreg_t and elf_fpregset_t. + +2003-01-12 Ulrich Drepper + + * elf/dl-close.c (_dl_close): Add several asserts. Correct and + simplify test for unloading. If loader of a DSO is unloaded do not + use its scope anymore. Fall back to own scope and adjust opencounts. + Fix several comments. + * elf/dl-deps.c (_dl_map_object_deps): Always allocate memory for + the l_searchlist, not only for l_initfini. + + * elf/dl-lookup.c (add_dependencies): Avoid creating relocation + dependencies if objects cannot be removed. Remove object with the + definition as not unloadable if necessary. + + * elf/reldep6.c: Create relocation dependency before closing the first + module. + +2003-01-10 Guido Günther + + * sysdeps/unix/mips/fork.S: Add PSEUDO_END. + * sysdeps/unix/mips/brk.S: Likewise. + * sysdeps/unix/mips/pipe.S: Likewise. + +2003-01-10 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/getsysstats.c: New file. + + * sysdeps/unix/sysv/linux/m68k/vfork.S: Optimize for kernels which + are known to have the vfork syscall. + + * sysdeps/m68k/sysdep.h (JUMPTARGET): Undefine before defining it. + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_MMAP2_SYSCALL, __ASSUME_TRUNCATE64_SYSCALL) + (__ASSUME_STAT64_SYSCALL, __ASSUME_FCNTL64) + (__ASSUME_VFORK_SYSCALL): Define for m68k kernels >= 2.4.12. + +2003-01-09 Jakub Jelinek + + * elf/Makefile: Add rules to build and run reldep9 test. + * elf/reldep9.c: New file. + * elf/reldep9mod1.c: New file. + * elf/reldep9mod2.c: New file. + * elf/reldep9mod3.c: New file. + +2003-01-09 Jakub Jelinek + + * elf/Makefile: Add rules to build and run nodelete2 test. + * elf/nodelete2.c: New file. + * elf/nodel2mod1.c: New file. + * elf/nodel2mod2.c: New file. + * elf/nodel2mod3.c: New file. + +2003-01-09 Jakub Jelinek + + * posix/test-vfork.c (noop): Add __attribute_noinline__. + * sysdeps/generic/sysdep.h (JUMPTARGET): Define if not defined. + * sysdeps/i386/sysdep.h (JUMPTARGET): Undefine JUMPTARGET before + defining it. + * sysdeps/powerpc/powerpc32/sysdep.h (JUMPTARGET): Likewise. + * sysdeps/powerpc/powerpc64/sysdep.h (JUMPTARGET): Likewise. + * sysdeps/s390/s390-32/sysdep.h (JUMPTARGET): Likewise. + * sysdeps/s390/s390-64/sysdep.h (JUMPTARGET): Likewise. + * sysdeps/x86_64/sysdep.h (JUMPTARGET): Likewise. + +2003-01-09 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Regenerated. + +2003-01-08 Ulrich Drepper + + * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL, + INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Add err + argument. + (INTERNAL_SYSCALL_DECL): Define. + +2003-01-06 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (INTERNAL_SYSCALL, + INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Add err + argument. + (INTERNAL_SYSCALL_DECL): Define. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. + (INLINE_SYSCALL): Adjust. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + * elf/dl-misc.c (_dl_debug_vdprintf): Add INTERNAL_SYSCALL_DECL, + add err argument to INTERNAL_SYSCALL* macros. + * sysdeps/unix/sysv/linux/i386/brk.c (__brk): Likewise. + * sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Likewise. + * sysdeps/unix/sysv/linux/m68k/brk.c (__brk): Likewise. + * sysdeps/unix/sysv/linux/m68k/getpagesize.c (__getpagesize): + Likewise. + * sysdeps/unix/sysv/linux/sigwait.c (do_sigwait): Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): Use + INLINE_SYSCALL instead of INTERNAL_SYSCALL and setting errno. + +2003-01-07 Ulrich Drepper + + Unify symbols in user namespace exported by libc.so and libc.a. + * argp/argp-fmtstream.c: Don't define argp_make_fmtstream, + argp_fmtstream_free, and argp_fmtstream_printf. + * argp/argp-fs-xinl.c: Don't define argp_fmtstream_putc, + argp_fmtstream_puts, argp_fmtstream_write, argp_fmtstream_set_lmargin, + argp_fmtstream_set_rmargin, argp_fmtstream_set_wmargin, and + argp_fmtstream_point. + * gmon/gmon.c: Don't define write_profiling. + * libio/genops.c: Don't define _cleanup. + + * intl/explodename.c (_nl_find_language.c): Mark as static. + * intl/loadinfo.h: Remove _nl_find_language prototype. + + * libio/fileops.c (_IO_file_seekoff_maybe_mmap): Mark as static. + * libio/libioP.h: Remove declaration. + + * libio/iopopen.c (_IO_proc_jumps): Mark as static. + * libio/libioP.h: Remove declaration. + + * sysdeps/generic/unwind-dw2.c: Mark __frame_state_for with STATIC. + * sysdeps/generic/framestate.c: Define STATIC before including + unwind-dw2.c. + + * time/Versions [GLIBC_2.3.2] (libc): Export strptime_l. + +2003-01-06 Philip Blundell + + * sysdeps/unix/arm/sysdep.S (syscall_error): Optimise a little. + [__LIBC_REENTRANT]: Unify PIC and non-PIC cases. + + * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO): Remove .type + directive. + (PSEUDO_RET): Use SYSCALL_ERROR in place of __syscall_error. + (SYSCALL_ERROR): New. + (SYSCALL_ERROR_HANDLER) [NOT_IN_libc]: Provide local copy of error + handling code. + (INTERNAL_SYSCALL): Define. + (INLINE_SYSCALL): Use it. + (INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Define. + * sysdeps/unix/sysv/linux/arm/socket.S (__socket): Use + SYSCALL_ERROR in place of __syscall_error. + +2003-01-07 Jakub Jelinek + + * sysdeps/ia64/bits/byteswap.h [__GNUC__ >= 2] (__bswap_16, + __bswap_32, __bswap_64): Put x into temporary variable + to avoid warnings. + [!__GNUC__] (__bswap_16, __bswap_32, __bswap_64): Change into static + (inline) functions. + * sysdeps/s390/bits/byteswap.h [__GNUC__ >= 2] (__bswap_16, + __bswap_32, __bswap_64): Put x into temporary variable + to avoid warnings. + [!__GNUC__] (__bswap_16, __bswap_32, __bswap_64): Change into static + (inline) functions. + * sysdeps/i386/bits/byteswap.h [!__GNUC__] (__bswap_16, __bswap_32): + Likewise. + +2003-01-07 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/adjtime.c (ntp_adjtime): New weak + alias. + +2003-01-07 Jakub Jelinek + + * elf/rtld.c (_rtld_global): Remove _dl_dynamic_weak initializer. + * elf/dl-support.c (_dl_dynamic_weak): Initialize to 0. + +2003-01-07 Ulrich Drepper + + * math/libm-test.inc (significand_test): New function. + (main): Call it. + +2003-01-06 Roland McGrath + + * sysdeps/i386/i486/bits/string.h (memset): Add parens around macro + arguments. + (memcpy, memrchr, strcpy, __stpcpy, strncpy, strcat): Likewise. + (strcmp, strncat, strncmp, strchr, __strchrnul, strchrnul): Likewise. + (index, strrchr, rindex, strcspn, strspn, strpbrk, strstr): Likewise. + + * string/tester.c (test_strcpy): Add test with `void *' arguments. + +2003-01-06 Ulrich Drepper + + * sysdeps/i386/fpu/s_significandl.c (__significandl): Really + return significand and not the exponent. + Reported by Nelson H. F. Beebe . + + * elf/dl-misc.c (_dl_debug_vdprintf): Help PPC port by explicitly + taking address of iov in INTERNAL_SYSCALL call. Patch by Franz Sirl. + + * malloc/malloc.c: Mark all _int_* functions as static. + +2003-01-06 Jakub Jelinek + + * sysdeps/unix/alpha/sysdep.h (PSEUDO): Use PSEUDO_PREPARE_ARGS. + * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Add cancellation + handling. + * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. + +2003-01-06 Franz Sirl + + * sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_RET): Add branch hint. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S: Add cancellation + support. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Remove + ftruncate64, truncate64, pread64 and pwrite64 entries. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h + (INLINE_SYSCALL): Add __builtin_expect. + (LOADARGS_n): Add argument size safety checks. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c: New file. + +2003-01-06 Jakub Jelinek + + * sysdeps/generic/sysdep-cancel.h (LIBC_CANCEL_HANDLED): Define. + * sysdeps/generic/creat.c: Include sysdep-cancel.h. + (LIBC_CANCEL_HANDLED): Add. + + * sysdeps/unix/sysv/linux/alpha/sysdep.h + (inline_syscall_r0_constraint): Rename to... + (inline_syscall_r0_out_constraint): ... this. Add =. + (inline_syscall[0-6]): Use inline_syscall_r0_out_constraint. + +2003-01-06 Andreas Schwab + + * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Make + sure this is always inlined. + (elf_machine_rela): Likewise. + + * sysdeps/m68k/Makefile (sysdep-CFLAGS): Increase inline limit. + +2003-01-04 Roland McGrath + + * Makeconfig (+mkdep): Add -MP flag. + Suggested by Art Haas . + +2003-01-05 Andreas Schwab + + * sysdeps/m68k/Makefile (CFLAGS-.oS): Append -fPIC. + +2003-01-05 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/clone.S (__clone): Use + SYSCALL_ERROR_HANDLER. + * sysdeps/unix/sysv/linux/sh/pipe.S (__libc_pipe): Likewise. + * sysdeps/unix/sysv/linux/sh/socket.S (__socket): Likewise. + Add support for cancellation handling. + * sysdeps/unix/sysv/linux/sh/syscall.S (__syscall): Use + SYSCALL_ERROR_HANDLER. + * sysdeps/unix/sysv/linux/sh/vfork.S (__vfork): Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO): Likewise. + Add support for cancellation handling. + (SYSCALL_ERROR_HANDLER): Define PIC variants. + +2003-01-04 Franz Sirl + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Mark + __syscall_pread64 and __syscall_pwrite64 cancelable. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h + (INTERNAL_SYSCALL): New macro. + (LOADARGS_0, LOADARGS_1): Fix. + +2003-01-05 Ulrich Drepper + + * Makerules (build-shlip-helper): Unless told otherwise, add + -Wl,-z,defs to linker command line. + * rt/Makefile (librt.so): Link with ld.so. + * dlfcn/Makefile (libdl.so): Likewise. + +2003-01-05 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/s390-32/socket.S: Add support for + cancellation handling. + * sysdeps/unix/sysv/linux/s390/s390-64/socket.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: Likewise. + +2003-01-04 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Correct + order of parameters passed to kill. + +2003-01-04 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/bits/stat.h: Add nanosecond fields. + +2003-01-03 Paul Eggert + + * malloc/obstack.h (__INT_TO_PTR) [__STDC__]: Cast result to + (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5 + when compiling Bison 1.875's `bitset bset = obstack_alloc + (bobstack, bytes);'. Problem reported by Nelson H. F. Beebe. + +2003-01-04 Ulrich Drepper + + * sysdeps/posix/system.c (do_system): Minor optimizations. Remove + unnecessary code. + Correct reference counter in case SIGQUIT handler installation failed. + +2003-01-03 Ulrich Drepper + + * include/libc-symbols.h [HAVE_WEAK_SYMBOLS] (_weak_extern): + Define using _Pragma(weak ...). + +2003-01-03 Andreas Jaeger , Jakub Jelinek + + * resolv/res_libc.c: Provide declaration for __res_init_weak and + reorder declarations. + +2003-01-03 Art Haas + + * localedata/tests-mbwc/dat_iswalnum.c: Convert GCC extension + initializer syntax to C99. + * localedata/tests-mbwc/dat_iswalpha.c: Likewise. + * localedata/tests-mbwc/dat_iswcntrl.c: Likewise. + * localedata/tests-mbwc/dat_iswctype.c: Likewise. + * localedata/tests-mbwc/dat_iswdigit.c: Likewise. + * localedata/tests-mbwc/dat_iswgraph.c: Likewise. + * localedata/tests-mbwc/dat_iswlower.c: Likewise. + * localedata/tests-mbwc/dat_iswprint.c: Likewise. + * localedata/tests-mbwc/dat_iswpunct.c: Likewise. + * localedata/tests-mbwc/dat_iswspace.c: Likewise. + * localedata/tests-mbwc/dat_iswupper.c: Likewise. + * localedata/tests-mbwc/dat_iswxdigit.c: Likewise. + * localedata/tests-mbwc/dat_mblen.c: Likewise. + * localedata/tests-mbwc/dat_mbrlen.c: Likewise. + * localedata/tests-mbwc/dat_mbrtowc.c: Likewise. + * localedata/tests-mbwc/dat_mbsrtowcs.c: Likewise. + * localedata/tests-mbwc/dat_mbstowcs.c: Likewise. + * localedata/tests-mbwc/dat_mbtowc.c: Likewise. + * localedata/tests-mbwc/dat_strcoll.c: Likewise. + * localedata/tests-mbwc/dat_strfmon.c: Likewise. + * localedata/tests-mbwc/dat_strxfrm.c: Likewise. + * localedata/tests-mbwc/dat_swscanf.c: Likewise. + * localedata/tests-mbwc/dat_towctrans.c: Likewise. + * localedata/tests-mbwc/dat_towlower.c: Likewise. + * localedata/tests-mbwc/dat_towupper.c: Likewise. + * localedata/tests-mbwc/dat_wcrtomb.c: Likewise. + * localedata/tests-mbwc/dat_wcscat.c: Likewise. + * localedata/tests-mbwc/dat_wcschr.c: Likewise. + * localedata/tests-mbwc/dat_wcscmp.c: Likewise. + * localedata/tests-mbwc/dat_wcscoll.c: Likewise. + * localedata/tests-mbwc/dat_wcscpy.c: Likewise. + * localedata/tests-mbwc/dat_wcscspn.c: Likewise. + * localedata/tests-mbwc/dat_wcslen.c: Likewise. + * localedata/tests-mbwc/dat_wcsncat.c: Likewise. + * localedata/tests-mbwc/dat_wcsncmp.c: Likewise. + * localedata/tests-mbwc/dat_wcsncpy.c: Likewise. + * localedata/tests-mbwc/dat_wcspbrk.c: Likewise. + * localedata/tests-mbwc/dat_wcsrtombs.c: Likewise. + * localedata/tests-mbwc/dat_wcsspn.c: Likewise. + * localedata/tests-mbwc/dat_wcsstr.c: Likewise. + * localedata/tests-mbwc/dat_wcstod.c: Likewise. + * localedata/tests-mbwc/dat_wcstok.c: Likewise. + * localedata/tests-mbwc/dat_wcstombs.c: Likewise. + * localedata/tests-mbwc/dat_wcswidth.c: Likewise. + * localedata/tests-mbwc/dat_wcsxfrm.c: Likewise. + * localedata/tests-mbwc/dat_wctob.c: Likewise. + * localedata/tests-mbwc/dat_wctomb.c: Likewise. + * localedata/tests-mbwc/dat_wctrans.c: Likewise. + * localedata/tests-mbwc/dat_wctype.c: Likewise. + * localedata/tests-mbwc/dat_wcwidth.c: Likewise. + +2003-01-03 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/sysdep.h (inline_syscall_r0_asm): New. + (inline_syscall_r0_constraint): New. + (inline_syscall[0-6]): Use them. + +2003-01-03 Jakub Jelinek + + * sysdeps/generic/ldsodefs.h (_dl_allocate_tls, _dl_deallocate_tls): + Add rtld_hidden_proto. + * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Add rtld_hidden_def. + (_dl_allocate_tls): Likewise. Remove INTDEF. + +2002-07-05 Kaz Kojima + + * sysdeps/sh/memcpy.S: Optimize. Based on a patch by Toshiyasu + Morita . + * sysdeps/sh/memcpy.S: Likewise. + +2003-01-02 Ulrich Drepper + + * sysdeps/pthread/aio_suspend.c (aio_suspend): Don't quite remove + any, but unify the test. + +2003-01-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/arm/sigaction.c (__sigaction, + sigaction): Protect weak_alias and libc_hidden_weak with + #ifndef LIBC_SIGACTION. + * sysdeps/unix/sysv/linux/ia64/sigaction.c (__sigaction, + sigaction): Likewise. + * sysdeps/unix/sysv/linux/mips/sigaction.c (__sigaction, + sigaction): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c (__sigaction, + sigaction): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c (__sigaction, + sigaction): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (__sigaction, + sigaction): Likewise. + * sysdeps/unix/sysv/linux/x86_64/sigaction.c (__sigaction, + sigaction): Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c (__sigaction, + sigaction): Likewise. Remove SIGCANCEL handling here. + * sysdeps/unix/sysv/linux/sigaction.c (__sigaction, sigaction): + Likewise. + +2003-01-02 Art Haas + + * login/tst-utmp.c: Convert GCC extension initializer syntax to C99. + +2003-01-02 Ulrich Drepper + + * posix/getconf.c: Update copyright year. + * nss/getent.c: Likewise. + * nscd/nscd_nischeck.c: Likewise. + * iconv/iconvconfig.c: Likewise. + * iconv/iconv_prog.c: Likewise. + * elf/ldconfig.c: Likewise. + * catgets/gencat.c: Likewise. + * csu/version.c: Likewise. + * elf/ldd.bash.in: Likewise. + * elf/sprof.c (print_version): Likewise. + * locale/programs/locale.c: Likewise. + * locale/programs/localedef.c: Likewise. + * nscd/nscd.c (print_version): Likewise. + * debug/xtrace.sh: Likewise. + * malloc/memusage.sh: Likewise. + * malloc/mtrace.pl: Likewise. + +2003-01-01 Jakub Jelinek + + * io/sys/stat.h: Include time.h with __need_timespec even if + __USE_MISC is defined but __USE_XOPEN is not. + +2003-01-01 Andreas Jaeger + + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Use union + type to avoid strict aliasing problem. + (_nss_dns_gethostbyname2_r): Likewise. + * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyaddr_r): Likewise. + (_nss_dns_getnetbyname_r): Likewise. + * resolv/gethnamaddr.c (_gethtent): Likewise. + (gethostbyname2): Likewise. + +2002-12-31 Ulrich Drepper + + * string/string-inlines.c: Define __memcpy_g and __strchr_g macros + to avoid using the exported symbols. Define aliases with the + original names separately. + + * include/time.h: Add libc_hidden_proto for __strftime_l. + * include/wchar.h: Add libc_hidden_proto for __wcsftime_l. + * time/strftime.c: Always use libc_hidden_def if _LIBC. + + * libio/libioP.h: Add libc_hidden_proto for _IO_file_open. + * libio/fileops.c: Add libc_hidden_def for _IO_file_open. + + * malloc/mtrace.c: Add libc_hidden_proto and libc_hidden_def for + tr_break. + + * csu/Makefile (routines): Add dso_handle. + * csu/dso_handle.c: New file. + +2002-12-31 Roland McGrath + + * Makerules (compile.S, COMPILE.S): Remove -DASSEMBLER here. + Use $(S-CPPFLAGS) in place of $(asm-CPPFLAGS). + (S-CPPFLAGS): Add -DASSEMBLER here instead. + (generate-md5, +make-deps): Fix magic to get $(S-CPPFLAGS). + +2002-12-31 Ulrich Drepper + + * malloc/thread-m.h [SHARED] (thread_atfork): Assume __dso_handle + is available. + +2002-12-31 Andreas Jaeger + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: Sync + with Linux kernel. + * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: Likewise. + + * sysdeps/unix/sysv/linux/kernel_stat.h + (_HAVE_STAT_NSEC,_HAVE_STAT_NSEC64): New. + + * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Re-add + __unused[1-3] since they're needed by some platforms. Handle + _HAVE_STAT_NSEC and _HAVE_STAT_NSEC64. + + * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Add nsec resolution + for structs stat and stat64. + * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise. + + * io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat. + + * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Adjust for + nsec resolution changes. + (xstat64_conv): Likewise. + (xstat32_conv): Likewise. + + * sysdeps/unix/sysv/linux/kernel_stat.h: Add nsec resolution for + struct kernel_stat. + + * sysdeps/unix/sysv/linux/bits/stat.h: Add nsec resolution for + structs stat and stat64. + + * time/time.h (__timespec_defined): Define for __USE_MISC. + +2002-12-31 Ulrich Drepper + + * include/signal.h: Add libc_hidden_proto for __libc_current_sigrtmin + and __libc_current_sigrtmax. + +2002-12-31 Jakub Jelinek + + * include/errno.h (__errno_location): Add prototype. + Use libc_hidden_proto unconditionally. + * include/netdb.h (__h_errno_location): Use libc_hidden_proto + unconditionally. + * include/resolv.h (__res_state): Likewise. + + * hurd/errno-loc.c (__errno_location): Add libc_hidden_def. + * include/sys/socket.h (accept): Add libc_hidden_proto. + * include/errno.h (__errno_location): Likewise. + * include/netdb.h (__h_errno_location): Likewise. + * include/resolv.h (__res_state): Likewise. + * include/unistd.h (__lseek): Likewise. + * sysdeps/generic/errno-loc.c (__errno_location): Add libc_hidden_def. + * sysdeps/generic/herrno-loc.c (__h_errno_location): Likewise. + * sysdeps/generic/res-state.c (__res_state): Likewise. + * sysdeps/generic/accept.c (accept): Likewise. + * sysdeps/generic/lseek.c (__lseek): Likewise. + * sysdeps/generic/allocrtsig.c (__libc_current_sigrtmin, + __libc_current_sigrtmax): Likewise. + * sysdeps/mach/hurd/accept.c (accept): Likewise. + * sysdeps/mach/hurd/lseek.c (__lseek): Likewise. + * sysdeps/unix/sysv/aix/accept.c (accept): Likewise. + * sysdeps/unix/sysv/aix/lseek.c (__lseek): Likewise. + * sysdeps/unix/sysv/linux/accept.S (accept): Likewise. + * sysdeps/unix/inet/syscalls.list (__GI_accept): New alias to accept. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (__GI_accept): Likewise. + * sysdeps/unix/sysv/linux/hppa/syscalls.list (__GI_accept): Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (__GI___lseek): New + alias to llseek. + (__GI_accept): New alias to accept. + * sysdeps/unix/sysv/linux/mips/syscalls.list (__GI_accept): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__GI___lseek): + New alias to llseek. + (__GI_accept): New alias to accept. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (__GI_accept): + Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (__GI_accept): + Likewise. + * sysdeps/unix/syscalls.list (__GI___lseek): New alias to lseek. + + * sysdeps/alpha/setjmp.S : Use libc_hidden_def(name) instead of + strong_alias (name, __GI_name). + * sysdeps/arm/bsd-_setjmp.S : Likewise. + * sysdeps/hppa/bsd-_setjmp.S : Likewise. + * sysdeps/i386/bsd-_setjmp.S : Likewise. + * sysdeps/mips/mips64/bsd-_setjmp.S : Likewise. + * sysdeps/mips/bsd-_setjmp.S : Likewise. + * sysdeps/powerpc/powerpc32/bsd-_setjmp.S : Likewise. + * sysdeps/powerpc/powerpc64/setjmp.S : Likewise. + * sysdeps/s390/s390-32/elf/setjmp.S : Likewise. + * sysdeps/s390/s390-32/bsd-_setjmp.S : Likewise. + * sysdeps/s390/s390-64/elf/setjmp.S : Likewise. + * sysdeps/s390/s390-64/bsd-_setjmp.S : Likewise. + * sysdeps/sh/bsd-_setjmp.S : Likewise. + * sysdeps/sparc/sparc32/setjmp.S : Likewise. + * sysdeps/unix/arm/fork.S : Likewise. + * sysdeps/unix/bsd/hp/m68k/vfork.S : Likewise. + * sysdeps/unix/bsd/i386/vfork.S : Likewise. + * sysdeps/unix/bsd/osf/alpha/fork.S : Likewise. + * sysdeps/unix/bsd/sun/m68k/vfork.S : Likewise. + * sysdeps/unix/bsd/ultrix4/mips/vfork.S : Likewise. + * sysdeps/unix/bsd/vax/vfork.S : Likewise. + * sysdeps/unix/i386/fork.S : Likewise. + * sysdeps/unix/mips/fork.S : Likewise. + * sysdeps/unix/sparc/fork.S : Likewise. + * sysdeps/unix/sparc/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/arm/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/cris/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/i386/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/ia64/fork.S : Likewise. + * sysdeps/unix/sysv/linux/ia64/setjmp.S : Likewise. + * sysdeps/unix/sysv/linux/ia64/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/m68k/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/sh/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S : Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S : Likewise. + * sysdeps/unix/sysv/linux/sparc/fork.S : Likewise. + * sysdeps/unix/sysv/linux/sparc/vfork.S : Likewise. + * sysdeps/unix/sysv/linux/x86_64/vfork.S : Likewise. + * sysdeps/unix/fork.S : Likewise. + * sysdeps/vax/bsd-_setjmp.S : Likewise. + * sysdeps/x86_64/bsd-_setjmp.S : Likewise. + + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Guard against multiple + inclusion. + +2002-12-31 Ulrich Drepper + + * include/unistd.h: Add libc_hidden_proto for __fork and __vfork. + * sysdeps/generic/fork.c: Add libc_hidden_def for __fork. + * sysdeps/mach/hurd/fork.c: Likewise. + * sysdeps/unix/sysv/aix/fork.c: Likewise. + * sysdeps/unix/fork.S: Add __GI___fork alias. + * sysdeps/unix/arm/fork.S: Likewise. + * sysdeps/unix/bsd/osf/alpha/fork.S: Likewise. + * sysdeps/unix/i386/fork.S: Likewise. + * sysdeps/unix/mips/fork.S: Likewise. + * sysdeps/unix/sparc/fork.S: Likewise. + * sysdeps/unix/sysv/linux/ia64/fork.S: Likewise. + * sysdeps/unix/sysv/linux/sparc/fork.S: Likewise. + * sysdeps/unix/sysv/linux/syscalls.list: Likewise. + * sysdeps/generic/vfork.c: Add libc_hidden_def for __vfork. + * sysdeps/unix/bsd/hp/m68k/vfork.S: Add __GI___vfork alias. + * sysdeps/unix/bsd/i386/vfork.S: Likewise. + * sysdeps/unix/bsd/sun/m68k/vfork.S: Likewise. + * sysdeps/unix/bsd/ultrix4/mips/vfork.S: Likewise. + * sysdeps/unix/bsd/vax/vfork.S: Likewise. + * sysdeps/unix/sparc/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/arm/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/cris/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/i386/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/ia64/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/m68k/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/sh/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/sparc/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise. + + * include/time.h: Add libc_hidden_proto for __nanosleep. + * sysdeps/generic/nanosleep.c: Add libc_hidden_def for __nanosleep. + * sysdeps/mach/nanosleep.c: Likewise. + * sysdeps/unix/sysv/aix/nanosleep.c: Likewise. + * sysdeps/unix/sysv/linux/syscalls.list: Add __GI___nanosleep alias. + + * libio/libioP.h: Add libc_hidden_proto for _IO_list_lock, + _IO_list_unlock, and _IO_list_resetlock. + * libio/genops.c: Add libc_hidden_def for _IO_list_lock, + _IO_list_unlock, and _IO_list_resetlock. + + * libio/libioP.h: Add libc_hidden_proto for _IO_iter_begin, + _IO_iter_end, _IO_iter_next, and _IO_iter_file. + * libio/genops.c: Add libc_hidden_def for _IO_iter_begin, + _IO_iter_end, _IO_iter_next, and _IO_iter_file. + + * include/setjmp.h: Add libc_hidden_proto for __libc_longjmp. + * sysdeps/generic/longjmp.c: Add libc_hidden_def for __longjmp. + * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S: Add + __GI___longjmp alias. + + * include/setjmp.h: Add libc_hidden_proto for _setjmp. + * sysdeps/alpha/setjmp.S: Add __GI__setjmp alias. + * sysdeps/arm/bsd-_setjmp.S: Likewise. + * sysdeps/generic/bsd-_setjmp.c: Likewise. + * sysdeps/hppa/bsd-_setjmp.S: Likewise. + * sysdeps/i386/bsd-_setjmp.S: Likewise. + * sysdeps/m68k/bsd-_setjmp.c: Likewise. + * sysdeps/mips/bsd-_setjmp.S: Likewise. + * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. + * sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Likewise. + * sysdeps/powerpc/powerpc64/setjmp.S: Likewise. + * sysdeps/s390/s390-32/bsd-_setjmp.S: Likewise. + * sysdeps/s390/s390-32/elf/setjmp.S: Likewise. + * sysdeps/s390/s390-64/bsd-_setjmp.S: Likewise. + * sysdeps/s390/s390-64/elf/setjmp.S: Likewise. + * sysdeps/sh/bsd-_setjmp.S: Likewise. + * sysdeps/sparc/sparc32/setjmp.S: Likewise. + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S: Likewise. + * sysdeps/vax/bsd-_setjmp.S: Likewise. + * sysdeps/x86_64/bsd-_setjmp.S: Likewise. + +2002-12-30 Ulrich Drepper + + * malloc/thread-m.h (thread_atfork): Define using __register_atfork. + +2002-12-30 Roland McGrath + + * Rules (generated): Target removed. + * mach/Makefile (generated): Define it here instead. + + * math/Makefile (generated): Add m_*l and m_*f variants too. + +2002-12-30 Ulrich Drepper + + * elf/dl-close.c (_dl_close): Handle relocation dependencies among + the to-be-deleted objects right away instead of later separately. + The latter fails because the scope data structures of the DSO + might already be gone. + + * elf/Makefile: Add rules to build and run reldep8 test. + * elf/reldep8.c: New file. + * elf/reldep8mod1.c: New file. + * elf/reldep8mod2.c: New file. + * elf/reldep8mod3.c: New file. + Contributed by Jakub Jelinek. + +2002-12-24 GOTO Masanori + + * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): Fix condition + checking of return value ENOSYS from getdents64. + +2002-12-28 Andreas Schwab + + * sysdeps/unix/Makefile: Include $(common-objpfx)s-proto-cancel.d. + ($(common-objpfx)s-%.d): Generalized from + $(common-objpfx)s-proto.d rule. + (common-generated): Add s-proto-cancel.d. + * sysdeps/unix/make-syscalls.sh: Use s-proto-cancel.d for + cancellable syscalls. + * sysdeps/unix/s-proto-cancel.S: New file. + +2002-12-29 Roland McGrath + + * resolv/res_libc.c: Move _res defn magic after res_init defn + so _res macro is in effect for that code. + + * Makerules ($(common-objpfx)%.h $(common-objpfx)%.h.d): Fix sed + pattern for prepending $(..) so it doesn't affect $(foo). + + * math/Makefile (generated): Add $(addsuffix .c .S,$(calls:s_%=m_%)). + +2002-12-29 Jakub Jelinek + + * elf/cache.c (add_to_cache): Don't loop forever with 1ULL << 63 set + in hwcap. + +2002-12-28 Ulrich Drepper + + * misc/sys/cdefs.h (__attribute_deprecated__): New #define. + +2002-12-28 Andreas Jaeger + + * sysdeps/generic/readelflib.c (process_elf_file): Cast value to + avoid warning. + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Likewise. + +2002-12-27 Jakub Jelinek + + * inet/herrno.c (__h_errno_location): Remove. + * inet/Makefile (routines): Add herrno-loc. + * resolv/res_libc.c (__res_state): Remove. + * resolv/Makefile (routines): Add res-state. + * sysdeps/generic/herrno-loc.c: New file. + * sysdeps/generic/res-state.c: New file. + +2002-12-27 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/sysdep.h (I386_USE_SYSENTER): + Only define if USE_DL_SYSINFO is defined. + +2002-12-22 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (INLINE_SYSCALL, + INTERNAL_SYSCALL, INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERROR): + Define. Patch by Richard Henderson and Jes Sorensen. + (PSEUDO): Remove unnecessary ;;. + * elf/rtld.c (dl_main): Initialize TLS even if no PT_TLS segments + are found unless TLS_INIT_TP_EXPENSIVE. Use NONTLS_INIT_TP. + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Use NONTLS_INIT_TP + if not initializing thread pointer. + [!USE_TLS && NONTLS_INIT_TP] (__pthread_initialize_minimal): New. + * sysdeps/generic/libc-start.c (__pthread_initialize_minimal): Don't + make it weak also if NONTLS_INIT_TP. + * sysdeps/unix/common/pause.c: Handle cancellation. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h [DONT_LOAD_G1] + (LOADSYSCALL): Remove. + (SYSCALL_ERROR_HANDLER_ENTRY): Define. + (SYSCALL_ERROR_HANDLER): Use it. + (PSEUDO): Don't jump around error handler. + * sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S (__libc_pipe): Don't + jump around error handler. + * sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S (syscall): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Branch + to __syscall_error_handler on failure. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h [DONT_LOAD_G1] + (LOADSYSCALL): Remove. + (SYSCALL_ERROR_HANDLER_ENTRY): Define. + (SYSCALL_ERROR_HANDLER): Use it. + (PSEUDO): Don't jump around error handler. + * sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S (__libc_pipe): Don't + jump around error handler. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S (syscall): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/socket.S (__socket): Branch + to __syscall_error_handler on failure. + +2002-12-27 Roland McGrath + + * scripts/gen-as-const.awk: New file. + * Makefile (distribute): Add it. + * Makerules ($(common-objpfx)%.h %.h.d: %.sym): New pattern rule. + (before-compile): Add $(gen-as-const-headers:%.sym=$(common-objpfx)%.h) + to the list. + (+depfiles): Add $(addprefix $(common-objpfx),$(gen-as-const-headers)). + +2002-12-27 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/socket.S: Add cancellation support. + +2002-12-27 Jakub Jelinek + + * malloc/arena.c (ptmalloc_init): Don't call next_env_entry if + _environ is NULL. + +2002-12-27 Andreas Schwab + + * Makerules ($(common-objpfx)%.make): Filter through + $(sed-remove-objpfx). + +2002-12-23 Roland McGrath + + * scripts/abilist.awk: Produce a more compact format, divided into + stanzas for each version set, the set name listed only once. + * scripts/extract-abilist.awk: New file. + * scripts/merge-abilist.awk: New file. + * Makerules (check-abi-%, update-abi-%): New pattern rules. + (update-abi, check-abi): New targets. + * Makefile (+subdir_targets): Add subdir_{check,update}-abi. + +2002-12-19 Roland McGrath + + * Makerules (%.symlist): Use LC_ALL=C when running awk script. + + * sysdeps/unix/sysv/linux/i386/brk.c (__brk): Cast result of + INTERNAL_SYSCALL. + +2002-12-21 Andreas Schwab + + * elf/check-textrel.c (handle_file): Swap p_type. + +2002-12-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sysdep.h (INTERNAL_SYSCALL): Define. + (INLINE_SYSCALL): Use it. + (INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Define. + (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. + + * sysdeps/unix/sysv/linux/m68k/getpagesize.c: Use INTERNAL_SYSCALL. + * sysdeps/unix/sysv/linux/m68k/brk.c: Likewise. + +2002-12-20 Art Haas + + * sysdeps/gnu/siglist.c: Convert GCC extension initializer + syntax to C99. + +2002-12-21 Philip Blundell + + * sysdeps/arm/elf/start.S (_start): Optimise a little. Push stack + top as seventh arg to __libc_start_main. + Reported by paulnash@wildseed.com. + + * sysdeps/unix/sysv/linux/arm/clone.S: Small optimisation. + + * sysdeps/unix/sysv/linux/arm/sigcontextinfo.h: Elide + compatibility cruft when new enough kernel is assumed. + +2002-12-20 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/brk.c (__brk): Use INTERNAL_SYSCALL + instead of INLINE_SYSCALL. + +2002-12-20 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): Fix + typo. + + * sysdeps/unix/sysv/linux/alpha/bits/shm.h: Define SHM_HUGETLB. + * sysdeps/unix/sysv/linux/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/shm.h: Likewise. + Patch by William Lee Irwin . + +2002-12-20 Andreas Schwab + + * locale/programs/ld-measurement.c (measurement_output): Fix + index calculation. + +2002-12-20 Ulrich Drepper + + * include/libio.h [_IO_MTSAFE_IO && _IO_lock_inexpensive]: + Redefine _IO_flockifle and _IO_funlockfile as inlines. + + * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): For TLS + builds add "tls" in the search path. + * elf/ldconfig.c (is_hwcap_platform): Also recognize "tls". + (path_hwcap): Recognize "tls". + +2002-12-19 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Use + __waitpid instead of waitpid. + + * sysdeps/unix/sysv/linux/i386/_exit.S: Use ENTER_KERNEL instead of + int $0x80. + * sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise. + * sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/i386/swapcontext.S: Likewise. + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Add support to use AT_SYSINFO + information for system calls. + + * sysdeps/generic/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO to 1 only + for ld.so. + + * elf/rtld.c (_dl_start) [USE___THREAD]: Define initdtv. + +2002-12-19 Roland McGrath + + * iconvdata/ibm856.h: Convert GCC extension initializer syntax to C99. + * iconvdata/ibm922.h: Likewise. + * iconvdata/ibm930.h: Likewise. + * iconvdata/ibm932.h: Likewise. + * iconvdata/ibm933.h: Likewise. + * iconvdata/ibm935.h: Likewise. + * iconvdata/ibm937.h: Likewise. + * iconvdata/ibm939.h: Likewise. + * iconvdata/ibm943.h: Likewise. + * iconvdata/isiri-3342.h: Likewise. + +2002-12-19 Ulrich Drepper + + * test-skeleton.c (main): Make sure correct value is seen as + argv[0] after adjustment of argv, and argc. + + * elf/rtld.c: Don't initialize _dl_dynamic_weak to 1 if + RTLD_CORRECT_DYNAMIC_WEAK is defined. + +2002-12-19 Jakub Jelinek + + * nscd/connections.c (nscd_run): Shut up warning. + * tst-ungetc.c (assert): Undefined before redefining. + +2002-12-19 Ulrich Drepper + + * posix/regex.c: Use __builtin_expect even outside glibc if gcc 3 + is used. + +2002-12-17 Art Haas + + * iconvdata/cp737.h: Convert GCC extension initializer syntax to C99. + * iconvdata/cp775.h: Likewise. + * iconvdata/ibm1046.h: Likewise. + * iconvdata/ibm1124.h: Likewise. + * iconvdata/ibm1129.h: Likewise. + * iconvdata/ibm1132.h: Likewise. + * iconvdata/ibm1133.h: Likewise. + * iconvdata/ibm1160.h: Likewise. + * iconvdata/ibm1161.h: Likewise. + * iconvdata/ibm1162.h: Likewise. + * iconvdata/ibm1163.h: Likewise. + * iconvdata/ibm1164.h: Likewise. + +2002-12-19 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/system.c: Define FORK only if + __ASSUME_CLONE_THREAD_FLAGS is defined. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_CLONE_THREAD_FLAGS): Define for x86 and kernel >= 2.5.50. + +2002-12-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/brk.c: Use INTERNAL_SYSCALL instead + of asm. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + + * elf/dl-support.c [NEED_DL_SYSINFO]: Define and initialize + _dl_sysinfo. + [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed + code. + * elf/rtld.c [DL_NEED_SYSINFO]: Initialize _dl_sysinfo element of + _rtld_global. + [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed + code. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]: + Check for AT_SYSINFO and set _dl_sysinfo appropriately. + * sysdeps/generic/ldsodefs.h (struct rtld_global) [NEED_DL_SYSINFO]: + Add _dl_sysinfo. + +2002-12-18 Jakub Jelinek + + * misc/Versions [libc: GLIBC_2.3.1]: Move __libc_readv and + __libc_writev to... + [libc: GLIBC_PRIVATE]: ...here. + * sysvipc/Versions [libc: GLIBC_2.3.1]: Move __libc_msgrcv and + __libc_msgsnd to... + [libc: GLIBC_PRIVATE]: ...here. + +2002-12-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Define ENTER_KERNEL macro. + Use it instead of directly int $0x80. + * sysdeps/unix/sysv/linux/i386/brk.c: Use ENTER_KERNEL. + * sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise. + * sysdeps/unix/sysv/linux/i386/mmap.S: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/i386/socket.S: Likewise. + * sysdeps/unix/sysv/linux/i386/syscall.S: Likewise. + +2002-12-17 Ulrich Drepper + + * malloc/malloc.c (mALLOPt): Make sure malloc is initialized. + + * elf/elf.h (AT_SYSINFO): New define. + * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Add support for + AT_SYSINFO. + +2002-12-17 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/syscalls.list (msgrcv, msgsnd): + Make cancelable. + * sysdeps/unix/sysv/linux/hppa/syscalls.list (msgrcv, msgsnd): + Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (msgrcv, msgsnd): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (msgrcv, msgsnd): + Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (msgrcv, msgsnd): + Likewise. + * sysdeps/unix/sysv/linux/ia64/sigsuspend.c (__sigsuspend): Likewise. + + * malloc/thread-m.h (mutex_init, mutex_lock, mutex_trylock, + mutex_unlock): If not building NPTL, use __libc_maybe_call2 if + available, otherwise __libc_maybe_call. + * sysdeps/unix/sysv/linux/x86_64/recv.c: Add support for + cancellation handling. + * sysdeps/unix/sysv/linux/x86_64/send.c: Likewise. + +2002-12-17 Isamu Hasegawa + + * posix/regcomp.c (free_workarea_compile): Free the new member + ORG_INDICES. + (analyze): Initialize ORG_INDICES. + (duplicate_node_closure): Search for a existing node, which is + duplicated from the node ORG_DEST and satisfies the constraint + CONSTRAINT. And use it to avoid inifimite loop. + (search_duplicated_node): New function. + (duplicate_node): Store the index of the original node. + * posix/regex_internal.c (re_dfa_add_node): Realloc ORG_INDICES + if needed. + * posix/regex_internal.h (re_dfa_t): Add new members. + +2002-12-17 Ulrich Drepper + + * stdio-common/tst-fdopen.c: Undefine assert before redefining it. + +2002-12-16 Ulrich Drepper + + * sysdeps/posix/system.c (do_system): Add support for installation + of cancellation handlers. + * sysdeps/unix/sysv/linux/i386/system.c: New file. + + * stdlib/Makefile (tests): Add tst-system. + * stdlib/tst-system.c: New file. + + * sysdeps/unix/sysv/linux/i386/socket.S [NEED_CANCELLATION && + CENABLE]: Don't lose content of %ebx. + +2002-12-17 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/socket.S: Use SINGLE_THREAD_P + macro instead of comparing %gs:MULTIPLE_THREADS_OFFSET directly. + +2002-12-16 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c (gaih_inet): If __nss_lookup_function + fails to return a function pointer don't use it. + +2002-12-16 Art Haas + + * io/ftw.c: Convert GCC extension initializer syntax to C99. + * iconvdata/iso-ir-165.c: Likewise. + * iconvdata/jis0208.c: Likewise. + * iconvdata/jis0212.c: Likewise. + +2002-12-16 Ulrich Drepper + + * sysdeps/unix/sysv/linux/syscalls.list: Add epoll_create, + epoll_ctl, and epoll_wait. + * sysdeps/unix/sysv/linux/Versions [libc: GLIBC_2.3.2]: Add + epoll_create, epoll_ctl, and epoll_wait. + * sysdeps/unix/sysv/linux/sys/epoll.h: New file. Written by + Davide Libenzi . + * sysdeps/unix/sysv/linux/Dist: Add sys/epoll.h. + * sysdeps/unix/sysv/linux/Makefile [subdir=misc] (sysdep_headers): + Add sys/epoll.h. + +2002-12-16 Art Haas + + * sysdeps/generic/bp-semctl.h: Convert GCC extension initializer + syntax to C99 + * sysdeps/unix/sysv/aix/settimer.c: Likewise. + * sysdeps/unix/sysv/aix/sleep.c: Likewise. + * sysdeps/unix/sysv/aix/usleep.c: Likewise. + +2002-12-16 Ulrich Drepper + + * stdio-common/Makefile (routines): Remove lockfile. Add + flockfile, ftrylockfile, and funlockfile. + * sysdeps/generic/lockfile.c: Removed. Each function has its own file. + * sysdeps/generic/flockfile.c: New file. + * sysdeps/generic/ftrylockfile.c: New file. + * sysdeps/generic/funlockfile.c: New file. + +2002-12-16 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/socket.S: Use CENABLE and CDISABLE + macros instead of doing the calls directly. + * sysdeps/unix/make-syscalls.sh: Add ptw-*.$o target name to rules. + * Makerules ($(+sysdir_pfx)sysd-rules): Emit rules for ptw-% + targets. + +2002-12-16 Jakub Jelinek + + * sysdeps/i386/fpu/bits/mathinline.h: Backout last change. + * sysdeps/ieee754/bits/nan.h: Likewise. + + * sysdeps/unix/sysv/linux/ia64/syscalls.list (__syscall_open, + __syscall_wait4, __syscall_ioctl, __syscall_write): Add. + +2002-12-16 Roland McGrath + + * sunrpc/xdr_mem.c (xdrmem_inline): Fix argument type. + * sunrpc/xdr_rec.c (xdrrec_inline): Likewise. + * sunrpc/xdr_stdio.c (xdrstdio_inline): Likewise. + + * sysdeps/unix/sysv/linux/syscalls.list: Add getpmsg, putpmsg. + * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove s_getpmsg, + s_putpmsg. + * sysdeps/unix/sysv/linux/i386/getpmsg.c: File removed. + * sysdeps/unix/sysv/linux/i386/putpmsg.c: File removed. + * sysdeps/unix/sysv/linux/m68k/getpmsg.c: File removed. + * sysdeps/unix/sysv/linux/m68k/putpmsg.c: File removed. + * sysdeps/unix/sysv/linux/mips/getpmsg.c: File removed. + * sysdeps/unix/sysv/linux/mips/putpmsg.c: File removed. + * sysdeps/unix/sysv/linux/powerpc/getpmsg.c: File removed. + * sysdeps/unix/sysv/linux/powerpc/putpmsg.c: File removed. + +2002-12-13 Paul Eggert + + * sunrpc/rpc/xdr.h (struct XDR.xdr_ops.x_inline): 2nd arg + is now u_int, not int. + (struct XDR.x_handy): Now u_int, not int. + * sunrpc/xdr_mem.c: Include . + (xdrmem_getlong, xdrmem_putlong, xdrmem_getbytes, xdrmem_putbytes, + xdrmem_inline, xdrmem_getint32, xdrmem_putint32): + x_handy is now unsigned, not signed. + Do not decrement x_handy if no change is made. + (xdrmem_setpos): Check for int overflow. + * sunrpc/xdr_sizeof.c (x_inline): 2nd arg is now unsigned. + (xdr_sizeof): Remove cast that is now unnecessary, now that + x_handy is unsigned. + +2002-12-15 Art Haas + + * iconv/gconv_conf.c: Convert GCC extension initializer syntax to C99. + * iconvdata/gap.awk: Likewise. + * iconvdata/gen-8bit-gap-1.sh: Likewise. + * iconvdata/gen-8bit-gap.sh: Likewise. + * locale/C-address.c: Likewise. + * locale/C-collate.c: Likewise. + * locale/C-ctype.c: Likewise. + * locale/C-identification.c: Likewise. + * locale/C-measurement.c: Likewise. + * locale/C-messages.c: Likewise. + * locale/C-monetary.c: Likewise. + * locale/C-name.c: Likewise. + * locale/C-numeric.c: Likewise. + * locale/C-paper.c: Likewise. + * locale/C-telephone.c: Likewise. + * locale/C-time.c: Likewise. + * nscd/connections.c: Likewise. + * nscd/grpcache.c: Likewise. + * nscd/hstcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + * stdio-common/vfprintf.c: Likewise. + * stdlib/random.c: Likewise. + * sysdeps/generic/siglist.c: Likewise. + * sysdeps/i386/fpu/bits/mathinline.h: Likewise. + * sysdeps/ieee754/bits/nan.h: Likewise. + * sysdeps/posix/sprofil.c: Likewise. + * sysdeps/unix/sysv/linux/sleep.c: Likewise. + * sysdeps/unix/sysv/linux/sysctl.c: Likewise. + * sysdeps/unix/sysv/linux/usleep.c: Likewise. + +2002-12-15 Roland McGrath + + * sysdeps/unix/sysv/linux/readv.c (do_readv): Use prototype defn. + + * sysdeps/unix/sysv/linux/wait.c: Don't include or + here, no need for it. + * sysdeps/unix/sysv/linux/waitpid.c: Likewise. + + * sysdeps/unix/sysv/linux/i386/fcntl.c (do_fcntl): Take ARG as void * + parameter, not varargs parameter. + + * sysdeps/generic/sysdep-cancel.h (LIBC_CANCEL_RESET): Evaluate the + argument so it's not an unused variable. + + * resolv/resolv.h (__p_key_syms, __p_cert_syms, __p_class_syms, + __p_type_syms, __p_rcode_syms): Remove decls, never really intended + for users. + + * resolv/Versions (libresolv: GLIBC_2.3.2): New set, add __p_rcode. + +2002-12-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/fcntl.c (do_fcntl): This is the + original __libc_fcntl code. Just renamed. + +2002-12-15 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/clone.S: Make inline syscall to _exit. + +2002-12-14 Olaf Hering + + * sysdeps/powerpc/bits/setjmp.h: Include . + * sysdeps/powerpc/powerpc64/setjmp.S: Fix typo in r18 load. + +2002-12-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/libc_fatal.c: New file. + + * sysdeps/generic/sysdep-cancel.h: Add dummy definitions for + SINGLE_THREAD_P, LIBC_CANCEL_ASYNC, and LIBC_CANCEL_RESET. + + * sysdeps/unix/sysv/linux/open64.c: New file. + + * sysdeps/generic/pselect.c: Add support for cancellation handling. + * sysdeps/posix/open64.c: Likewise. + * sysdeps/posix/sigpause.c: Likewise. + * sysdeps/posix/sigwait.c: Likewise. + * sysdeps/posix/system.c: Likewise. + * sysdeps/posix/waitid.c: Likewise. + * sysdeps/unix/sysv/linux/accept.S: Likewise. + * sysdeps/unix/sysv/linux/connect.S: Likewise. + * sysdeps/unix/sysv/linux/llseek.c: Likewise. + * sysdeps/unix/sysv/linux/msgrcv.c: Likewise. + * sysdeps/unix/sysv/linux/msgsnd.c: Likewise. + * sysdeps/unix/sysv/linux/poll.c: Likewise. + * sysdeps/unix/sysv/linux/pread.c: Likewise. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + * sysdeps/unix/sysv/linux/recv.S: Likewise. + * sysdeps/unix/sysv/linux/recvfrom.S: Likewise. + * sysdeps/unix/sysv/linux/recvmsg.S: Likewise. + * sysdeps/unix/sysv/linux/send.S: Likewise. + * sysdeps/unix/sysv/linux/sendmsg.S: Likewise. + * sysdeps/unix/sysv/linux/sendto.S: Likewise. + * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. + * sysdeps/unix/sysv/linux/sigwait.c: Likewise. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + * sysdeps/unix/sysv/linux/tcdrain.c: Likewise. + * sysdeps/unix/sysv/linux/wait.c: Likewise. + * sysdeps/unix/sysv/linux/waitpid.c: Likewise. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/socket.S: Likewise. + +2002-12-14 Jakub Jelinek + + * sysdeps/generic/sysdep-cancel.h: New file. + * sysdeps/unix/make-syscalls.sh: Handle C at start of args as + cancelable syscall. + * sysdeps/unix/inet/syscalls.list (accept, connect, recv, recvfrom, + recvmsg, send, sendmsg, sendto): Make cancelable. + * sysdeps/unix/mman/syscalls.list (msync): Likewise. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (llseek, pread, + pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, + sendto, osf_select): Likewise. + * sysdeps/unix/sysv/linux/hppa/syscalls.list (accept, connect, recv, + recvfrom, recvmsg, send, sendmsg, sendto): Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (llseek, pread, + pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, + sendto): Likewise. + * sysdeps/unix/sysv/linux/mips/syscalls.list (accept, connect, recv, + recvfrom, recvmsg, send, sendmsg, sendto): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (llseek, pread, + pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, + sendto): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (llseek, pread, + pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg, + sendto, select): Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (llseek, pread, + pwrite, accept, connect, recvfrom, recvmsg, sendmsg, sendto): + Likewise. + * sysdeps/unix/sysv/linux/syscalls.list (creat, nanosleep, pause, + select, fcntl): Likewise. + * sysdeps/unix/sysv/syscalls.list (pause, poll): Likewise. + * sysdeps/unix/syscalls.list (close, fcntl, fsync, lseek, open, + read, readv, select, sigsuspend, write, writev): Likewise. + +2002-12-14 Jakub Jelinek + + * dirent/bug-readdir1.c: Include unistd.h. + +2002-12-13 Jakub Jelinek + + * locale/programs/locale.c: Include locarchive.h. + (ARCHIVE_NAME): Define. + (write_archive_locales): New function. + (write_locales): Use it. Ensure the same locale is not printed + multiple times in verbose mode. + Mode LC_IDENTIFICATION and LC_CTYPE printing into... + (print_LC_IDENTIFICATION, print_LC_CTYPE): ... these helper + functions. + (struct nameent): New type. + (nameentcmp): New function. + +2002-12-14 Jakub Jelinek + + * posix/regex_internal.c (re_string_context_at): Guard wide char + code with #ifdef RE_ENABLE_I18N. + +2002-11-22 Paolo Bonzini + + * posix/regcomp.c (regcomp): __re_compile_fastmap -> re_compile_fastmap + +2002-12-13 Roland McGrath + + * posix/bug-regex15.c: New file. + * posix/Makefile (tests): Add it. + + * test-skeleton.c (TEST_DATA_LIMIT): New macro, default to 64MB. + (main): Set RLIMIT_DATA limit to TEST_DATA_LIMIT (or lower if need be). + +2002-12-13 Ulrich Drepper + + * elf/dl-misc.c (_dl_debug_vdprintf): Don't depend on 5-digit PIDs. + + * misc/syslog.c (log_cleanup): Don't use parameter in + __libc_lock_unlock call, use syslog_lock directly. Adjust callers to + pass NULL instead of a pointer to syslog_lock. + +2002-12-12 Ulrich Drepper + + * iconvdata/Makefile: iconv-rules: Add definition to use gconv.map + linker map for all iconv modules. + (distribute): Add gconv.map. + * iconvdata/gconv.map: New file. + + * elf/Makefile: Also check all iconv modules for text relocations. + + * stdlib/Makefile: Remove code to automatically import GMP. + + * elf/Makefile (tests): Add rules to build and run check-textrel. + * elf/check-textrel.c: New file. + + * sysdeps/unix/sysv/linux/i386/sysdep.h (SETUP_PIC_REG): Add .size + directive. + +2002-12-11 Jakub Jelinek + + * io/test-utime (main): If stnow.st[am]time is wrong, print it and + not st.st[am]time. + +2002-04-30 Bruno Haible + + * intl/loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT to + the encoding if it already has slashes. + Reported by Perry Rapp . + +2002-12-11 Roland McGrath + + * csu/Makefile ($(objpfx)elf-init.oS): Remove target, braino. + (CPPFLAGS-elf-init.oS, CFLAGS-elf-init.oS): New variables. + Turn off PIC for compiling this file. + +2002-12-11 Ulrich Drepper + + * malloc/thread-m.h: Remove thread_id type and MUTEX_INITIALIZER + definitions. Not needed. + [_LIBC]: Use definitions from libc-lock.h instead of referencing + pthread routines directly. + * malloc/arena.c (ptmalloc_unlock_all2): Don't add (void) to + mutex_init calls. + (arena_get2): Don't look at return value of mutex_lock. + +2002-12-11 Roland McGrath + + * csu/Makefile ($(objpfx)elf-init.oS): New target, just clone + elf-init.o instead of compiling a PIC version. + +2002-12-11 Bruno Haible + + * intl/gettext.h: Renamed to ... + * intl/gmo.h: ... here. + * intl/Makefile (distribute): Add gmo.h, remove gettext.h. + * intl/gettextP.h: Update. + * intl/loadmsgcat.c: Update. + + * intl/gettextP.h (PARAMS): Make more portable. + (attribute_hidden): Define as empty macro if not already defined. + * intl/hash-string.h (PARAMS): Make more portable. + * intl/loadinfo.h (PARAMS): Likewise. + * intl/plural-exp.h (PARAMS): Likewise. + (attribute_hidden): Move definition near the definition of + internal_function. + + * intl/gettextP.h (_nl_locale_name) [!_LIBC]: New declaration. + * intl/plural-exp.h (plural_eval) [!_LIBC]: New declaration. + +2002-07-13 Bruno Haible + + * intl/dcigettext.c (freea): New macro. + (FREE_BLOCKS): Free also the registered blocks. + (DCIGETTEXT): Free the 'search' variable. + Reported by Andreas Fischer . + +2002-04-27 Bruno Haible + + * intl/gettextP.h [! _LIBC]: Use prefix libintl_ instead of suffix __. + * intl/dcigettext.c: Likewise. + * intl/dcgettext.c: Likewise. + * intl/dgettext.c: Likewise. + * intl/gettext.c: Likewise. + * intl/dcngettext.c: Likewise. + * intl/dngettext.c: Likewise. + * intl/ngettext.c: Likewise. + * intl/textdomain.c: Likewise. + * intl/bindtextdom.c: Likewise. + * intl/plural-exp.h: Likewise. + +2002-01-02 Bruno Haible + + * intl/loadmsgcat.c (_nl_init_domain_conv): Use PARAMS in extern decl. + +2001-04-30 Bruno Haible + + * intl/dcigettext.c (getuid, getgid, geteuid, getegid): Provide + default macro definitions. Needed for mingw32. + +2002-12-10 Ulrich Drepper + + * sysdeps/i386/bits/byteswap.h (__bswap_64): Apply + __builtin_constant_p to macro parameter. + + * sysdeps/generic/sigpause.c: Define all functions as weak. + * sysdeps/posix/sigpause.c: Likewise. + + * elf/tst-tls7.c (do_test): Adjustments for l_tls_modid being of + type size_t. + +2002-12-10 Jakub Jelinek + + * elf/tst-array1.c (preinit_array, init_array, fini_array): + Explicitly align the array to sizeof (void *). + * elf/tst-array2dep.c (init_array, fini_array): Likewise. + + * include/libc-symbols.h: Fix a comment typo. + + * sysdeps/unix/sysv/linux/alpha/select.S (__libc_select): New alias. + * sysdeps/unix/sysv/linux/alpha/sigsuspend.S (__libc_sigsuspend): + Likewise. + * sysdeps/unix/sysv/linux/ia64/sigsuspend.c (__libc_sigsuspend): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c + (__libc_sigsuspend): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c + (__libc_sigsuspend): Likewise. + * sysdeps/generic/creat.c (__libc_creat): Renamed from creat. + (creat): New weak alias. + +2002-12-10 Roland McGrath + + * manual/libc-texinfo.sh: Emit @set ADD-ON for each ADD-ON that + contributes a manual chapter. + * manual/signal.texi (Process Signal Mask): Use @ifset linuxthreads + around xref to it. + + * sysdeps/unix/sysv/linux/dl-librecon.h (EXTRA_LD_ENVVARS): Refer to + and move contents to ... + (EXTRA_LD_ENVVARS_LINUX): ... this new macro. Add break for nonmatch. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS): Use + it instead of duplicating its contents. + (EXTRA_LD_ENVVARS): Likewise. Add break for nonmatch. + +2002-12-09 Jakub Jelinek + + * elf/dl-support.c (_dl_non_dynamic_init): Add DL_OSVERSION_INIT if + defined. + * sysdeps/unix/sysv/linux/dl-librecon.h (_dl_osversion_init): New + function. + (EXTRA_LD_ENVVARS): Use it. + (DL_OSVERSION_INIT): Define. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h: Include linux + dl-librecon.h. + (EXTRA_LD_ENVVARS): Undef before defining. Use _dl_osversion_init. + +2002-12-10 Ulrich Drepper + + * Versions.def: No new symbols in 2.3.1, but some new ones in 2.3.2. + + * sysdeps/unix/closedir.c (__closedir): Remove __libc_lock_lock + call. It is not allowed to destroy pthread mutexes which are + still in use even though it is safe for our implementations. If + somebody still uses the descriptor it is a bug. + +2002-12-09 Richard Henderson + + * csu/abi-note.S: Use .p2align, not .align. + +2002-12-09 Ulrich Drepper + + * sysdeps/unix/sysv/linux/syscalls.list: Add __libc_creat and + __libc_select aliases. + + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Define __libc_sigwaitinfo + alias. + + * sysdeps/unix/sysv/linux/sigwait.c: Define __libc_sigwait alias. + + * sysdeps/unix/sysv/linux/sigsuspend.c: Define __libc_sigsuspend alias. + + * sysdeps/unix/sysv/linux/poll.c: Define __libc_poll alias. + + * sysdeps/unix/syscalls.list: Define __libc_select alias. + + * sysdeps/posix/waitid.c: Define __libc_waitid alias. + + * sysdeps/posix/sigpause.c: Define __libc_sigpause and + __libc___xpg_sigpause aliases. + + * sysdeps/generic/pselect.c: Define __libc_pselect alias. + + * misc/error.c: Remove use of USE_IN_LIBIO. + +2002-12-08 Roland McGrath + + * elf/Makefile (tests): Uncomment tst-array[123]. + * Makeconfig (CPPFLAGS-.oS): Add -DLIBC_NONSHARED=1. + * csu/elf-init.c: New file. + * csu/Makefile (routines, static-only-routines): Add elf-init. + * sysdeps/alpha/elf/start.S: Use __libc_csu_init in place of _init + and __libc_csu_fini in place of _fini. + * sysdeps/arm/elf/start.S: Likewise. + * sysdeps/cris/elf/start.S: Likewise. + * sysdeps/hppa/elf/start.S: Likewise. + * sysdeps/i386/elf/start.S: Likewise. + * sysdeps/ia64/elf/start.S: Likewise. + * sysdeps/m68k/elf/start.S: Likewise. + * sysdeps/mach/hurd/powerpc/static-start.S: Likewise. + * sysdeps/mips/elf/start.S: Likewise. + * sysdeps/powerpc/powerpc32/elf/start.S: Likewise. + * sysdeps/powerpc/powerpc64/elf/start.S: Likewise. + * sysdeps/s390/s390-32/elf/start.S: Likewise. + * sysdeps/s390/s390-64/elf/start.S: Likewise. + * sysdeps/sh/elf/start.S: Likewise. + * sysdeps/sparc/sparc32/elf/start.S: Likewise. + * sysdeps/sparc/sparc64/elf/start.S: Likewise. + * sysdeps/x86_64/elf/start.S: Likewise. + + * sysdeps/pthread/aio_notify.c (notify_func_wrapper): Take a malloc'd + struct containing function ptr and value, free it. + (__aio_notify_only): Allocate that and copy values from SIGEV into it. + It's not safe to let the new thread use the SIGEV pointer. + +2001-10-20 Paul Eggert + + * misc/error.c (strerror_r): Do not declare unless [!_LIBC]. + Do not check for HAVE_DECL_STRERROR_R missing unless STRERROR_R_CHAR_P. + Use strerror_r that is only a macro, even if it is not a function. + (strerror): Check for HAVE_DECL_STRERROR before declaring. + (private_strerror): Use prototypes, not old-style function definition. + (print_errno_message): New function. + Support the POSIX 'int'-flavored strerror_r, as well as the traditional + char*-flavored one. + (error_tail, error, error_at_line): Use it. + +2002-12-07 Carlos O'Donell + + * sysdeps/unix/sysv/linux/hppa/bits/shm.h: Added SHMLBA #define. + +2002-12-08 Ulrich Drepper + + * scripts/output-format.sed: Fix bug in one of the s expressions + which used / for one too many things. + + * include/unistd.h: Declare __libc_close. + +2002-12-07 Ulrich Drepper + + * sysdeps/generic/bits/stdio-lock.h (_IO_lock_trylock): New define. + +2002-12-07 Roland McGrath + + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Reintroduce changes + from 2002-12-06, but remove unnecessary memset call without removing + necessary copy of initialization image. + + * Makerules ($(common-objpfx)format.lds): New target. + (common-generated): Add it. + ($(inst_libdir)/libc.so): Depend on that, and cat it into the result. + * scripts/output-format.sed: New file. + * Makefile (distribute): Add it. + +2002-12-07 Ulrich Drepper + + * sysdeps/generic/libc-tls.c: Include . + Reported by Art Haas . + +2002-12-07 Kenneth W. Chen + + * sysdeps/ia64/strncpy.S (strncpy): Clear ar.ec. Fix .recovery4. + +2002-12-07 Jakub Jelinek + + * string/test-strncpy.c (do_random_tests): Improve test coverage. + +2002-12-06 Ulrich Drepper + + * test-skeleton.c (timeout_handler): Allow expected signal to be + SIGALRM. + + * wctype/wcfuncs.c: Add libc_hidden_def for iswalnum. + + * sysdeps/posix/raise.c: Add libc_hidden_def for raise. + +2002-12-07 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h [RTLD_PRIVATE_ERRNO] + (SYSCALL_ERROR_HANDLER): Fix a pasto. + Reported by Jeff Bailey . + +2002-12-06 Ulrich Drepper + + * sysdeps/generic/libc-tls.c: Undo last patch. + + * include/wctype.h: Define iswalnum with libc_hidden_proto. + + * include/signal.h: Define raise with libc_hidden_proto. + + * sysdeps/unix/sysv/linux/fexecve.c (fexecve): Use __snprintf and + __execve instead of snprintf and execve. + + * sysdeps/x86_64/fpu/libm-test-ulps: Relax errors for float and double + again a bit. + +2002-12-06 Jakub Jelinek + + * posix/Makefile (annexc.out): Add -I../dir for all sorted-dirs. + * posix/annexc.c (fmt, testfmt): Remove -D_LIBC. + +2002-12-06 Ulrich Drepper + + * misc/syslog.c (log_cleanup): New function. + (openlog): Use log_cleanup instead of __libc_mutex_unlock. + (closelog): Likewise. + + * elf/dl-close.c: Use __rtld_lock_* macros instead of __libc_lock_*. + * elf/dl-iteratephdr.c: Likewise. + * elf/dl-lookup.c: Likewise. + * elf/dl-misc.c: Likewise. + * elf/dl-open.c: Likewise. + * elf/dl-support.c: Likewise. + * elf/rtld.c: Likewise. + * sysdeps/generic/ldsodefs.h: Likewise. + * sysdeps/generic/bits/libc-lock.h: Define __rtld_lock_* macros. + * sysdeps/mach/bits/libc-lock.h: Likewise. + * sysdeps/mach/hurd/bits/libc-lock.h: Likewise. + +2002-12-06 Roland McGrath + + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Cope with zero ALIGN. + + * malloc/hooks.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))] + (malloc_starter, memalign_starter, free_starter): Don't define these. + * malloc/malloc.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))]: + Don't declare them either. + * malloc/arena.c (ptmalloc_init) [_LIBC && USE_TLS]: Don't call + __pthread_initialize, so no need to set hooks to *_starter. + (ptmalloc_init_minimal): New function, broken out of ptmalloc_init. + [_LIBC && SHARED && USE_TLS && !USE___THREAD] + (__libc_malloc_pthread_startup): New function. + * malloc/Versions (libc: GLIBC_PRIVATE): New set, add that function. + + * malloc/hooks.c (memalign_starter): New function. + * malloc/malloc.c: Declare it. + * malloc/arena.c (save_memalign_hook): New variable. + (ptmalloc_init): Set __memalign_hook to memalign_starter. + + * elf/dl-minimal.c (free): Clear the memory. + (calloc): Just call malloc, knowing all memory it returns is cleared. + + * sysdeps/generic/dl-tls.c (allocate_dtv): Use calloc instead of + malloc and memset; calloc can avoid the zeroing when redundant. + (_dl_tls_setup): Likewise. + * elf/dl-load.c (decompose_rpath): Likewise. + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Comment out memset + call, since memory from sbrk at startup is already zero. + + * elf/rtld.c (_dl_start, dl_main): TLS_INIT_TP macro now returns an + error string for failure, null for success. Update callers. + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Likewise. + * elf/dl-load.c (_dl_map_object_from_fd): Likewise. + +2002-12-05 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (sendfile): Change + args to i:iipi. + (readahead): Change args to i:iii. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list (readahead): + Change args to i:iii. + * sysdeps/unix/sysv/linux/mips/syscalls.list (readahead): Change + args to i:iiii. + +2002-12-05 Roland McGrath + + * stdlib/cxa_finalize.c (__cxa_finalize): When given a null argument, + call all functions rather than none. + Reported by Mark P. Mitchell . + +2002-12-04 Roland McGrath + + * locale/localeinfo.h [NL_CURRENT_INDIRECT]: Use attribute_tls_model_ie + on _nl_current_LC_* variables. + +2002-12-05 Ulrich Drepper + + * dirent/bug-readdir1.c (main): Don't call closedir, just close + the file descriptor. This is testing what the bug report was about. + +2002-12-04 Ulrich Drepper + + * po/be.po: New file. + + * argp/Makefile (tests): Add tst-argp1. + + * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: (struct sigevent): + Change type of _attribute to void*. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. + +2002-12-04 Roland McGrath + + * sysdeps/generic/ldsodefs.h (struct rtld_global): Move all [USE_TLS] + members to the end, so a libpthread compiled with !USE_TLS will still + find other members properly. + + * sysdeps/i386/i486/bits/string.h (__strcpy_g): Add dummy output + operand for DEST memory. Fix dummy input operand to use SRC. + Reported by Davin McCall . + + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Account for TCB + alignment when initializing the DTV entry. + + * elf/dl-load.c (_dl_map_object_from_fd): If we hit a TLS segment + when TLS has not been set up, try to set it up if we can. + * elf/tst-tls4.c: Revert last change. + * elf/tst-tls5.c: Likewise. + * elf/tst-tls6.c: Likewise. + * elf/tst-tls7.c: Likewise. + * elf/tst-tls8.c: Likewise. + * elf/tst-tls9.c: Likewise. + + * sysdeps/generic/dl-tls.c [SHARED] (_dl_tls_setup): New function. + * sysdeps/generic/ldsodefs.h: Declare it. + * elf/Versions (ld: GLIBC_PRIVATE): Add it. + * sysdeps/generic/libc-tls.c (init_slotinfo): New static inline + function, broken out of __libc_setup_tls. + (init_static_tls): Likewise. + (__libc_setup_tls): Call them. + (_dl_tls_setup): New function, uses new subroutines. + + * elf/dl-close.c (free_slotinfo): Make argument pointer to pointer. + Clear the pointer when returning true. + (libc_freeres_fn) [SHARED]: If GL(dl_initial_dtv) is null, free the + first element of the slotinfo list too. + + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Define only if + [SHARED]. + + * sysdeps/generic/ldsodefs.h (_dl_next_tls_modid): Declare as hidden. + (_dl_determine_tlsoffset): Likewise. + + * elf/rtld.c (_dl_initial_error_catch_tsd): Renamed from + startup_error_tsd, made global. + (dl_main): Update initialization. + * elf/dl-tsd.c: Likewise. + * sysdeps/generic/ldsodefs.h: Declare it. + +2002-12-03 Ulrich Drepper + + * manual/texinfo.tex: Update from latest upstream version. + +2002-12-03 Roland McGrath + + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Include static TLS + area surplus in calculation for sbrk call. + + * iconvdata/cp1125.c: New file. + * iconvdata/Makefile (distribute): Add it. + (modules): Add CP1125. + (gen-8bit-gap-modules): Add cp1125. + * iconvdata/gconv-modules: Add CP1125, alias RUSCII. + * iconvdata/tst-tables.sh: Add CP1125 to the list to test. + +2002-12-03 Andreas Jaeger + + * sysdeps/x86_64/fpu/libm-test-ulps: Regenerated. + +2002-12-03 Ulrich Drepper + + * sysdeps/posix/system.c (do_system): Make signal handler + installation thread safe. + +2002-12-02 Roland McGrath + + * sysdeps/unix/sysv/linux/alpha/syscalls.list (readahead): Change + caller from EXTRA to -. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + +2002-12-02 Carlos O'Donell + + * sysdeps/hppa/fpu/fesetround.c (fesetround): Use ~FE_DOWNWARD so both + bits of RM are cleared. + +2002-12-02 Roland McGrath + + * elf/tst-tls4.c: Define an unused TLS variable here, so that no lazy + TLS setup is required. + * elf/tst-tls5.c: Likewise. + * elf/tst-tls6.c: Likewise. + * elf/tst-tls7.c: Likewise. + * elf/tst-tls8.c: Likewise. + * elf/tst-tls9.c: Likewise. + + * elf/rtld.c (dl_main): Remove [! SHARED] conditional from + `if (GL(dl_tls_max_dtv_idx) > 0)' tests for doing TLS setup. + * elf/dl-close.c (libc_freeres_fn): Check GL(dl_tls_dtv_slotinfo_list) + for being null before calling free_slotinfo. + * elf/dl-load.c (_dl_map_object_from_fd) [SHARED]: For PT_TLS in + dynamic loading, bail with error if GL(dl_tls_max_dtv_idx) is zero. + +2002-11-30 Bruno Haible + + * iconv/gconv.h (__gconv_btowc_fct): New typedef. + (struct __gconv_step): New field __btowc_fct. + * wcsmbs/btowc.c (__btowc): Use the __btowc_fct shortcut if possible. + * iconv/gconv_int.h (__BUILTIN_TRANSFORM): Renamed from + __BUILTIN_TRANS. + (__gconv_btwoc_ascii): New declaration. + * iconv/gconv_simple.c (BUILTIN_TRANSFORMATION): Add BtowcFct argument. + (__gconv_btwoc_ascii): New function. + * iconv/gconv_builtin.h: Add BtowcFct argument to all + BUILTIN_TRANSFORMATION invocations. + * iconv/gconv_conf.c (BUILTIN_TRANSFORMATION): Add BtowcFct argument. + * iconv/iconvconfig.c (BUILTIN_TRANSFORMATION): Likewise. + * iconv/gconv_builtin.c (map): New field btowc_fct. + (BUILTIN_TRANSFORMATION): Add BtowcFct argument. Use it to initialize + btowc_fct field. + (__gconv_get_builtin_trans): Initialize __btowc_fct field. + * iconv/gconv_cache.c (find_module): Initialize __btowc_fct field. + * iconv/gconv_db.c (gen_steps, increment_counter): Likewise. + * wcsmbs/wcsmbsload.c (to_wc, to_mb): Likewise. + * iconv/skeleton.c: Document STORE_REST and FROM_ONEBYTE. + (gconv_init): Initialize __btowc_fct field. + Undefine EXTRA_LOOP_ARGS and FROM_ONEBYTE at the end. + * iconv/loop.c: Document ONEBYTE_BODY. + (gconv_btowc, FROM_ONEBYTE): Define if ONEBYTE_BODY is defined. + Undefine ONEBYTE_BODY at the end. + * iconvdata/8bit-generic.c (ONEBYTE_BODY): New macro. + * iconvdata/8bit-gap.c (NONNUL): New macro. + (BODY for FROM_LOOP): Use it. + (ONEBYTE_BODY): New macro. + * iconvdata/isiri-3342.c (HAS_HOLES): Set to 1. + (NONNUL): New macro. + * iconvdata/ansi_x3.110.c (ONEBYTE_BODY): New macro. + * iconvdata/armscii-8.c (ONEBYTE_BODY): New macro. + * iconvdata/cp1255.c (ONEBYTE_BODY): New macro. + * iconvdata/cp1258.c (ONEBYTE_BODY): New macro. + * iconvdata/tcvn5712-1.c (ONEBYTE_BODY): New macro. + * iconvdata/big5.c (ONEBYTE_BODY): New macro. + * iconvdata/big5hkscs.c (ONEBYTE_BODY): New macro. + * iconvdata/euc-cn.c (ONEBYTE_BODY): New macro. + * iconvdata/euc-jp.c (ONEBYTE_BODY): New macro. + * iconvdata/euc-jisx0213.c (ONEBYTE_BODY): New macro. + * iconvdata/euc-kr.c (ONEBYTE_BODY): New macro. + * iconvdata/euc-tw.c (ONEBYTE_BODY): New macro. + * iconvdata/gbk.c (ONEBYTE_BODY): New macro. + * iconvdata/gb18030.c (ONEBYTE_BODY): New macro. + * iconvdata/ibm932.c: Include . + (TRUE, FALSE): Remove macros. + (BODY for FROM_LOOP): Remove unused variable rp1. + (ONEBYTE_BODY): New macro. + (BODY for TO_LOOP): Use bool. + * iconvdata/ibm932.h (__ibm932sb_to_ucs4_idx): Remove array. + * iconvdata/ibm943.c: Include . + (TRUE, FALSE): Remove macros. + (BODY for FROM_LOOP): Remove unused variable rp1. + (ONEBYTE_BODY): New macro. + (BODY for TO_LOOP): Use bool. + * iconvdata/ibm943.h (__ibm943sb_to_ucs4_idx): Remove array. + * iconvdata/iso8859-1.c (ONEBYTE_BODY): New macro. + * iconvdata/iso_6937-2.c (ONEBYTE_BODY): New macro. + * iconvdata/iso_6937.c (ONEBYTE_BODY): New macro. + * iconvdata/johab.c (ONEBYTE_BODY): New macro. + * iconvdata/sjis.c (ONEBYTE_BODY): New macro. + * iconvdata/shift_jisx0213.c (ONEBYTE_BODY): New macro. + * iconvdata/t.61.c (ONEBYTE_BODY): New macro. + * iconvdata/uhc.c (ONEBYTE_BODY): New macro. + * iconvdata/gbbig5.c: Tweak comment. + +2002-12-02 Ulrich Drepper + + * po/fi.po: Update from translation team. + +2002-12-01 Roland McGrath + + * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): Fix condition + testing getdents64 return value. + + * scripts/versions.awk: Don't pass -n flag to sort command. + + * posix/bug-regex13.c: Include . + + * sysdeps/generic/libc-start.c (__libc_start_main): Do + DL_SYSDEP_OSCHECK here. + * sysdeps/unix/sysv/linux/init-first.c (init): Not here. + * sysdeps/unix/sysv/linux/dl-osinfo.h: Include . + + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Bail if + argument TCBSIZE <= TLS_INIT_TCB_SIZE, not just if it's zero. + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Check l_tls_offset + instead of l_type to decide whether to use TLS_DTV_UNALLOCATED. + + * include/link.h: Comment typo fix. + +2002-12-01 Roland McGrath + + * sysdeps/mach/hurd/bits/posix_opt.h (_POSIX_FSYNC): Set to 200112L. + (_POSIX_SPAWN, _POSIX_MAPPED_FILES, _POSIX_MEMLOCK_RANGE, + _POSIX_MEMORY_PROTECTION): Likewise. + (_POSIX_POLL, _POSIX_SELECT): Removed. + +2002-11-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define macros which + require it to 200112L. Remove _POSIX_POLL and _POSIX_SELECT. + +2002-11-28 Jakub Jelinek + + * sysdeps/unix/alpha/sysdep.S: Change defined(USE___THREAD) to + USE___THREAD. + * sysdeps/unix/sysv/linux/alpha/sysdep.h (inline_syscall*): Avoid + "=v" constraints. + +2002-11-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/vfork.S: Don't trash the CPU's + branch prediction buffers by using unpaired call/ret. + +2002-11-27 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Fix typo in + first parameters constraint string. + (ASMFMT_3): Likewise. Patch by stefan.lauterbach@mincom.de. + +2002-11-27 Isamu Hasegawa + + * posix/regcomp.c (parse_expression): Set the bit since the back + reference is used in the regular expression. + * posix/regex_internal.c (re_node_set_init_1): Make it clean in case + of malloc failure. + (re_node_set_init_copy): Likewise. + * posix/regex_internal.h (state_array_t): New structure. + (re_sub_match_last_t): Likewise. + (re_sub_match_top_t): Likewise. + (re_match_context_t): Add new members. + (re_dfa_t): Likewise. + * posix/regexec.c (re_search_internal): Invoke prune_impossible_nodes + to check the matching is really correct, and retry if failed. + Move the routin pruning the impossible nodes from here, ... + (prune_impossible_nodes): To this function. + (check_matching): Invoke check_subexp_matching_top, and replace + redundant checking with transit_state_bkref invocation. + (proceed_next_node): Replace strncmp with memcmp. Reported by + Paolo Bonzini . + (update_cur_sifted_state): Remove search_subexp invocation. + (search_subexp): Remove this function. + (check_dst_limits_calc_pos): Use search_cur_bkref_entry for + optimization. + (sift_states_bkref): Use search_cur_bkref_entry for optimization. + Remove unused invocation of match_ctx_add_entry. + (transit_state): Invoke check_subexp_matching_top. + (check_subexp_matching_top): New function. + (transit_state_bkref): Remove unused array. + Merge transit_state_bkref_loop. + (transit_state_bkref_loop): Use get_subexp instead of + sift_states_backward. Use search_cur_bkref_entry for optimization. + Merge this function to transit_state_bkref. + (get_subexp): New function. + (get_subexp_sub): Likewise. + (find_subexp_node): Likewise. + (check_arrival): Likewise. + (check_arrival_expand_ecl): Likewise. + (check_arrival_expand_ecl_sub): Likewise. + (expand_bkref_cache): Likewise. + (match_ctx_init): Initialize new members. + (match_ctx_clean): New function. + (match_ctx_free): Release new members. + (match_ctx_free_subtops): New function. + (match_ctx_add_entry): Fix indent. + (search_cur_bkref_entry): New function. + (match_ctx_add_subtop): Likewise. + (match_ctx_add_sublast): Likewise. + +2002-11-25 Ulrich Drepper + + * iconv/Makefile (tests): Remove tst-iconv4.c + * iconv/tst-iconv4.c: Moved to... + * iconvdata/tst-iconv4.c: ...here. New file. + * iconvdata/Makefile (tests): Add tst-iconv4. Add dependencies. + +2002-11-25 Roland McGrath + + * inet/test-ifaddrs.c (main: addr_string): Handle null SA. + Grok AF_LINK if defined. + From Momchil Velikov . + + * sysdeps/gnu/ifaddrs.c (getifaddrs): If ioctl fails for netmask, + brdaddr, or dstaddr, just set those pointers to null and don't fail. + Reported by Momchil Velikov . + + * sysdeps/generic/ifreq.h (__if_nextreq) [_HAVE_SA_LEN]: If sa_len + is > sizeof IFR->ifa_addr, advance past the whole longer length. + (__ifreq): Count up NIFS that way too. + Reported by Momchil Velikov . + + * sysdeps/mach/hurd/lchmod.c: Include . + + * sysdeps/mach/hurd/i386/init-first.c: Include + and . + +2002-11-24 Ulrich Drepper + + * elf/elf.h (EM_ST19): Fix typo. + +2002-11-25 Jakub Jelinek + + * include/errno.h (__set_errno): Define as errno = val + unconditionally. + +2002-11-24 Roland McGrath + + * sysdeps/posix/readv.c: Include , use __set_errno macro. + * sysdeps/posix/writev.c: Likewise. + From Momchil Velikov . + + * elf/dl-error.c [! _LIBC_REENTRANT]: Use a static variable instead of + calling *GL(dl_error_catch_tsd) for a thread-local location. + * elf/rtld.c (startup_error_tsd): Conditionalize on [_LIBC_REENTRANT]. + (dl_main): Same for GL(dl_error_catch_tsd) initialization. + * elf/dl-tsd.c: Conditionalize contents on [_LIBC_REENTRANT]. + + * libio/iofflush.c: Add libc_hidden_def. + * libio/iofwrite.c: Likewise. + * sysdeps/generic/sigtimedwait.c: Likewise. + * sysdeps/generic/sigwaitinfo.c: Likewise. + * sysdeps/posix/sigwait.c: Likewise. + Reported by Momchil Velikov . + + * inet/inet_lnaof.c (inet_lnaof): Change return type to in_addr_t + to match declaration. + * inet/inet_netof.c (inet_netof): Likewise. + * inet/inet_mkadr.c (inet_makeaddr): Likewise for argument types. + Reported by Momchil Velikov . + + * configure.in: Skip AUTOCONF check under --without-cvs. + * configure: Regenerated. + + * posix/Makefile (headers): Add bits/pthreadtypes.h. + * sysdeps/unix/sysv/linux/Makefile (sysdep_heaers): Don't add it here. + * sysdeps/unix/sysv/linux/Dist: Remove it from the list. + +2002-11-24 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Support inline syscall + with six arguments. + +2002-11-19 Jim Meyering + + * time/mktime.c (__mon_yday, __mktime_internal) [!_LIBC]: Declare + as `static'. + * time/strptime.c (__mon_yday) [!_LIBC]: Declare as `static'. + +2002-11-23 Roland McGrath + + * scripts/abilist.awk: Avoid strtonum function, not there in mawk. + Just produce hex output for datum sizes. + + * elf/Makefile ($(objpfx)librtld.mk): Tighten up regexp. + Reported by Luca Barbieri . + +2002-11-20 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/bits/msq.h (msqid_ds) + [__WORDSIZE == 32]: Only PPC32 requires __unused1, __unused2, + and __unused3 fields. + * sysdeps/unix/sysv/linux/powerpc/bits/sem.h (semid_ds) + [__WORDSIZE == 32]: Only PPC32 requires __unused1 + and __unused2 fields. + * sysdeps/unix/sysv/linux/powerpc/bits/shm.h (shmid_ds) + [__WORDSIZE == 32]: Only PPC32 requires __unused1, __unused2, + __unused3, and __unused4 fields. + + * csu/gmon-start.c (__gmon_start__): Always use TEXT_START macro to + obtain lowest address for profiling in __monstartup call. + +2002-11-21 Roland McGrath + + * sysdeps/ia64/fpu/Makefile (libm-sysdep_routines): Remove redunant + $(calls) $(calls:=f) $(long-c-$(long-double-fcts)). + + * locale/localeinfo.h (struct locale_data): Revert last change. + + * sysdeps/unix/sysv/linux/ia64/syscalls.list (s_exit_group): Add it. + From Ian Wienand . + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_pread): Define to + __NR_pread64 if not defined. + (__NR_pwrite): Define to __NR_pwrite64 if not defined. + From Ian Wienand . + +2002-11-21 Roland McGrath + + * sysdeps/mach/hurd/i386/init-first.c (posixland_init): Set + __libc_multiple_libcs here. Call __setfpucw. + +2002-11-21 Ulrich Drepper + + * elf/Makefile (tests): Don't run test-arrayX tests for now. + + * sysdeps/unix/sysv/linux/bits/sched.h: Add new CLONE_* flags. + * sysdeps/unix/sysv/linux/i386/clone.S: Add support for + CLONE_CHILD_*TID flags. + +2002-11-20 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): + We pass struct ucontext on x86-64. + (GET_PC): Adjust. + (GET_FRAME): Adjust. + (GET_STACK): Adjust. + +2002-11-20 Roland McGrath + + * sysdeps/powerpc/powerpc32/dl-machine.c [! SHARED]: Further + conditionalize [! DO_VERSIONING] #error. + + * scripts/abilist.awk: Grok function descriptor symbols. + + * intl/tst-gettext.c (main): Check return values from setlocale. + Add necessary unsetenv's to make LANG=existing-locale check work. + + * intl/tst-gettext.sh: Use mkdir -p. Copy test files unconditionally, + so aborted prior runs don't confuse things. + + * locale/localeinfo.h (struct locale_data: union locale_data_value): + Use uintptr_t instead of unsigned int for `word' member. + (_NL_CURRENT_WORD): Cast to uint32_t. + + * posix/bug-regex5.c (main): Use union to extract _NL_COLLATE_NRULES + value. + +2002-11-20 Ulrich Drepper + + * elf/tls-macros.h: Add IA-64 definitions. + Patch by Ian Wienand . + + * iconv/Makefile (tests): Add tst-iconv4. + * iconv/tst-iconv4.c: New file. + + * iconv/gconv_simple.c (internal_ucs4le_loop_unaligned): Return + __GCONV_EMPTY_INPUT only if input is really empty. Otherwise + __GCONV_INCOMPLETE_INPUT. + (ucs4le_internal_loop): Likewise. + (ucs4le_internal_loop_unaligned): Likewise. + * iconvdata/unicode.c (PREPARE_LOOP): Likewise. + * iconvdata/utf-16.c (PREPARE_LOOP): Likewise. + * iconvdata/utf-32.c (PREPARE_LOOP): Likewise. + + * iconv/loop.c (LOOPFCT): First test for empty input then for full + output buffer. + + * inet/getnameinfo.c: Use extend_alloca where appropriate. + * sysdeps/posix/getaddrinfo.c: Likewise. + + * include/alloca.h (extend_alloca): New define. Based on stack + direction it'll try to append to the previouls allocated buffer. + +2002-11-07 Thorsten Kukuk + + * sysdeps/posix/getaddrinfo.c (gaih_inet): If AF_UNSPEC is set, + use the same service for AF_INET and AF_INET6. + +2002-11-19 Ulrich Drepper + + * intl/localealias.c (read_alias_file): Use only about 400 bytes + of stack space instead of 16k. + +2002-11-18 Wolfram Gloger + + * malloc/arena.c + (ptmalloc_lock_all, ptmalloc_unlock_all, ptmalloc_unlock_all2): Do + nothing if not initialized. Bug report from Marcus Brinkmann + . + +2002-11-19 Roland McGrath + + * posix/Versions (libc: GLIBC_2.3.2): Add sched_getaffinity and + sched_setaffinity. + + * configure.in (libc_cv_gcc_dwarf2_unwind_info check): Use libraries + `-lgcc -lgcc_eh -lgcc', not just `-lgcc -lgcc_eh' in link commands for + test leading to libc_cv_gcc_dwarf2_unwind_info=no_registry_needed. + * configure: Regenerated. + +2002-11-19 Ulrich Drepper + + * include/dlfcn.h: __libc_dlopen is now a macro calling + __libc_dlopen_mode with the extra parameter RTLD_LAZY. + (__libc_dlopen_mode): New prototype. + * elf/dl-libc.c (__libc_dlopen_mode): Renamed from __libc_dlopen. Add + new parameter. Store new parameter in mode field of structure passed + to do_dlopen. + (struct do_dlopen_args): Add new field mode. + (do_dlopen): Pass mode from parameter structure to _dl_open. + +2002-11-11 Randolf Chung + + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h [__USE_FILE_OFFSET64] + (F_GETLK, F_SETLK, F_SETLKW): Define to F_*64 versions. + * sysdeps/unix/sysv/linux/hppa/fcntl.c: New file. + + * sysdeps/hppa/fpu/libm-test-ulps: New file (generated). + + * sysdeps/hppa/Makefile (CFLAGS-rtld.c): New variable. + Set -mdisable-fpregs for this file. + +2002-11-11 Carlos O'Donell + + * sysdeps/unix/sysv/linux/configure.in: + Make 2.4.19 minimum linux kernel for hppa, and add unwind symbols + from gcc-3.0 era for backwards compatibility. + * sysdeps/unix/sysv/linux/configure: Regenerate. + + * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: + Define mcontext_t as a sigcontext. + +2002-11-18 Roland McGrath + + * dlfcn/dlerror.c (fini): New function, __attribute__ ((destructor)). + Free memory in `last_result' if it was used. + + * resolv/nss_dns/dns-network.c (getanswer_r): In BYNAME case, search + all aliases for one that matches the ".IN-ADDR.ARPA" form. + Do the parsing inline instead of copying strings and calling + inet_network, and properly skip all alias names not matching the form. + + * manual/pattern.texi (Variable Substitution): Fix # and ## examples. + +2002-11-17 Ulrich Drepper + + * manual/pattern.texi (Wordexp Example): Fix sample code. + + * sysdeps/unix/sysv/linux/i386/clone.S: Initialize word in the + childs stack which will be loaded into the %esi register. + +2002-11-14 Paul Eggert + + * resolv/nss_dns/dns-network.c (getanswer_r): Check for buffer + overflow when skipping the question part and when unpacking aliases. + +2002-11-15 Roland McGrath + + * math/Makefile (libm-calls): Remove s_copysign, s_isinf, s_isnan, + s_finite, s_modf, s_scalbn, s_frexp, m_ldexp, s_signbit. + Instead add $(calls:s_%=m_%) to get m_* versions of them all. + +2002-11-15 Jakub Jelinek + + * sysdeps/i386/dl-machine.h (elf_machine_rela): Handle R_386_COPY. + * sysdeps/arm/dl-machine.h (elf_machine_rela): Handle R_ARM_COPY. + +2002-11-15 Roland McGrath + + * math/Makefile (libm-calls): Change s_ldexp to m_ldexp. + * Makerules ($(+sysdir_pfx)sysd-rules): Emit pattern rules for m_%.[Sc] + from sysdeps/.../s_%.[Sc] with commands $(+make-include-of-dep). + (+make-include-of-dep): New canned sequence. + + * stdlib/canonicalize.c (__realpath): Check for malloc failure. + From Dmitry V. Levin . + +2002-11-14 Roland McGrath + + * sysdeps/generic/errno.c (__libc_errno): Remove alias. + * inet/herrno.c (__libc_h_errno): Likewise. + * resolv/res_libc.c (__libc_res): Likewise. + [USE___THREAD]: Use this in place of [USE_TLS && HAVE___THREAD]. + (__res_state) [! USE___THREAD]: Don't define as weak. + * csu/Versions: Revert last change. + * resolv/Versions: Revert last change. + + * Makerules ($(common-objpfx)%.make): New pattern rule. + * tls.make.c: New file. + * Makefile (distribute): Add it. + + * sysdeps/generic/errno.c [! USE___THREAD] + [HAVE_ELF && SHARED && DO_VERSIONING] (errno, _errno): Declare these + with compat_symbol so they are not link-time visible. + [! USE___THREAD] (__libc_errno): New alias for errno. + * csu/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): + Add __libc_errno here. + * inet/herrno.c [USE___THREAD]: Use this conditional + in place of [USE_TLS && HAVE___THREAD]. + [! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING] + (h_errno, _h_errno): Declare these with compat_symbol so they are not + link-time visible. + [! USE___THREAD] (__libc_h_errno): New alias for h_errno. + * resolv/res_libc.c [! USE___THREAD] + [HAVE_ELF && SHARED && DO_VERSIONING] (_res): Likewise. + (_res): Use __attribute__ ((section (".bss"))) so we can have an alias. + (__libc_res): Define as alias for _res. + * resolv/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): + Add __libc_h_errno and __libc_res here. + +2002-11-14 Jakub Jelinek + + * csu/Versions (errno): Move STT_TLS symbol to GLIBC_PRIVATE for now. + * resolv/Versions (h_errno, _res): Likewise. + +2002-11-14 Roland McGrath + + * Makerules (%.dynsym): Remove $(objpfx) from target and dep. + (%.symlist): Likewise. + +2002-11-13 Roland McGrath + + * scripts/abilist.awk: New file. + * Makefile (distribute): Add it. + * Makerules ($(objpfx)%.dynsym, $(objpfx)%.symlist): New rules. + (tests): Depend on .symlist file for each $(install-lib.so-versioned). + [$(subdir) = elf] (tests): Depend on libc.symlist. + (generated, common-generated): Add those files. + + * aclocal.m4 (LIBC_PROG_BINUTILS): Check for objdump, set OBJDUMP. + * configure: Regenerated. + * config.make.in (OBJDUMP): New variable, substituted by configure. + + * malloc/mcheck.c (struct hdr): New members `block' and `magic2'. + (mallochook, reallochook): Set them up. + (checkhdr): Check HDR->magic2 value. + (freehook): Reset HDR->magic2. + (memalignhook): New static function. + (old_memalign_hook): New static variable. + (mcheck, reallochook): Set __memalign_hook to memalignhook. + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Zero the space + for the new TCB. + +2002-11-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Check for visibility + attribute. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + +2002-11-11 Paul Eggert + + * manual/crypt.texi (Cryptographic Functions): Mention that + the MD5 one-way algorithm is compatible with BSD's. + +2002-11-11 Isamu Hasegawa + + * posix/regex_internal.c (re_string_skip_chars): Also return the last + wide character. + (re_string_reconstruct): Calculate the context by itself when the + offset points out of the valid range. + (re_string_context_at): Use wide character when MB_CUR_MAX > 1. + * posix/regex_internal.h (WIDE_NEWLINE_CHAR): New macro. + (IS_WIDE_WORD_CHAR): New macro. + (IS_WIDE_NEWLINE): New macro. + +2002-11-12 Andreas Jaeger + + * sysdeps/x86_64/strchr.S: Don't use one register for two + purposes, this fixes a bug noticed by test-strchr.c. + + * sysdeps/x86_64/strcat.S: Fix algorithm to align source pointer + correctly. + +2002-11-12 Roland McGrath + + * libio/libioP.h [_LIBC && !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)] + (_G_IO_NO_BACKWARD_COMPAT): Define it. + + * sysdeps/ia64/dl-fptr.c [_LIBC_REENTRANT]: Include + instead of . + [_LIBC_REENTRANT] (lock, unlock): Use __sync_lock_* macros instead of + testandset. + From Ian Wienand . + +2002-11-10 Roland McGrath + + * libio/bug-wfflush.c (do_test): Call rewind instead of fsetpos. + Call fputs instead of fwprintf (simpler to follow in debugger). + + * crypt/md5-crypt.c: Doc fix. + + * sysdeps/unix/make-syscalls.sh: Insert $(make-target-directory) at + the beginning of generated target commands. + + * csu/Makefile ($(objpfx)crti.o, $(objpfx)crtn.o): Add explicit + dependencies for these in case implicit rule search skipped the + nonexistent source directory. + * sysdeps/gnu/Makefile ($(objpfx)errlist.d): Give this rule all the + files with $(object-suffixes) as targets too. + * Makerules [no_deps && objpfx] (before-compile): Add $(objpfx). + and a target for it using $(make-target-directory). + + * Rules (before-compile): Add $(common-objpfx)bits/stdio-lim.h. + +2002-11-10 Roland McGrath + + * sysdeps/unix/sysv/linux/bits/pthreadtypes.h: Moved to ... + * sysdeps/generic/bits/pthreadtypes.h: ... here. + + * sysdeps/mach/hurd/fcntl.c (__libc_fcntl): Treat a struct flock with + l_start == 0 and l_len == 1 as we do l_len == 0. + +2002-11-10 Ulrich Drepper + + * po/da.po: Update from translation team. + +2002-11-10 Roland McGrath + + * config.make.in (includedir): New variable, substituted by configure. + Reported missing by Jocelyn Fournier . + * Makeconfig (includedir): Use $(prefix), not $(exec_prefix). + +2002-11-10 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sys/ucontext.h (enum): Add + REG_OLDMASK and REG_CR2 to synch with kernel header. + (NGREG): Increase. + + * nss/getXXent.c (GETFUNC_NAME): Use union type to avoid strict + aliasing problem. + * nss/getXXbyYY_r.c (INTERNAL): Likewise. + * nss/getnssent_r.c (__nss_getent_r): Likewise. + (__nss_setent): Likewise. + (__nss_getent_r): Likewise. + * inet/getnetgrent_r.c (innetgr): Likewise. + (__internal_setnetgrent_reuse): Likewise. + (internal_getnetgrent_r): Likewise. + * inet/ether_hton.c (ether_hostton): Likewise. + * inet/ether_ntoh.c (ether_ntohost): Likewise. + * sunrpc/netname.c (netname2user): Likewise. + * sunrpc/publickey.c (getpublickey): Likewise. + (getsecretkey): Likewise. + +2002-11-09 Marcus Brinkmann + + * sysdeps/mach/hurd/i386/ioperm.c (ioperm): Correct off by one + error in range calculation. + +2002-10-09 Jakub Jelinek + + * string/test-strspn.c (do_test): Ensure zero termination. + * string/test-strpbrk.c (do_test): Likewise. + * string/test-strncmp.c (stupid_strncmp): Use strnlen, not strlen. + * string/test-strncpy.c (stupid_strncpy): Likewise. + * string/test-stpncpy.c (stupid_stpncpy): Likewise. + +2002-10-08 Roland McGrath + + * string/test-string.h (test_init): Fill BUF1 and BUF2 with + nonzero characters. + +2002-09-22 H.J. Lu + + * sysdeps/unix/sysv/linux/mmap64.c (MMAP2_PAGE_SHIFT): Renamed + from PAGE_SHIFT. Define if not defined. Check MMAP2_PAGE_SHIFT + only if __NR_mmap2 is defined. + + * sysdeps/unix/sysv/linux/powerpc/mmap64.c: Moved to ... + * sysdeps/unix/sysv/linux/mmap64.c: ... here. + * sysdeps/unix/sysv/linux/hppa/mmap64.c: File removed. + * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c: FIle removed, + +2002-11-08 Jakub Jelinek + + * posix/bug-regex13.c (tests): Add new test. + + * string/test-strchr.c (stupid_strchr): New function. + (do_random_tests): Make sure the string is zero terminated. + * string/test-strpbrk.c (stupid_strpbrk): New function. + (do_random_tests): Make sure the string is zero terminated. + * string/test-strcmp.c (stupid_strcmp): New function. + (do_random_tests): Make sure the strings are zero terminated. + * string/test-strspn.c (stupid_strspn): New function. + (simple_strspn): Rename rej argument to acc. + (do_random_tests): Make sure the string is zero terminated. + * string/test-strcspn.c (stupid_strcspn): New function. + * string/test-strncpy.c (stupid_strncpy): New function. + * string/test-stpncpy.c (stupid_stpncpy): New function. + * string/test-strncmp.c (stupid_strncmp): New function. + (do_random_tests): Make sure the strings are zero terminated. + * string/test-string.h (impl_t): Change test into long. + (IMPL): Add __attribute__((aligned (sizeof (void *)))). + +2002-11-08 Roland McGrath + + * sysdeps/ia64/elf/configure.in: Add TLS check. + From Ian Wienand . + * sysdeps/ia64/elf/configure: Regenerated. + +2002-11-07 Roland McGrath + + * libio/fileops.c (_IO_new_file_overflow): Use INTUSE(_IO_do_write) in + place of _IO_new_do_write. + [_LIBC] (_IO_do_write): Define as macro for _IO_new_do_write and + #undef before versioned_symbol use. + +2002-11-07 Richard Henderson + + * configure.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove test. + * configure: Regenerated. + * config.h.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove #undef. + * sysdeps/alpha/dl-machine.h (TRAMPOLINE_TEMPLATE): Use !samegp. + (RTLD_START): Likewise. Access _dl_skip_args, _rtld_local, and + _dl_fini via gp-relative relocations. + * sysdeps/alpha/fpu/e_sqrt.c: Use !samegp. + + * elf/tls-macros.h: Add alpha versions. + * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle TLS relocs. + * sysdeps/unix/alpha/sysdep.S: Support USE___THREAD. + * sysdeps/unix/alpha/sysdep.h: Likewise. Add SYSCALL_ERROR_HANDLER. + * sysdeps/unix/sysv/linux/alpha/brk.S: Use it. + * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/getitimer.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. + + * sysdeps/unix/sysv/linux/alpha/sysdep.h: Re-include protect. + Kill argument registers across the inline syscall. + + * sysdeps/unix/sysv/linux/alpha/clone.S: Add user_tid and tls args. + + * linuxthreads/sysdeps/alpha/tls.h: New file. + * sysdeps/alpha/dl-tls.h: New file. + +2002-10-29 David Mosberger + + * sysdeps/ia64/elf/initfini.c [HAVE_INITFINI_ARRAY] + (gmon_initializer): New function. + (.init prologue): If HAVE_INITFINI_ARRAY is true, don't call + __gmon_start__ here. Call it from gmon_initializer() instead. + +2002-03-12 H.J. Lu + + * elf/Makefile [$(have-initfini-array) = yes] (tests): Add tst-array1, + tst-array2, and tst-array3. + [$(have-initfini-array) = yes] (tests-static): Add tst-array3. + [$(have-initfini-array) = yes] (modules-names): Add tst-array2dep. + ($(objpfx)tst-array1.out): New target. + ($(objpfx)tst-array2): Likewise. + ($(objpfx)tst-array2.out): Likewise. + ($(objpfx)tst-array3.out): Likewise. + * elf/tst-array1.c: New file. + * elf/tst-array1.exp: Likewise. + * elf/tst-array2.c: Likewise. + * elf/tst-array2dep.c: Likewise. + * elf/tst-array2.exp: Likewise. + * elf/tst-array3.c: Likewise. + +2002-10-28 David Mosberger + + * elf/dl-fini.c (_dl_fini): Invoke fini_array in _reverse_ order. + Don't add L->l_addr to array entry values. + +2002-11-07 Jakub Jelinek + + * string/test-string.h: New file. + * string/test-strlen.c: New file. + * string/test-string.h: New file. + * string/test-strcmp.c: New file. + * string/test-strchr.c: New file. + * string/test-strrchr.c: New file. + * string/test-strcpy.c: New file. + * string/test-stpcpy.c: New file. + * string/test-strncpy.c: New file. + * string/test-stpncpy.c: New file. + * string/test-strpbrk.c: New file. + * string/test-strcspn.c: New file. + * string/test-strspn.c: New file. + * string/test-strcat.c: New file. + * string/test-strncmp.c: New file. + * string/test-memchr.c: New file. + * string/test-memcmp.c: New file. + * string/test-memset.c: New file. + * string/test-memcpy.c: New file. + * string/test-mempcpy.c: New file. + * string/test-memmove.c: New file. + * string/Makefile (strop-tests): New variable. + (tests): Add strop-tests. + (distribute): Add test-string.h. + +2002-11-06 Ulrich Drepper + + * posix/regcomp.c: Use tabs instead of spaces. + * posix/regexec.c: Likewise. + * posix/regex_internal.h: Likewise. + + * posix/regcomp.c (re_compile_fastmap_iter): Use __wcrtomb not wctomb. + +2002-11-06 Jakub Jelinek + + * posix/regcomp.c (re_compile_pattern): Don't set regs_allocated + here. + (regcomp): Don't set can_be_null here. + (re_comp): Clear whole re_comp_buf with the exception of fastmap. + (re_compile_internal): Clear can_be_null, set regs_allocated. + + * posix/regcomp.c (re_set_fastmap): New function. + (re_compile_fastmap_iter): Use it. Remove redundant type == + COMPLEX_BRACKET check. + * posix/regexec.c (re_search_internal): Optimize searching with + fastmap. Call re_string_reconstruct even if match_first is + smaller than raw_mbs_idx. + +2002-11-06 Isamu Hasegawa + + * posix/regcomp (free_dfa_content): Use free_state. + * posix/regex_internal.c (re_string_realloc_buffers): Don't edit + pointers in case that realloc failed. + (re_node_set_merge): Likewise. + (register_state): Likewise. + (create_newstate_common): Invoke memory release functions in case of + error conditions. + (create_ci_newstate): Likewise. + (create_cd_newstate): Likewise. + (free_state): New function. + * posix/regexec.c (re_search_internal): Invoke memory release + functions in case of error conditions. + (sift_states_backward): Likewise. + (merge_state_array): Likewise. + (add_epsilon_src_nodes): Likewise. + (sub_epsilon_src_nodes): Likewise. + (search_subexp): Likewise. + (sift_states_bkref): Likewise. + (transit_state_sb): Likewise. + (transit_state_mb): Likewise. + (transit_state_bkref_loop): Likewise. + (group_nodes_into_DFAstates): Likewise. + (push_fail_stack): Don't edit pointers in case that realloc failed. + (extend_buffers): Likewise. + (match_ctx_add_entry): Likewise. + +2002-11-06 Roland McGrath + + * sysdeps/unix/sysv/linux/mips/configure.in: File removed. + * sysdeps/unix/sysv/linux/mips/configure: Likewise. + + * configure.in: Add checks on as and ld for binutils 2.13 or later. + * configure: Regenerated. + +2002-11-06 Ulrich Drepper + + * posix/regcomp.c (regcomp): __re_compile_fastmap can never fail. + If re_compile_internal failed free fastmap buffer. + (free_dfa_content): Broken out of regfree function. Frees all dfa + related data. + (regfree): Add free_dfa_content. + (re_compile_internal): If any of the called functions fails free + all dfa related memory. + +2002-11-05 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/sysctl.h: Add ugly hacks to prevent + warnings from the kernel headers. + +2002-11-05 Roland McGrath + + * sysdeps/unix/mips/sysdep.h [! __PIC__] (PSEUDO): Add nop after jump. + From Johannes Stezenbach . + + * sysdeps/unix/sysv/linux/mips/Versions (libc: GLIBC_2.0): Change + #errlist-compat magic comment to give 123 as size. + (libc: GLIBC_2.1): Remove this set, moving #errlist-compat magic to ... + (libc: GLIBC_2.2): ... here. + (libc: GLIBC_2.3): Likewise. + +2002-11-05 Ulrich Drepper + + * elf/dl-fini.c (_dl_fini): Correct the increment of l_opencount + which happens at the beginning so that we can unload modules in + __libc_freeres. + +2002-11-06 Kaz Kojima + + * sysdeps/sh/bits/setjmp.h (JB_SIZE): Define only + under [__USE_MISC || _ASM]. + + * elf/elf.h: Remove the obsolete SH TLS relocations. + +2002-11-05 Ulrich Drepper + + * posix/regcomp.c (regcomp): Initialize preg->can_be_null to zero. + +2002-11-05 Franz Sirl + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Handle + __NR_pread64 and __NR_pwrite64. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pread.c: Remove __NR_pread64 + and __NR_pwrite64. + Revert change to use INLINE_SYSCALL. + * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Revert change to use + INLINE_SYSCALL. + * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Likewise. + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL): + Update clobber list and add a comment about the syscall ABI. + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_pread64, + s_pwrite64, s_ftruncate, s_truncate): Re-add. + +2002-11-05 Jakub Jelinek + + * iconv/gconv_dl.c (free_mem): Clear loaded. + * locale/loadarchive.c (_nl_archive_subfreeres): Call locale_data's + cleanup if any. + +2002-11-05 Ulrich Drepper + + * sysdeps/unix/sysv/linux/fexecve.c: Include . + + * libio/ioseekoff.c: Remove INTDEF. Define _IO_seekoff_unlocked. Same + as old code without locking. _IO_seekoff calls this function after + locking the stream. + * libio/ioseekpos.c: Likewise for _IO_seekpos. + * libio/libioP.h: Replace _IO_seekoff_internal and _IO_seekpos_internal + prototypes with _IO_seekoff_unlocked and _IO_seekpos_unlocked + prototypes. + * libio/iolibio.h (_IO_fseek): Call _IO_seekoff_unlocked instead + of _IO_seekoff_internal. + (_IO_rewind): Likewise. + * libio/ioftell.c: Likewise. + * libio/ftello.c: Likewise. + * libio/ftello64.c: Likewise. + * libio/iofgetpos.c: Likewise. + * libio/iofgetpos64.c: Likewise. + * libio/oldiofgetpos.c: Likewise. + * libio/oldiofgetpos64.c: Likewise. + * libio/iofsetpos.c: Call _IO_seekpos_unlocked instead of + _IO_seekpos_internal. + * libio/iofsetpos64.c: Likewise. + * libio/oldiofsetpos.c: Likewise. + * libio/oldiofsetpos64.c: Likewise. + +2002-11-04 Roland McGrath + + * sysdeps/unix/sysv/linux/powerpc/chown.c: Use INLINE_SYSCALL macro. + * sysdeps/unix/sysv/linux/powerpc/ftruncate64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pread.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/tcgetattr.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/tcsetattr.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_ioctl, + s_chown, s_ftruncate64, s_mmap2, s_pread64, s_pwrite64, s_truncate64, + sys_fstat, sys_lstat, sys_mknod, sys_readv, sys_stat, sys_writev): + Remove these, no longer used. + +2002-11-04 Franz Sirl + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (s_ipc, + s_llseek, s_readahead, s_execve, s_fcntl, s_fcntl64, s_fstat64, + s_getcwd, s_getdents, s_getdents64, s_getpmsg, s_getpriority, + s_getrlimit, s_lstat64, s_poll, s_ptrace, s_putpmsg, s_reboot, + s_setrlimit, s_sigaction, s_sigpending, s_sigprocmask, s_sigsuspend, + s_stat64, s_sysctl, s_ugetrlimit, s_ustat, s_vfork): Remove now unused + syscall stubs. + + * sysdeps/unix/sysv/linux/pwrite.c: Fix typo. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pread.c: Handle both __NR_pread64 + and __NR_pread. + * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pwrite.c: Handle both __NR_pwrite64 + and __NR_pwrite. + * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. + +2002-11-03 Roland McGrath + + * sysdeps/generic/ldsodefs.h (struct rtld_global): New member + `_dl_tls_static_used'. + * sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable. + (__libc_setup_tls): Initialize it. Let the initial value of + _dl_tls_static_size indicate some surplus space in the computed value. + * elf/dl-open.c (_dl_tls_static_size): New variable. + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Initialize + _dl_tls_static_used. Add some surplus space into _dl_tls_static_size. + * elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function. + (CHECK_STATIC_TLS): Use it. + * elf/dl-close.c (_dl_close): Adjust _dl_tls_static_used when the + closed objects occupied a trailing contiguous chunk of static TLS area. + +2002-10-18 Bruno Haible + + * charmaps/ISO_5428: Use Greek characters introduced in Unicode 3.0. + +2002-11-04 Ulrich Drepper + + * libio/wfileops.c (_IO_wfile_seekoff): Don't modify _offset and + _wide_data->_IO_read_end if adjustment can be made in the current + buffer. + + * sysdeps/unix/sysv/linux/fexecve.c: New file. + + * libio/bug-wfflush.c (do_test): Using fseek is not allowed when + wide oriented streams are used. + + * nss/getXXent_r.c (ENDFUNC_NAME): Don't do anything if the + service hasn't been used [PR libc/4744]. + + * include/features.h: Use __STDC_VERSION__ not __STDC_VERSION. + Reported by Miloslav Trmac [PR libc/4766]. + + * manual/examples/dir.c: Don't include . + * manual/examples/select.c: Include for TEMP_FAILURE_RETRY. + Reported by Frédéric Delanoy . + +2002-11-02 H.J. Lu + + * stdio-common/reg-printf.c: Include . + +2002-11-03 Ulrich Drepper + + * sysdeps/generic/libc-tls.c: Define _dl_tls_static_used. + + * po/ca.po: Update from translation team. + * po/es.po: Likewise. + + * sysdeps/generic/segfault.c (catch_segfault): If HAVE_PROC_SELF + is defined write out memory map. + * sysdeps/unix/sysv/linux/segfault.c: New file. + +2002-11-02 Roland McGrath + + * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): Use union type for + pointers that can alias. + Reported by Daniel Jacobowitz . + + * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h: New file. + +2002-11-02 Roland McGrath + + * manual/filesys.texi (Reading/Closing Directory): Rewrite readdir_r + description to be clearer and to say that *RESULT is set to ENTRY. + +2002-10-30 Jakub Jelinek + + * posix/regexec.c (build_trtable): Alloca or malloc dests_node and + dests_ch arrays together. Alloca or malloc dest_states, + dest_states_word and dest_states_nl arrays together. Free memory on + error exit. + +2002-10-29 Daniel Jacobowitz + + * crypt/crypt_util.c (__init_des_r): Initialize current_salt + and current_saltbits. + +2002-11-02 Roland McGrath + + * stdio-common/reg-printf.c: Include . + +2002-11-02 H.J. Lu + + * sysdeps/unix/sysv/linux/mips/syscalls.list (s_execve): Set + caller to EXTRA instead of execve. + +2002-11-01 Roland McGrath + + * sysdeps/generic/errno-loc.c [! USE___THREAD]: Use this conditional + in place of [!(USE_TLS && HAVE___THREAD)]. + (__errno_location) [! USE___THREAD]: Define as strong, not weak. + +2002-10-31 Roger Sayle + + * sysdeps/i386/soft-fp/sfp-machine.h (_FP_NANFRAC_Q, _FP_NANSIGN_Q): + New macros. + * sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise. + + * soft-fp/soft-fp.h: Allow sfp-machine.h to define FP_RND_NEAREST + without defining FP_ROUNDMODE. + +2002-10-29 Jakub Jelinek + + * sysdeps/gnu/siglist.c (PTR_SIZE_STR): Remove. + (__old_sys_siglist, __old_sys_sigabbrev): Use strong_alias and + declare_symbol. + * sysdeps/mach/hurd/siglist.h (OLD_SIGLIST_SIZE_STR): Remove. + (OLD_SIGLIST_SIZE): Define. + * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): Remove. + (OLD_SIGLIST_SIZE): Define. + * sysdeps/unix/sysv/linux/arm/siglist.c: Remove. + +2002-11-01 Jakub Jelinek + + * sysdeps/ia64/strncpy.S: Fix recovery code. + +2002-10-30 Jakub Jelinek + + * include/libc-symbols.h (__libc_freeres_fn_section, libc_freeres_fn): + New macros. + * elf/dl-close.c (free_mem): Use libc_freeres_fn macro, remove + text_set_element. + * elf/dl-libc.c (free_mem): Likewise. + * iconv/gconv_conf.c (free_mem): Likewise. + * iconv/gconv_db.c (free_mem): Likewise. + * iconv/gconv_dl.c (free_mem): Likewise. + * iconv/gconv_cache.c (free_mem): Likewise. + * intl/finddomain.c (free_mem): Likewise. + * intl/dcigettext.c (free_mem): Likewise. + * locale/setlocale.c (free_mem): Likewise. + * misc/fstab.c (fstab_free): Likewise. + * nss/nsswitch.c (free_mem): Likewise. + * posix/regcomp.c (free_mem): Likewise. + * resolv/gai_misc.c (free_res): Likewise. + * stdlib/fmtmsg.c (free_mem): Likewise. + * sunrpc/clnt_perr.c (free_mem): Likewise. + * sysdeps/generic/setenv.c (free_mem): Likewise. + * sysdeps/unix/sysv/linux/shm_open.c (freeit): Likewise. + * sysdeps/pthread/aio_misc.c (free_res): Likewise. + * time/tzset.c (free_mem): Likewise. + * malloc/mtrace.c (release_libc_mem): Add __libc_freeres_fn_section. + * locale/loadarchive.c (_nl_archive_subfreeres): Likewise. + * malloc/set-freeres.c (__libc_freeres): Likewise. + + * login/getutent.c: Include stdlib.h instead of stddef.h. + (buffer): Change into pointer to utmp, add libc_freeres_ptr. + (__getutent): Allocate buffer the first time it is run. + * login/getutid.c: Include stdlib.h instead of stddef.h. + (buffer): Change into pointer to utmp, add libc_freeres_ptr. + (__getutid): Allocate buffer the first time it is run. + * login/getutline.c: Include stdlib.h instead of stddef.h. + (buffer): Change into pointer to utmp, add libc_freeres_ptr. + (__getutline): Allocate buffer the first time it is run. + * malloc/mtrace.c (malloc_trace_buffer): Change into char *. + (mtrace): Allocate malloc_trace_buffer. + * resolv/nsap_addr.c (inet_nsap_ntoa): Decrease size of tmpbuf. + * resolv/ns_print.c (ns_sprintrrf): Decrease size of t. + * string/strerror.c: Include libintl.h and errno.h. + (buf): New variable. + (strerror): Only allocate buffer if actually needed (unknown error). + * time/tzfile.c (transitions): Add libc_freeres_ptr. + (freeres): Remove. + +2002-10-25 Jakub Jelinek + + * include/libc-symbols.h (libc_freeres_ptr): New macro. + * malloc/set-freeres.c (__libc_freeres_ptrs): Define using + symbol_set_define. + (__libc_freeres): Free all pointers in that section. + * Makerules (build-shlib): Add $(LDSEDCMD-$(@F:lib%.so=%).so) to sed + commands when creating .lds script. + (LDSEDCMD-c.so): New variable. + * inet/rcmd.c (ahostbuf): Change into char *. Add libc_freeres_ptr. + (rcmd_af): Use strdup to allocate ahostbuf. + * inet/rexec.c (ahostbuf): Change into char *. Add libc_freeres_ptr. + (rexec_af): Use strdup to allocate ahostbuf. + * stdio-common/reg-printf.c (printf_funcs): Remove. + (__printf_arginfo_table): Change into printf_arginfo_function **. + Add libc_freeres_ptr. + (__register_printf_function): Allocate __printf_arginfo_table + and __printf_function_table the first time it is called. + * stdio-common/printf-parse.h (__printf_arginfo_table): Change into + printf_arginfo_function **. + (parse_one_spec): Add __builtin_expect. + * grp/fgetgrent.c (buffer): Add libc_freeres_ptr. + (free_mem): Remove. + * inet/getnetgrent.c (buffer): Add libc_freeres_ptr. + (free_mem): Remove. + * intl/localealias.c (libc_freeres_ptr): Define if !_LIBC. + (string_space, map): Add libc_freeres_ptr. + (free_mem): Remove. + * misc/efgcvt.c (FCVT_BUFPTR): Add libc_freeres_ptr. + (free_mem): Remove. + * misc/mntent.c (getmntent_buffer): Add libc_freeres_ptr. + (free_mem): Remove. + * crypt/md5-crypt.c (libc_freeres_ptr): Define if !_LIBC. + (buffer): Add libc_freeres_ptr. + (free_mem): Remove for _LIBC. + * nss/getXXbyYY.c (buffer): Add libc_freeres_ptr. + (free_mem): Remove. + * nss/getXXent.c (buffer): Add libc_freeres_ptr. + (free_mem): Remove. + * pwd/fgetpwent.c (buffer): Add libc_freeres_ptr. + (free_mem): Remove. + * resolv/res_hconf.c (ifaddrs): Add libc_freeres_ptr. + (free_mem): Remove. + * shadow/fgetspent.c (buffer): Add libc_freeres_ptr. + (free_mem): Remove. + * sysdeps/posix/ttyname.c (getttyname_name): Add libc_freeres_ptr. + (free_mem): Remove. + * sysdeps/unix/sysv/linux/getsysstats.c (mount_proc): Add + libc_freeres_ptr. + (free_mem): Remove. + * sysdeps/unix/sysv/linux/ttyname.c (getttyname_name, ttyname_buf): Add + libc_freeres_ptr. + (free_mem): Remove. + +2002-10-30 Jakub Jelinek + + * malloc/obstack.c [_LIBC] (obstack_free): Change into strong_alias + instead of duplicating the whole function in libc. + +2002-10-31 Roland McGrath + + * sysdeps/i386/bits/byteswap.h [__GNUC__ < 2] (__bswap_32): + Renamed from __bswap_16 (typo fix). Reported by . + +2002-10-30 Jakub Jelinek + + * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Add -D for each + 32bit-predefine when creating .new32 list and -U for each + 32bit-predefine when creating .new64 list. + * sysdeps/unix/sysv/linux/x86_64/Makefile (32bit-predefine): New. + +2002-10-29 Andreas Schwab + + * sysdeps/generic/allocrtsig.c: Include , not + "testrtsig.h". Reported by Daniel Jacobowitz . + +2002-10-25 Roland McGrath + + * sysdeps/unix/sysv/linux/configure.in: Fix typo in last change. + * sysdeps/unix/sysv/linux/configure: Regenerated. + + * sysdeps/generic/ldsodefs.h: Remove [! SHARED] conditional from + _dl_starting_up decl. + +2002-10-20 H.J. Lu + + * sysdeps/unix/sysv/linux/configure.in: Don't check + /lib/modules/`uname -r`/build/include for kernel headers if + cross compiling. + * sysdeps/unix/sysv/linux/configure: Regenerated. + +2002-10-25 Roland McGrath + + * math/math.h (M_LOG2El): Correct the value. + From Stephen L Moshier . + + * sysdeps/unix/sysv/linux/init-first.c (init): Remove [! SHARED] + conditional from __libc_multiple_libcs access. Remove kludge for weak + symbol access with old compilers we no longer support. + * sysdeps/unix/sysv/aix/init-first.c (init): Likewise. + * sysdeps/generic/libc-start.c (__libc_start_main): Likewise. + +2002-10-25 Roland McGrath + + * sysdeps/posix/sigvec.c [SA_RESETHAND]: Disable wrapper hacks and + implement SV_RESETHAND by translating it to SA_RESETHAND. + +2002-10-23 Alexandre Oliva + + * elf/dl-reloc.c (_dl_reloc_bad_use): Print the full 32-bit relocation + type on ELF64 platforms. + +2002-10-24 Ulrich Drepper + + * elf/elf.h (R_X86_64_GOTTPOFF): Renamed from r_x86_64_GOTTPOFF. + + * elf/elf.h: Define ELF_NOTE_OS_FREEBSD and NT_TASKSTRUCT. + +2002-10-24 Jakub Jelinek + + * elf/dl-misc.c: Include . + (_dl_debug_vdprintf): Only take dl_load_lock if not _dl_starting_up. + + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (INTERNAL_SYSCALL, + INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. + (INLINE_SYSCALL): Use that. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (INTERNAL_SYSCALL, + INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. + (INLINE_SYSCALL): Use that. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (INTERNAL_SYSCALL, + INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New macros. + (INLINE_SYSCALL): Use that. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Include + dl-sysdep.h. + (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. + (__INTERNAL_SYSCALL_STRING): Define. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Include + dl-sysdep.h. + (SYSCALL_ERROR_HANDLER): Define RTLD_PRIVATE_ERRNO variant. + (__INTERNAL_SYSCALL_STRING): Define. + * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_SYSCALL): Pass + __SYSCALL_STRING to inline_syscall*. + (INTERNAL_SYSCALL, INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): + New macros. + (inline_syscall0, inline_syscall1, inline_syscall2, inline_syscall3, + inline_syscall4, inline_syscall5, inline_syscall6): Add string + argument. + +2002-10-24 Roland McGrath + + * sysdeps/generic/ldsodefs.h (_dl_starting_up): Declare it here. + * sysdeps/unix/sysv/linux/init-first.c: Not here. + * sysdeps/powerpc/elf/libc-start.c: Or here. + * sysdeps/unix/sysv/aix/libc-start.c: Or here. + * sysdeps/unix/sysv/aix/start-libc.c: Or here. + * sysdeps/unix/sysv/aix/init-first.c: Or here. + * sysdeps/generic/libc-start.c: Or here. + * sysdeps/unix/sysv/linux/init-first.c (init): Protect _dl_starting_up + access with [! SHARED]. + * sysdeps/unix/sysv/aix/init-first.c (init): Likewise. + + * libio/bug-wfflush.c: New file. + * libio/Makefile (tests): Add bug-wfflush. + +2002-10-23 Roland McGrath + + * stdio-common/tst-fphex.c: New file. + * stdio-common/Makefile (tests): Add tst-fphex. + * sysdeps/generic/printf_fphex.c (__printf_fphex): Fix initialization + of WNUMEND. Fix counting of decimal point in WIDTH. Print '0' pad + chars always before the value digits. + Reported by James Antill . + +2002-10-24 Jakub Jelinek + + * posix/regcomp.c (re_comp): Call __regfree on re_comp_buf. + (free_mem): New function. + * posix/Makefile (tests): Add bug-regex14. Add bug-regex14-mem + if not cross compiling. + (generated): Add bug-regex14-mem and bug-regex14.mtrace. + (bug-regex14-ENV): Set. + (bug-regex14-mem): New target. + * posix/bug-regex14.c: New file. + +2002-10-23 Roland McGrath + + * elf/Makefile ($(objpfx)librtld.map): Use temporary file for output + target, so we don't touch it when the link fails. + + * libio/ftello.c (ftello): Use _IO_off64_t for type of POS. + Check for the result overflowing off_t and fail with EOVERFLOW. + * libio/ioftell.c (_IO_ftell): Likewise. + * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. + + * login/logwtmp.c (logwtmp): If sizeof ut_tv != sizeof struct timeval, + use a temporary timeval on the stack for gettimeofday and copy it. + * login/logout.c (logout): Likewise. + Reported by Steven Munroe . + + * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): + Use __SWORD_TYPE instead of int for member types. + (struct statfs64): Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: New file. + * sysdeps/unix/sysv/linux/s390/bits/statfs.h: New file. + * sysdeps/unix/sysv/linux/ia64/bits/statfs.h: File removed. + * sysdeps/unix/sysv/linux/sparc/bits/statfs.h: File removed. + * sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: File removed. + + * sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: Moved to ... + * sysdeps/unix/sysv/linux/bits/statvfs.h: ... here. + (ST_NODIRATIME): Restore fixed value of 2048. + * sysdeps/unix/sysv/linux/alpha/bits/statvfs.h: File removed. + * sysdeps/unix/sysv/linux/ia64/bits/statvfs.h: File removed. + + Rearranged definitions to reduce duplication. + * sysdeps/generic/bits/types.h: Rewritten, using macros from + and new header . + * posix/Makefile (headers): Add bits/typesizes.h here. + * sysdeps/generic/bits/typesizes.h: New file. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file. + * sysdeps/mach/hurd/bits/typesizes.h: New file. + * sysdeps/unix/sysv/linux/alpha/bits/types.h: File removed. + * sysdeps/unix/sysv/linux/bits/types.h: File removed. + * sysdeps/unix/sysv/linux/ia64/bits/types.h: File removed. + * sysdeps/unix/sysv/linux/mips/bits/types.h: File removed. + * sysdeps/unix/sysv/linux/s390/bits/types.h: File removed. + * sysdeps/unix/sysv/linux/sparc/bits/types.h: File removed. + * sysdeps/unix/sysv/linux/x86_64/bits/types.h: File removed. + * posix/sys/types.h [__USE_POSIX199506 || __USE_UNIX98]: Include + here, not in . + * signal/signal.h: Likewise. + + * streams/stropts.h: Include . + * streams/Makefile (headers): Add bits/xtitypes.h here. + * sysdeps/generic/bits/xtitypes.h: New file. + * sysdeps/s390/bits/xtitypes.h: New file. + * sysdeps/ia64/bits/xtitypes.h: New file. + * sysdeps/x86_64/bits/xtitypes.h: New file. + + * sysvipc/Makefile (headers): Add bits/ipctypes.h here. + * sysdeps/generic/bits/ipctypes.h: New file. + * sysdeps/mips/bits/ipctypes.h: New file. + * sysdeps/gnu/bits/shm.h: Include . + * sysdeps/gnu/bits/msq.h: Likewise. + * sysvipc/sys/ipc.h: Likewise. + +2002-10-22 Ulrich Drepper + + * elf/dl-load.c (struct filebuf): For buf element to have the + alignment of ElfXX_Ehdr since this is what will be stored in it. + +2002-10-22 Jakub Jelinek + + * locale/programs/locarchive.c (add_alias): Change locrec_offset arg + into pointer to locrec_offset. + (add_locale_to_archive): Adjust callers. Free normalized_name right + before returning, not immediately after add_locale, pass it to + add_alias if not NULL instead of name. Rename second normalized_name + occurence to nnormalized_codeset_name. + + * locale/programs/locarchive.c (enlarge_archive): Make sure + string_size is always a multiple of 4. + Reported by Andreas Schwab . + +2002-10-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/syscalls.list (s_execve): Set + caller to EXTRA instead of execve, since the latter has a + higher-priority implementation in linuxthreads. + +2002-10-21 Roland McGrath + + * sysdeps/generic/libc-tls.c (__libc_setup_tls): Initialize the static + slotinfo list's len member to the proper size, not just 1. + Initialize static_map.l_tls_initimage. + + * elf/dl-open.c (dl_open_worker): Fix loop searching for + dtv_slotinfo_list element containing new modules' l_tls_modid. + + * elf/tst-tls9.c, elf/tst-tls9-static.c: New files. + * elf/tst-tlsmod5.c, elf/tst-tlsmod6.c: New files. + * elf/Makefile (tests): Add tst-tls9. + (tests-static): Add tst-tls9-static. + (tst-tls9-static-ENV): New variable. + ($(objpfx)tst-tls9-static, $(objpfx)tst-tls9-static.out): New targets. + + * elf/dl-close.c (remove_slotinfo): Remove an assert; the number of + modids used by partially loaded modules being closed can't be known. + +2002-10-21 Isamu Hasegawa + + * posix/Makefile: Add a test case for the bug reported by Aharon + Robbins . + * posix/bug-regex13.c: New file. + * posix/regcomp.c (peek_token_bracket): Skip the byte already read. + +2002-10-21 Ulrich Drepper + + * csu/gmon-start.c: Pretty printing. + +2002-10-19 Art Haas + + * configure.in: Replace AC_CONFIG_HEADER with AC_CONFIG_HEADERS, + add AC_HELP_STRING to all AC_ARG_WITH and AC_ARG_ENABLE macros, + add autoconf quotes to the AC_CONFIG_AUX_DIR macro. + * configure: Regenerated. + +2002-10-19 Roland McGrath + + * configure.in: Call AC_CONFIG_SUBDIRS with empty argument + and then set $subdirs directly, because the new Autoconf breaks + compatibility in every way imaginable and insists on whining + about usage that worked since the dawn of time. + * configure: Regenerated. + + * configure: Regenerated (using Autoconf 2.54). + * sysdeps/alpha/elf/configure: Likewise. + * sysdeps/generic/configure: Likewise. + * sysdeps/i386/elf/configure: Likewise. + * sysdeps/ia64/elf/configure: Likewise. + * sysdeps/mach/hurd/configure: Likewise. + * sysdeps/mach/configure: Likewise. + * sysdeps/unix/configure: Likewise. + * sysdeps/unix/common/configure: Likewise. + * sysdeps/unix/sysv/aix/configure: Likewise. + * sysdeps/unix/sysv/linux/configure: Likewise. + * sysdeps/unix/sysv/linux/mips/configure: Likewise. + * sysdeps/x86_64/elf/configure: Likewise. + + * config.make.in: Nix completely-soft nonsense. + * configure.in: Likewise. Under --without-fp, use nofpu subdirectory + of machine directories instead of fpu subdirectory. + * sysdeps/powerpc/soft-fp/Makefile: Remove cruft added in last change. + * sysdeps/powerpc/nofpu/Makefile: Put it in this new file instead. + * sysdeps/powerpc/soft-fp/sim-full.c: Moved to ... + * sysdeps/powerpc/nofpu/sim-full.c: ... here. + * sysdeps/powerpc/soft-fp/fraiseexcpt.c: Moved to ... + * sysdeps/powerpc/nofpu/fraiseexcpt.c: ... here. + * sysdeps/powerpc/soft-fp/fegetexcept.c: Moved to ... + * sysdeps/powerpc/nofpu/fegetexcept.c: ... here. + * sysdeps/powerpc/soft-fp/fclrexcpt.c: Moved to ... + * sysdeps/powerpc/nofpu/fclrexcpt.c: ... here. + * sysdeps/powerpc/soft-fp/ftestexcept.c: Moved to ... + * sysdeps/powerpc/nofpu/ftestexcept.c: ... here. + * sysdeps/powerpc/soft-fp/fgetexcptflg.c: Moved to ... + * sysdeps/powerpc/nofpu/fgetexcptflg.c: ... here. + * sysdeps/powerpc/soft-fp/fsetexcptflg.c: Moved to ... + * sysdeps/powerpc/nofpu/fsetexcptflg.c: ... here. + * sysdeps/powerpc/soft-fp/fedisblxcpt.c: Moved to ... + * sysdeps/powerpc/nofpu/fedisblxcpt.c: ... here. + * sysdeps/powerpc/soft-fp/feenablxcpt.c: Moved to ... + * sysdeps/powerpc/nofpu/feenablxcpt.c: ... here. + * sysdeps/powerpc/soft-fp/fegetenv.c: Moved to ... + * sysdeps/powerpc/nofpu/fegetenv.c: ... here. + * sysdeps/powerpc/soft-fp/fesetenv.c: Moved to ... + * sysdeps/powerpc/nofpu/fesetenv.c: ... here. + * sysdeps/powerpc/soft-fp/fegetround.c: Moved to ... + * sysdeps/powerpc/nofpu/fegetround.c: ... here. + * sysdeps/powerpc/soft-fp/fesetround.c: Moved to ... + * sysdeps/powerpc/nofpu/fesetround.c: ... here. + * sysdeps/powerpc/soft-fp/feupdateenv.c: Moved to ... + * sysdeps/powerpc/nofpu/feupdateenv.c: ... here. + * sysdeps/powerpc/soft-fp/feholdexcpt.c: Moved to ... + * sysdeps/powerpc/nofpu/feholdexcpt.c: ... here. + * sysdeps/powerpc/soft-fp/fenv_const.c: Moved to ... + * sysdeps/powerpc/nofpu/fenv_const.c: ... here. + * sysdeps/powerpc/soft-fp/libm-test-ulps: Moved to ... + * sysdeps/powerpc/nofpu/libm-test-ulps: ... here. + * sysdeps/powerpc/soft-fp/soft-supp.h: Moved to ... + * sysdeps/powerpc/nofpu/soft-supp.h: ... here. + * sysdeps/powerpc/soft-fp/Versions (libc: GLIBC_2.3.2): Moved to ... + * sysdeps/powerpc/nofpu/Versions: ... here, new file. + +2002-10-19 Bruno Haible + + * sysdeps/unix/bsd/bsd4.4/freebsd/sys/sysmacros.h: New file. + +2002-10-18 Roland McGrath + + * io/Makefile (routines): Add lchmod. + * io/sys/stat.h [__USE_BSD] (lchmod): Declare it. + * sysdeps/generic/lchmod.c: New file. + * sysdeps/mach/hurd/lchmod.c: New file. + * io/Versions (libc: GLIBC_2.3.2): New set, add lchmod. + +2002-10-18 Art Haas + + * configure.in: Remove remaining AC_FD_CC macros, and replace + AC_FD_MSG with AS_MESSAGE_FD. + +2002-10-18 Roland McGrath + + * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): Fix + typos: VALUE -> FINALADDR. + + * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL, INLINE_SYSCALL1) + (inline_syscall_clobbers, inline_syscall0, inline_syscall1) + (inline_syscall2, inline_syscall3, inline_syscall4, inline_syscall5) + (inline_syscall6): Move these macros ... + * sysdeps/unix/sysv/linux/alpha/sysdep.h: ... to here. + + * configure.in (libc_link_dests, libc_link_sources): Remove these + variables and the AC_LINK_FILES call. + + * sysdeps/powerpc/soft-fp/Versions (libc: GLIBC_2.3.2): Fix last + change to put new symbols here instead of in GLIBC_2.2. + * sysdeps/powerpc/Subdirs: Move this file ... + * sysdeps/powerpc/soft-fp/Subdirs: ... here. + +2002-10-07 Roland McGrath + + * sysdeps/generic/bits/time.h: Replaced with contents of the + sysdeps/unix/sysv/linux/i386/bits/time.h file. All the following + files were identical except for the absence of CLOCK_THREAD_CPUTIME_ID + and CLOCK_PROCESS_CPUTIME_ID in .../linux/bits/time.h; adding these + macros is ok even for architectures that don't now implement them. + * sysdeps/mach/hurd/bits/time.h: File removed. + * sysdeps/unix/sysv/linux/bits/time.h: File removed. + * sysdeps/unix/sysv/linux/i386/bits/time.h: File removed. + * sysdeps/unix/sysv/linux/ia64/bits/time.h: File removed. + * sysdeps/unix/sysv/linux/sparc/bits/time.h: File removed. + * sysdeps/unix/sysv/linux/x86_64/bits/time.h: File removed. + +2002-10-18 Jeff Bailey + + * configure.in: Replace obsolete AC_OUTPUT syntax with + AC_CONFIG_FILES, AC_CONFIG_COMMANDS, and new-type AC_OUTPUT trio. + + * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDEs for + _AS_PATH_SEPARATOR_PREPARE and _AS_TEST_PREPARE. + + * configure.in: Replace AC_FD_CC with AS_MESSAGE_LOG_FD. + * sysdeps/alpha/elf/configure.in: Likewise. + * sysdeps/i386/elf/configure.in: Likewise. + * sysdeps/mach/hurd/configure.in: Likewise. + * sysdeps/x86_64/elf/configure.in: Likewise. + + * configure.in: Use AC_CONFIG_SRCDIR and new AC_INIT syntax. + + * sysdeps/alpha/elf/configure.in: Remove unneeded sinclude statement. + * sysdeps/generic/configure.in: Likewise. + * sysdeps/i386/elf/configure.in: Likewise. + * sysdeps/ia64/elf/configure.in: Likewise. + * sysdeps/mach/configure.in: Likewise. + * sysdeps/mach/hurd/configure.in: Likewise. + * sysdeps/unix/configure.in: Likewise. + * sysdeps/unix/common/configure.in: Likewise. + * sysdeps/unix/sysv/aix/configure.in: Likewise. + * sysdeps/unix/sysv/linux/configure.in: Likewise. + * sysdeps/unix/sysv/linux/mips/configure.in: Likewise. + * sysdeps/x86_64/elf/configure.in: Likewise. + + * aclocal.m4: Use just the bits from AS_INIT that are needed for the + GLIBC_PROVIDES. Use plain comment instead of HEADER-COMMENT so + that it's obvious when extra autoconf machinery is being dragged in. + +2002-10-18 Roland McGrath + + * configure.in: Remove bogus echo included in + 2002-10-08 Aldy Hernandez change. + * configure: Regenerated. + +2002-10-18 Jakub Jelinek + + * sysdeps/unix/sysv/linux/pathconf.h (statfs_link_max): Add inline. + (statfs_filesize_max): New function. + * sysdeps/unix/sysv/linux/linux_fsinfo.h (JFFS_SUPER_MAGIC, + JFFS2_SUPER_MAGIC, JFS_SUPER_MAGIC, NTFS_SUPER_MAGIC, + ROMFS_SUPER_MAGIC, UDF_SUPER_MAGIC): Define. + * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Use + statfs_filesize_max. + * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Likewise. + * sysdeps/unix/sysv/linux/alpha/fpathconf.c: Removed. + * sysdeps/unix/sysv/linux/alpha/pathconf.c: Removed. + +2002-10-17 Roland McGrath + + * configure.in (MIG): Just AC_SUBST it here. + * configure: Regenerated. + * sysdeps/mach/configure.in (MIG): Do the AC_CHECK_TOOL here. + Adding final - argument to all AC_CHECK_HEADER uses for .defs files. + * sysdeps/mach/configure: Regenerated. + + * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDE([_AS_TR_SH_PREPARE]) + and AC_PROVIDE([_AS_CR_PREPARE]). + + * aclocal.m4 (GLIBC_PROVIDES): Add AC_PROVIDE([_AS_ECHO_N_PREPARE]). + Remove AC_LANG(C) call, instead just define([_AC_LANG], [C]). + + * elf/dl-support.c: Move _dl_tls_* variables to ... + * sysdeps/generic/libc-tls.c: ... here. + + * elf/dl-close.c (remove_slotinfo): Take new argument. If false, + allow IDX to be one past the current last slotinfo entry. + (_dl_close): Pass IMAP->l_init_called for that parameter. + +2002-10-07 Andreas Schwab + + * aclocal.m4: Fix for autoconf 2.53. + * configure.in: Likewise. Require autoconf 2.53. + +2002-10-08 Richard Henderson + + * soft-fp/op-4.h: Handle carry correctly in + __FP_FRAC_ADD_3, __FP_FRAC_ADD_4, __FP_FRAC_SUB_3, + __FP_FRAC_SUB_4, __FP_FRAC_DEC_3, __FP_FRAC_DEC_4. + * soft-fp/op-common.h: New macros _FP_DIV_MEAT_N_loop. + +2002-10-08 Aldy Hernandez + + * configure.in: Compute completely-soft. + * config.make.in: Make completely-soft available to sub-makes. + * sysdeps/powerpc/soft-fp/Makefile: Add gcc-single-routines and + gcc-double-routines. Add sim-full.c. Add fenv_const and + fe_nomask to libm-support. + * sysdeps/powerpc/soft-fp/sim-full.c: New file. + * sysdeps/powerpc/soft-fp/fraiseexcpt.c: New file. + * sysdeps/powerpc/soft-fp/fegetexcept.c: New file. + * sysdeps/powerpc/soft-fp/fclrexcpt.c: New file. + * sysdeps/powerpc/soft-fp/ftestexcept.c: New file. + * sysdeps/powerpc/soft-fp/fgetexcptflg.c: New file. + * sysdeps/powerpc/soft-fp/fsetexcptflg.c: New file. + * sysdeps/powerpc/soft-fp/fedisblxcpt.c: New file. + * sysdeps/powerpc/soft-fp/feenablxcpt.c: New file. + * sysdeps/powerpc/soft-fp/fegetenv.c: New file. + * sysdeps/powerpc/soft-fp/fesetenv.c: New file. + * sysdeps/powerpc/soft-fp/fegetround.c: New file. + * sysdeps/powerpc/soft-fp/fesetround.c: New file. + * sysdeps/powerpc/soft-fp/feupdateenv.c: New file. + * sysdeps/powerpc/soft-fp/feholdexcpt.c: New file. + * sysdeps/powerpc/soft-fp/fenv_const.c: New file. + * sysdeps/powerpc/soft-fp/libm-test-ulps: New file. + * sysdeps/powerpc/soft-fp/soft-supp.h: New file. + * sysdeps/powerpc/soft-fp/Versions: Add libgcc soft-float + symbols. Add __sim_disabled_exceptions, __sim_exceptions, + __sim_round_mode. + * sysdeps/powerpc/soft-float/Dist: Add sim-full.c, fenv_const.c. + * sysdeps/powerpc/soft-float/sfp-machine.h: Define + FP_HANDLE_EXCEPTIONS. + Define FP_ROUNDMODE. + Redefine FP_* macros to correspond to the FE_* bit positions. + Define FP_DIV_MEAT_S to _FP_DIV_MEAT_1_loop. + Define externs for __sim_exceptions, __sim_disabled_exceptions, + __sim_round_mode, __simulate_exceptions. + * sysdeps/powerpc/fpu/bits/fenv.h: Move file from here... + * sysdeps/powerpc/bits/fenv.h: ...to here. + +2002-10-06 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): + Store R_PPC_UADDR32 and R_PPC_UADDR16 one byte at a time. + Use __builtin_expect for R_PPC_ADDR24 overflow check. Fix + R_PPC_ADDR16, R_PPC_UADDR16 and R_PPC_ADDR14* overflow check, use + __builtin_expect. + +2002-10-15 Jakub Jelinek + + * include/resolv.h (__libc_res_nquery, __libc_res_nsearch, + __libc_res_nsend): New prototypes. + * resolv/res_query.c (QUERYSIZE): Define. + (__libc_res_nquery): Renamed from res_nquery. Added answerp + argument. Allocate only QUERYSIZE bytes first, if res_nmkquery + fails use MAXPACKET buffer. Call __libc_res_nsend instead of + res_nsend, pass answerp. + (res_nquery): Changed into wrapper around __libc_res_nquery. + (__libc_res_nsearch): Renamed from res_nsearch. Added answerp + argument. Call __libc_res_nquerydomain and __libc_res_nquery + instead of the non-__libc_ variants, pass them answerp. + (res_nsearch): Changed into wrapper around __libc_res_nsearch. + (__libc_res_nquerydomain): Renamed from res_nquerydomain. + Added answerp argument. Call __libc_res_nquery instead of + res_nquery, pass answerp. + (res_nquerydomain): Changed into wrapper around + __libc_res_nquerydomain. + * resolv/res_send.c: Include sys/ioctl.h. + (MAXPACKET): Define. + (send_vc): Change arguments. Reallocate answer buffer if it is + too small. + (send_dg): Likewise. + (__libc_res_nsend): Renamed from res_nsend. Added ansp argument. + Reallocate answer buffer if it is too small and hooks are in use. + Adjust calls to send_vc and send_dg. + (res_nsend): Changed into wrapper around __libc_res_nsend. + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): Allocate + just 1K answer buffer on the stack, use __libc_res_nsearch instead + of res_nsearch. + (_nss_dns_gethostbyaddr_r): Similarly with __libc_res_nquery. + * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyaddr_r): Likewise. + (_nss_dns_getnetbyname_r): Similarly with __libc_res_nsearch. + * resolv/gethnamaddr.c (gethostbyname2): Likewise. + (gethostbyaddr): Similarly with __libc_res_nquery. + * resolv/Versions (libresolv): Export __libc_res_nquery and + __libc_res_nsearch at GLIBC_PRIVATE. + +2002-10-17 Roland McGrath + + * configure.in: Grok --without-__thread and disable HAVE___THREAD. + * configure: Regenerated. + + * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Do CHECK_STATIC_TLS + before performing the reloc, not after. + * sysdeps/i386/dl-machine.h (elf_machine_rel): Likewise. + +2002-10-17 Ulrich Drepper + + * locale/programs/locale.c (write_locales): Use 'm' flag in fopen call. + * locale/programs/linereader.c (lr_open): Likewise. + * locale/programs/charmap-dir.c (charmap_open): Likewise. + * locale/programs/locarchive.c (add_locale_to_archive): Likewise. + +2002-10-17 Isamu Hasegawa + + * posix/bug-regex11.c: Add a test case for the bug reported by + Paolo Bonzini . + * posix/regexec.c (sift_states_bkref): Use correct destination of + the back reference. + +2002-10-17 Roland McGrath + + * elf/dl-load.c (_dl_map_object_from_fd): Don't check DF_STATIC_TLS. + * elf/dl-reloc.c (_dl_relocate_object: CHECK_STATIC_TLS): New macro + to signal error if an IE-model TLS reloc resolved to a dlopen'd module. + * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela): + Call it after performing TPOFF relocs. + * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise. + * elf/dl-conflict.c (CHECK_STATIC_TLS): New macro (no-op). + + * elf/dl-close.c (remove_slotinfo): Change asserts so as not to crash + when closing a partially-initialized object. + + * elf/dl-load.c (_dl_map_object_from_fd) [! USE_TLS]: Call lose + instead of _dl_fatal_printf when we see PT_TLS. + + * Makeconfig (CPPFLAGS): Fix last change to use $(libof-$( + + * cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Variable removed. + instead of += to append, to be sure $(lib) gets expanded at defn time. + (libof-$(cpp-src)): New variable, define this instead. + * extra-lib.mk (cpp-srcs-left): Reduce duplication in include setup. + (lib): Don't use override. + (CPPFLAGS-$(lib)): New variable, put -D's here. + * Makeconfig (CPPFLAGS): Use basename fn for CPPFLAGS-basename. + Also add $(CPPFLAGS-LIB) before the file-specific flags, for each + LIB found by $(libof-*) for basename, target, or source. + * Makerules (CPPFLAGS-nonlib): New variable. + * nscd/Makefile (lib): Set to nonlib when using cppflags-iterator.mk. + * locale/Makefile (lib): Likewise. + * sunrpc/Makefile (lib): Likewise. + + * sysdeps/unix/sysv/linux/fpathconf.c (LINUX_LINK_MAX): Move macro ... + * sysdeps/unix/sysv/linux/linux_fsinfo.h (LINUX_LINK_MAX): ... here. + * sysdeps/unix/sysv/linux/pathconf.h: New file. + (statfs_link_max): New function, guts from fpathconf.c. + * sysdeps/unix/sysv/linux/fpathconf.c: Rewritten using that. + * sysdeps/unix/sysv/linux/pathconf.c (__pathconf): Likewise. + * sysdeps/unix/sysv/linux/alpha/pathconf.c (__pathconf): Rewritten + to use the linux/pathconf.c code by #include rather than duplication. + * sysdeps/unix/sysv/linux/alpha/fpathconf.c (__pathconf): Likewise. + +2002-10-16 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): + Use __libc_errno only for libc itself. + +2002-10-16 Andreas Jaeger + + * sysdeps/x86_64/_mcount.S: Fix off-by-1 error in argument access. + +2002-10-16 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): + Use __libc_errno only for libc itself. + +2002-10-15 Roland McGrath + Jakub Jelinek + + * sysdeps/unix/sysv/linux/Makefile + ($(objpfx)syscall-%.h $(objpfx)syscall-%.d): Take code from + sparc/Makefile to produce a bi-arch file as needed. + That's now parameterized by the variable $(64bit-predefine). + Use LC_ALL=C for `comm' commands in that rule. + No longer conditional on [$(no_syscall_list_h)]. + * sysdeps/unix/sysv/linux/sparc/Makefile: Remove replacement rules. + (64bit-predefine): New variable. + * sysdeps/unix/sysv/linux/x86_64/Makefile: Likewise. + * sysdeps/unix/sysv/linux/s390/Makefile: New file. + * sysdeps/unix/sysv/linux/powerpc/Makefile + (64bit-predefine): New variable. + +2002-10-15 Roland McGrath + + * sysdeps/unix/sysv/linux/Makefile + ($(objpfx)syscall-%.h $(objpfx)syscall-%.d) + + * login/utmp-private.h: Declare __libc_utmp_lock. + * sysdeps/unix/getlogin_r.c (getlogin_r): Take __libc_utmp_lock once + and call __libc_utmp_jump_table functions directly, instead of using + __setutent et al. + + * sysdeps/unix/sysv/linux/configure.in: Use case instead of if. + * sysdeps/unix/sysv/linux/configure: Regenerated. + + * sysdeps/gnu/bits/utmp.h: Include . + (struct lastlog) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: + Use int32_t for ll_time. + (struct utmp) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: + Use int32_t instead of long int for ut_session. + Use an anonymous struct with 32-bit fields for ut_tv. + * sysdeps/gnu/bits/utmpx.h: Include . + (struct utmpx) [__WORDSIZE == 64 && __WORDSIZE_COMPAT32]: Do the same + here as in utmp.h for `struct utmp'. + * sysdeps/unix/sysv/linux/powerpc/bits/utmp.h: File removed. + * sysdeps/unix/sysv/linux/powerpc/bits/utmpx.h: File removed. + * sysdeps/unix/sysv/linux/sparc/bits/utmp.h: File removed. + * sysdeps/unix/sysv/linux/sparc/bits/utmpx.h: File removed. + * sysdeps/unix/sysv/linux/x86_64/bits/utmp.h: File removed. + * sysdeps/unix/sysv/linux/x86_64/bits/utmpx.h: File removed. + + * sysdeps/unix/sysv/linux/bits/resource.h: Replaced with the contents + of the sysdeps/unix/sysv/linux/i386/bits/resource.h file. + All the following files were identical or equivalent to it. + * sysdeps/unix/sysv/linux/i386/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/arm/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/cris/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/hppa/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/ia64/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/m68k/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/powerpc/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/s390/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/sh/bits/resource.h: File removed. + * sysdeps/unix/sysv/linux/x86_64/bits/resource.h: File removed. + + * sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Use size_t + instead of int for msg_iovlen, instead of socklen_t for msg_controllen. + Other than the previously incorrect sign of msg_iovlen, this is a + no-op on 32-bit platforms. On 64-bit platforms it makes this header + match their layouts as well, so the following are now identical to it. + * sysdeps/unix/sysv/linux/s390/bits/socket.h: File removed. + * sysdeps/unix/sysv/linux/sparc/bits/socket.h: File removed. + * sysdeps/unix/sysv/linux/x86_64/bits/socket.h: File removed. + * sysdeps/unix/sysv/linux/ia64/bits/socket.h: File removed. + * sysdeps/unix/sysv/linux/alpha/bits/socket.h: File removed. + +2002-10-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_VFORK_SYSCALL): + Define for 2.4+ kernels. + + * sysdeps/unix/sysv/linux/i386/vfork.S: Optimize for kernels which + are known to have the vfork syscall. Don't confuse the CPUs + branch prediction unit by jumping to the return address. + + * sysdeps/unix/sysv/linux/alpha/fpathconf.c (__fpathconf): Add + support for reiserfs and xfs. + + * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Add case for + XFS link count. + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define XFS_SUPER_MAGIC + and XFS_LINK_MAX. + Patch by Eric Sandeen [PR libc/4706]. + +2002-10-16 Jakub Jelinek + + * include/libc-symbols.h (attribute_tls_model_ie): Define. + * include/errno.h (errno): Define to __libc_errno in libc.so. + Add attribute_tls_model_ie. + * include/netdb.h (h_errno): Define to __libc_h_errno in libc.so. + Add attribute_tls_model_ie. + * include/resolv.h (_res): Define to __libc_res in libc.so. Add + attribute_tls_model_ie. + * inet/herrno.c (__libc_h_errno): Add hidden alias to h_errno. + (h_errno): Define. + * resolv/res_libc.c (__libc_res): Add hidden alias to _res. + (_res): Define. + * sysdeps/generic/bits/libc-tsd.h (__libc_tsd_define): Add + attribute_tls_model_ie. + * sysdeps/generic/errno-loc.c (errno): Only undefine if not using + __thread. + * sysdeps/generic/errno.c (__libc_errno): Add hidden alias to errno. + * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): Use + __libc_errno in USE___THREAD case. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): + Likewise. + * configure.in (HAVE_TLS_MODEL_ATTRIBUTE): Check for + __attribute__((tls_model (""))). + * configure: Rebuilt. + * config.h.in (HAVE_TLS_MODEL_ATTRIBUTE): Add. + +2002-10-15 Ulrich Drepper + + * timezone/asia: Update from tzdata2002d. + * timezone/australasia: Likewise. + * timezone/iso3166.tab: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone-tab: Likewise. + +2002-10-15 Roland McGrath + + * sysdeps/generic/dl-tls.c (_dl_deallocate_tls) [TLS_TCB_AT_TP]: + Adjust TCB pointer before calling free, so we get the whole block. + +2002-10-14 Roland McGrath + + * sysdeps/unix/sysv/linux/x86_64/sigaction.c + [HAVE_HIDDEN && !HAVE_BROKEN_VISIBILITY_ATTRIBUTE]: Declare restore_rt + extern using attribute_hidden instead of static, avoids warning. + +2002-10-09 Jakub Jelinek + + * sysdeps/unix/sysv/linux/configure.in: Use */lib64 for s390x too. + * sysdeps/unix/sysv/linux/configure: Rebuilt. + +2002-10-14 Ulrich Drepper + + * po/sv.po: Update from translation team. + +2002-10-12 H.J. Lu + + * sunrpc/thrsvc.c (PROCQUIT): New. + (struct rpc_arg): New. + (dispatch): Call exit (0) if request->rq_proc == PROCQUIT. + (test_one_call): Take struct rpc_arg * instead of CLIENT *c. + (thread_wrapper): Modified for struct rpc_arg * and call PROCQUIT. + (main): Modified for struct rpc_arg *. + +2002-10-14 Ulrich Drepper + + * dirent/scandir.c: Rearrange code a bit to reduce binary size. + +2002-10-14 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Include tls.h. + (SYSCALL_ERROR_HANDLER): Use RTLD_PRIVATE_ERRNO sequence + in ld.so even if __thread is supported. + +2002-10-13 Jakub Jelinek + + * sysdeps/unix/sysv/linux/arm/profil-counter.h (profil_counter): + Add hack to prevent the compiler from clobbering the signal context. + * sysdeps/unix/sysv/linux/sh/profil-counter.h (profil_counter): + Likewise. + * sysdeps/unix/sysv/linux/x86_64/profil-counter.h (profil_counter): + Likewise. + +2002-10-14 Andreas Jaeger + + * sysdeps/mips/fpu/libm-test-ulps: Regenerated by + Guido Guenther . + +2002-10-14 Ulrich Drepper + + * po/sk.po: Update from translation team. + +2002-09-26 Roland McGrath + + * elf/dl-load.c (_dl_dst_count, _dl_dst_substitute): Handle $LIB + dynamic string tag. + * elf/Makefile ($(objpfx)trusted-dirs.st): Make the output define + DL_DST_LIB based on $(slibdir). + +2002-10-13 Roland McGrath + + * elf/rtld-Rules ($(objpfx)rtld-libc.a): Use $(verbose) in ar command. + + * sysdeps/mach/hurd/getresuid.c: New file. + * sysdeps/mach/hurd/getresgid.c: New file. + * sysdeps/mach/hurd/setresuid.c: New file. + * sysdeps/mach/hurd/setresgid.c: New file. + + * posix/unistd.h [__USE_GNU] (getresuid, getresgid, setresuid, + setresgid): Declare them. + * NEWS: Mention it. + * include/unistd.h + (__getresuid, __getresgid, __setresuid, __setresgid): Declare them, + add libc_hidden_proto. + * posix/Versions (libc: GLIBC_2.3.2): New set. Add + getresuid, getresgid, setresuid, setresgid here. + * Versions.def (libc): Define GLIBC_2.3.2 set. + * sysdeps/generic/getresuid.c (__getresuid): Fix argument types. + Add libc_hidden_def. + * sysdeps/generic/getresgid.c (__getresgid): Likewise. + * sysdeps/generic/setresgid.c: New file. + * sysdeps/generic/setresuid.c: New file. + * sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc] + (sysdep_routines): Don't add getresuid and getresgid here. + * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = misc] + (sysdep_routines): Don't add setresuid and setresgid here. + * sysdeps/unix/sysv/linux/cris/Makefile: Likewise. + * sysdeps/unix/sysv/linux/sh/Makefile: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Likewise. + * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. + * sysdeps/unix/sysv/linux/m68k/Makefile: Likewise. + * posix/Makefile (routines): Add them all here instead. + * sysdeps/unix/sysv/linux/i386/getresuid.c (getresuid): Renamed to + __getresuid. Add libc_hidden_def for that, and weak alias to old name. + * sysdeps/unix/sysv/linux/i386/getresgid.c (getresgid): Renamed to + __getresgid. Add libc_hidden_def for that, and weak alias to old name. + * sysdeps/unix/sysv/linux/i386/setresuid.c: Add libc_hidden_def. + [! __NR_setresuid]: Include generic file. + * sysdeps/unix/sysv/linux/i386/setresgid.c (setresgid): Renamed to + __setresgid. Add libc_hidden_def for that, and weak alias to old name. + [! __NR_setresuid]: Include generic file. + * sysdeps/unix/sysv/linux/syscalls.list (setresuid, setresgid): + Caller is - now, not EXTRA. + * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list + (setresuid, setresgid, getresuid, getresgid): Likewise. + * sysdeps/unix/sysv/linux/syscalls.list (getresuid, getresgid): + Add these calls here. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove them here. + * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + + * sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc] + (sysdep_routines): Add setfsuid and setfsgid here. + * sysdeps/unix/sysv/linux/arm/Makefile: Not here. + * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile: Likewise. + * sysdeps/unix/sysv/linux/cris/Makefile: Likewise. + * sysdeps/unix/sysv/linux/sh/Makefile: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Likewise. + * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. + * sysdeps/unix/sysv/linux/m68k/Makefile: Likewise. + + * hurd/errno.c: Renamed to ... + * hurd/errno-loc.c: ... this. + * hurd/Makefile (routines): errno -> errno-loc + +2002-10-13 Ulrich Drepper + + * po/de.po: Update from translation team. + + * MakeTAGS: Add -E flag to xgettext runs. + +2002-10-12 Ulrich Drepper + + * po/fr.po: Update from translation team. + + * sysdeps/posix/system.c: Remove support for old and buggy SCO systems. + Optimize a bit for use in glibc. + +2002-10-12 Roland McGrath + + * stdio-common/tst-rndseek.c (TIMEOUT): Increase to 10 seconds. + Some machines are slow. Guido Guenther has one. + +2002-10-12 Ulrich Drepper + + * po/sv.po: Update from translation team. + +2002-10-11 Isamu Hasegawa + + * posix/regcomp.c (re_compile_fastmap_iter): Remove the handling + OP_CONTEXT_NODE. + (regfree): Likewise. + (create_initial_state): Likewise. + (analyze): Remove the substitutions which became useless. + (calc_first): Likewise. + (calc_epsdest): Use edests of OP_BACK_REF in case that it has + epsilon destination. + (duplicate_node_closure): New function. + (duplicate_node): Remove the handling OP_CONTEXT_NODE. + (calc_inveclosure): Likewise. + (calc_eclosure): Likewise. + (calc_eclosure_iter): Invoke duplicate_node_closure instead of + direct invocation of duplicate_node. + (parse): Don't use comma operator in the return to avoid compiler + warning. + (parse_reg_exp): Likewise. + (parse_branch): Likewise. + (parse_expression): Likewise. + (parse_sub_exp): Likewise. + (parse_dup_op): Likewise. + * posix/regex_internal.c (re_dfa_add_node): Remove the substitutions + which became useless. + (create_ci_newstate): Remove the handling OP_CONTEXT_NODE. + (create_cd_newstate): Likewise. + * posix/regex_internal.h (re_token_type_t): Remove the obsolete type. + (re_token_t): Likewise. + (re_dfa_t): Likewise. + (re_node_set_remove): New macro. + * posix/regexec.c (check_matching): Remove the handling + OP_CONTEXT_NODE. + (check_halt_node_context): Likewise. + (proceed_next_node): Likewise. + (pop_fail_stack): Fix the memory leak. + (set_regs): Likewise. + (free_fail_stack_return): New function. + (sift_states_backward): Fix the memory leak. Remove the handling + OP_CONTEXT_NODE. + (update_cur_sifted_state): Append some if clause to avoid redundant + call. + (sub_epsilon_src_nodes): Use IS_EPSILON_NODE since it might be a + back reference. + (check_dst_limits): Remove the handling OP_CONTEXT_NODE. + (check_subexp_limits): Likewise. + (search_subexp): Likewise. + (sift_states_bkref): Likewise. + (transit_state_mb): Likewise. + (transit_state_bkref_loop): Likewise. + (transit_state_bkref_loop): Likewise. + (group_nodes_into_DFAstates): Likewise. + (check_node_accept): Likewise. + (sift_ctx_init): Add initializing. + +2002-10-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysdep.h (INLINE_SYSCALL): Use + __builtin_expect. + +2002-10-11 Ulrich Drepper + + * elf/dl-load.c (_dl_map_object_from_fd): Remove unnecessarily + duplicated variable c. + + * sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Use INTERNAL_SYSCALL + if possible. + + * sysdeps/unix/sysv/linux/i386/sysdep.h + (INTERNAL_SYSCALL_ERROR_P): New define. + (INTERNAL_SYSCALL_ERRNO): Likewise. + + * sysdeps/unix/sysv/linux/i386/profil-counter.h (profil_counter): + Add hack to prevent the compiler from clobbering the signal context. + +2002-10-11 Roland McGrath + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): + Fix typos. + + * sysdeps/generic/dl-lookupcfg.h: Include . + * sysdeps/sh/dl-lookupcfg.h: File removed. + * sysdeps/i386/dl-lookupcfg.h: File removed. + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): Add + missing labels and ; from last change. + + * stdio-common/tst-sscanf.c (val_double): Append .0 to large whole + number literals, so they are doubles instead of ints. + +2002-10-09 Roland McGrath + + * sysdeps/generic/bits/libc-tsd.h [USE___THREAD]: Conditional + changed from [USE_TLS && HAVE___THREAD]. + + * sysdeps/i386/dl-machine.h (elf_machine_type_class, elf_machine_rel): + Disable TLS relocs if [RTLD_BOOTSTRAP && !USE___THREAD]. + * sysdeps/x86_64/dl-machine.h + (elf_machine_type_class, elf_machine_rela): Likewise. + * sysdeps/sh/dl-machine.h (elf_machine_type_class, elf_machine_rela): + Likewise. + + * include/link.h (struct link_map): Remove member l_tls_tp_initialized. + * elf/rtld.c (_dl_start_final, dl_main): Don't use it. + (_dl_start): Conditionalize PT_TLS check on [USE___THREAD]. + + * sysdeps/i386/dl-tls.h (__TLS_GET_ADDR): Use ___tls_get_addr_internal + instead of ___tls_get_addr. + (___tls_get_addr_internal): Add attribute_hidden to decl. + + * sysdeps/generic/ldsodefs.h (struct rtld_global): New variable + _dl_error_catch_tsd. + * elf/rtld.c (startup_error_tsd): New function. + (dl_main): Point _dl_error_catch_tsd at that. + * elf/dl-error.c: Don't use libc-tsd.h for DL_ERROR, + use new function pointer instead. + * elf/dl-tsd.c: New file. + * elf/Makefile (routines): Add it. + +2002-10-07 Roland McGrath + + * elf/dl-misc.c (_dl_debug_vdprintf): Use INTERNAL_SYSCALL macro for + writev if it's available. Otherwise if [RTLD_PRIVATE_ERRNO] then + take _dl_load_lock around calling __writev. + + * sysdeps/unix/sysv/linux/i386/sysdep.h (INTERNAL_SYSCALL): New macro. + (INLINE_SYSCALL): Use that. + + * sysdeps/generic/dl-sysdep.h: New file. + * sysdeps/mach/hurd/dl-sysdep.h: New file. + * sysdeps/generic/ldsodefs.h: Include . + * include/errno.h [IS_IN_rtld]: Include to define ... + [RTLD_PRIVATE_ERRNO]: Use a hidden global variable for errno and + access it directly. + * elf/dl-minimal.c (__errno_location): Removed. + * sysdeps/unix/i386/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: + Use GOTOFF access for errno. + * sysdeps/unix/sysv/linux/i386/sysdep.h + [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. + + * sysdeps/unix/x86_64/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: + Use PC-relative access for errno. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h + [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. + + * include/tls.h: New file. + (USE___THREAD): New macro. + Define to 1 under [USE_TLS && HAVE___THREAD] and only when compiling + libc or libpthread. + * sysdeps/unix/sysv/linux/i386/sysdep.h [USE___THREAD]: Conditional + changed from [USE_TLS && HAVE___THREAD]. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + * sysdeps/unix/i386/sysdep.S: Likewise. + * sysdeps/unix/x86_64/sysdep.S: Likewise. + * include/errno.h: Likewise. + * include/netdb.h: Likewise. + * include/resolv.h: Likewise. + + * sysdeps/generic/errno.c: New file. + * csu/Makefile (aux): New variable, list errno. + * sysdeps/unix/sysv/linux/i386/sysdep.S (errno, _errno): Remove defns. + * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/arm/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/cris/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/hppa/sysdep.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/sysdep.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep.S: Likewise. + * sysdeps/unix/alpha/sysdep.S: Likewise. + * sysdeps/generic/start.c: Likewise. + * sysdeps/unix/start.c: Likewise. + * sysdeps/unix/arm/start.c: Likewise. + * sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise. + * sysdeps/unix/sparc/start.c: Likewise. + * sysdeps/unix/sysv/irix4/start.c: Likewise. + * sysdeps/unix/sysv/linux/mips/sysdep.S: File removed. + + * manual/search.texi (Tree Search Function, Hash Search Function): + Mention search.h clearly. + +2002-10-05 Roland McGrath + + * elf/dl-fxstat64.c: File removed. + * elf/dl-xstat64.c: File removed. + * elf/Makefile (rtld-routines): Remove them. + * sysdeps/unix/sysv/linux/xstat64.c: Remove RTLD_STAT64 conditionals. + Instead, use strong_alias instead of versioned_symbol in the + !SHLIB_COMPAT case. + * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. + + * include/shlib-compat.h + (SHLIB_COMPAT): Require that IS_IN_##lib be defined nonzero. + [! NOT_IN_libc] (IS_IN_libc): Define it. + * cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Use -Dx=1 not just -Dx. + * elf/Makefile (CPPFLAGS-.os): Likewise. + + * sunrpc/rpc_main.c (main): Don't declare with noreturn attribute. + Return the status instead of calling exit. + + * Makeconfig (CFLAGS): Prepend -std=gnu99. + * Makerules (+make-deps): Use $(CFLAGS) only for .c sources. + Remove superfluous rm command, whose @ plus make bugs hid + all these commands from the make output. + + * include/stubs-prologue.h: New file. Give #error under #ifdef _LIBC. + * Makefile ($(inst_includedir)/gnu/stubs.h): Depend on it. + Use that file's contents instead of literal echo's for the prologue. + * include/features.h: Include unconditionally. + * include/gnu/stubs.h: New file. + +2002-09-30 Roland McGrath + + * elf/rtld-Rules: New file. + * elf/Makefile ($(objpfx)librtld.map, $(objpfx)librtld.mk, + $(objpfx)rtld-libc.a): New targets. + (generated): Add them. + (reloc-link): Remove -o $@ from the variable. + ($(objpfx)dl-allobjs.os): Add -o $@ after $(reloc-link). + (distribute): Add rtld-Rules. + (CPPFLAGS-.os): Define this instead of CFLAGS-.os. + * Makerules ($(+sysdir_pfx)sysd-rules): Emit rules for rtld-% targets. + (common-mostlyclean, common-clean): Clean up rtld-* files. + * sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules. + +2003-05-20 Jakub Jelinek + + * elf/dynamic-link.h (elf_get_dynamic_info): Add temp argument. + If temp != NULL, copy dynamic entries which need relocation to temp + array before relocating. + (DL_RO_DYN_TEMP_CNT): Define. + * elf/dl-load.c (_dl_map_object_from_fd): Adjust caller. + * elf/rtld.c (_dl_start): Likewise. + (dl_main): Likewise. Add dyn_temp static variable. + +2002-10-11 Roland McGrath + + * sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in + now-unused dtv slot, reset the slot to TLS_DTV_UNALLOCATED. + + * elf/tls-macros.h [__x86_64__] (TLS_GD): Fix the sequence with the + proper set of no-op insn prefixes. + + * elf/tst-tls8.c (do_test): Use %zd format for l_tls_modid members. + +2002-10-11 Ulrich Drepper + + * sysdeps/unix/sysv/linux/execve.c: Don't try calling + __pthread_kill_other_threads_np. + + * sysdeps/generic/pselect.c: Avoid unnecessary sigprocmask calls. + +2002-10-08 Roland McGrath + + * locale/newlocale.c (__newlocale): If setting all categories to "C", + just return &_nl_C_locobj instead of copying it. + * locale/freelocale.c (__freelocale): Check for &_nl_C_locobj. + * locale/duplocale.c (__duplocale): Likewise. + +2002-10-07 Roland McGrath + + * config.h.in (HAVE_I386_SET_GDT): New #undef. + * sysdeps/mach/configure.in: Define it with new check for i386_set_gdt. + * sysdeps/mach/configure: Regenerated. + +2002-10-06 Franz Sirl + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL): + Add all necessary register outputs for syscall-clobbered registers. + +2002-10-02 David Mosberger + + * sysdeps/ia64/bzero.S: Rewritten by Sverre Jarp to tune for + Itanium 2 (and Itanium). + Fix unwind directives and make it fit in 80 columns. + * sysdeps/ia64/memset.S: Likewise. + * sysdeps/ia64/memcpy.S: Likewise. + Move jump table to .rodata section. + +2002-10-03 Roland McGrath + + * sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Add + clobbers to asm. + +2002-10-10 Andreas Jaeger + + * sysdeps/x86_64/_mcount.S: Restore correct registers. + +2002-10-10 Ulrich Drepper + + * posix/Versions (libc) [GLIBC_PRIVATE]: Add __pselect. + +2002-10-09 Ulrich Drepper + + * sysdeps/generic/ldsodefs.h: Remove attribute_hidden from + _dl_allocate_tls_init. Add rtld_hidden_proto. + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add + rtld_hidden_def. + * elf/Versions (ld) [GLIBC_PRIVATE]: Add _dl_allocate_tls_init. + + * version.h (VERSION): Bump to 2.3.1. + + * Make-dist: Add back one of the tar invocations removed before. + + * stdlib/Makefile (distribute): Add allocalim.h. + + * sysdeps/generic/bits/libc-tsd.h [!(USE_TLS && HAVE___THREAD)] + (__libc_tsd_address): Use correct variable name. + Patch by Stefan Jones . + + * sysdeps/unix/sysv/linux/ia64/getcontext.S: Add missing ;;. + Reported by edwardsg@sgi.com [PR libc/4678]. + + * Versions.def (libc): Add GLIBC_2.3.1. + (libpthread): Add GLIBC_2.3.1. + + * include/signal.h: Add libc_hidden_proto for __sigwait, __sigwaitinfo, + and __sigtimedwait. + * signal/Versions: Add __sigtimedwait, __sigwait, and __sigwaitinfo. + * sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Add + libc_hidden_def. + * sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Likewise. + * sysdeps/unix/sysv/linux/sigwaitinfo.c (__sigwaitinfo): Likewise. + + * include/sys/msg.h: Declare __libc_msgrcv and __libc_msgsnd. + * sysdeps/unix/sysv/linux/msgrcv.c (__msgrcv): Rename to __libc_msgrcv + and make old name an alias. + * sysdeps/unix/sysv/linux/msgsnd.c (__msgsnd): Rename to __libc_msgsnd + and make old name an alias. + * sysvipc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_msgrcv and + __libc_msgsnd. + + * include/sys/uio.h: Declare __libc_readv and __libc_writev. + * misc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_readv and + __libc_writev. + * sysdeps/generic/readv.c (__readv): Rename to __libc_readv and make + old name an alias. + * sysdeps/posix/readv.c: Likewise + * sysdeps/unix/sysv/aix/readv.c: Likewise. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + * sysdeps/generic/writev.c (__writev): Rename to __libc_writev and make + old name an alias. + * sysdeps/posix/writev.c: Likewise + * sysdeps/unix/sysv/aix/writev.c: Likewise. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + + * include/sys/wait.h: Declare __waitid. + * posix/Versions (libc) [GLIBC_PRIVATE]: Add __waitid. + * sysdeps/generic/waitid.c (waitid): Rename to __waitid and make old + name an alias. + * sysdeps/posix/waitid.c: Likewise. + * sysdeps/unix/sysv/aix/waitid.c: Likewise. + + * sysdeps/unix/sysv/linux/syscalls.list: Add creat syscall. + +2002-10-07 Jakub Jelinek + + * include/alloca.h (__libc_use_alloca, __libc_alloca_cutoff): New + prototypes. + (__MAX_ALLOCA_CUTOFF): Define. + Include allocalim.h. + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r, + _nss_dns_gethostbyaddr_r): Use alloca or malloc to allocate + host_buffer depending on __libc_use_alloca. + * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r, + _nss_dns_getnetbyaddr_r): Use alloca or malloc to allocate + net_buffer depending on __libc_use_alloca. + * resolv/res_query.c (res_nquery): Use alloca or malloc to allocate + buf depending on __libc_use_alloca. + * resolv/gethnamaddr.c (gethostbyname2, gethostbyaddr): Likewise. + * stdio-common/vfprintf.c (vfprintf): Use __libc_use_alloca + instead of hardcoded constants. + Pass proper size argument to alloca and compute end for wide char + version. + * stdio-common/printf_fp.c (__printf_fp): Use __libc_use_alloca + instead of hardcoded constants. + * string/strcoll.c (strcoll): Likewise. + * string/strxfrm.c (strxfrm): Likewise. + * sysdeps/posix/readv.c (__readv): Likewise. + * sysdeps/posix/writev.c (__writev): Likewise. + * sysdeps/generic/allocalim.h: New file. + +2002-10-08 Roland McGrath + + * configure.in (aux_missing warning): Change "too old" to + "incompatible versions", since for autoconf it's "too new" right now. + * configure: Regenerated. + + * configure.in (AUTOCONF): New check to set it. Set to "no" if the + one found doesn't work on our configure.in. + * configure: Regenerated. + * config.make.in (AUTOCONF): New substituted variable. + * Makefile (autoconf-it-cvs): New canned sequence, broken out of ... + (autoconf-it): ... here, use that instead of defining conditionally. + Use $(AUTOCONF) instead of literal autoconf. + [$(AUTOCONF) != no] (configure, %/configure): Protect these rules + with this condition. + * Make-dist (autoconf-it, configure, %/configure): Copy those changes. + +2002-10-08 Ulrich Drepper + + * Make-dist (dist): Cleanup a bit. We are not interested in the + 14 char filename limit anymore. Remove intermediate files and + symlinks. + +2002-10-05 Ulrich Drepper + + * po/sk.po: Update from translation team. + * po/tr.po: Likewise. + * po/gl.po: Likewise. + +2002-10-05 Kaz Kojima + + * elf/tls-macros.h: Fix SH version of macros so as to match ABI syntax. + +2002-10-03 Ulrich Drepper + + * version.h (RELEASE): Change to stable. + +2002-10-03 Jakub Jelinek + + * sysdeps/unix/sysv/linux/_exit.c (__syscall_exit, + __syscall_exit_group): New prototypes. + +2002-10-03 Ulrich Drepper + + * glibc 2.3 released. + + +See ChangeLog.13 for earlier changes. diff -durpN glibc-2.3.3/config.h.in glibc-2.3.4/config.h.in --- glibc-2.3.3/config.h.in 2003-05-21 05:25:53.000000000 -0400 +++ glibc-2.3.4/config.h.in 2004-09-16 19:55:55.000000000 -0400 @@ -18,6 +18,9 @@ --with-elf. */ #undef HAVE_ELF +/* Define if building with SELinux support. Set by --with-selinux. */ +#undef HAVE_SELINUX + /* Define if using XCOFF. Set by --with-xcoff. */ #undef HAVE_XCOFF @@ -61,6 +64,9 @@ /* Define a symbol_name as a global .symbol_name for ld. */ #undef HAVE_ASM_GLOBAL_DOT_NAME +/* On powerpc64, use overlapping .opd entries. */ +#undef USE_PPC64_OVERLAPPING_OPD + /* Define if the assembler generates debugging information directly. */ #undef HAVE_CPP_ASM_DEBUGINFO @@ -153,6 +159,9 @@ sections. */ #undef HAVE_INITFINI_ARRAY +/* Define if the compiler's exception support is based on libunwind. */ +#undef HAVE_CC_WITH_LIBUNWIND + /* Define if the access to static and hidden variables is position independent and does not need relocations. */ #undef PI_STATIC_AND_HIDDEN @@ -199,6 +208,15 @@ /* Defined if forced unwind support is available. */ #undef HAVE_FORCED_UNWIND +/* Defined if the linker supports the -z relro option. */ +#undef HAVE_Z_RELRO + +/* Defined of libidn is available. */ +#undef HAVE_LIBIDN + +/* Define if inlined system calls are available. */ +#undef HAVE_INLINED_SYSCALLS + /* */ diff -durpN glibc-2.3.3/config.make.in glibc-2.3.4/config.make.in --- glibc-2.3.3/config.make.in 2003-11-11 19:37:03.000000000 -0500 +++ glibc-2.3.4/config.make.in 2004-09-16 19:55:25.000000000 -0400 @@ -1,5 +1,5 @@ # @configure_input@ -# From $Id: config.make.in,v 1.98 2003/11/12 00:37:03 roland Exp $. +# From $Id: config.make.in,v 1.106 2004/09/16 23:55:25 drepper Exp $. # Don't edit this file. Put configuration parameters in configparms instead. version = @VERSION@ @@ -44,7 +44,10 @@ have-z-initfirst = @libc_cv_z_initfirst@ have-z-combreloc = @libc_cv_z_combreloc@ have-z-execstack = @libc_cv_z_execstack@ have-initfini = @libc_cv_have_initfini@ +have-z-relro = @libc_cv_z_relro@ have-Bgroup = @libc_cv_Bgroup@ +have-as-needed = @libc_cv_as_needed@ +libgcc_s_suffix = @libc_cv_libgcc_s_suffix@ need-nopic-initfini = @nopic_initfini@ with-fp = @with_fp@ with-cvs = @with_cvs@ @@ -55,6 +58,10 @@ have-cpp-asm-debuginfo = @libc_cv_cpp_as enable-check-abi = @enable_check_abi@ have-forced-unwind = @libc_cv_forced_unwind@ have-fpie = @libc_cv_fpie@ +have-selinux = @have_selinux@ +have-cc-with-libunwind = @libc_cv_cc_with_libunwind@ +fno-unit-at-a-time = @fno_unit_at_a_time@ +bind-now = @bindnow@ static-libgcc = @libc_cv_gcc_static_libgcc@ @@ -81,7 +88,7 @@ build-profile = @profile@ build-omitfp = @omitfp@ build-bounded = @bounded@ build-static-nss = @static_nss@ -add-ons = @subdirs@ +add-ons = @add_ons@ cross-compiling = @cross_compiling@ force-install = @force_install@ diff -durpN glibc-2.3.3/configure glibc-2.3.4/configure --- glibc-2.3.3/configure 2003-11-11 19:37:03.000000000 -0500 +++ glibc-2.3.4/configure 2004-12-15 13:54:17.000000000 -0500 @@ -1,12 +1,11 @@ #! /bin/sh # From configure.in CVSid. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.57 for GNU C Library (see version.h). +# Generated by GNU Autoconf 2.59 for GNU C Library (see version.h). # # Report bugs to . # -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. +# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -23,9 +22,10 @@ if test -n "${ZSH_VERSION+set}" && (emul elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi +DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false @@ -44,7 +44,7 @@ for as_var in \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var @@ -221,16 +221,17 @@ rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS @@ -312,7 +313,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_cc_with_libunwind libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_z_relro libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie fno_unit_at_a_time libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -671,7 +672,7 @@ done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir + localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in @@ -711,10 +712,10 @@ if test -z "$srcdir"; then # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } @@ -814,9 +815,9 @@ _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -876,6 +877,7 @@ Optional Features: configure and build add-ons in DIR1,DIR2,... search for add-ons if no parameter given --disable-hidden-plt do not hide internal function calls to avoid PLT + --enable-bind-now disable lazy relocations in DSOs --enable-static-nss build static NSS modules [default=no] --disable-force-install don't force installation of files from this package, even if they are older than the installed files @@ -893,6 +895,7 @@ Optional Packages: --with-fp if using floating-point hardware [default=yes] --with-binutils=PATH specify location of binutils (as and ld) --with-elf if using the ELF object format + --with-selinux if building with SELinux support --with-xcoff if using the XCOFF object format --without-cvs if CVS should not be used --with-headers=PATH location of system headers to use (for example @@ -949,12 +952,45 @@ case $srcdir in ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. @@ -965,7 +1001,7 @@ ac_abs_top_srcdir=`cd "$ac_dir" && cd $a echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then + test -f $ac_srcdir/configure.in; then echo $ac_configure --help else @@ -979,10 +1015,9 @@ test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF GNU C Library configure (see version.h) -generated by GNU Autoconf 2.57 +generated by GNU Autoconf 2.59 -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -994,7 +1029,7 @@ This file contains any messages produced running configure, to aid debugging if configure makes a mistake. It was created by GNU C Library $as_me (see version.h), which was -generated by GNU Autoconf 2.57. Invocation command line was +generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1071,19 +1106,19 @@ do 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. + ac_must_keep_next=false # Got value, back to normal. else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. @@ -1117,12 +1152,12 @@ _ASBOX case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } @@ -1151,7 +1186,7 @@ _ASBOX for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi @@ -1170,7 +1205,7 @@ _ASBOX echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core core.* *.core && + rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 @@ -1250,7 +1285,7 @@ fi # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" @@ -1267,13 +1302,13 @@ echo "$as_me: error: \`$ac_var' was not ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. @@ -1451,6 +1486,14 @@ else elf=no fi; +# Check whether --with-selinux or --without-selinux was given. +if test "${with_selinux+set}" = set; then + withval="$with_selinux" + with_selinux=$withval +else + with_selinux=auto +fi; + # Check whether --with-xcoff or --without-xcoff was given. if test "${with_xcoff+set}" = set; then withval="$with_xcoff" @@ -1559,11 +1602,13 @@ if test "${enable_add_ons+set}" = set; t enableval="$enable_add_ons" case "$enableval" in yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'` + add_ons_automatic=yes test "$add_ons" = "*" && add_ons= ;; - *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; + *) add_ons=`echo "$enableval" | sed 's/,/ /g'` + add_ons_automatic=no ;; esac else - add_ons= + add_ons= add_ons_automatic=no fi; @@ -1572,7 +1617,7 @@ if test "${with_tls+set}" = set; then withval="$with_tls" usetls=$withval else - usetls=no + usetls=yes fi; @@ -1598,51 +1643,15 @@ _ACEOF fi +# Check whether --enable-bind-now or --disable-bind-now was given. +if test "${enable_bind_now+set}" = set; then + enableval="$enable_bind_now" + bindnow=$enableval +else + bindnow=no +fi; -subdirs="$subdirs " -add_ons_pfx= -if test x"$add_ons" != x; then - for f in $add_ons; do - # Some sanity checks - if test "$f" = "crypt"; then - { { echo "$as_me:$LINENO: error: -*** It seems that you're using an old \`crypt' add-on. crypt is now -*** part of glibc and using the old add-on will not work with this -*** release. Start again with fresh sources and without the old -*** \`crypt' add-on." >&5 -echo "$as_me: error: -*** It seems that you're using an old \`crypt' add-on. crypt is now -*** part of glibc and using the old add-on will not work with this -*** release. Start again with fresh sources and without the old -*** \`crypt' add-on." >&2;} - { (exit 1); exit 1; }; } - fi - if test "$f" = "localedata"; then - { { echo "$as_me:$LINENO: error: -*** It seems that you're using an old \`localedata' add-on. localedata -*** is now part of glibc and using the old add-on will not work with -*** this release. Start again with fresh sources and without the old -*** \`localedata' add-on." >&5 -echo "$as_me: error: -*** It seems that you're using an old \`localedata' add-on. localedata -*** is now part of glibc and using the old add-on will not work with -*** this release. Start again with fresh sources and without the old -*** \`localedata' add-on." >&2;} - { (exit 1); exit 1; }; } - fi - # Test whether such a subdir really exists. - if test -d $srcdir/$f; then - add_ons_pfx="$add_ons_pfx $f/" - subdirs="$subdirs $f" - else - { { echo "$as_me:$LINENO: error: add-on directory \"$f\" does not exist" >&5 -echo "$as_me: error: add-on directory \"$f\" does not exist" >&2;} - { (exit 1); exit 1; }; } - fi - done -fi - # Check whether --enable-static-nss or --disable-static-nss was given. if test "${enable_static_nss+set}" = set; then enableval="$enable_static_nss" @@ -1786,6 +1795,9 @@ aix*) ;; esac +# The configure fragment of an add-on port can modify these to supplement +# or override the table in the case statement below. No fragment should +# ever change the config_* variables, however. machine=$config_machine vendor=$config_vendor os=$config_os @@ -1803,6 +1815,85 @@ case "$machine-$host_os" in ;; esac + +# An add-on can set this when it the tuple to disable the sanity check below. +libc_config_ok=no + + + +subdirs="$subdirs " + + +add_ons_sfx= +add_ons_pfx= +if test x"$add_ons" != x; then + for f in $add_ons; do + # Some sanity checks + case "$f" in + crypt) + { { echo "$as_me:$LINENO: error: +*** It seems that you're using an old \`crypt' add-on. crypt is now +*** part of glibc and using the old add-on will not work with this +*** release. Start again with fresh sources and without the old +*** \`crypt' add-on." >&5 +echo "$as_me: error: +*** It seems that you're using an old \`crypt' add-on. crypt is now +*** part of glibc and using the old add-on will not work with this +*** release. Start again with fresh sources and without the old +*** \`crypt' add-on." >&2;} + { (exit 1); exit 1; }; } + ;; + localedata) + { { echo "$as_me:$LINENO: error: +*** It seems that you're using an old \`localedata' add-on. localedata +*** is now part of glibc and using the old add-on will not work with +*** this release. Start again with fresh sources and without the old +*** \`localedata' add-on." >&5 +echo "$as_me: error: +*** It seems that you're using an old \`localedata' add-on. localedata +*** is now part of glibc and using the old add-on will not work with +*** this release. Start again with fresh sources and without the old +*** \`localedata' add-on." >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Test whether such a subdir really exists. + test -d $srcdir/$f || { + { { echo "$as_me:$LINENO: error: add-on directory \"$f\" does not exist" >&5 +echo "$as_me: error: add-on directory \"$f\" does not exist" >&2;} + { (exit 1); exit 1; }; } + } + done + + # Now source each add-on's configure fragment. + # The fragments can use $srcdir/$libc_add_on to find themselves, + # and test $add_ons_automatic to see if they were explicitly requested. + # A fragment can clear (or even change) $libc_add_on to affect + # whether it goes into the list to be actually used in the build. + use_add_ons= + for libc_add_on in $add_ons; do + libc_add_on_frag=$srcdir/$libc_add_on/configure + if test -r $libc_add_on_frag; then + echo "$as_me:$LINENO: result: running configure fragment for add-on $libc_add_on" >&5 +echo "${ECHO_T}running configure fragment for add-on $libc_add_on" >&6 + . $libc_add_on_frag + else + { echo "$as_me:$LINENO: WARNING: add-on fragment $libc_add_on_frag missing" >&5 +echo "$as_me: WARNING: add-on fragment $libc_add_on_frag missing" >&2;} + fi + if test -n "$libc_add_on"; then + use_add_ons="$use_add_ons $libc_add_on" + add_ons_pfx="$add_ons_pfx $libc_add_on/" + add_ons_sfx="$add_ons_sfx /$libc_add_on" + fi + done + # Use echo to strip excess whitespace. + add_ons="`echo $use_add_ons`" +fi + + + ### ### I put this here to prevent those annoying emails from people who cannot ### read and try to compile glibc on unsupported platforms. --drepper @@ -1811,7 +1902,7 @@ esac ### one can skip this test to make the configuration not fail for unsupported ### platforms. ### -if test -z "$enable_hacker_mode"; then +if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then case "$machine-$host_os" in *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*) ;; @@ -1828,8 +1919,9 @@ if test -z "$enable_hacker_mode"; then fi # Expand the configuration machine name into a subdirectory by architecture -# type and particular chip. -case "$machine" in +# type and particular chip. If an add-on configure fragment already set +# base_machine, we don't change it. +test -n "$base_machine" || case "$machine" in a29k | am29000) base_machine=a29k machine=a29k ;; alpha*) base_machine=alpha machine=alpha/$machine ;; arm*) base_machine=arm machine=arm/arm32/$machine ;; @@ -1837,7 +1929,7 @@ c3[012]) base_machine=cx0 machine=cx0/c3 c4[04]) base_machine=cx0 machine=cx0/c40 ;; hppa*64*) base_machine=hppa machine=hppa/hppa64 ;; hppa*) base_machine=hppa machine=hppa/hppa1.1 ;; -i[3456]86) base_machine=i386 machine=i386/$machine ;; +i[34567]86) base_machine=i386 machine=i386/$machine ;; ia64) base_machine=ia64 machine=ia64 ;; m680?0) base_machine=m68k machine=m68k/$machine ;; m68k) base_machine=m68k machine=m68k/m68020 ;; @@ -1984,16 +2076,18 @@ for d in $add_ons_pfx ''; do for o in /$ostry ''; do test "$o" = / && continue for m in $mach ''; do - if test "$m0$b$v$o$m"; then - try="${d}sysdeps$m0$b$v$o$m" - test -n "$enable_debug_configure" && - echo "$0 DEBUG: try $try" >&2 - if test -d $srcdir/$try; then - sysnames="$sysnames $try" - { test -n "$o" || test -n "$b"; } && os_used=t - { test -n "$m" || test -n "$m0"; } && machine_used=t + for a in $add_ons_sfx ''; do + if test "$m0$b$v$o$m"; then + try="${d}sysdeps$m0$b$v$o$m$a" + test -n "$enable_debug_configure" && + echo "$0 DEBUG: try $try" >&2 + if test -d $srcdir/$try; then + sysnames="$sysnames $try" + { test -n "$o" || test -n "$b"; } && os_used=t + { test -n "$m" || test -n "$m0"; } && machine_used=t + fi fi - fi + done done done done @@ -2134,6 +2228,7 @@ echo "${ECHO_T}$default_sysnames" >&6 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 @@ -2150,6 +2245,7 @@ do case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -2157,20 +2253,20 @@ case $as_dir/ in # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi done done ;; @@ -2558,7 +2654,6 @@ if test "${ac_cv_objext+set}" = set; the echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2609,7 +2704,6 @@ if test "${ac_cv_c_compiler_gnu+set}" = echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2629,11 +2723,21 @@ main () _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2646,7 +2750,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi @@ -2662,7 +2766,6 @@ if test "${ac_cv_prog_cc_g+set}" = set; echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2679,11 +2782,21 @@ main () _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2696,7 +2809,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 @@ -2723,7 +2836,6 @@ else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2751,6 +2863,16 @@ static char *f (char * (*g) (char **, in va_end (v); return s; } + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2777,11 +2899,21 @@ do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2794,7 +2926,7 @@ else sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext +rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC @@ -2822,19 +2954,28 @@ cat >conftest.$ac_ext <<_ACEOF _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ - ''\ - '#include ' \ + '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ @@ -2842,14 +2983,13 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include $ac_declaration +#include int main () { @@ -2860,11 +3000,21 @@ exit (42); _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2877,9 +3027,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 continue fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2896,11 +3045,21 @@ exit (42); _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2912,7 +3071,7 @@ else sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then @@ -2926,7 +3085,7 @@ else sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3004,7 +3163,6 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3015,7 +3173,7 @@ cat >>conftest.$ac_ext <<_ACEOF #else # include #endif - Syntax error + Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 @@ -3027,6 +3185,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -3047,7 +3206,6 @@ rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3065,6 +3223,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -3111,7 +3270,6 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3122,7 +3280,7 @@ cat >>conftest.$ac_ext <<_ACEOF #else # include #endif - Syntax error + Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 @@ -3134,6 +3292,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -3154,7 +3313,6 @@ rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3172,6 +3330,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -3330,7 +3489,6 @@ if test "${ac_cv_cxx_compiler_gnu+set}" echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3350,11 +3508,21 @@ main () _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3367,7 +3535,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi @@ -3383,7 +3551,6 @@ if test "${ac_cv_prog_cxx_g+set}" = set; echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3400,11 +3567,21 @@ main () _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3417,7 +3594,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 @@ -3437,8 +3614,7 @@ else fi fi for ac_declaration in \ - ''\ - '#include ' \ + '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ @@ -3446,14 +3622,13 @@ for ac_declaration in \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include $ac_declaration +#include int main () { @@ -3464,11 +3639,21 @@ exit (42); _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3481,9 +3666,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 continue fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3500,11 +3684,21 @@ exit (42); _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3516,7 +3710,7 @@ else sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then @@ -3899,7 +4093,7 @@ echo $ECHO_N "checking version of $CC... ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.[2-9]*) + 3.[2-9]* | 4.[0-9]* ) ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; @@ -4239,16 +4433,13 @@ echo "$as_me: WARNING: *** some features will be disabled. *** Check the INSTALL file for required versions." >&2;} -# glibcbug.in wants to know the compiler version. -CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'` - - # if using special system headers, find out the compiler's sekrit # header directory and add that to the list. NOTE: Only does the right # thing on a system that doesn't need fixincludes. (Not presently a problem.) if test -n "$sysheaders"; then ccheaders=`$CC -print-file-name=include` - SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders" + SYSINCLUDES="-nostdinc -isystem $ccheaders \ +-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`" fi @@ -4626,7 +4817,6 @@ if test "${libc_cv_friendly_stddef+set}" echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4651,11 +4841,21 @@ if (&size == NULL || &wchar == NULL) abo _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4668,7 +4868,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 libc_cv_friendly_stddef=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $libc_cv_friendly_stddef" >&5 echo "${ECHO_T}$libc_cv_friendly_stddef" >&6 @@ -4841,16 +5041,6 @@ _ACEOF fi -# The Aix ld uses global .symbol_names instead of symbol_names. -# Unfortunately also used in the PPC64 ELF ABI. -case "${os}${machine}" in -aix4.3* | linux*powerpc/powerpc64*) - cat >>confdefs.h <<\_ACEOF -#define HAVE_ASM_GLOBAL_DOT_NAME 1 -_ACEOF - -esac - echo "$as_me:$LINENO: checking for .symver assembler directive" >&5 echo $ECHO_N "checking for .symver assembler directive... $ECHO_C" >&6 if test "${libc_cv_asm_symver_directive+set}" = set; then @@ -5204,6 +5394,33 @@ _ACEOF fi + echo "$as_me:$LINENO: checking for libunwind-support in compiler" >&5 +echo $ECHO_N "checking for libunwind-support in compiler... $ECHO_C" >&6 +if test "${libc_cv_cc_with_libunwind+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat > conftest.c <&1 >/dev/null | grep -q " -lunwind "; then + libc_cv_cc_with_libunwind=yes + else + libc_cv_cc_with_libunwind=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_cc_with_libunwind" >&5 +echo "${ECHO_T}$libc_cv_cc_with_libunwind" >&6 + + if test $libc_cv_cc_with_libunwind = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_CC_WITH_LIBUNWIND 1 +_ACEOF + + fi + echo "$as_me:$LINENO: checking for -z nodelete option" >&5 echo $ECHO_N "checking for -z nodelete option... $ECHO_C" >&6 if test "${libc_cv_z_nodelete+set}" = set; then @@ -5288,6 +5505,40 @@ echo "$as_me:$LINENO: result: $libc_cv_z echo "${ECHO_T}$libc_cv_z_initfirst" >&6 + echo "$as_me:$LINENO: checking for -z relro option" >&5 +echo $ECHO_N "checking for -z relro option... $ECHO_C" >&6 +if test "${libc_cv_z_relro+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + libc_cv_z_relro=no + if { ac_try='${CC-cc} -v --help 2>&1|grep "z relro" 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + if { ac_try='${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_z_relro=yes + fi + fi +fi +echo "$as_me:$LINENO: result: $libc_cv_z_relro" >&5 +echo "${ECHO_T}$libc_cv_z_relro" >&6 + + if test $libc_cv_z_relro = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_Z_RELRO 1 +_ACEOF + + fi + echo "$as_me:$LINENO: checking for -Bgroup option" >&5 echo $ECHO_N "checking for -Bgroup option... $ECHO_C" >&6 if test "${libc_cv_Bgroup+set}" = set; then @@ -5315,6 +5566,52 @@ echo "$as_me:$LINENO: result: $libc_cv_B echo "${ECHO_T}$libc_cv_Bgroup" >&6 + echo "$as_me:$LINENO: checking for libgcc_s suffix" >&5 +echo $ECHO_N "checking for libgcc_s suffix... $ECHO_C" >&6 +if test "${libc_cv_libgcc_s_suffix+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&1 >/dev/null \ + | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_libgcc_s_suffix" >&5 +echo "${ECHO_T}$libc_cv_libgcc_s_suffix" >&6 + + + echo "$as_me:$LINENO: checking for --as-needed option" >&5 +echo $ECHO_N "checking for --as-needed option... $ECHO_C" >&6 +if test "${libc_cv_as_needed+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_as_needed=yes + else + libc_cv_as_needed=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_as_needed" >&5 +echo "${ECHO_T}$libc_cv_as_needed" >&6 + + ASFLAGS_config= echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5 echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6 @@ -5428,6 +5725,7 @@ if test "${libc_cv_fpie+set}" = set; the else cat > conftest.c <&6 fi +echo "$as_me:$LINENO: checking for -fno-unit-at-a-time" >&5 +echo $ECHO_N "checking for -fno-unit-at-a-time... $ECHO_C" >&6 +if test "${libc_cv_fno_unit_at_a_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } +then + libc_cv_fno_unit_at_a_time=yes +else + libc_cv_fno_unit_at_a_time=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_fno_unit_at_a_time" >&5 +echo "${ECHO_T}$libc_cv_fno_unit_at_a_time" >&6 +if test $libc_cv_fno_unit_at_a_time = yes; then + fno_unit_at_a_time=-fno-unit-at-a-time +fi + + if test $elf != yes; then echo "$as_me:$LINENO: checking for .init and .fini sections" >&5 echo $ECHO_N "checking for .init and .fini sections... $ECHO_C" >&6 @@ -5456,7 +5783,6 @@ if test "${libc_cv_have_initfini+set}" = echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5475,11 +5801,21 @@ asm (".section .init"); _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5492,7 +5828,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 libc_cv_have_initfini=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $libc_cv_have_initfini" >&5 echo "${ECHO_T}$libc_cv_have_initfini" >&6 @@ -5548,7 +5884,6 @@ if test "${libc_cv_asm_underscores+set}" echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5565,11 +5900,21 @@ glibc_foobar (); _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5582,7 +5927,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 libc_cv_asm_underscores=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5 echo "${ECHO_T}$libc_cv_asm_underscores" >&6 @@ -5704,49 +6050,6 @@ _ACEOF fi -case "${host_cpu}-${host_os}" in - cris*) - libc_cv_asm_line_sep='@' - cat >>confdefs.h <<_ACEOF -#define ASM_LINE_SEP $libc_cv_asm_line_sep -_ACEOF - - ;; - hppa*linux*) - echo "$as_me:$LINENO: checking for assembler line separator" >&5 -echo $ECHO_N "checking for assembler line separator... $ECHO_C" >&6 -if test "${libc_cv_asm_line_sep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat > conftest.s <&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libc_cv_asm_line_sep='!' - else - if test -z "$enable_hacker_mode"; then - echo "*** You need a newer assembler to compile glibc" - rm -f conftest* - exit 1 - fi - libc_cv_asm_line_sep=';' - fi - rm -f conftest* -fi -echo "$as_me:$LINENO: result: $libc_cv_asm_line_sep" >&5 -echo "${ECHO_T}$libc_cv_asm_line_sep" >&6 - cat >>confdefs.h <<_ACEOF -#define ASM_LINE_SEP $libc_cv_asm_line_sep -_ACEOF - - ;; -esac - echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5 echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6 if test "${libc_cv_asm_cfi_directives+set}" = set; then @@ -5809,7 +6112,7 @@ if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && + (exit $ac_status); }; } && { ac_pattern='conftest\.S' { ac_try='readelf --debug-dump=line conftest.o | grep $ac_pattern 1>&5' @@ -5817,7 +6120,8 @@ if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); }; } + }; then libc_cv_cpp_asm_debuginfo=yes else libc_cv_cpp_asm_debuginfo=no @@ -5902,7 +6206,6 @@ if test "${libc_cv_c_asmcr0_bug+set}" = echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5919,11 +6222,21 @@ main () _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5936,7 +6249,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 libc_cv_c_asmcr0_bug='yes' fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $libc_cv_c_asmcr0_bug" >&5 echo "${ECHO_T}$libc_cv_c_asmcr0_bug" >&6 @@ -5999,7 +6312,7 @@ if { ac_try='$libc_unwind_check >&5' (exit $ac_status); }; } then if $libc_unwind_check -v 2>&1 >/dev/null \ - | grep -q -- --eh-frame-hdr; then + | grep -- --eh-frame-hdr 2>&1 >/dev/null; then libc_cv_gcc_dwarf2_unwind_info=no_registry_needed else libc_cv_gcc_dwarf2_unwind_info=static @@ -6260,7 +6573,6 @@ if test "$with_gd" != "no"; then old_LIBS="$LIBS" LIBS="$LIBS -lgd -lpng -lz -lm" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6277,11 +6589,21 @@ gdImagePng (0, 0) _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6294,7 +6616,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 LIBGD=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$old_CFLAGS" LDFLAGS="$old_LDFLAGS" LIBS="$old_LIBS" @@ -6305,6 +6628,156 @@ echo "$as_me:$LINENO: result: $LIBGD" >& echo "${ECHO_T}$LIBGD" >&6 +# SELinux detection +if test x$with_selinux = xno ; then + have_selinux=no; +else + # See if we have the SELinux library + echo "$as_me:$LINENO: checking for is_selinux_enabled in -lselinux" >&5 +echo $ECHO_N "checking for is_selinux_enabled in -lselinux... $ECHO_C" >&6 +if test "${ac_cv_lib_selinux_is_selinux_enabled+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lselinux $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char is_selinux_enabled (); +int +main () +{ +is_selinux_enabled (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_selinux_is_selinux_enabled=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_selinux_is_selinux_enabled=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5 +echo "${ECHO_T}$ac_cv_lib_selinux_is_selinux_enabled" >&6 +if test $ac_cv_lib_selinux_is_selinux_enabled = yes; then + have_selinux=yes +else + have_selinux=no +fi + + # See if we have the SELinux header with the NSCD permissions in it. + if test x$have_selinux = xyes ; then + echo "$as_me:$LINENO: checking for NSCD Flask permissions in selinux/av_permissions.h" >&5 +echo $ECHO_N "checking for NSCD Flask permissions in selinux/av_permissions.h... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +#ifdef NSCD__SHMEMHOST + return 0; + #else + #error NSCD__SHMEMHOST not defined + #endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + have_selinux=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +have_selinux=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + echo "$as_me:$LINENO: result: $have_selinux" >&5 +echo "${ECHO_T}$have_selinux" >&6 + fi + + if test x$with_selinux = xyes ; then + if test x$have_selinux = xno ; then + { { echo "$as_me:$LINENO: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&5 +echo "$as_me: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +# Check if we're building with SELinux support. +if test "x$have_selinux" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SELINUX 1 +_ACEOF + +fi + + echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 @@ -6327,7 +6800,6 @@ if test "${ac_cv_header_stdc+set}" = set echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6348,11 +6820,21 @@ main () _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6365,12 +6847,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6392,7 +6873,6 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6417,7 +6897,6 @@ if test $ac_cv_header_stdc = yes; then : else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6429,9 +6908,9 @@ cat >>conftest.$ac_ext <<_ACEOF # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif @@ -6442,7 +6921,7 @@ main () int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) + || toupper (i) != TOUPPER (i)) exit(2); exit (0); } @@ -6467,7 +6946,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi @@ -6492,7 +6971,7 @@ fi for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h + inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 @@ -6501,7 +6980,6 @@ if eval "test \"\${$as_ac_Header+set}\" echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6513,11 +6991,21 @@ $ac_includes_default _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6530,7 +7018,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 @@ -6550,7 +7038,6 @@ if test "${ac_cv_type_long_double+set}" echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6570,11 +7057,21 @@ if (sizeof (long double)) _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6587,7 +7084,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_long_double=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 echo "${ECHO_T}$ac_cv_type_long_double" >&6 @@ -6605,7 +7102,6 @@ else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6624,11 +7120,21 @@ test_array [0] = 0 _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6637,7 +7143,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6656,11 +7161,21 @@ test_array [0] = 0 _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6672,20 +7187,19 @@ else sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6704,11 +7218,21 @@ test_array [0] = 0 _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6717,7 +7241,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6736,11 +7259,21 @@ test_array [0] = 0 _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6752,13 +7285,13 @@ else sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 @@ -6766,14 +7299,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6792,11 +7324,21 @@ test_array [0] = 0 _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6809,7 +7351,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_double=$ac_lo;; @@ -6828,7 +7370,6 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -6890,7 +7431,7 @@ echo "$as_me: error: cannot compute size See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -6916,6 +7457,7 @@ use_ldconfig=no ldd_rewrite_script=no libc_cv_sysconfdir=$sysconfdir libc_cv_gcc_unwind_find_fde=no +libc_cv_idn=no # Iterate over all the sysdep directories we will use, running their # configure fragments, and looking for a uname implementation. @@ -7090,6 +7632,13 @@ if test $shared = default; then fi fi +if test x"$libc_cv_idn" = xyes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBIDN 1 +_ACEOF + +fi + echo "$as_me:$LINENO: checking whether -fPIC is default" >&5 echo $ECHO_N "checking whether -fPIC is default... $ECHO_C" >&6 if test "${pic_default+set}" = set; then @@ -7137,7 +7686,7 @@ RELEASE=`sed -n -e 's/^#define RELEASE " - ac_config_files="$ac_config_files config.make glibcbug ${config_makefile} ${config_uname}" + ac_config_files="$ac_config_files config.make ${config_makefile} ${config_uname}" ac_config_commands="$ac_config_commands default" @@ -7169,13 +7718,13 @@ _ACEOF # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | @@ -7205,13 +7754,13 @@ test "x$exec_prefix" = xNONE && exec_pre # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ + ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; +s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; -s/^[^=]*=[ ]*$//; +s/^[^=]*=[ ]*$//; }' fi @@ -7222,7 +7771,7 @@ ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' @@ -7266,9 +7815,10 @@ if test -n "${ZSH_VERSION+set}" && (emul elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi +DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false @@ -7287,7 +7837,7 @@ for as_var in \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var @@ -7466,16 +8016,17 @@ rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS @@ -7502,7 +8053,7 @@ _ASBOX cat >&5 <<_CSEOF This file was extended by GNU C Library $as_me (see version.h), which was -generated by GNU Autoconf 2.57. Invocation command line was +generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -7546,9 +8097,9 @@ Usage: $0 [OPTIONS] [FILE]... -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] - instantiate the configuration file FILE + instantiate the configuration file FILE --header=FILE[:TEMPLATE] - instantiate the configuration header FILE + instantiate the configuration header FILE Configuration files: $config_files @@ -7565,11 +8116,10 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ GNU C Library config.status (see version.h) -configured by $0, generated by GNU Autoconf 2.57, +configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir @@ -7676,7 +8226,6 @@ do case "$ac_config_target" in # Handling of arguments. "config.make" ) CONFIG_FILES="$CONFIG_FILES config.make" ;; - "glibcbug" ) CONFIG_FILES="$CONFIG_FILES glibcbug" ;; "${config_makefile}" ) CONFIG_FILES="$CONFIG_FILES ${config_makefile}" ;; "${config_uname}" ) CONFIG_FILES="$CONFIG_FILES ${config_uname}" ;; "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; @@ -7770,7 +8319,7 @@ s,@with_fp@,$with_fp,;t t s,@with_cvs@,$with_cvs,;t t s,@enable_check_abi@,$enable_check_abi,;t t s,@oldest_abi@,$oldest_abi,;t t -s,@subdirs@,$subdirs,;t t +s,@bindnow@,$bindnow,;t t s,@force_install@,$force_install,;t t s,@all_warnings@,$all_warnings,;t t s,@build@,$build,;t t @@ -7781,6 +8330,8 @@ s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t +s,@subdirs@,$subdirs,;t t +s,@add_ons@,$add_ons,;t t s,@base_machine@,$base_machine,;t t s,@sysnames@,$sysnames,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t @@ -7812,7 +8363,6 @@ s,@MSGFMT@,$MSGFMT,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@SED@,$SED,;t t s,@AUTOCONF@,$AUTOCONF,;t t -s,@CCVERSION@,$CCVERSION,;t t s,@SYSINCLUDES@,$SYSINCLUDES,;t t s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t s,@BASH@,$BASH,;t t @@ -7826,19 +8376,25 @@ s,@BISON@,$BISON,;t t s,@VERSIONING@,$VERSIONING,;t t s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t s,@libc_cv_initfinit_array@,$libc_cv_initfinit_array,;t t +s,@libc_cv_cc_with_libunwind@,$libc_cv_cc_with_libunwind,;t t s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t +s,@libc_cv_z_relro@,$libc_cv_z_relro,;t t s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t +s,@libc_cv_libgcc_s_suffix@,$libc_cv_libgcc_s_suffix,;t t +s,@libc_cv_as_needed@,$libc_cv_as_needed,;t t s,@ASFLAGS_config@,$ASFLAGS_config,;t t s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t s,@libc_cv_z_execstack@,$libc_cv_z_execstack,;t t s,@libc_cv_fpie@,$libc_cv_fpie,;t t +s,@fno_unit_at_a_time@,$fno_unit_at_a_time,;t t s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t s,@no_whole_archive@,$no_whole_archive,;t t s,@exceptions@,$exceptions,;t t s,@LIBGD@,$LIBGD,;t t +s,@have_selinux@,$have_selinux,;t t s,@EGREP@,$EGREP,;t t s,@sizeof_long_double@,$sizeof_long_double,;t t s,@libc_cv_gcc_unwind_find_fde@,$libc_cv_gcc_unwind_find_fde,;t t @@ -7901,9 +8457,9 @@ _ACEOF (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end @@ -7921,21 +8477,21 @@ for ac_file in : $CONFIG_FILES; do test # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } @@ -7951,10 +8507,10 @@ echo X"$ac_file" | as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } @@ -7992,12 +8548,45 @@ case $srcdir in ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac case $INSTALL in @@ -8019,7 +8608,7 @@ echo "$as_me: creating $ac_file" >&6;} configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." + sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. @@ -8028,24 +8617,24 @@ echo "$as_me: creating $ac_file" >&6;} case $f in -) echo $tmp/stdin ;; [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } - echo $f;; + echo "$f";; *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } - fi;; + fi;; esac done` || { (exit 1); exit 1; } _ACEOF @@ -8087,12 +8676,12 @@ cat >>$CONFIG_STATUS <<\_ACEOF # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' @@ -8101,11 +8690,11 @@ for ac_file in : $CONFIG_HEADERS; do tes # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac @@ -8119,28 +8708,29 @@ echo "$as_me: creating $ac_file" >&6;} case $f in -) echo $tmp/stdin ;; [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } - echo $f;; + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } - fi;; + fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF @@ -8163,9 +8753,9 @@ s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times @@ -8179,13 +8769,13 @@ rm -f confdef2sed.sed # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail @@ -8194,7 +8784,7 @@ do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS @@ -8221,7 +8811,7 @@ do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS @@ -8255,10 +8845,10 @@ echo "$as_me: $ac_file is unchanged" >&6 else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } @@ -8274,10 +8864,10 @@ echo X"$ac_file" | as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } @@ -8309,16 +8899,41 @@ for ac_file in : $CONFIG_COMMANDS; do te ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. if test "$ac_dir" != .; then @@ -8344,12 +8959,45 @@ case $srcdir in ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 @@ -8450,10 +9098,10 @@ echo "$as_me: configuring in $ac_dir" >& as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } @@ -8491,12 +9139,45 @@ case $srcdir in ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac cd $ac_dir @@ -8520,15 +9201,15 @@ echo "$as_me: WARNING: no configuration case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative path. - ac_sub_cache_file=$ac_top_builddir$cache_file ;; + ac_sub_cache_file=$ac_top_builddir$cache_file ;; esac { echo "$as_me:$LINENO: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval $ac_sub_configure $ac_sub_configure_args \ - --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir || - { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 + --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir || + { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} { (exit 1); exit 1; }; } fi diff -durpN glibc-2.3.3/configure.in glibc-2.3.4/configure.in --- glibc-2.3.3/configure.in 2003-11-11 19:37:03.000000000 -0500 +++ glibc-2.3.4/configure.in 2004-12-15 13:53:25.000000000 -0500 @@ -81,6 +81,11 @@ AC_ARG_WITH([elf], [if using the ELF object format]), [elf=$withval], [elf=no]) +AC_ARG_WITH([selinux], + AC_HELP_STRING([--with-selinux], + [if building with SELinux support]), + [with_selinux=$withval], + [with_selinux=auto]) AC_ARG_WITH([xcoff], AC_HELP_STRING([--with-xcoff], [if using the XCOFF object format]), @@ -175,18 +180,19 @@ AC_ARG_ENABLE([add-ons], [configure and build add-ons in DIR1,DIR2,... search for add-ons if no parameter given]), [case "$enableval" in yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'` + add_ons_automatic=yes test "$add_ons" = "*" && add_ons= ;; - *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; + *) add_ons=`echo "$enableval" | sed 's/,/ /g'` + add_ons_automatic=no ;; esac], - [add_ons=]) + [add_ons= add_ons_automatic=no]) dnl Let the user avoid using TLS. Don't know why but... -dnl XXX For now we disable support by default. AC_ARG_WITH([tls], AC_HELP_STRING([--with-tls], [enable support for TLS]), [usetls=$withval], - [usetls=no]) + [usetls=yes]) AC_ARG_WITH([__thread], AC_HELP_STRING([--without-__thread], @@ -203,37 +209,12 @@ if test "x$hidden" = xno; then AC_DEFINE(NO_HIDDEN) fi -AC_CONFIG_SUBDIRS([ ])dnl Bonehead new Autoconf whines if we do it cleanly. -add_ons_pfx= -if test x"$add_ons" != x; then - for f in $add_ons; do - # Some sanity checks - if test "$f" = "crypt"; then - AC_MSG_ERROR([ -*** It seems that you're using an old \`crypt' add-on. crypt is now -*** part of glibc and using the old add-on will not work with this -*** release. Start again with fresh sources and without the old -*** \`crypt' add-on.]) - fi - if test "$f" = "localedata"; then - AC_MSG_ERROR([ -*** It seems that you're using an old \`localedata' add-on. localedata -*** is now part of glibc and using the old add-on will not work with -*** this release. Start again with fresh sources and without the old -*** \`localedata' add-on.]) - fi - # Test whether such a subdir really exists. - if test -d $srcdir/$f; then - add_ons_pfx="$add_ons_pfx $f/" - dnl This variable is what AC_CONFIG_SUBDIRS is supposed to set, - dnl but the new Autoconf maintainers don't care about compatibility - dnl so we cannot use it normally any more without complaints. - subdirs="$subdirs $f" - else - AC_MSG_ERROR(add-on directory \"$f\" does not exist) - fi - done -fi +AC_ARG_ENABLE([bind-now], + AC_HELP_STRING([--enable-bind-now], + [disable lazy relocations in DSOs]), + [bindnow=$enableval], + [bindnow=no]) +AC_SUBST(bindnow) dnl On some platforms we cannot use dynamic loading. We must provide dnl static NSS modules. @@ -327,6 +308,9 @@ aix*) ;; esac +# The configure fragment of an add-on port can modify these to supplement +# or override the table in the case statement below. No fragment should +# ever change the config_* variables, however. machine=$config_machine vendor=$config_vendor os=$config_os @@ -344,6 +328,69 @@ case "$machine-$host_os" in ;; esac + +# An add-on can set this when it the tuple to disable the sanity check below. +libc_config_ok=no + +dnl Having this here, though empty, makes sure that if add-ons' fragments +dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then +dnl our AC_OUTPUT will actually use it. +AC_CONFIG_SUBDIRS() + +add_ons_sfx= +add_ons_pfx= +if test x"$add_ons" != x; then + for f in $add_ons; do + # Some sanity checks + case "$f" in + crypt) + AC_MSG_ERROR([ +*** It seems that you're using an old \`crypt' add-on. crypt is now +*** part of glibc and using the old add-on will not work with this +*** release. Start again with fresh sources and without the old +*** \`crypt' add-on.]) + ;; + localedata) + AC_MSG_ERROR([ +*** It seems that you're using an old \`localedata' add-on. localedata +*** is now part of glibc and using the old add-on will not work with +*** this release. Start again with fresh sources and without the old +*** \`localedata' add-on.]) + ;; + esac + + # Test whether such a subdir really exists. + test -d $srcdir/$f || { + AC_MSG_ERROR(add-on directory \"$f\" does not exist) + } + done + + # Now source each add-on's configure fragment. + # The fragments can use $srcdir/$libc_add_on to find themselves, + # and test $add_ons_automatic to see if they were explicitly requested. + # A fragment can clear (or even change) $libc_add_on to affect + # whether it goes into the list to be actually used in the build. + use_add_ons= + for libc_add_on in $add_ons; do + libc_add_on_frag=$srcdir/$libc_add_on/configure + if test -r $libc_add_on_frag; then + AC_MSG_RESULT(running configure fragment for add-on $libc_add_on) + . $libc_add_on_frag + else + AC_MSG_WARN(add-on fragment $libc_add_on_frag missing) + fi + if test -n "$libc_add_on"; then + use_add_ons="$use_add_ons $libc_add_on" + add_ons_pfx="$add_ons_pfx $libc_add_on/" + add_ons_sfx="$add_ons_sfx /$libc_add_on" + fi + done + # Use echo to strip excess whitespace. + add_ons="`echo $use_add_ons`" +fi +AC_SUBST(add_ons) + + ### ### I put this here to prevent those annoying emails from people who cannot ### read and try to compile glibc on unsupported platforms. --drepper @@ -352,7 +399,7 @@ esac ### one can skip this test to make the configuration not fail for unsupported ### platforms. ### -if test -z "$enable_hacker_mode"; then +if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then case "$machine-$host_os" in *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*) ;; @@ -371,8 +418,9 @@ fi dnl We need to use [ and ] for other purposes for a while now. changequote(,)dnl # Expand the configuration machine name into a subdirectory by architecture -# type and particular chip. -case "$machine" in +# type and particular chip. If an add-on configure fragment already set +# base_machine, we don't change it. +test -n "$base_machine" || case "$machine" in a29k | am29000) base_machine=a29k machine=a29k ;; alpha*) base_machine=alpha machine=alpha/$machine ;; arm*) base_machine=arm machine=arm/arm32/$machine ;; @@ -380,7 +428,7 @@ c3[012]) base_machine=cx0 machine=cx0/c3 c4[04]) base_machine=cx0 machine=cx0/c40 ;; hppa*64*) base_machine=hppa machine=hppa/hppa64 ;; hppa*) base_machine=hppa machine=hppa/hppa1.1 ;; -i[3456]86) base_machine=i386 machine=i386/$machine ;; +i[34567]86) base_machine=i386 machine=i386/$machine ;; ia64) base_machine=ia64 machine=ia64 ;; m680?0) base_machine=m68k machine=m68k/$machine ;; m68k) base_machine=m68k machine=m68k/m68020 ;; @@ -528,16 +576,18 @@ for d in $add_ons_pfx ''; do for o in /$ostry ''; do test "$o" = / && continue for m in $mach ''; do - if test "$m0$b$v$o$m"; then - try="${d}sysdeps$m0$b$v$o$m" - test -n "$enable_debug_configure" && - echo "$0 [DEBUG]: try $try" >&2 - if test -d $srcdir/$try; then - sysnames="$sysnames $try" - { test -n "$o" || test -n "$b"; } && os_used=t - { test -n "$m" || test -n "$m0"; } && machine_used=t + for a in $add_ons_sfx ''; do + if test "$m0$b$v$o$m"; then + try="${d}sysdeps$m0$b$v$o$m$a" + test -n "$enable_debug_configure" && + echo "$0 [DEBUG]: try $try" >&2 + if test -d $srcdir/$try; then + sysnames="$sysnames $try" + { test -n "$o" || test -n "$b"; } && os_used=t + { test -n "$m" || test -n "$m0"; } && machine_used=t + fi fi - fi + done done done done @@ -702,7 +752,7 @@ fi # These programs are version sensitive. AC_CHECK_TOOL_PREFIX AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v, - [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*], + [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]* | 4.[0-9]* ], critic_missing="$critic_missing gcc") AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, [GNU Make[^0-9]*\([0-9][0-9.]*\)], @@ -749,16 +799,13 @@ test -n "$aux_missing" && AC_MSG_WARN([ *** some features will be disabled. *** Check the INSTALL file for required versions.]) -# glibcbug.in wants to know the compiler version. -CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'` -AC_SUBST(CCVERSION) - # if using special system headers, find out the compiler's sekrit # header directory and add that to the list. NOTE: Only does the right # thing on a system that doesn't need fixincludes. (Not presently a problem.) if test -n "$sysheaders"; then ccheaders=`$CC -print-file-name=include` - SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders" + SYSINCLUDES="-nostdinc -isystem $ccheaders \ +-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`" fi AC_SUBST(SYSINCLUDES) @@ -989,13 +1036,6 @@ if test "x$libc_cv_asm_type_prefix" != x AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix}) fi -# The Aix ld uses global .symbol_names instead of symbol_names. -# Unfortunately also used in the PPC64 ELF ABI. -case "${os}${machine}" in -aix4.3* | linux*powerpc/powerpc64*) - AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME) -esac - AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive, [cat > conftest.s < conftest.c <&1 >/dev/null | grep -q " -lunwind "; then + libc_cv_cc_with_libunwind=yes + else + libc_cv_cc_with_libunwind=no + fi + rm -f conftest*]) + AC_SUBST(libc_cv_cc_with_libunwind) + if test $libc_cv_cc_with_libunwind = yes; then + AC_DEFINE(HAVE_CC_WITH_LIBUNWIND) + fi + AC_CACHE_CHECK(for -z nodelete option, libc_cv_z_nodelete, [dnl cat > conftest.c <&1|grep "z relro" 1>&AS_MESSAGE_LOG_FD]) + then + if AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&AS_MESSAGE_LOG_FD]) + then + libc_cv_z_relro=yes + fi + fi]) + AC_SUBST(libc_cv_z_relro) + if test $libc_cv_z_relro = yes; then + AC_DEFINE(HAVE_Z_RELRO) + fi + AC_CACHE_CHECK(for -Bgroup option, libc_cv_Bgroup, [dnl cat > conftest.c < conftest.c <&1 >/dev/null \ + | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` +changequote([,])dnl + rm -f conftest*]) + AC_SUBST(libc_cv_libgcc_s_suffix) + + AC_CACHE_CHECK(for --as-needed option, + libc_cv_as_needed, [dnl + cat > conftest.c <&AS_MESSAGE_LOG_FD]) + then + libc_cv_as_needed=yes + else + libc_cv_as_needed=no + fi + rm -f conftest*]) + AC_SUBST(libc_cv_as_needed) + ASFLAGS_config= AC_CACHE_CHECK(whether --noexecstack is desirable for .S files, libc_cv_as_noexecstack, [dnl @@ -1359,6 +1462,7 @@ EOF AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl cat > conftest.c <&AS_MESSAGE_LOG_FD]) @@ -1372,6 +1476,23 @@ EOF AC_SUBST(libc_cv_fpie) fi +AC_CACHE_CHECK(for -fno-unit-at-a-time, libc_cv_fno_unit_at_a_time, [dnl +cat > conftest.c <&AS_MESSAGE_LOG_FD]) +then + libc_cv_fno_unit_at_a_time=yes +else + libc_cv_fno_unit_at_a_time=no +fi +rm -f conftest*]) +if test $libc_cv_fno_unit_at_a_time = yes; then + fno_unit_at_a_time=-fno-unit-at-a-time +fi +AC_SUBST(fno_unit_at_a_time) + if test $elf != yes; then AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini, [AC_TRY_COMPILE(, [asm (".section .init"); @@ -1500,35 +1621,6 @@ elif test $libc_cv_asm_weakext_directive AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE) fi -dnl The standard hppa assembler uses `;' to start comments and `!' -dnl as a line separator. CRIS uses `;' to start comments and `@' for -dnl line separator. -case "${host_cpu}-${host_os}" in - cris*) - libc_cv_asm_line_sep='@' - AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep) - ;; - hppa*linux*) - AC_CACHE_CHECK(for assembler line separator, - libc_cv_asm_line_sep, [dnl - cat > conftest.s <&AS_MESSAGE_LOG_FD); then - libc_cv_asm_line_sep='!' - else - if test -z "$enable_hacker_mode"; then - echo "*** You need a newer assembler to compile glibc" - rm -f conftest* - exit 1 - fi - libc_cv_asm_line_sep=';' - fi - rm -f conftest*]) - AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep) - ;; -esac - AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl cat > conftest.s <&AS_MESSAGE_LOG_FD]) && +if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) && { ac_pattern='conftest\.S' AC_TRY_COMMAND([readelf --debug-dump=line conftest.o | - grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then + grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]) + }; then libc_cv_cpp_asm_debuginfo=yes else libc_cv_cpp_asm_debuginfo=no @@ -1670,7 +1763,7 @@ if AC_TRY_COMMAND([$libc_unwind_check >& AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD]) then if $libc_unwind_check -v 2>&1 >/dev/null \ - | grep -q -- --eh-frame-hdr; then + | grep -- --eh-frame-hdr 2>&1 >/dev/null; then libc_cv_gcc_dwarf2_unwind_info=no_registry_needed else libc_cv_gcc_dwarf2_unwind_info=static @@ -1843,6 +1936,38 @@ fi AC_MSG_RESULT($LIBGD) AC_SUBST(LIBGD) +# SELinux detection +if test x$with_selinux = xno ; then + have_selinux=no; +else + # See if we have the SELinux library + AC_CHECK_LIB(selinux, is_selinux_enabled, + have_selinux=yes, have_selinux=no) + # See if we have the SELinux header with the NSCD permissions in it. + if test x$have_selinux = xyes ; then + AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h]) + AC_TRY_COMPILE([#include ], + [#ifdef NSCD__SHMEMHOST + return 0; + #else + #error NSCD__SHMEMHOST not defined + #endif], + have_selinux=yes, have_selinux=no) + AC_MSG_RESULT($have_selinux) + fi + + if test x$with_selinux = xyes ; then + if test x$have_selinux = xno ; then + AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found]) + fi + fi +fi +# Check if we're building with SELinux support. +if test "x$have_selinux" = xyes; then + AC_DEFINE(HAVE_SELINUX,1,[SELinux support]) +fi +AC_SUBST(have_selinux) + dnl check for the size of 'long double'. AC_CHECK_SIZEOF(long double, 0) sizeof_long_double=$ac_cv_sizeof_long_double @@ -1856,6 +1981,7 @@ use_ldconfig=no ldd_rewrite_script=no libc_cv_sysconfdir=$sysconfdir libc_cv_gcc_unwind_find_fde=no +libc_cv_idn=no # Iterate over all the sysdep directories we will use, running their # configure fragments, and looking for a uname implementation. @@ -1998,6 +2124,10 @@ if test $shared = default; then fi fi +if test x"$libc_cv_idn" = xyes; then + AC_DEFINE(HAVE_LIBIDN) +fi + AC_CACHE_CHECK([whether -fPIC is default], pic_default, [pic_default=yes cat > conftest.c <> config.make;; diff -durpN glibc-2.3.3/conform/data/netinet/in.h-data glibc-2.3.4/conform/data/netinet/in.h-data --- glibc-2.3.3/conform/data/netinet/in.h-data 2001-08-18 07:06:38.000000000 -0400 +++ glibc-2.3.4/conform/data/netinet/in.h-data 2004-05-26 15:21:38.000000000 -0400 @@ -83,7 +83,6 @@ macro IN6_IS_ADDR_MC_SITELOCAL macro IN6_IS_ADDR_MC_ORGLOCAL macro IN6_IS_ADDR_MC_GLOBAL -allow IMPLINK_* allow IN_* allow IP_* allow IPPORT_* diff -durpN glibc-2.3.3/CONFORMANCE glibc-2.3.4/CONFORMANCE --- glibc-2.3.3/CONFORMANCE 2001-01-11 12:32:38.000000000 -0500 +++ glibc-2.3.4/CONFORMANCE 2004-04-17 13:43:48.000000000 -0400 @@ -13,41 +13,64 @@ The hdrchk test suite is available from ftp://ftp.rdg.opengroup.org/pub/unsupported/stdtools/hdrchk/ -I've last run the suite on 2000-08-13 on a Linux/ix86 system with the -following results [*]: +I've last run the suite on 2004-04-17 on a Linux/x86 system running +a Fedora Core 2 test 2 + updates with the following results [*]: FIPS No reported problems POSIX90 No reported problems - XPG3 No reported problems + XPG3 Prototypes are now in the correct header file - XPG4 No reported problems +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*** Starting unistd.h +Missing: extern char * cuserid(); +Missing: extern int rename(); +*** Completed unistd.h +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - POSIX96 Same as for UNIX98 (see below). - UNIX98 The message queue implementation is missing: + XPG4 Prototype is now in the correct header file + and the _POSIX2_C_VERSION symbol has been removed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/****** - Missing include file ******/ -/****** Start of Definitions for file mqueue.h ******/ -extern int mq_close(); -extern int mq_getattr(); -extern int mq_notify(); -extern mqd_t mq_open(); -extern ssize_t mq_receive(); -extern int mq_send(); -extern int mq_setattr(); -extern int mq_unlink(); -typedef mqd_t; -struct mq_attr { }; -struct sigevent { }; -/****** End of Definitions for file mqueue.h ******/ +*** Starting unistd.h +Missing: extern char * cuserid(); +Missing: #define _POSIX2_C_VERSION (-1L) +*** Completed unistd.h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + POSIX96 Prototype moved + (using "base realtime threads" subsets) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*** Starting unistd.h +Missing: extern int pthread_atfork(); +*** Completed unistd.h +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + UNIX98 Prototypes moved and _POSIX2_C_VERSION removed + (using "base realtime threads mse lfs" subset) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*** Starting unistd.h +Missing: extern char * cuserid(); +Missing: #define _POSIX2_C_VERSION (-1L) +Missing: extern int pthread_atfork(); +*** Completed unistd.h +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +That means all the reported issues are due to the headers having been +cleaned up for recent POSIX/Unix specification versions. Duplicated +prototypes have been removed and obsolete symbols have been removed. +Which means that as far as the tests performed by the script go, the +headers files comply to the current POSIX/Unix specification. + + [*] Since the scripts are not clever enough for the way gcc handles include files (namely, putting some of them in gcc-local directory) I copied over the iso646.h, float.h, and stddef.h headers and ignored the -problems resulting from the splitted limits.h file). +problems resulting from the split limits.h file). Technical C standards conformance issues in glibc @@ -84,17 +107,8 @@ fixed, or to compiler limitations. Defects in the C99 standard =========================== -The definition of macros such as INT8_C in and -is not implementable (Defect Report #209); this is expected to be -fixed in a Technical Corrigendum to make the macros yield a constant -expression of the promoted type (for example, int rather than char) -rather than needing to be able to represent constants of type char. -glibc follows this corrected version. - -Several of the functions are specified to return void, but -Defect Report #202 points out that under some circumstances they may -need to return an error status. They are expected to be corrected to -return int; glibc follows this corrected specification. +Some defects in C99 were corrected in Technical Corrigendum 1 to that +standard. glibc follows the corrected specification. Implementation of library functions @@ -147,8 +161,7 @@ builtins. For most of the headers required of freestanding implementations, glibc relies on GCC to provide correct versions. (At present, glibc -provides , and GCC doesn't.) GCC's is missing -FLT_EVAL_METHOD and DECIMAL_DIG. +provides , and GCC doesn't.) Implementing MATH_ERRNO, MATH_ERREXCEPT and math_errhandling in needs compiler support: see @@ -162,9 +175,9 @@ Issues with headers =================== There are various technical issues with the definitions contained in -glibc's headers, listed below. The list below assumes current CVS GCC -as of 2001-01-10, and relates to i686-linux; older GCC may lead to -more problems in the headers. +glibc's headers, listed below. The list below assumes GCC 3.3.2, and +relates to i686-linux; older GCC may lead to more problems in the +headers. Note that the _t suffix is reserved by POSIX, but not by pure ISO C. Also, the Single Unix Specification generally requires more types to @@ -173,12 +186,8 @@ than ISO C permits. should not declare size_t. - should not declare wchar_t. - should not declare size_t. - should not declare wchar_t. - should not declare or use wchar_t or wint_t. does not support AMD1; to support it, the functions diff -durpN glibc-2.3.3/cppflags-iterator.mk glibc-2.3.4/cppflags-iterator.mk --- glibc-2.3.3/cppflags-iterator.mk 2002-10-16 18:09:47.000000000 -0400 +++ glibc-2.3.4/cppflags-iterator.mk 2004-03-14 14:13:17.000000000 -0500 @@ -4,4 +4,4 @@ cpp-src := $(firstword $(cpp-srcs-left)) cpp-srcs-left := $(filter-out $(cpp-src),$(cpp-srcs-left)) -libof-$(cpp-src) := $(lib) +libof-$(notdir $(cpp-src)) := $(lib) diff -durpN glibc-2.3.3/crypt/crypt.h glibc-2.3.4/crypt/crypt.h --- glibc-2.3.3/crypt/crypt.h 2001-07-06 01:18:49.000000000 -0400 +++ glibc-2.3.4/crypt/crypt.h 2004-09-17 15:26:21.000000000 -0400 @@ -1,7 +1,7 @@ /* * UFC-crypt: ultra fast crypt(3) implementation * - * Copyright (C) 1991, 92, 93, 96, 97, 98, 2000 Free Software Foundation, Inc. + * Copyright (C) 1991,92,93,96,97,98,2000,2004 Free Software Foundation, Inc. * * The GNU C Library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -30,14 +30,15 @@ __BEGIN_DECLS /* Encrypt at most 8 characters from KEY using salt to perturb DES. */ -extern char *crypt (__const char *__key, __const char *__salt) __THROW; +extern char *crypt (__const char *__key, __const char *__salt) + __THROW __nonnull ((1, 2)); /* Setup DES tables according KEY. */ -extern void setkey (__const char *__key) __THROW; +extern void setkey (__const char *__key) __THROW __nonnull ((1)); /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt block in place. */ -extern void encrypt (char *__block, int __edflag) __THROW; +extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1)); #ifdef __USE_GNU /* Reentrant versions of the functions above. The additional argument @@ -57,13 +58,16 @@ struct crypt_data }; extern char *crypt_r (__const char *__key, __const char *__salt, - struct crypt_data * __restrict __data) __THROW; + struct crypt_data * __restrict __data) + __THROW __nonnull ((1, 2, 3)); extern void setkey_r (__const char *__key, - struct crypt_data * __restrict __data) __THROW; + struct crypt_data * __restrict __data) + __THROW __nonnull ((1, 2)); extern void encrypt_r (char *__block, int __edflag, - struct crypt_data * __restrict __data) __THROW; + struct crypt_data * __restrict __data) + __THROW __nonnull ((1, 3)); #endif __END_DECLS diff -durpN glibc-2.3.3/crypt/md5-crypt.c glibc-2.3.4/crypt/md5-crypt.c --- glibc-2.3.3/crypt/md5-crypt.c 2002-11-10 21:43:28.000000000 -0500 +++ glibc-2.3.4/crypt/md5-crypt.c 2004-06-09 22:15:47.000000000 -0400 @@ -1,6 +1,7 @@ /* One way encryption based on MD5 sum. Compatible with the behavior of MD5 crypt introduced in FreeBSD 2.0. - Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -250,15 +251,12 @@ __md5_crypt (const char *key, const char if (buflen < needed) { - char *new_buffer; - - buflen = needed; - - new_buffer = (char *) realloc (buffer, buflen); + char *new_buffer = (char *) realloc (buffer, needed); if (new_buffer == NULL) return NULL; buffer = new_buffer; + buflen = needed; } return __md5_crypt_r (key, salt, buffer, buflen); diff -durpN glibc-2.3.3/crypt/md5.h glibc-2.3.4/crypt/md5.h --- glibc-2.3.3/crypt/md5.h 2001-12-14 13:06:03.000000000 -0500 +++ glibc-2.3.4/crypt/md5.h 2004-09-14 00:24:53.000000000 -0400 @@ -1,6 +1,6 @@ /* Declaration of functions and data types used for MD5 sum computing library functions. - Copyright (C) 1995,1996,1997,1999,2000,2001 Free Software Foundation, Inc. + Copyright (C) 1995-1997,1999,2000,2001,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 @@ -74,13 +74,6 @@ typedef uintptr_t md5_uintptr; typedef unsigned long int md5_uintptr; #endif -#undef __P -#if defined (__STDC__) && __STDC__ -# define __P(x) x -#else -# define __P(x) () -#endif - /* Structure to save state of computation between the single steps. */ struct md5_ctx { @@ -101,21 +94,21 @@ struct md5_ctx /* Initialize structure containing state of computation. (RFC 1321, 3.3: Step 3) */ -extern void __md5_init_ctx __P ((struct md5_ctx *ctx)); +extern void __md5_init_ctx (struct md5_ctx *ctx) __THROW; /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is necessary that LEN is a multiple of 64!!! */ -extern void __md5_process_block __P ((const void *buffer, size_t len, - struct md5_ctx *ctx)); +extern void __md5_process_block (const void *buffer, size_t len, + struct md5_ctx *ctx) __THROW; /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is NOT required that LEN is a multiple of 64. */ -extern void __md5_process_bytes __P ((const void *buffer, size_t len, - struct md5_ctx *ctx)); +extern void __md5_process_bytes (const void *buffer, size_t len, + struct md5_ctx *ctx) __THROW; /* Process the remaining bytes in the buffer and put result from CTX in first 16 bytes following RESBUF. The result is always in little @@ -124,7 +117,7 @@ extern void __md5_process_bytes __P ((co IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ -extern void *__md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf)); +extern void *__md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) __THROW; /* Put result from CTX in first 16 bytes following RESBUF. The result is @@ -133,19 +126,19 @@ extern void *__md5_finish_ctx __P ((stru IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ -extern void *__md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf)); +extern void *__md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) __THROW; /* Compute MD5 message digest for bytes read from STREAM. The resulting message digest number will be written into the 16 bytes beginning at RESBLOCK. */ -extern int __md5_stream __P ((FILE *stream, void *resblock)); +extern int __md5_stream (FILE *stream, void *resblock) __THROW; /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. */ -extern void *__md5_buffer __P ((const char *buffer, size_t len, - void *resblock)); +extern void *__md5_buffer (const char *buffer, size_t len, + void *resblock) __THROW; #endif /* md5.h */ diff -durpN glibc-2.3.3/csu/elf-init.c glibc-2.3.4/csu/elf-init.c --- glibc-2.3.3/csu/elf-init.c 2003-05-21 15:37:48.000000000 -0400 +++ glibc-2.3.4/csu/elf-init.c 2004-08-16 00:51:00.000000000 -0400 @@ -7,6 +7,23 @@ License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + 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 diff -durpN glibc-2.3.3/csu/Makefile glibc-2.3.4/csu/Makefile --- glibc-2.3.3/csu/Makefile 2003-09-25 16:29:39.000000000 -0400 +++ glibc-2.3.4/csu/Makefile 2004-08-20 16:12:43.000000000 -0400 @@ -1,5 +1,5 @@ # Makefile for csu code for GNU C library. -# Copyright (C) 1995,96,97,98,99,2000,01,02,2003 Free Software Foundation, Inc. +# Copyright (C) 1995-2003, 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 @@ -104,7 +104,7 @@ 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 +CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) vpath initfini.c $(full_config_sysdirs) @@ -216,8 +216,10 @@ all-Banner-files = $(wildcard $(addsuffi $(objpfx)version-info.h: $(common-objpfx)config.make $(all-Banner-files) $(make-target-directory) (case $(config-os) in \ - linux*) version=`(echo -e "#include \nUTS_RELEASE"\ - | $(CC) $(CPPFLAGS) -E -P - | \ + linux*) version=`(printf '%s\n%s\n' \ + '#include ' \ + UTS_RELEASE \ + | $(CC) $(CPPFLAGS) -E -P - -DNOT_IN_libc=1 | \ sed -e 's/"\([^"]*\)".*/\1/p' -e d) 2>/dev/null`;\ if [ -z "$$version" ]; then \ if [ -r /proc/version ]; then \ @@ -231,8 +233,8 @@ $(objpfx)version-info.h: $(common-objpfx if [ -z "$$os" ]; then \ os=Linux; \ fi; \ - echo "\"Compiled on a $$os $$version system" \ - "on `date +%Y-%m-%d`.\\n\"" ;; \ + printf '"Compiled on a %s %s system on %s.\\n"\n' \ + "$$os" "$$version" "`date +%Y-%m-%d`";; \ *) ;; \ esac; \ files="$(all-Banner-files)"; \ diff -durpN glibc-2.3.3/csu/munch.awk glibc-2.3.4/csu/munch.awk --- glibc-2.3.3/csu/munch.awk 1998-05-08 16:39:50.000000000 -0400 +++ glibc-2.3.4/csu/munch.awk 2004-09-14 00:24:43.000000000 -0400 @@ -2,7 +2,7 @@ BEGIN { special = 0 } /EXTERNS/ { ndirs = split(subdirs, dirs) for (i = 1; i <= ndirs; ++i) - printf "extern void __init_%s __P ((int argc, char **argv, char **envp));\n", dirs[i] + printf "extern void __init_%s (int argc, char **argv, char **envp);\n", dirs[i] special = 1 } /CALLS/ { ndirs = split(subdirs, dirs) for (i = 1; i <= ndirs; ++i) printf " __init_%s (argc, argv, envp);\n", dirs[i] diff -durpN glibc-2.3.3/csu/tst-atomic.c glibc-2.3.4/csu/tst-atomic.c --- glibc-2.3.3/csu/tst-atomic.c 2003-05-10 01:26:12.000000000 -0400 +++ glibc-2.3.4/csu/tst-atomic.c 2004-09-08 11:23:17.000000000 -0400 @@ -1,5 +1,5 @@ /* Tests for atomic.h macros. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -130,6 +130,13 @@ do_test (void) ret = 1; } + mem = 2; + if (atomic_increment_val (&mem) != 3) + { + puts ("atomic_increment_val test failed"); + ret = 1; + } + mem = 0; if (atomic_increment_and_test (&mem) || mem != 1) @@ -162,6 +169,12 @@ do_test (void) ret = 1; } + if (atomic_decrement_val (&mem) != 15) + { + puts ("atomic_decrement_val test failed"); + ret = 1; + } + mem = 0; if (atomic_decrement_and_test (&mem) || mem != -1) diff -durpN glibc-2.3.3/csu/version.c glibc-2.3.4/csu/version.c --- glibc-2.3.3/csu/version.c 2003-01-02 15:12:02.000000000 -0500 +++ glibc-2.3.4/csu/version.c 2004-05-17 14:37:11.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1992-2002, 2003, 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 @@ -25,7 +25,7 @@ static const char __libc_version[] = VER static const char banner[] = "GNU C Library "RELEASE" release version "VERSION", by Roland McGrath et al.\n\ -Copyright (C) 2003 Free Software Foundation, Inc.\n\ +Copyright (C) 2004 Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions.\n\ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\ PARTICULAR PURPOSE.\n\ @@ -37,7 +37,8 @@ Compiled by GNU CC version "__VERSION__" #ifdef USE_TLS "Thread-local storage support included.\n" #endif -"Report bugs using the `glibcbug' script to .\n"; +"For bug reporting instructions, please see:\n\ +.\n"; #include diff -durpN glibc-2.3.3/ctype/ctype.h glibc-2.3.4/ctype/ctype.h --- glibc-2.3.3/ctype/ctype.h 2002-09-02 03:08:54.000000000 -0400 +++ glibc-2.3.4/ctype/ctype.h 2004-09-07 18:23:45.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,02 +/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -188,13 +188,13 @@ __exctype (_tolower); # ifdef __USE_EXTERN_INLINES extern __inline int -tolower (int __c) __THROW +__NTH (tolower (int __c)) { return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c; } extern __inline int -toupper (int __c) __THROW +__NTH (toupper (int __c)) { return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c; } diff -durpN glibc-2.3.3/.cvsignore glibc-2.3.4/.cvsignore --- glibc-2.3.3/.cvsignore 2002-12-06 06:07:54.000000000 -0500 +++ glibc-2.3.4/.cvsignore 2004-09-10 19:59:52.000000000 -0400 @@ -25,3 +25,5 @@ libc.proj .snprj TODO.html autom4te*.cache + +rtkaio diff -durpN glibc-2.3.3/debug/catchsegv.sh glibc-2.3.4/debug/catchsegv.sh --- glibc-2.3.3/debug/catchsegv.sh 2003-02-05 22:04:18.000000000 -0500 +++ glibc-2.3.4/debug/catchsegv.sh 2004-10-19 06:34:20.000000000 -0400 @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 1998, 1999, 2001, 2003 Free Software Foundation, Inc. +# Copyright (C) 1998, 1999, 2001, 2003, 2004 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1998. @@ -33,12 +33,13 @@ if test $# -eq 0; then echo 'Usage: catchsegv PROGRAM ARGS...' echo ' --help print this help, then exit' echo ' --version print version number, then exit' - echo "Report bugs using the \`glibcbug' script to ." + echo "For bug reporting instructions, please see:" + echo "." exit 0 ;; --v | --ve | --ver | --vers | --versi | --versio | --version) echo 'catchsegv (GNU libc) @VERSION@' - echo 'Copyright (C) 2003 Free Software Foundation, Inc. + echo 'Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper.' @@ -49,9 +50,7 @@ Written by Ulrich Drepper.' esac fi -segv_output=`basename "$prog"`.segv.$$ -# Make sure this output file does not exist. -rm -f "$segv_output" +segv_output=`mktemp ${TMPDIR:-/tmp}/segv_output.XXXXXX` || exit # Redirect stderr to avoid termination message from shell. (exec 3>&2 2>/dev/null @@ -64,7 +63,7 @@ exval=$? # Check for output. Even if the program terminated correctly it might # be that a minor process (clone) failed. Therefore we do not check the # exit code. -if test -f "$segv_output"; then +if test -s "$segv_output"; then # The program caught a signal. The output is in the file with the # name we have in SEGFAULT_OUTPUT_NAME. In the output the names of # functions in shared objects are available, but names in the static @@ -101,7 +100,7 @@ if test -f "$segv_output"; then ;; esac done) - rm -f "$segv_output" fi +rm -f "$segv_output" exit $exval diff -durpN glibc-2.3.3/debug/chk_fail.c glibc-2.3.4/debug/chk_fail.c --- glibc-2.3.3/debug/chk_fail.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/chk_fail.c 2004-11-12 22:11:28.000000000 -0500 @@ -0,0 +1,30 @@ + +/* 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. */ + +#include +#include + + +void +__attribute__ ((noreturn)) +__chk_fail (void) +{ + __libc_fatal ("*** buffer overflow detected ***\n"); +} +libc_hidden_def (__chk_fail) diff -durpN glibc-2.3.3/debug/execinfo.h glibc-2.3.4/debug/execinfo.h --- glibc-2.3.3/debug/execinfo.h 2001-07-06 00:54:45.000000000 -0400 +++ glibc-2.3.4/debug/execinfo.h 2004-10-22 17:07:57.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 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 @@ -25,19 +25,20 @@ __BEGIN_DECLS /* Store up to SIZE return address of the current program state in ARRAY and return the exact number of values stored. */ -extern int backtrace (void **__array, int __size) __THROW; +extern int backtrace (void **__array, int __size) __nonnull ((1)); /* Return names of functions from the backtrace list in ARRAY in a newly malloc()ed memory block. */ -extern char **backtrace_symbols (void *__const *__array, int __size) __THROW; +extern char **backtrace_symbols (void *__const *__array, int __size) + __THROW __nonnull ((1)); /* This function is similar to backtrace_symbols() but it writes the result immediately to a file and can therefore also be used in situations where malloc() is not usable anymore. */ -extern void backtrace_symbols_fd (void *__const *__array, int __size, - int __fd) __THROW; +extern void backtrace_symbols_fd (void *__const *__array, int __size, int __fd) + __THROW __nonnull ((1)); __END_DECLS diff -durpN glibc-2.3.3/debug/fprintf_chk.c glibc-2.3.4/debug/fprintf_chk.c --- glibc-2.3.3/debug/fprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/fprintf_chk.c 2004-11-18 18:20:53.000000000 -0500 @@ -0,0 +1,45 @@ +/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 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. */ + +#include +#include +#include "../libio/libioP.h" + + +/* Write formatted output to FP from the format string FORMAT. */ +int +__fprintf_chk (FILE *fp, int flag, const char *format, ...) +{ + va_list ap; + int done; + + _IO_acquire_lock (fp); + if (flag > 0) + fp->_flags2 |= _IO_FLAGS2_FORTIFY; + + va_start (ap, format); + done = vfprintf (fp, format, ap); + va_end (ap); + + if (flag > 0) + fp->_flags2 &= ~_IO_FLAGS2_FORTIFY; + _IO_release_lock (fp); + + return done; +} diff -durpN glibc-2.3.3/debug/gets_chk.c glibc-2.3.4/debug/gets_chk.c --- glibc-2.3.3/debug/gets_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/gets_chk.c 2004-10-18 00:17:18.000000000 -0400 @@ -0,0 +1,77 @@ +/* Copyright (C) 1993, 1996, 1997, 1998, 2002, 2003, 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. + + As a special exception, if you link the code in this file with + files compiled with a GNU compiler to produce an executable, + that does not cause the resulting executable to be covered by + the GNU Lesser General Public License. This exception does not + however invalidate any other reasons why the executable file + might be covered by the GNU Lesser General Public License. + This exception applies to code released by its copyright holders + in files containing the exception. */ + +#include "../libio/libioP.h" +#include + +char * +__gets_chk (char *buf, size_t size) +{ + _IO_size_t count; + int ch; + char *retval; + + if (size == 0) + __chk_fail (); + + _IO_acquire_lock (_IO_stdin); + ch = _IO_getc_unlocked (_IO_stdin); + if (ch == EOF) + { + retval = NULL; + goto unlock_return; + } + if (ch == '\n') + count = 0; + else + { + /* This is very tricky since a file descriptor may be in the + non-blocking mode. The error flag doesn't mean much in this + case. We return an error only when there is a new error. */ + int old_error = _IO_stdin->_IO_file_flags & _IO_ERR_SEEN; + _IO_stdin->_IO_file_flags &= ~_IO_ERR_SEEN; + buf[0] = (char) ch; + count = INTUSE(_IO_getline) (_IO_stdin, buf + 1, size - 1, '\n', 0) + 1; + if (_IO_stdin->_IO_file_flags & _IO_ERR_SEEN) + { + retval = NULL; + goto unlock_return; + } + else + _IO_stdin->_IO_file_flags |= old_error; + } + if (count >= size) + __chk_fail (); + buf[count] = 0; + retval = buf; +unlock_return: + _IO_release_lock (_IO_stdin); + return retval; +} + +link_warning (__gets_chk, "the `gets' function is dangerous and should not be used.") diff -durpN glibc-2.3.3/debug/Makefile glibc-2.3.4/debug/Makefile --- glibc-2.3.3/debug/Makefile 2001-08-29 18:45:25.000000000 -0400 +++ glibc-2.3.4/debug/Makefile 2004-10-19 12:04:30.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# Copyright (C) 1998, 1999, 2000, 2001, 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 @@ -24,11 +24,26 @@ subdir := debug headers := execinfo.h distribute = sigcontextinfo.h register-dump.h frame.h -routines := backtrace backtracesyms backtracesymsfd noophooks +routines := backtrace backtracesyms backtracesymsfd noophooks \ + memcpy_chk memmove_chk mempcpy_chk memset_chk stpcpy_chk \ + strcat_chk strcpy_chk strncat_chk strncpy_chk \ + sprintf_chk vsprintf_chk snprintf_chk vsnprintf_chk \ + printf_chk fprintf_chk vprintf_chk vfprintf_chk \ + gets_chk chk_fail readonly-area CFLAGS-backtrace.c = -fno-omit-frame-pointer +CFLAGS-sprintf_chk.c = -D_IO_MTSAFE_IO +CFLAGS-snprintf_chk.c = -D_IO_MTSAFE_IO +CFLAGS-vsprintf_chk.c = -D_IO_MTSAFE_IO +CFLAGS-vsnprintf_chk.c = -D_IO_MTSAFE_IO +CFLAGS-printf_chk.c = -D_IO_MTSAFE_IO $(exceptions) +CFLAGS-fprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) +CFLAGS-vprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) +CFLAGS-vfprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) +CFLAGS-gets_chk.c = -D_IO_MTSAFE_IO $(exceptions) -tests = backtrace-tst +tests = backtrace-tst tst-chk1 tst-chk2 tst-chk3 \ + test-strcpy_chk test-stpcpy_chk extra-libs = libSegFault libpcprofile extra-libs-others = $(extra-libs) @@ -57,7 +72,8 @@ include ../Rules $(objpfx)catchsegv: catchsegv.sh $(common-objpfx)soversions.mk \ $(common-objpfx)config.make - sed -e 's|@VERSION@|$(version)|' -e 's|@SLIB@|$(slibdir)|' $< > $@.new + slibpfx=`echo $(slibdir)|sed 's/lib\(64\|\)$$/\\\\\\\\$$LIB/'`; \ + sed -e 's|@VERSION@|$(version)|' -e "s|@SLIB@|$$slibpfx|" $< > $@.new chmod 555 $@.new mv -f $@.new $@ diff -durpN glibc-2.3.3/debug/pcprofiledump.c glibc-2.3.4/debug/pcprofiledump.c --- glibc-2.3.3/debug/pcprofiledump.c 2002-05-14 22:31:12.000000000 -0400 +++ glibc-2.3.4/debug/pcprofiledump.c 2004-05-17 14:37:11.000000000 -0400 @@ -197,7 +197,8 @@ more_help (int key, const char *text, vo case ARGP_KEY_HELP_EXTRA: /* We print some extra information. */ return strdup (gettext ("\ -Report bugs using the `glibcbug' script to .\n")); +For bug reporting instructions, please see:\n\ +.\n")); default: break; } diff -durpN glibc-2.3.3/debug/printf_chk.c glibc-2.3.4/debug/printf_chk.c --- glibc-2.3.3/debug/printf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/printf_chk.c 2004-11-18 18:20:53.000000000 -0500 @@ -0,0 +1,45 @@ +/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 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. */ + +#include +#include +#include "../libio/libioP.h" + + +/* Write formatted output to stdout from the format string FORMAT. */ +int +__printf_chk (int flag, const char *format, ...) +{ + va_list ap; + int done; + + _IO_acquire_lock (stdout); + if (flag > 0) + stdout->_flags2 |= _IO_FLAGS2_FORTIFY; + + va_start (ap, format); + done = vfprintf (stdout, format, ap); + va_end (ap); + + if (flag > 0) + stdout->_flags2 &= ~_IO_FLAGS2_FORTIFY; + _IO_release_lock (stdout); + + return done; +} diff -durpN glibc-2.3.3/debug/snprintf_chk.c glibc-2.3.4/debug/snprintf_chk.c --- glibc-2.3.3/debug/snprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/snprintf_chk.c 2004-10-18 00:17:17.000000000 -0400 @@ -0,0 +1,38 @@ +/* Copyright (C) 1991, 1995, 1997, 1998, 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. */ + +#include +#include + + +/* Write formatted output into S, according to the format + string FORMAT, writing no more than MAXLEN characters. */ +/* VARARGS5 */ +int +__snprintf_chk (char *s, size_t maxlen, int flags, size_t slen, + const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = __vsnprintf_chk (s, maxlen, flags, slen, format, arg); + va_end (arg); + + return done; +} diff -durpN glibc-2.3.3/debug/sprintf_chk.c glibc-2.3.4/debug/sprintf_chk.c --- glibc-2.3.3/debug/sprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/sprintf_chk.c 2004-10-18 00:17:17.000000000 -0400 @@ -0,0 +1,35 @@ +/* Copyright (C) 1991,1995,1997,1998,2002,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. */ + +#include +#include + +/* Write formatted output into S, according to the format string FORMAT. */ +/* VARARGS4 */ +int +__sprintf_chk (char *s, int flags, size_t slen, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = __vsprintf_chk (s, flags, slen, format, arg); + va_end (arg); + + return done; +} diff -durpN glibc-2.3.3/debug/test-stpcpy_chk.c glibc-2.3.4/debug/test-stpcpy_chk.c --- glibc-2.3.3/debug/test-stpcpy_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/test-stpcpy_chk.c 2004-10-18 00:17:17.000000000 -0400 @@ -0,0 +1,46 @@ +/* Test and measure stpcpy checking functions. + Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Jakub Jelinek , 1999. + + 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. */ + +#define STRCPY_RESULT(dst, len) ((dst) + (len)) +#define TEST_MAIN +#include "../string/test-string.h" + +extern void __attribute__ ((noreturn)) __chk_fail (void); +char *simple_stpcpy_chk (char *, const char *, size_t); +extern char *normal_stpcpy (char *, const char *, size_t) + __asm ("stpcpy"); +extern char *__stpcpy_chk (char *, const char *, size_t); + +IMPL (simple_stpcpy_chk, 0) +IMPL (normal_stpcpy, 1) +IMPL (__stpcpy_chk, 2) + +char * +simple_stpcpy_chk (char *dst, const char *src, size_t len) +{ + if (! len) + __chk_fail (); + while ((*dst++ = *src++) != '\0') + if (--len == 0) + __chk_fail (); + return dst - 1; +} + +#include "test-strcpy_chk.c" diff -durpN glibc-2.3.3/debug/test-strcpy_chk.c glibc-2.3.4/debug/test-strcpy_chk.c --- glibc-2.3.3/debug/test-strcpy_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/test-strcpy_chk.c 2004-11-12 22:12:23.000000000 -0500 @@ -0,0 +1,387 @@ +/* Test and measure __strcpy_chk functions. + Copyright (C) 1999, 2002, 2003, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Jakub Jelinek , 1999. + + 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. */ + +#ifndef STRCPY_RESULT +# define STRCPY_RESULT(dst, len) dst +# define TEST_MAIN +# include "../string/test-string.h" + +extern void __attribute__ ((noreturn)) __chk_fail (void); +char *simple_strcpy_chk (char *, const char *, size_t); +extern char *normal_strcpy (char *, const char *, size_t) + __asm ("strcpy"); +extern char *__strcpy_chk (char *, const char *, size_t); + +IMPL (simple_strcpy_chk, 0) +IMPL (normal_strcpy, 1) +IMPL (__strcpy_chk, 2) + +char * +simple_strcpy_chk (char *dst, const char *src, size_t len) +{ + char *ret = dst; + if (! len) + __chk_fail (); + while ((*dst++ = *src++) != '\0') + if (--len == 0) + __chk_fail (); + return ret; +} +#endif + +#include +#include +#include +#include + +volatile int chk_fail_ok; +jmp_buf chk_fail_buf; + +static void +handler (int sig) +{ + if (chk_fail_ok) + { + chk_fail_ok = 0; + longjmp (chk_fail_buf, 1); + } + else + _exit (127); +} + +typedef char *(*proto_t) (char *, const char *, size_t); + +static void +do_one_test (impl_t *impl, char *dst, const char *src, + size_t len, size_t dlen) +{ + char *res; + if (dlen <= len) + { + if (impl->test == 1) + return; + + chk_fail_ok = 1; + if (setjmp (chk_fail_buf) == 0) + { + res = CALL (impl, dst, src, dlen); + printf ("*** Function %s (%zd; %zd) did not __chk_fail\n", + impl->name, len, dlen); + chk_fail_ok = 0; + ret = 1; + } + return; + } + else + res = CALL (impl, dst, src, dlen); + + if (res != STRCPY_RESULT (dst, len)) + { + printf ("Wrong result in function %s %p %p\n", impl->name, + res, STRCPY_RESULT (dst, len)); + ret = 1; + return; + } + + if (strcmp (dst, src) != 0) + { + printf ("Wrong result in function %s dst \"%s\" src \"%s\"\n", + impl->name, dst, src); + ret = 1; + return; + } + + if (HP_TIMING_AVAIL) + { + hp_timing_t start __attribute ((unused)); + hp_timing_t stop __attribute ((unused));; + hp_timing_t best_time = ~ (hp_timing_t) 0; + size_t i; + + for (i = 0; i < 32; ++i) + { + HP_TIMING_NOW (start); + CALL (impl, dst, src, dlen); + HP_TIMING_NOW (stop); + HP_TIMING_BEST (best_time, start, stop); + } + + printf ("\t%zd", (size_t) best_time); + } +} + +static void +do_test (size_t align1, size_t align2, size_t len, size_t dlen, int max_char) +{ + size_t i; + char *s1, *s2; + + align1 &= 7; + if (align1 + len >= page_size) + return; + + align2 &= 7; + if (align2 + len >= page_size) + return; + + s1 = buf1 + align1; + s2 = buf2 + align2; + + for (i = 0; i < len; i++) + s1[i] = 32 + 23 * i % (max_char - 32); + s1[len] = 0; + + if (HP_TIMING_AVAIL && dlen > len) + printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); + + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, s1, len, dlen); + + if (HP_TIMING_AVAIL && dlen > len) + putchar ('\n'); +} + +static void +do_random_tests (void) +{ + size_t i, j, n, align1, align2, len, dlen; + unsigned char *p1 = buf1 + page_size - 512; + unsigned char *p2 = buf2 + page_size - 512; + unsigned char *res; + + for (n = 0; n < ITERATIONS; n++) + { + align1 = random () & 31; + if (random () & 1) + align2 = random () & 31; + else + align2 = align1 + (random () & 24); + len = random () & 511; + j = align1; + if (align2 > j) + j = align2; + if (len + j >= 511) + len = 510 - j - (random () & 7); + j = len + align1 + 64; + if (j > 512) + j = 512; + for (i = 0; i < j; i++) + { + if (i == len + align1) + p1[i] = 0; + else + { + p1[i] = random () & 255; + if (i >= align1 && i < len + align1 && !p1[i]) + p1[i] = (random () & 127) + 3; + } + } + + switch (random () & 7) + { + case 0: + dlen = len - (random () & 31); + if (dlen > len) + dlen = len; + break; + case 1: + dlen = (size_t) -1; + break; + case 2: + dlen = len + 1 + (random () & 65535); + break; + case 3: + dlen = len + 1 + (random () & 255); + break; + case 4: + dlen = len + 1 + (random () & 31); + break; + case 5: + dlen = len + 1 + (random () & 7); + break; + case 6: + dlen = len + 1 + (random () & 3); + break; + default: + dlen = len + 1; + break; + } + + FOR_EACH_IMPL (impl, 1) + { + if (dlen <= len) + { + if (impl->test != 1) + { + chk_fail_ok = 1; + if (setjmp (chk_fail_buf) == 0) + { + res = CALL (impl, p2 + align2, p1 + align1, dlen); + printf ("Iteration %zd - did not __chk_fail\n", n); + chk_fail_ok = 0; + ret = 1; + } + } + continue; + } + memset (p2 - 64, '\1', 512 + 64); + res = CALL (impl, p2 + align2, p1 + align1, dlen); + if (res != STRCPY_RESULT (p2 + align2, len)) + { + printf ("\ +Iteration %zd - wrong result in function %s (%zd, %zd, %zd) %p != %p\n", + n, impl->name, align1, align2, len, res, + STRCPY_RESULT (p2 + align2, len)); + ret = 1; + } + for (j = 0; j < align2 + 64; ++j) + { + if (p2[j - 64] != '\1') + { + printf ("\ +Iteration %zd - garbage before, %s (%zd, %zd, %zd)\n", + n, impl->name, align1, align2, len); + ret = 1; + break; + } + } + for (j = align2 + len + 1; j < 512; ++j) + { + if (p2[j] != '\1') + { + printf ("\ +Iteration %zd - garbage after, %s (%zd, %zd, %zd)\n", + n, impl->name, align1, align2, len); + ret = 1; + break; + } + } + if (memcmp (p1 + align1, p2 + align2, len + 1)) + { + printf ("\ +Iteration %zd - different strings, %s (%zd, %zd, %zd)\n", + n, impl->name, align1, align2, len); + ret = 1; + } + } + } +} + +int +test_main (void) +{ + size_t i; + + struct sigaction sa; + sa.sa_handler = handler; + sa.sa_flags = 0; + sigemptyset (&sa.sa_mask); + + sigaction (SIGABRT, &sa, NULL); + + /* Avoid all the buffer overflow messages on stderr. */ + int fd = open (_PATH_DEVNULL, O_WRONLY); + if (fd == -1) + close (STDERR_FILENO); + else + { + dup2 (fd, STDERR_FILENO); + close (fd); + } + setenv ("LIBC_FATAL_STDERR_", "1", 1); + + test_init (); + + printf ("%23s", ""); + FOR_EACH_IMPL (impl, 0) + printf ("\t%s", impl->name); + putchar ('\n'); + + for (i = 0; i < 16; ++i) + { + do_test (0, 0, i, i + 1, 127); + do_test (0, 0, i, i + 1, 255); + do_test (0, i, i, i + 1, 127); + do_test (i, 0, i, i + 1, 255); + } + + for (i = 1; i < 8; ++i) + { + do_test (0, 0, 8 << i, (8 << i) + 1, 127); + do_test (8 - i, 2 * i, (8 << i), (8 << i) + 1, 127); + } + + for (i = 1; i < 8; ++i) + { + do_test (i, 2 * i, (8 << i), (8 << i) + 1, 127); + do_test (2 * i, i, (8 << i), (8 << i) + 1, 255); + do_test (i, i, (8 << i), (8 << i) + 1, 127); + do_test (i, i, (8 << i), (8 << i) + 1, 255); + } + + for (i = 0; i < 16; ++i) + { + do_test (0, 0, i, i + 256, 127); + do_test (0, 0, i, i + 256, 255); + do_test (0, i, i, i + 256, 127); + do_test (i, 0, i, i + 256, 255); + } + + for (i = 1; i < 8; ++i) + { + do_test (0, 0, 8 << i, (8 << i) + 256, 127); + do_test (8 - i, 2 * i, (8 << i), (8 << i) + 256, 127); + } + + for (i = 1; i < 8; ++i) + { + do_test (i, 2 * i, (8 << i), (8 << i) + 256, 127); + do_test (2 * i, i, (8 << i), (8 << i) + 256, 255); + do_test (i, i, (8 << i), (8 << i) + 256, 127); + do_test (i, i, (8 << i), (8 << i) + 256, 255); + } + + for (i = 0; i < 16; ++i) + { + do_test (0, 0, i, i, 127); + do_test (0, 0, i, i + 2, 255); + do_test (0, i, i, i + 3, 127); + do_test (i, 0, i, i + 4, 255); + } + + for (i = 1; i < 8; ++i) + { + do_test (0, 0, 8 << i, (8 << i) - 15, 127); + do_test (8 - i, 2 * i, (8 << i), (8 << i) + 5, 127); + } + + for (i = 1; i < 8; ++i) + { + do_test (i, 2 * i, (8 << i), (8 << i) + i, 127); + do_test (2 * i, i, (8 << i), (8 << i) + (i - 1), 255); + do_test (i, i, (8 << i), (8 << i) + i + 2, 127); + do_test (i, i, (8 << i), (8 << i) + i + 3, 255); + } + + do_random_tests (); + return ret; +} + +#include "../test-skeleton.c" diff -durpN glibc-2.3.3/debug/tst-chk1.c glibc-2.3.4/debug/tst-chk1.c --- glibc-2.3.3/debug/tst-chk1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/tst-chk1.c 2004-11-18 18:23:17.000000000 -0500 @@ -0,0 +1,495 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2004. + + 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 +#include +#include +#include +#include +#include +#include + +char *temp_filename; +static void do_prepare (void); +static int do_test (void); +#define PREPARE(argc, argv) do_prepare () +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" + +static void +do_prepare (void) +{ + int temp_fd = create_temp_file ("tst-chk1.", &temp_filename); + if (temp_fd == -1) + { + printf ("cannot create temporary file: %m\n"); + exit (1); + } + + const char *strs = "abcdefgh\nABCDEFGHI\nabcdefghij\nABCDEFGHIJ"; + if (write (temp_fd, strs, strlen (strs)) != strlen (strs)) + { + puts ("could not write test strings into file"); + unlink (temp_filename); + exit (1); + } +} + +volatile int chk_fail_ok; +volatile int ret; +jmp_buf chk_fail_buf; + +static void +handler (int sig) +{ + if (chk_fail_ok) + { + chk_fail_ok = 0; + longjmp (chk_fail_buf, 1); + } + else + _exit (127); +} + +char buf[10]; +volatile size_t l0; +volatile char *p; +const char *str1 = "JIHGFEDCBA"; +const char *str2 = "F"; +const char *str3 = "%s%n%s%n"; +const char *str4 = "Hello, "; +const char *str5 = "World!\n"; +char buf2[10] = "%s"; +int num1 = 67; +int num2 = 987654; + +#define FAIL() \ + do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0) +#define CHK_FAIL_START \ + chk_fail_ok = 1; \ + if (! setjmp (chk_fail_buf)) \ + { +#define CHK_FAIL_END \ + chk_fail_ok = 0; \ + FAIL (); \ + } +#if __USE_FORTIFY_LEVEL >= 2 +#define CHK_FAIL2_START CHK_FAIL_START +#define CHK_FAIL2_END CHK_FAIL_END +#else +#define CHK_FAIL2_START +#define CHK_FAIL2_END +#endif + +static int +do_test (void) +{ + struct sigaction sa; + sa.sa_handler = handler; + sa.sa_flags = 0; + sigemptyset (&sa.sa_mask); + + sigaction (SIGABRT, &sa, NULL); + + /* Avoid all the buffer overflow messages on stderr. */ + int fd = open (_PATH_DEVNULL, O_WRONLY); + if (fd == -1) + close (STDERR_FILENO); + else + { + dup2 (fd, STDERR_FILENO); + close (fd); + } + setenv ("LIBC_FATAL_STDERR_", "1", 1); + + struct A { char buf1[9]; char buf2[1]; } a; + + printf ("Test checking routines at fortify level %d\n", +#ifdef __USE_FORTIFY_LEVEL + (int) __USE_FORTIFY_LEVEL +#else + 0 +#endif + ); + + /* These ops can be done without runtime checking of object size. */ + memcpy (buf, "abcdefghij", 10); + memmove (buf + 1, buf, 9); + if (memcmp (buf, "aabcdefghi", 10)) + FAIL (); + + if (mempcpy (buf + 5, "abcde", 5) != buf + 10 || memcmp (buf, "aabcdabcde", 10)) + FAIL (); + + memset (buf + 8, 'j', 2); + if (memcmp (buf, "aabcdabcjj", 10)) + FAIL (); + + strcpy (buf + 4, "EDCBA"); + if (memcmp (buf, "aabcEDCBA", 10)) + FAIL (); + + if (stpcpy (buf + 8, "F") != buf + 9 || memcmp (buf, "aabcEDCBF", 10)) + FAIL (); + + strncpy (buf + 6, "X", 4); + if (memcmp (buf, "aabcEDX\0\0", 10)) + FAIL (); + + if (sprintf (buf + 7, "%s", "67") != 2 || memcmp (buf, "aabcEDX67", 10)) + FAIL (); + + if (snprintf (buf + 7, 3, "%s", "987654") != 6 + || memcmp (buf, "aabcEDX98", 10)) + FAIL (); + + /* These ops need runtime checking, but shouldn't __chk_fail. */ + memcpy (buf, "abcdefghij", l0 + 10); + memmove (buf + 1, buf, l0 + 9); + if (memcmp (buf, "aabcdefghi", 10)) + FAIL (); + + if (mempcpy (buf + 5, "abcde", l0 + 5) != buf + 10 || memcmp (buf, "aabcdabcde", 10)) + FAIL (); + + memset (buf + 8, 'j', l0 + 2); + if (memcmp (buf, "aabcdabcjj", 10)) + FAIL (); + + strcpy (buf + 4, str1 + 5); + if (memcmp (buf, "aabcEDCBA", 10)) + FAIL (); + + if (stpcpy (buf + 8, str2) != buf + 9 || memcmp (buf, "aabcEDCBF", 10)) + FAIL (); + + strncpy (buf + 6, "X", l0 + 4); + if (memcmp (buf, "aabcEDX\0\0", 10)) + FAIL (); + + if (sprintf (buf + 7, "%d", num1) != 2 || memcmp (buf, "aabcEDX67", 10)) + FAIL (); + + if (snprintf (buf + 7, 3, "%d", num2) != 6 || memcmp (buf, "aabcEDX98", 10)) + FAIL (); + + buf[l0 + 8] = '\0'; + strcat (buf, "A"); + if (memcmp (buf, "aabcEDX9A", 10)) + FAIL (); + + buf[l0 + 7] = '\0'; + strncat (buf, "ZYXWV", l0 + 2); + if (memcmp (buf, "aabcEDXZY", 10)) + FAIL (); + + memcpy (a.buf1, "abcdefghij", l0 + 10); + memmove (a.buf1 + 1, a.buf1, l0 + 9); + if (memcmp (a.buf1, "aabcdefghi", 10)) + FAIL (); + + if (mempcpy (a.buf1 + 5, "abcde", l0 + 5) != a.buf1 + 10 + || memcmp (a.buf1, "aabcdabcde", 10)) + FAIL (); + + memset (a.buf1 + 8, 'j', l0 + 2); + if (memcmp (a.buf1, "aabcdabcjj", 10)) + FAIL (); + +#if __USE_FORTIFY_LEVEL < 2 + /* 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. */ + strcpy (a.buf1 + 4, str1 + 5); + if (memcmp (a.buf1, "aabcEDCBA", 10)) + FAIL (); + + if (stpcpy (a.buf1 + 8, str2) != a.buf1 + 9 || memcmp (a.buf1, "aabcEDCBF", 10)) + FAIL (); + + strncpy (a.buf1 + 6, "X", l0 + 4); + if (memcmp (a.buf1, "aabcEDX\0\0", 10)) + FAIL (); + + if (sprintf (a.buf1 + 7, "%d", num1) != 2 || memcmp (a.buf1, "aabcEDX67", 10)) + FAIL (); + + if (snprintf (a.buf1 + 7, 3, "%d", num2) != 6 + || memcmp (a.buf1, "aabcEDX98", 10)) + FAIL (); + + a.buf1[l0 + 8] = '\0'; + strcat (a.buf1, "A"); + if (memcmp (a.buf1, "aabcEDX9A", 10)) + FAIL (); + + a.buf1[l0 + 7] = '\0'; + strncat (a.buf1, "ZYXWV", l0 + 2); + if (memcmp (a.buf1, "aabcEDXZY", 10)) + FAIL (); + +#endif + +#if __USE_FORTIFY_LEVEL >= 1 + /* Now check if all buffer overflows are caught at runtime. */ + + CHK_FAIL_START + memcpy (buf + 1, "abcdefghij", l0 + 10); + CHK_FAIL_END + + CHK_FAIL_START + memmove (buf + 2, buf + 1, l0 + 9); + CHK_FAIL_END + + CHK_FAIL_START + p = mempcpy (buf + 6, "abcde", l0 + 5); + CHK_FAIL_END + + CHK_FAIL_START + memset (buf + 9, 'j', l0 + 2); + CHK_FAIL_END + + CHK_FAIL_START + strcpy (buf + 5, str1 + 5); + CHK_FAIL_END + + CHK_FAIL_START + p = stpcpy (buf + 9, str2); + CHK_FAIL_END + + CHK_FAIL_START + strncpy (buf + 7, "X", l0 + 4); + CHK_FAIL_END + + CHK_FAIL_START + sprintf (buf + 8, "%d", num1); + CHK_FAIL_END + + CHK_FAIL_START + snprintf (buf + 8, l0 + 3, "%d", num2); + CHK_FAIL_END + + memcpy (buf, str1 + 2, l0 + 9); + CHK_FAIL_START + strcat (buf, "AB"); + CHK_FAIL_END + + memcpy (buf, str1 + 3, l0 + 8); + CHK_FAIL_START + strncat (buf, "ZYXWV", l0 + 3); + CHK_FAIL_END + + CHK_FAIL_START + memcpy (a.buf1 + 1, "abcdefghij", l0 + 10); + CHK_FAIL_END + + CHK_FAIL_START + memmove (a.buf1 + 2, a.buf1 + 1, l0 + 9); + CHK_FAIL_END + + CHK_FAIL_START + p = mempcpy (a.buf1 + 6, "abcde", l0 + 5); + CHK_FAIL_END + + CHK_FAIL_START + memset (a.buf1 + 9, 'j', l0 + 2); + CHK_FAIL_END + +#if __USE_FORTIFY_LEVEL >= 2 +# define O 0 +#else +# define O 1 +#endif + + CHK_FAIL_START + strcpy (a.buf1 + (O + 4), str1 + 5); + CHK_FAIL_END + + CHK_FAIL_START + p = stpcpy (a.buf1 + (O + 8), str2); + CHK_FAIL_END + + CHK_FAIL_START + strncpy (a.buf1 + (O + 6), "X", l0 + 4); + CHK_FAIL_END + + CHK_FAIL_START + sprintf (a.buf1 + (O + 7), "%d", num1); + CHK_FAIL_END + + CHK_FAIL_START + snprintf (a.buf1 + (O + 7), l0 + 3, "%d", num2); + CHK_FAIL_END + + memcpy (a.buf1, str1 + (3 - O), l0 + 8 + O); + CHK_FAIL_START + strcat (a.buf1, "AB"); + CHK_FAIL_END + + memcpy (a.buf1, str1 + (4 - O), l0 + 7 + O); + CHK_FAIL_START + strncat (a.buf1, "ZYXWV", l0 + 3); + CHK_FAIL_END +#endif + + /* Now checks for %n protection. */ + + /* Constant literals passed directly are always ok + (even with warnings about possible bugs from GCC). */ + int n1, n2; + if (sprintf (buf, "%s%n%s%n", str2, &n1, str2, &n2) != 2 + || n1 != 1 || n2 != 2) + FAIL (); + + /* In this case the format string is not known at compile time, + but resides in read-only memory, so is ok. */ + if (snprintf (buf, 4, str3, str2, &n1, str2, &n2) != 2 + || n1 != 1 || n2 != 2) + FAIL (); + + strcpy (buf2 + 2, "%n%s%n"); + /* When the format string is writable and contains %n, + with -D_FORTIFY_SOURCE=2 it causes __chk_fail. */ + CHK_FAIL2_START + if (sprintf (buf, buf2, str2, &n1, str2, &n1) != 2) + FAIL (); + CHK_FAIL2_END + + CHK_FAIL2_START + if (snprintf (buf, 3, buf2, str2, &n1, str2, &n1) != 2) + FAIL (); + CHK_FAIL2_END + + /* But if there is no %n, even writable format string + should work. */ + buf2[6] = '\0'; + if (sprintf (buf, buf2 + 4, str2) != 1) + FAIL (); + + /* Constant literals passed directly are always ok + (even with warnings about possible bugs from GCC). */ + if (printf ("%s%n%s%n", str4, &n1, str5, &n2) != 14 + || n1 != 7 || n2 != 14) + FAIL (); + + /* In this case the format string is not known at compile time, + but resides in read-only memory, so is ok. */ + if (printf (str3, str4, &n1, str5, &n2) != 14 + || n1 != 7 || n2 != 14) + FAIL (); + + strcpy (buf2 + 2, "%n%s%n"); + /* When the format string is writable and contains %n, + with -D_FORTIFY_SOURCE=2 it causes __chk_fail. */ + CHK_FAIL2_START + if (printf (buf2, str4, &n1, str5, &n1) != 14) + FAIL (); + CHK_FAIL2_END + + /* But if there is no %n, even writable format string + should work. */ + buf2[6] = '\0'; + if (printf (buf2 + 4, str5) != 7) + FAIL (); + + FILE *fp = stdout; + + /* Constant literals passed directly are always ok + (even with warnings about possible bugs from GCC). */ + if (fprintf (fp, "%s%n%s%n", str4, &n1, str5, &n2) != 14 + || n1 != 7 || n2 != 14) + FAIL (); + + /* In this case the format string is not known at compile time, + but resides in read-only memory, so is ok. */ + if (fprintf (fp, str3, str4, &n1, str5, &n2) != 14 + || n1 != 7 || n2 != 14) + FAIL (); + + strcpy (buf2 + 2, "%n%s%n"); + /* When the format string is writable and contains %n, + with -D_FORTIFY_SOURCE=2 it causes __chk_fail. */ + CHK_FAIL2_START + if (fprintf (fp, buf2, str4, &n1, str5, &n1) != 14) + FAIL (); + CHK_FAIL2_END + + /* But if there is no %n, even writable format string + should work. */ + buf2[6] = '\0'; + if (fprintf (fp, buf2 + 4, str5) != 7) + FAIL (); + + if (freopen (temp_filename, "r", stdin) == NULL) + { + puts ("could not open temporary file"); + exit (1); + } + + if (gets (buf) != buf || memcmp (buf, "abcdefgh", 9)) + FAIL (); + if (gets (buf) != buf || memcmp (buf, "ABCDEFGHI", 10)) + FAIL (); + +#if __USE_FORTIFY_LEVEL >= 1 + CHK_FAIL_START + if (gets (buf) != buf) + FAIL (); + CHK_FAIL_END +#endif + + if (freopen (temp_filename, "r", stdin) == NULL) + { + puts ("could not open temporary file"); + exit (1); + } + + if (fseek (stdin, 9 + 10 + 11, SEEK_SET)) + { + puts ("could not seek in test file"); + exit (1); + } + +#if __USE_FORTIFY_LEVEL >= 1 + CHK_FAIL_START + if (gets (buf) != buf) + FAIL (); + CHK_FAIL_END +#endif + + /* Check whether missing N$ formats are detected. */ + CHK_FAIL2_START + printf ("%3$d\n", 1, 2, 3, 4); + CHK_FAIL2_END + + CHK_FAIL2_START + fprintf (stdout, "%3$d\n", 1, 2, 3, 4); + CHK_FAIL2_END + + CHK_FAIL2_START + sprintf (buf, "%3$d\n", 1, 2, 3, 4); + CHK_FAIL2_END + + CHK_FAIL2_START + snprintf (buf, sizeof (buf), "%3$d\n", 1, 2, 3, 4); + CHK_FAIL2_END + + return ret; +} diff -durpN glibc-2.3.3/debug/tst-chk2.c glibc-2.3.4/debug/tst-chk2.c --- glibc-2.3.3/debug/tst-chk2.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/tst-chk2.c 2004-10-18 00:17:17.000000000 -0400 @@ -0,0 +1,2 @@ +#define _FORTIFY_SOURCE 1 +#include "tst-chk1.c" diff -durpN glibc-2.3.3/debug/tst-chk3.c glibc-2.3.4/debug/tst-chk3.c --- glibc-2.3.3/debug/tst-chk3.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/tst-chk3.c 2004-10-18 00:17:17.000000000 -0400 @@ -0,0 +1,2 @@ +#define _FORTIFY_SOURCE 2 +#include "tst-chk1.c" diff -durpN glibc-2.3.3/debug/Versions glibc-2.3.4/debug/Versions --- glibc-2.3.3/debug/Versions 1999-08-18 03:20:23.000000000 -0400 +++ glibc-2.3.4/debug/Versions 2004-10-18 00:17:18.000000000 -0400 @@ -10,4 +10,12 @@ libc { # These are to support some gcc features. __cyg_profile_func_enter; __cyg_profile_func_exit; } + GLIBC_2.3.4 { + __chk_fail; + __memcpy_chk; __memmove_chk; __mempcpy_chk; __memset_chk; __stpcpy_chk; + __strcat_chk; __strcpy_chk; __strncat_chk; __strncpy_chk; + __sprintf_chk; __vsprintf_chk; __snprintf_chk; __vsnprintf_chk; + __printf_chk; __fprintf_chk; __vprintf_chk; __vfprintf_chk; + __gets_chk; + } } diff -durpN glibc-2.3.3/debug/vfprintf_chk.c glibc-2.3.4/debug/vfprintf_chk.c --- glibc-2.3.3/debug/vfprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/vfprintf_chk.c 2004-11-18 18:20:53.000000000 -0500 @@ -0,0 +1,42 @@ +/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 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. */ + +#include +#include +#include "../libio/libioP.h" + + +/* Write formatted output to FP from the format string FORMAT. */ +int +__vfprintf_chk (FILE *fp, int flag, const char *format, va_list ap) +{ + int done; + + _IO_acquire_lock (fp); + if (flag > 0) + fp->_flags2 |= _IO_FLAGS2_FORTIFY; + + done = vfprintf (fp, format, ap); + + if (flag > 0) + fp->_flags2 &= ~_IO_FLAGS2_FORTIFY; + _IO_release_lock (fp); + + return done; +} diff -durpN glibc-2.3.3/debug/vprintf_chk.c glibc-2.3.4/debug/vprintf_chk.c --- glibc-2.3.3/debug/vprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/vprintf_chk.c 2004-11-18 18:20:53.000000000 -0500 @@ -0,0 +1,42 @@ +/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 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. */ + +#include +#include +#include "../libio/libioP.h" + + +/* Write formatted output to stdout from the format string FORMAT. */ +int +__vprintf_chk (int flag, const char *format, va_list ap) +{ + int done; + + _IO_acquire_lock (stdout); + if (flag > 0) + stdout->_flags2 |= _IO_FLAGS2_FORTIFY; + + done = vfprintf (stdout, format, ap); + + if (flag > 0) + stdout->_flags2 &= ~_IO_FLAGS2_FORTIFY; + _IO_release_lock (stdout); + + return done; +} diff -durpN glibc-2.3.3/debug/vsnprintf_chk.c glibc-2.3.4/debug/vsnprintf_chk.c --- glibc-2.3.3/debug/vsnprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/vsnprintf_chk.c 2004-11-18 18:20:53.000000000 -0500 @@ -0,0 +1,70 @@ +/* Copyright (C) 1991, 1995, 1997, 1998, 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. */ + +#include +#include +#include "../libio/libioP.h" +#include "../libio/strfile.h" + +extern const struct _IO_jump_t _IO_strn_jumps attribute_hidden; + +/* Write formatted output into S, according to the format + string FORMAT, writing no more than MAXLEN characters. */ +/* VARARGS5 */ +int +__vsnprintf_chk (char *s, size_t maxlen, int flags, size_t slen, + const char *format, va_list args) +{ + /* XXX Maybe for less strict version do not fail immediately. + Though, maxlen is supposed to be the size of buffer pointed + to by s, so a conforming program can't pass such maxlen + to *snprintf. */ + if (__builtin_expect (slen < maxlen, 0)) + __chk_fail (); + + _IO_strnfile sf; + int ret; +#ifdef _IO_MTSAFE_IO + sf.f._sbf._f._lock = NULL; +#endif + + /* We need to handle the special case where MAXLEN is 0. Use the + overflow buffer right from the start. */ + if (maxlen == 0) + { + s = sf.overflow_buf; + maxlen = sizeof (sf.overflow_buf); + } + + _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; + s[0] = '\0'; + + /* For flags > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n + can only come from read-only format strings. */ + if (flags > 0) + 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); + + if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf) + *sf.f._sbf._f._IO_write_ptr = '\0'; + return ret; +} +libc_hidden_def (__vsnprintf_chk) diff -durpN glibc-2.3.3/debug/vsprintf_chk.c glibc-2.3.4/debug/vsprintf_chk.c --- glibc-2.3.3/debug/vsprintf_chk.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/debug/vsprintf_chk.c 2004-11-18 18:20:53.000000000 -0500 @@ -0,0 +1,91 @@ +/* Copyright (C) 1994, 1997, 1999-2003, 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. */ + +#include +#include +#include "../libio/libioP.h" +#include "../libio/strfile.h" + + +static int _IO_str_chk_overflow (_IO_FILE *fp, int c) __THROW; + +static int +_IO_str_chk_overflow (fp, c) + _IO_FILE *fp; + int c; +{ + /* When we come to here this means the user supplied buffer is + filled. */ + __chk_fail (); +} + + +static const struct _IO_jump_t _IO_str_chk_jumps = +{ + JUMP_INIT_DUMMY, + JUMP_INIT(finish, _IO_str_finish), + JUMP_INIT(overflow, _IO_str_chk_overflow), + JUMP_INIT(underflow, INTUSE(_IO_str_underflow)), + JUMP_INIT(uflow, INTUSE(_IO_default_uflow)), + JUMP_INIT(pbackfail, INTUSE(_IO_str_pbackfail)), + JUMP_INIT(xsputn, INTUSE(_IO_default_xsputn)), + JUMP_INIT(xsgetn, INTUSE(_IO_default_xsgetn)), + JUMP_INIT(seekoff, INTUSE(_IO_str_seekoff)), + JUMP_INIT(seekpos, _IO_default_seekpos), + JUMP_INIT(setbuf, _IO_default_setbuf), + JUMP_INIT(sync, _IO_default_sync), + JUMP_INIT(doallocate, INTUSE(_IO_default_doallocate)), + JUMP_INIT(read, _IO_default_read), + JUMP_INIT(write, _IO_default_write), + JUMP_INIT(seek, _IO_default_seek), + JUMP_INIT(close, _IO_default_close), + JUMP_INIT(stat, _IO_default_stat), + JUMP_INIT(showmanyc, _IO_default_showmanyc), + JUMP_INIT(imbue, _IO_default_imbue) +}; + + +int +__vsprintf_chk (char *s, int flags, size_t slen, const char *format, + va_list args) +{ + _IO_strfile f; + int ret; +#ifdef _IO_MTSAFE_IO + f._sbf._f._lock = NULL; +#endif + + if (slen == 0) + __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; + s[0] = '\0'; + _IO_str_init_static_internal (&f, s, slen - 1, s); + + /* For flags > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n + can only come from read-only format strings. */ + if (flags > 0) + f._sbf._f._flags2 |= _IO_FLAGS2_FORTIFY; + + ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &f._sbf, format, args); + + *f._sbf._f._IO_write_ptr = '\0'; + return ret; +} +libc_hidden_def (__vsprintf_chk) diff -durpN glibc-2.3.3/debug/xtrace.sh glibc-2.3.4/debug/xtrace.sh --- glibc-2.3.3/debug/xtrace.sh 2003-01-02 15:12:03.000000000 -0500 +++ glibc-2.3.4/debug/xtrace.sh 2004-06-15 16:10:06.000000000 -0400 @@ -1,5 +1,5 @@ #! @BASH@ -# Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1999. @@ -20,6 +20,7 @@ pcprofileso=@SLIBDIR@/libpcprofile.so pcprofiledump=@BINDIR@/pcprofiledump +TEXTDOMAIN=libc # Print usage message. do_usage() { @@ -53,16 +54,19 @@ do_help() { Mandatory arguments to long options are also mandatory for any corresponding short options. -Report bugs using the \`glibcbug' script to .\n" +For bug reporting instructions, please see: +.\n" exit 0 } do_version() { echo 'xtrace (GNU libc) @VERSION@' - echo $"Copyright (C) 2003 Free Software Foundation, Inc. + printf $"Copyright (C) %s Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -Written by Ulrich Drepper." +" "2004" + printf $"Written by %s. +" "Ulrich Drepper" exit 0 } @@ -139,7 +143,7 @@ fi program=$1 shift if test ! -f "$program"; then - printf >2& $"executable \`$program' not found\n" + printf >&2 $"executable \`$program' not found\n" help_info fi if test ! -x "$program"; then diff -durpN glibc-2.3.3/dirent/dirent.h glibc-2.3.4/dirent/dirent.h --- glibc-2.3.3/dirent/dirent.h 2003-09-14 16:21:43.000000000 -0400 +++ glibc-2.3.4/dirent/dirent.h 2004-11-22 04:53:34.000000000 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1999, 2000, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1991-2000, 2003, 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 @@ -132,14 +132,14 @@ typedef struct __dirstream DIR; This function is a possible cancellation point and therefore not marked with __THROW. */ -extern DIR *opendir (__const char *__name); +extern DIR *opendir (__const char *__name) __nonnull ((1)); /* Close the directory stream DIRP. Return 0 if successful, -1 if not. This function is a possible cancellation point and therefore not marked with __THROW. */ -extern int closedir (DIR *__dirp); +extern int closedir (DIR *__dirp) __nonnull ((1)); /* Read a directory entry from DIRP. Return a pointer to a `struct dirent' describing the entry, or NULL for EOF or error. The @@ -152,17 +152,18 @@ extern int closedir (DIR *__dirp); This function is a possible cancellation point and therefore not marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 -extern struct dirent *readdir (DIR *__dirp); +extern struct dirent *readdir (DIR *__dirp) __nonnull ((1)); #else # ifdef __REDIRECT -extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64); +extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64) + __nonnull ((1)); # else # define readdir readdir64 # endif #endif #ifdef __USE_LARGEFILE64 -extern struct dirent64 *readdir64 (DIR *__dirp); +extern struct dirent64 *readdir64 (DIR *__dirp) __nonnull ((1)); #endif #if defined __USE_POSIX || defined __USE_MISC @@ -174,14 +175,15 @@ extern struct dirent64 *readdir64 (DIR * # ifndef __USE_FILE_OFFSET64 extern int readdir_r (DIR *__restrict __dirp, struct dirent *__restrict __entry, - struct dirent **__restrict __result); + struct dirent **__restrict __result) + __nonnull ((1, 2, 3)); # else # ifdef __REDIRECT extern int __REDIRECT (readdir_r, (DIR *__restrict __dirp, struct dirent *__restrict __entry, struct dirent **__restrict __result), - readdir64_r); + readdir64_r) __nonnull ((1, 2, 3)); # else # define readdir_r readdir64_r # endif @@ -190,27 +192,28 @@ extern int __REDIRECT (readdir_r, # ifdef __USE_LARGEFILE64 extern int readdir64_r (DIR *__restrict __dirp, struct dirent64 *__restrict __entry, - struct dirent64 **__restrict __result); + struct dirent64 **__restrict __result) + __nonnull ((1, 2, 3)); # endif #endif /* POSIX or misc */ /* Rewind DIRP to the beginning of the directory. */ -extern void rewinddir (DIR *__dirp) __THROW; +extern void rewinddir (DIR *__dirp) __THROW __nonnull ((1)); #if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN # include /* Seek to position POS on DIRP. */ -extern void seekdir (DIR *__dirp, long int __pos) __THROW; +extern void seekdir (DIR *__dirp, long int __pos) __THROW __nonnull ((1)); /* Return the current position of DIRP. */ -extern long int telldir (DIR *__dirp) __THROW; +extern long int telldir (DIR *__dirp) __THROW __nonnull ((1)); #endif #if defined __USE_BSD || defined __USE_MISC /* Return the file descriptor used by DIRP. */ -extern int dirfd (DIR *__dirp) __THROW; +extern int dirfd (DIR *__dirp) __THROW __nonnull ((1)); # if defined __OPTIMIZE__ && defined _DIR_dirfd # define dirfd(dirp) _DIR_dirfd (dirp) @@ -239,7 +242,8 @@ extern int dirfd (DIR *__dirp) __THROW; extern int scandir (__const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (__const struct dirent *), - int (*__cmp) (__const void *, __const void *)); + int (*__cmp) (__const void *, __const void *)) + __nonnull ((1, 2)); # else # ifdef __REDIRECT extern int __REDIRECT (scandir, @@ -247,7 +251,7 @@ extern int __REDIRECT (scandir, struct dirent ***__restrict __namelist, int (*__selector) (__const struct dirent *), int (*__cmp) (__const void *, __const void *)), - scandir64); + scandir64) __nonnull ((1, 2)); # else # define scandir scandir64 # endif @@ -259,18 +263,19 @@ extern int __REDIRECT (scandir, extern int scandir64 (__const char *__restrict __dir, struct dirent64 ***__restrict __namelist, int (*__selector) (__const struct dirent64 *), - int (*__cmp) (__const void *, __const void *)); + int (*__cmp) (__const void *, __const void *)) + __nonnull ((1, 2)); # endif /* Function to compare two `struct dirent's alphabetically. */ # ifndef __USE_FILE_OFFSET64 extern int alphasort (__const void *__e1, __const void *__e2) - __THROW __attribute_pure__; + __THROW __attribute_pure__ __nonnull ((1, 2)); # else # ifdef __REDIRECT -extern int __REDIRECT (alphasort, - (__const void *__e1, __const void *__e2) __THROW, - alphasort64) __attribute_pure__; +extern int __REDIRECT_NTH (alphasort, + (__const void *__e1, __const void *__e2), + alphasort64) __attribute_pure__ __nonnull ((1, 2)); # else # define alphasort alphasort64 # endif @@ -278,19 +283,20 @@ extern int __REDIRECT (alphasort, # if defined __USE_GNU && defined __USE_LARGEFILE64 extern int alphasort64 (__const void *__e1, __const void *__e2) - __THROW __attribute_pure__; + __THROW __attribute_pure__ __nonnull ((1, 2)); # endif # ifdef __USE_GNU /* Function to compare two `struct dirent's by name & version. */ # ifndef __USE_FILE_OFFSET64 extern int versionsort (__const void *__e1, __const void *__e2) - __THROW __attribute_pure__; + __THROW __attribute_pure__ __nonnull ((1, 2)); # else # ifdef __REDIRECT -extern int __REDIRECT (versionsort, - (__const void *__e1, __const void *__e2) __THROW, - versionsort64) __attribute_pure__; +extern int __REDIRECT_NTH (versionsort, + (__const void *__e1, __const void *__e2), + versionsort64) + __attribute_pure__ __nonnull ((1, 2)); # else # define versionsort versionsort64 # endif @@ -298,7 +304,7 @@ extern int __REDIRECT (versionsort, # ifdef __USE_LARGEFILE64 extern int versionsort64 (__const void *__e1, __const void *__e2) - __THROW __attribute_pure__; + __THROW __attribute_pure__ __nonnull ((1, 2)); # endif # endif @@ -309,14 +315,15 @@ extern int versionsort64 (__const void * # ifndef __USE_FILE_OFFSET64 extern __ssize_t getdirentries (int __fd, char *__restrict __buf, size_t __nbytes, - __off_t *__restrict __basep) __THROW; + __off_t *__restrict __basep) + __THROW __nonnull ((2, 4)); # else # ifdef __REDIRECT -extern __ssize_t __REDIRECT (getdirentries, - (int __fd, char *__restrict __buf, - size_t __nbytes, - __off64_t *__restrict __basep) __THROW, - getdirentries64); +extern __ssize_t __REDIRECT_NTH (getdirentries, + (int __fd, char *__restrict __buf, + size_t __nbytes, + __off64_t *__restrict __basep), + getdirentries64) __nonnull ((2, 4)); # else # define getdirentries getdirentries64 # endif @@ -325,7 +332,8 @@ extern __ssize_t __REDIRECT (getdirentri # ifdef __USE_LARGEFILE64 extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, size_t __nbytes, - __off64_t *__restrict __basep) __THROW; + __off64_t *__restrict __basep) + __THROW __nonnull ((2, 4)); # endif #endif /* Use BSD or misc. */ diff -durpN glibc-2.3.3/dlfcn/bug-dlsym1.c glibc-2.3.4/dlfcn/bug-dlsym1.c --- glibc-2.3.3/dlfcn/bug-dlsym1.c 2002-08-21 19:03:46.000000000 -0400 +++ glibc-2.3.4/dlfcn/bug-dlsym1.c 2004-10-18 14:53:53.000000000 -0400 @@ -10,8 +10,6 @@ int main(void) void *handle; char *c; - setenv ("LD_LIBRARY_PATH", "/home/roland/build/tls-libc/dlfcn", 1); - /* open lib1.so, which has the unresolved test symbol and a DT_NEEDED on lib2.so, which provides the symbol */ if ((handle = dlopen("bug-dlsym1-lib1.so", RTLD_NOW)) == NULL) { diff -durpN glibc-2.3.3/dlfcn/dladdr1.c glibc-2.3.4/dlfcn/dladdr1.c --- glibc-2.3.3/dlfcn/dladdr1.c 2003-03-10 04:12:11.000000000 -0500 +++ glibc-2.3.4/dlfcn/dladdr1.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,5 +1,5 @@ /* Locate the shared object symbol nearest a given address. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 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 @@ -19,9 +19,24 @@ #include +#if !defined SHARED && defined IS_IN_libdl + int dladdr1 (const void *address, Dl_info *info, void **extra, int flags) { + return __dladdr1 (address, info, extra, flags); +} + +#else + +int +__dladdr1 (const void *address, Dl_info *info, void **extra, int flags) +{ +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dladdr1 (address, info, extra, flags); +# endif + switch (flags) { default: /* Make this an error? */ @@ -33,3 +48,7 @@ dladdr1 (const void *address, Dl_info *i return _dl_addr (address, info, (struct link_map **) extra, NULL); } } +# ifdef SHARED +strong_alias (__dladdr1, dladdr1) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dladdr.c glibc-2.3.4/dlfcn/dladdr.c --- glibc-2.3.3/dlfcn/dladdr.c 2003-03-10 04:12:11.000000000 -0500 +++ glibc-2.3.4/dlfcn/dladdr.c 2004-10-18 19:11:49.000000000 -0400 @@ -1,5 +1,6 @@ /* Locate the shared object symbol nearest a given address. - Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2003, 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 @@ -19,8 +20,26 @@ #include +#if !defined SHARED && defined IS_IN_libdl + int dladdr (const void *address, Dl_info *info) { + return __dladdr (address, info); +} + +#else + +int +__dladdr (const void *address, Dl_info *info) +{ +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dladdr (address, info); +# endif return _dl_addr (address, info, NULL, NULL); } +# ifdef SHARED +strong_alias (__dladdr, dladdr) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dlclose.c glibc-2.3.4/dlfcn/dlclose.c --- glibc-2.3.3/dlfcn/dlclose.c 2001-07-06 00:54:45.000000000 -0400 +++ glibc-2.3.4/dlfcn/dlclose.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,5 +1,6 @@ /* Close a handle opened by `dlopen'. - Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 1999, 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 @@ -19,6 +20,16 @@ #include +#if !defined SHARED && defined IS_IN_libdl + +int +dlclose (void *handle) +{ + return __dlclose (handle); +} + +#else + static void dlclose_doit (void *handle) { @@ -26,7 +37,16 @@ dlclose_doit (void *handle) } int -dlclose (void *handle) +__dlclose (void *handle) { +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlclose (handle); +# endif + return _dlerror_run (dlclose_doit, handle) ? -1 : 0; } +# ifdef SHARED +strong_alias (__dlclose, dlclose) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dlerror.c glibc-2.3.4/dlfcn/dlerror.c --- glibc-2.3.3/dlfcn/dlerror.c 2003-07-31 15:26:03.000000000 -0400 +++ glibc-2.3.4/dlfcn/dlerror.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,6 +1,5 @@ /* Return error detail for failing functions. - Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003 - Free Software Foundation, Inc. + Copyright (C) 1995-2000,2002,2003,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 @@ -24,6 +23,17 @@ #include #include #include +#include + +#if !defined SHARED && defined IS_IN_libdl + +char * +dlerror (void) +{ + return __dlerror (); +} + +#else /* Type for storing results of dynamic loading actions. */ struct dl_action_result @@ -46,11 +56,16 @@ static void free_key_mem (void *mem); char * -dlerror (void) +__dlerror (void) { char *buf = NULL; struct dl_action_result *result; +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlerror (); +# endif + /* If we have not yet initialized the buffer do it now. */ __libc_once (once, init); @@ -99,6 +114,9 @@ dlerror (void) return buf; } +# ifdef SHARED +strong_alias (__dlerror, dlerror) +# endif int internal_function @@ -141,8 +159,8 @@ _dlerror_run (void (*operate) (void *), result->errstring = NULL; } - result->errcode = _dl_catch_error (&result->objname, &result->errstring, - operate, args); + result->errcode = GLRO(dl_catch_error) (&result->objname, &result->errstring, + operate, args); /* If no error we mark that no error string is available. */ result->returned = result->errstring == NULL; @@ -185,3 +203,35 @@ free_key_mem (void *mem) free (mem); __libc_setspecific (key, NULL); } + +# ifdef SHARED + +struct dlfcn_hook *_dlfcn_hook __attribute__((nocommon)); +libdl_hidden_data_def (_dlfcn_hook) + +# else + +static struct dlfcn_hook _dlfcn_hooks = + { + .dlopen = __dlopen, + .dlclose = __dlclose, + .dlsym = __dlsym, + .dlvsym = __dlvsym, + .dlerror = __dlerror, + .dladdr = __dladdr, + .dladdr1 = __dladdr1, + .dlinfo = __dlinfo, + .dlmopen = __dlmopen + }; + +void +__libc_register_dlfcn_hook (struct link_map *map) +{ + struct dlfcn_hook **hook; + + hook = (struct dlfcn_hook **) __libc_dlsym_private (map, "_dlfcn_hook"); + if (hook != NULL) + *hook = &_dlfcn_hooks; +} +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dlfcn.h glibc-2.3.4/dlfcn/dlfcn.h --- glibc-2.3.3/dlfcn/dlfcn.h 2003-07-15 02:48:45.000000000 -0400 +++ glibc-2.3.4/dlfcn/dlfcn.h 2004-11-25 15:15:46.000000000 -0500 @@ -1,5 +1,5 @@ /* User functions for run-time dynamic loading. - Copyright (C) 1995-1999,2000,2001,2003 Free Software Foundation, Inc. + Copyright (C) 1995-1999,2000,2001,2003,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 @@ -39,6 +39,14 @@ the run-time address of the symbol called NAME in the global scope is returned. */ # define RTLD_DEFAULT ((void *) 0) + + +/* Type for namespace indeces. */ +typedef long int Lmid_t; + +/* Special namespace ID values. */ +# define LM_ID_BASE 0 /* Initial namespace. */ +# define LM_ID_NEWLM -1 /* For dlmopen: request new namespace. */ #endif @@ -50,19 +58,23 @@ extern void *dlopen (__const char *__fil /* Unmap and close a shared object opened by `dlopen'. The handle cannot be used again after calling `dlclose'. */ -extern int dlclose (void *__handle) __THROW; +extern int dlclose (void *__handle) __THROW __nonnull ((1)); /* Find the run-time address in the shared object HANDLE refers to of the symbol called NAME. */ extern void *dlsym (void *__restrict __handle, - __const char *__restrict __name) __THROW; + __const char *__restrict __name) __THROW __nonnull ((2)); #ifdef __USE_GNU +/* Like `dlopen', but request object to be allocated in a new namespace. */ +extern void *dlmopen (Lmid_t __nsid, __const char *__file, int __mode) __THROW; + /* Find the run-time address in the shared object HANDLE refers to of the symbol called NAME with VERSION. */ extern void *dlvsym (void *__restrict __handle, __const char *__restrict __name, - __const char *__restrict __version) __THROW; + __const char *__restrict __version) + __THROW __nonnull ((2, 3)); #endif /* When any of the above functions fails, call this function @@ -84,11 +96,12 @@ typedef struct /* Fill in *INFO with the following information about ADDRESS. Returns 0 iff no shared object's segments contain that address. */ -extern int dladdr (__const void *__address, Dl_info *__info) __THROW; +extern int dladdr (__const void *__address, Dl_info *__info) + __THROW __nonnull ((2)); /* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */ extern int dladdr1 (__const void *__address, Dl_info *__info, - void **__extra_info, int __flags) __THROW; + void **__extra_info, int __flags) __THROW __nonnull ((2)); /* These are the possible values for the FLAGS argument to `dladdr1'. This indicates what extra information is stored at *EXTRA_INFO. @@ -109,11 +122,15 @@ enum On success, returns zero. On failure, returns -1 and records an error message to be fetched with `dlerror'. */ extern int dlinfo (void *__restrict __handle, - int __request, void *__restrict __arg); + int __request, void *__restrict __arg) + __THROW __nonnull ((1, 3)); /* These are the possible values for the REQUEST argument to `dlinfo'. */ enum { + /* Treat ARG as `lmid_t *'; store namespace ID for HANDLE there. */ + RTLD_DI_LMID = 1, + /* Treat ARG as `struct link_map **'; store the `struct link_map *' for HANDLE there. */ RTLD_DI_LINKMAP = 2, @@ -130,7 +147,6 @@ enum expand $ORIGIN in this shared object's dependency file names. */ RTLD_DI_ORIGIN = 6, - RTLD_DI_LMID = 1, /* Unsupported, defined by Solaris. */ RTLD_DI_CONFIGADDR = 3 /* Unsupported, defined by Solaris. */ }; diff -durpN glibc-2.3.3/dlfcn/dlinfo.c glibc-2.3.4/dlfcn/dlinfo.c --- glibc-2.3.3/dlfcn/dlinfo.c 2003-03-15 18:14:44.000000000 -0500 +++ glibc-2.3.4/dlfcn/dlinfo.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,5 +1,5 @@ /* dlinfo -- Get information from the dynamic linker. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 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 @@ -22,6 +22,16 @@ #include #include +#if !defined SHARED && defined IS_IN_libdl + +int +dlinfo (void *handle, int request, void *arg) +{ + return __dlinfo (handle, request, arg, RETURN_ADDRESS (0)); +} + +#else + struct dlinfo_args { ElfW(Addr) caller; @@ -36,29 +46,34 @@ dlinfo_doit (void *argsblock) struct dlinfo_args *const args = argsblock; struct link_map *l = args->handle; -#if 0 +# if 0 if (args->handle == RTLD_SELF) { + Lmid_t nsid; /* Find the highest-addressed object that CALLER is not below. */ - for (l = GL(dl_loaded); l != NULL; l = l->l_next) - if (caller >= l->l_map_start && caller < l->l_map_end) - /* There must be exactly one DSO for the range of the virtual - memory. Otherwise something is really broken. */ - break; + for (nsid = 0; nsid < DL_NNS; ++nsid) + for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next) + if (caller >= l->l_map_start && caller < l->l_map_end) + /* There must be exactly one DSO for the range of the virtual + memory. Otherwise something is really broken. */ + break; if (l == NULL) - _dl_signal_error (0, NULL, NULL, N_("\ + GLRO(dl_signal_error) (0, NULL, NULL, N_("\ RTLD_SELF used in code not dynamically loaded")); } -#endif +# endif switch (args->request) { - case RTLD_DI_LMID: case RTLD_DI_CONFIGADDR: default: - _dl_signal_error (0, NULL, NULL, N_("unsupported dlinfo request")); + GLRO(dl_signal_error) (0, NULL, NULL, N_("unsupported dlinfo request")); + break; + + case RTLD_DI_LMID: + *(Lmid_t *) args->arg = l->l_ns; break; case RTLD_DI_LINKMAP: @@ -79,9 +94,19 @@ RTLD_SELF used in code not dynamically l } int -dlinfo (void *handle, int request, void *arg) +__dlinfo (void *handle, int request, void *arg DL_CALLER_DECL) { - struct dlinfo_args args = { (ElfW(Addr)) RETURN_ADDRESS (0), +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlinfo (handle, request, arg, + DL_CALLER); +# endif + + struct dlinfo_args args = { (ElfW(Addr)) DL_CALLER, handle, request, arg }; return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0; } +# ifdef SHARED +strong_alias (__dlinfo, dlinfo) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dlmopen.c glibc-2.3.4/dlfcn/dlmopen.c --- glibc-2.3.3/dlfcn/dlmopen.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/dlmopen.c 2004-10-18 19:11:50.000000000 -0400 @@ -0,0 +1,98 @@ +/* Load a shared object at run time. + Copyright (C) 1995,96,97,98,99,2000,2003,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. */ + +#include +#include +#include +#include +#include + +#if !defined SHARED && defined IS_IN_libdl + +void * +dlmopen (Lmid_t nsid, const char *file, int mode) +{ + return __dlmopen (nsid, file, mode, RETURN_ADDRESS (0)); +} +static_link_warning (dlmopen) + +#else + +struct dlmopen_args +{ + /* Namespace ID. */ + Lmid_t nsid; + /* The arguments for dlopen_doit. */ + const char *file; + int mode; + /* The return value of dlopen_doit. */ + void *new; + /* Address of the caller. */ + const void *caller; +}; + +static void +dlmopen_doit (void *a) +{ + struct dlmopen_args *args = (struct dlmopen_args *) a; + + /* Non-shared code has no support for multiple namespaces. */ + if (args->nsid != LM_ID_BASE) +# ifdef SHARED + /* If trying to open the link map for the main executable the namespace + must be the main one. */ + if (args->file == NULL) +# endif + GLRO(dl_signal_error) (EINVAL, NULL, NULL, N_("invalid namespace")); + + args->new = _dl_open (args->file ?: "", args->mode | __RTLD_DLOPEN, + args->caller, args->nsid); +} + + +void * +__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL) +{ +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0)); +# endif + + struct dlmopen_args args; + args.nsid = nsid; + args.file = file; + args.mode = mode; + args.caller = DL_CALLER; + +# ifdef SHARED + return _dlerror_run (dlmopen_doit, &args) ? NULL : args.new; +# else + if (_dlerror_run (dlmopen_doit, &args)) + return NULL; + + __libc_register_dl_open_hook ((struct link_map *) args.new); + __libc_register_dlfcn_hook ((struct link_map *) args.new); + + return args.new; +# endif +} +# ifdef SHARED +strong_alias (__dlmopen, dlmopen) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dlopen.c glibc-2.3.4/dlfcn/dlopen.c --- glibc-2.3.3/dlfcn/dlopen.c 2003-09-19 16:40:11.000000000 -0400 +++ glibc-2.3.4/dlfcn/dlopen.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,5 +1,5 @@ /* Load a shared object at run time. - Copyright (C) 1995,96,97,98,99,2000,2003 Free Software Foundation, Inc. + Copyright (C) 1995,96,97,98,99,2000,2003,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 @@ -20,6 +20,17 @@ #include #include +#if !defined SHARED && defined IS_IN_libdl + +void * +dlopen (const char *file, int mode) +{ + return __dlopen (file, mode, RETURN_ADDRESS (0)); +} +static_link_warning (dlopen) + +#else + struct dlopen_args { /* The arguments for dlopen_doit. */ @@ -31,27 +42,53 @@ struct dlopen_args const void *caller; }; + +/* Non-shared code has no support for multiple namespaces. */ +# ifdef SHARED +# define NS __LM_ID_CALLER +# else +# define NS LM_ID_BASE +# endif + + static void dlopen_doit (void *a) { struct dlopen_args *args = (struct dlopen_args *) a; args->new = _dl_open (args->file ?: "", args->mode | __RTLD_DLOPEN, - args->caller); + args->caller, args->file == NULL ? LM_ID_BASE : NS); } -extern void *__dlopen_check (const char *file, int mode); void * -__dlopen_check (const char *file, int mode) +__dlopen (const char *file, int mode DL_CALLER_DECL) { +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlopen (file, mode, DL_CALLER); +# endif + struct dlopen_args args; args.file = file; args.mode = mode; - args.caller = RETURN_ADDRESS (0); + args.caller = DL_CALLER; +# ifdef SHARED return _dlerror_run (dlopen_doit, &args) ? NULL : args.new; +# else + if (_dlerror_run (dlopen_doit, &args)) + return NULL; + + __libc_register_dl_open_hook ((struct link_map *) args.new); + __libc_register_dlfcn_hook ((struct link_map *) args.new); + + return args.new; +# endif } -#include +# ifdef SHARED +# include +strong_alias (__dlopen, __dlopen_check) versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1); -static_link_warning (dlopen) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dlopenold.c glibc-2.3.4/dlfcn/dlopenold.c --- glibc-2.3.3/dlfcn/dlopenold.c 2001-07-06 00:54:45.000000000 -0400 +++ glibc-2.3.4/dlfcn/dlopenold.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,5 +1,5 @@ /* Load a shared object at run time. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 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 @@ -37,13 +37,21 @@ struct dlopen_args }; +/* Non-shared code has no support for multiple namespaces. */ +#ifdef SHARED +# define NS __LM_ID_CALLER +#else +# define NS LM_ID_BASE +#endif + + static void dlopen_doit (void *a) { struct dlopen_args *args = (struct dlopen_args *) a; args->new = _dl_open (args->file ?: "", args->mode | __RTLD_DLOPEN, - args->caller); + args->caller, args->file == NULL ? LM_ID_BASE : NS); } extern void *__dlopen_nocheck (const char *file, int mode); @@ -59,6 +67,9 @@ __dlopen_nocheck (const char *file, int mode |= RTLD_LAZY; args.mode = mode; + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0)); + return _dlerror_run (dlopen_doit, &args) ? NULL : args.new; } compat_symbol (libdl, __dlopen_nocheck, dlopen, GLIBC_2_0); diff -durpN glibc-2.3.3/dlfcn/dlsym.c glibc-2.3.4/dlfcn/dlsym.c --- glibc-2.3.3/dlfcn/dlsym.c 2001-07-06 00:54:45.000000000 -0400 +++ glibc-2.3.4/dlfcn/dlsym.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,5 +1,5 @@ /* Look up a symbol in a shared object loaded by `dlopen'. - Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-2000, 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 @@ -20,6 +20,18 @@ #include #include +#include + +#if !defined SHARED && defined IS_IN_libdl + +void * +dlsym (void *handle, const char *name) +{ + return __dlsym (handle, name, RETURN_ADDRESS (0)); +} + +#else + struct dlsym_args { /* The arguments to dlsym_doit. */ @@ -41,12 +53,28 @@ dlsym_doit (void *a) void * -dlsym (void *handle, const char *name) +__dlsym (void *handle, const char *name DL_CALLER_DECL) { +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlsym (handle, name, DL_CALLER); +# endif + struct dlsym_args args; - args.who = RETURN_ADDRESS (0); + args.who = DL_CALLER; args.handle = handle; args.name = name; - return (_dlerror_run (dlsym_doit, &args) ? NULL : args.sym); + /* Protect against concurrent loads and unloads. */ + __rtld_lock_lock_recursive (GL(dl_load_lock)); + + void *result = (_dlerror_run (dlsym_doit, &args) ? NULL : args.sym); + + __rtld_lock_unlock_recursive (GL(dl_load_lock)); + + return result; } +# ifdef SHARED +strong_alias (__dlsym, dlsym) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/dlvsym.c glibc-2.3.4/dlfcn/dlvsym.c --- glibc-2.3.3/dlfcn/dlvsym.c 2001-07-06 00:54:45.000000000 -0400 +++ glibc-2.3.4/dlfcn/dlvsym.c 2004-10-18 19:11:50.000000000 -0400 @@ -1,5 +1,5 @@ /* Look up a versioned symbol in a shared object loaded by `dlopen'. - Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-2000, 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 @@ -20,6 +20,19 @@ #include #include +#include + +#if !defined SHARED && defined IS_IN_libdl + +void * +weak_function +dlvsym (void *handle, const char *name, const char *version_str) +{ + return __dlvsym (handle, name, version_str, RETURN_ADDRESS (0)); +} + +#else + struct dlvsym_args { /* The arguments to dlvsym_doit. */ @@ -42,15 +55,30 @@ dlvsym_doit (void *a) } void * -__dlvsym (void *handle, const char *name, const char *version_str) +__dlvsym (void *handle, const char *name, const char *version_str + DL_CALLER_DECL) { - struct dlvsym_args args; +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlvsym (handle, name, version_str, DL_CALLER); +# endif + struct dlvsym_args args; args.handle = handle; args.name = name; - args.who = RETURN_ADDRESS (0); + args.who = DL_CALLER; args.version = version_str; - return (_dlerror_run (dlvsym_doit, &args) ? NULL : args.sym); + /* Protect against concurrent loads and unloads. */ + __rtld_lock_lock_recursive (GL(dl_load_lock)); + + void *result = (_dlerror_run (dlvsym_doit, &args) ? NULL : args.sym); + + __rtld_lock_unlock_recursive (GL(dl_load_lock)); + + return result; } +# ifdef SHARED weak_alias (__dlvsym, dlvsym) +# endif +#endif diff -durpN glibc-2.3.3/dlfcn/Makefile glibc-2.3.4/dlfcn/Makefile --- glibc-2.3.3/dlfcn/Makefile 2003-07-29 04:36:08.000000000 -0400 +++ glibc-2.3.4/dlfcn/Makefile 2004-10-18 19:08:31.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1995-2002, 2003, 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 @@ -20,10 +20,12 @@ subdir := dlfcn headers := bits/dlfcn.h dlfcn.h extra-libs := libdl libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr dladdr1 dlinfo \ - eval -distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c eval.c \ + dlmopen +routines := $(patsubst %,s%,$(libdl-routines)) +elide-routines.os := $(routines) +distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c \ defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \ - modcxaatexit.c modstatic.c \ + modcxaatexit.c modstatic.c modstatic2.c \ bug-dlsym1-lib1.c bug-dlsym1-lib2.c extra-libs-others := libdl @@ -34,7 +36,6 @@ ifeq ($(versioning),yes) libdl-routines += dlopenold libdl-shared-only-routines := dlopenold endif -libdl-shared-only-routines += eval ifeq (yes,$(build-shared)) tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \ @@ -52,13 +53,14 @@ glreflib2.so-no-z-defs = yes errmsg1mod.so-no-z-defs = yes ifeq (yesyesyes,$(build-static)$(build-shared)$(elf)) -tests += tststatic -tests-static += tststatic -modules-names += modstatic +tests += tststatic tststatic2 +tests-static += tststatic tststatic2 +modules-names += modstatic modstatic2 tststatic-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf +tststatic2-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf endif -extra-objs += $(modules-names:=.os) eval.os +extra-objs += $(modules-names:=.os) generated := $(modules-names:=.so) include ../Rules @@ -99,7 +101,6 @@ $(objpfx)errmsg1.out: $(objpfx)errmsg1 $ $(objpfx)tstatexit: $(libdl) $(objpfx)tstatexit.out: $(objpfx)tstatexit $(objpfx)modatexit.so -CPPFLAGS-modcxaatexit.c = -DNOT_IN_libc $(objpfx)tstcxaatexit: $(libdl) $(objpfx)tstcxaatexit.out: $(objpfx)tstcxaatexit $(objpfx)modcxaatexit.so @@ -108,7 +109,12 @@ $(objpfx)modatexit.so: $(common-objpfx)l $(objpfx)tststatic: $(objpfx)libdl.a $(objpfx)tststatic.out: $(objpfx)tststatic $(objpfx)modstatic.so -$(objpfx)modstatic.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a +$(objpfx)tststatic2: $(objpfx)libdl.a +$(objpfx)tststatic2.out: $(objpfx)tststatic2 $(objpfx)modstatic.so \ + $(objpfx)modstatic2.so + +$(objpfx)modstatic2.so: $(libdl) $(common-objpfx)libc.so \ + $(common-objpfx)libc_nonshared.a $(objpfx)bug-dlopen1: $(libdl) diff -durpN glibc-2.3.3/dlfcn/modstatic2.c glibc-2.3.4/dlfcn/modstatic2.c --- glibc-2.3.3/dlfcn/modstatic2.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/modstatic2.c 2004-10-18 19:10:22.000000000 -0400 @@ -0,0 +1,228 @@ +#include +#include +#include +#include +#include +#include + +int test (FILE *out, int a); + +int +test (FILE *out, int a) +{ + fputs ("in modstatic2.c (test)\n", out); + + void *handle = dlopen ("modstatic2-nonexistent.so", RTLD_LAZY); + if (handle == NULL) + fprintf (out, "nonexistent: %s\n", dlerror ()); + else + exit (1); + + handle = dlopen ("modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + + int (*test2) (FILE *, int); + test2 = dlsym (handle, "test"); + if (test2 == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + if (test2 != test) + { + fprintf (out, "test %p != test2 %p\n", test, test2); + exit (1); + } + + Dl_info info; + int res = dladdr (test2, &info); + if (res == 0) + { + fputs ("dladdr returned 0\n", out); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + fprintf (out, "fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test2) + { + fprintf (out, "saddr %p != test %p\n", info.dli_saddr, test2); + exit (1); + } + } + + ElfW(Sym) *sym; + void *symp; + res = dladdr1 (test2, &info, &symp, RTLD_DL_SYMENT); + if (res == 0) + { + fputs ("dladdr1 returned 0\n", out); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + fprintf (out, "fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test2) + { + fprintf (out, "saddr %p != test %p\n", info.dli_saddr, test2); + exit (1); + } + sym = symp; + if (sym == NULL) + { + fputs ("sym == NULL\n", out); + exit (1); + } + if (ELF32_ST_BIND (sym->st_info) != STB_GLOBAL + || ELF32_ST_VISIBILITY (sym->st_other) != STV_DEFAULT) + { + fprintf (out, "bind %d visibility %d\n", + (int) ELF32_ST_BIND (sym->st_info), + (int) ELF32_ST_VISIBILITY (sym->st_other)); + exit (1); + } + } + + Lmid_t lmid; + res = dlinfo (handle, RTLD_DI_LMID, &lmid); + if (res != 0) + { + fprintf (out, "dlinfo returned %d %s\n", res, dlerror ()); + exit (1); + } + else if (lmid != LM_ID_BASE) + { + fprintf (out, "lmid %d != %d\n", (int) lmid, (int) LM_ID_BASE); + exit (1); + } + + void *handle2 = dlopen (LIBDL_SO, RTLD_LAZY); + if (handle2 == NULL) + { + fprintf (out, "libdl.so: %s\n", dlerror ()); + exit (1); + } + +#ifdef DO_VERSIONING + if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL) + { + fprintf (out, "dlvsym: %s\n", dlerror ()); + exit (1); + } +#endif + + void *(*dlsymfn) (void *, const char *); + dlsymfn = dlsym (handle2, "dlsym"); + if (dlsymfn == NULL) + { + fprintf (out, "dlsym \"dlsym\": %s\n", dlerror ()); + exit (1); + } + void *test3 = dlsymfn (handle, "test"); + if (test3 == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + else if (test3 != (void *) test2) + { + fprintf (out, "test2 %p != test3 %p\n", test2, test3); + exit (1); + } + + dlclose (handle2); + dlclose (handle); + + handle = dlmopen (LM_ID_BASE, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + dlclose (handle); + + handle = dlmopen (LM_ID_NEWLM, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + fprintf (out, "LM_ID_NEWLM: %s\n", dlerror ()); + else + { + fputs ("LM_ID_NEWLM unexpectedly succeeded\n", out); + exit (1); + } + + handle = dlopen ("modstatic.so", RTLD_LAZY); + if (handle == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + + int (*test4) (int); + test4 = dlsym (handle, "test"); + if (test4 == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + + res = test4 (16); + if (res != 16 + 16) + { + fprintf (out, "modstatic.so (test) returned %d\n", res); + exit (1); + } + + res = dladdr1 (test4, &info, &symp, RTLD_DL_SYMENT); + if (res == 0) + { + fputs ("dladdr1 returned 0\n", out); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + fprintf (out, "fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test4) + { + fprintf (out, "saddr %p != test %p\n", info.dli_saddr, test4); + exit (1); + } + sym = symp; + if (sym == NULL) + { + fputs ("sym == NULL\n", out); + exit (1); + } + if (ELF32_ST_BIND (sym->st_info) != STB_GLOBAL + || ELF32_ST_VISIBILITY (sym->st_other) != STV_DEFAULT) + { + fprintf (out, "bind %d visibility %d\n", + (int) ELF32_ST_BIND (sym->st_info), + (int) ELF32_ST_VISIBILITY (sym->st_other)); + exit (1); + } + } + + dlclose (handle); + + fputs ("leaving modstatic2.c (test)\n", out); + return a + a; +} diff -durpN glibc-2.3.3/dlfcn/sdladdr1.c glibc-2.3.4/dlfcn/sdladdr1.c --- glibc-2.3.3/dlfcn/sdladdr1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdladdr1.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dladdr1.c" diff -durpN glibc-2.3.3/dlfcn/sdladdr.c glibc-2.3.4/dlfcn/sdladdr.c --- glibc-2.3.3/dlfcn/sdladdr.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdladdr.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dladdr.c" diff -durpN glibc-2.3.3/dlfcn/sdlclose.c glibc-2.3.4/dlfcn/sdlclose.c --- glibc-2.3.3/dlfcn/sdlclose.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdlclose.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dlclose.c" diff -durpN glibc-2.3.3/dlfcn/sdlerror.c glibc-2.3.4/dlfcn/sdlerror.c --- glibc-2.3.3/dlfcn/sdlerror.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdlerror.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dlerror.c" diff -durpN glibc-2.3.3/dlfcn/sdlinfo.c glibc-2.3.4/dlfcn/sdlinfo.c --- glibc-2.3.3/dlfcn/sdlinfo.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdlinfo.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dlinfo.c" diff -durpN glibc-2.3.3/dlfcn/sdlmopen.c glibc-2.3.4/dlfcn/sdlmopen.c --- glibc-2.3.3/dlfcn/sdlmopen.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdlmopen.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dlmopen.c" diff -durpN glibc-2.3.3/dlfcn/sdlopen.c glibc-2.3.4/dlfcn/sdlopen.c --- glibc-2.3.3/dlfcn/sdlopen.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdlopen.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dlopen.c" diff -durpN glibc-2.3.3/dlfcn/sdlsym.c glibc-2.3.4/dlfcn/sdlsym.c --- glibc-2.3.3/dlfcn/sdlsym.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdlsym.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dlsym.c" diff -durpN glibc-2.3.3/dlfcn/sdlvsym.c glibc-2.3.4/dlfcn/sdlvsym.c --- glibc-2.3.3/dlfcn/sdlvsym.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/sdlvsym.c 2004-10-18 19:13:03.000000000 -0400 @@ -0,0 +1 @@ +#include "dlvsym.c" diff -durpN glibc-2.3.3/dlfcn/tststatic2.c glibc-2.3.4/dlfcn/tststatic2.c --- glibc-2.3.3/dlfcn/tststatic2.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/dlfcn/tststatic2.c 2004-10-18 19:10:22.000000000 -0400 @@ -0,0 +1,166 @@ +#include +#include +#include +#include +#include +#include + +int +main (void) +{ + void *handle = dlopen ("modstatic2-nonexistent.so", RTLD_LAZY); + if (handle == NULL) + printf ("nonexistent: %s\n", dlerror ()); + else + exit (1); + + handle = dlopen ("modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + + int (*test) (FILE *, int); + test = dlsym (handle, "test"); + if (test == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + + Dl_info info; + int res = dladdr (test, &info); + if (res == 0) + { + puts ("dladdr returned 0"); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + printf ("fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test) + { + printf ("saddr %p != test %p\n", info.dli_saddr, test); + exit (1); + } + } + + ElfW(Sym) *sym; + void *symp; + res = dladdr1 (test, &info, &symp, RTLD_DL_SYMENT); + if (res == 0) + { + puts ("dladdr1 returned 0"); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + printf ("fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test) + { + printf ("saddr %p != test %p\n", info.dli_saddr, test); + exit (1); + } + sym = symp; + if (sym == NULL) + { + puts ("sym == NULL\n"); + exit (1); + } + if (ELF32_ST_BIND (sym->st_info) != STB_GLOBAL + || ELF32_ST_VISIBILITY (sym->st_other) != STV_DEFAULT) + { + printf ("bind %d visibility %d\n", + (int) ELF32_ST_BIND (sym->st_info), + (int) ELF32_ST_VISIBILITY (sym->st_other)); + exit (1); + } + } + + Lmid_t lmid; + res = dlinfo (handle, RTLD_DI_LMID, &lmid); + if (res != 0) + { + printf ("dlinfo returned %d %s\n", res, dlerror ()); + exit (1); + } + else if (lmid != LM_ID_BASE) + { + printf ("lmid %d != %d\n", (int) lmid, (int) LM_ID_BASE); + exit (1); + } + + res = test (stdout, 2); + if (res != 4) + { + printf ("Got %i, expected 4\n", res); + exit (1); + } + + void *handle2 = dlopen (LIBDL_SO, RTLD_LAZY); + if (handle2 == NULL) + { + printf ("libdl.so: %s\n", dlerror ()); + exit (1); + } + +#ifdef DO_VERSIONING + if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL) + { + printf ("dlvsym: %s\n", dlerror ()); + exit (1); + } +#endif + + void *(*dlsymfn) (void *, const char *); + dlsymfn = dlsym (handle2, "dlsym"); + if (dlsymfn == NULL) + { + printf ("dlsym \"dlsym\": %s\n", dlerror ()); + exit (1); + } + void *test2 = dlsymfn (handle, "test"); + if (test2 == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + else if (test2 != (void *) test) + { + printf ("test %p != test2 %p\n", test, test2); + exit (1); + } + + dlclose (handle2); + dlclose (handle); + + handle = dlmopen (LM_ID_BASE, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + dlclose (handle); + + handle = dlmopen (LM_ID_NEWLM, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + printf ("LM_ID_NEWLM: %s\n", dlerror ()); + else + { + puts ("LM_ID_NEWLM unexpectedly succeeded"); + exit (1); + } + + return 0; +} diff -durpN glibc-2.3.3/dlfcn/Versions glibc-2.3.4/dlfcn/Versions --- glibc-2.3.3/dlfcn/Versions 2003-03-15 18:14:44.000000000 -0500 +++ glibc-2.3.4/dlfcn/Versions 2004-10-18 19:14:12.000000000 -0400 @@ -8,4 +8,10 @@ libdl { GLIBC_2.3.3 { dladdr1; dlinfo; } + GLIBC_2.3.4 { + dlmopen; + } + GLIBC_PRIVATE { + _dlfcn_hook; + } } diff -durpN glibc-2.3.3/elf/chroot_canon.c glibc-2.3.4/elf/chroot_canon.c --- glibc-2.3.3/elf/chroot_canon.c 2001-12-29 10:57:13.000000000 -0500 +++ glibc-2.3.4/elf/chroot_canon.c 2004-06-09 22:15:39.000000000 -0400 @@ -1,5 +1,6 @@ /* Return the canonical absolute name of a given file inside chroot. - Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 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 @@ -59,6 +60,9 @@ chroot_canon (const char *chroot, const } rpath = malloc (chroot_len + PATH_MAX); + if (rpath == NULL) + return NULL; + rpath_limit = rpath + chroot_len + PATH_MAX; rpath_root = (char *) mempcpy (rpath, chroot, chroot_len) - 1; @@ -108,7 +112,7 @@ chroot_canon (const char *chroot, const new_size += PATH_MAX; new_rpath = (char *) realloc (rpath, new_size); if (new_rpath == NULL) - return NULL; + goto error; rpath = new_rpath; rpath_limit = rpath + new_size; diff -durpN glibc-2.3.3/elf/dl-addr.c glibc-2.3.4/elf/dl-addr.c --- glibc-2.3.3/elf/dl-addr.c 2003-03-10 04:12:11.000000000 -0500 +++ glibc-2.3.4/elf/dl-addr.c 2004-10-19 12:44:19.000000000 -0400 @@ -1,5 +1,5 @@ /* Locate the shared object symbol nearest a given address. - Copyright (C) 1996-2000,2001,2002,2003 Free Software Foundation, Inc. + Copyright (C) 1996-2003, 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 @@ -28,90 +28,108 @@ _dl_addr (const void *address, Dl_info * struct link_map **mapp, const ElfW(Sym) **symbolp) { const ElfW(Addr) addr = DL_LOOKUP_ADDRESS (address); - struct link_map *l, *match; + struct link_map *match; const ElfW(Sym) *symtab, *matchsym, *symtabend; const char *strtab; ElfW(Word) strtabsize; + /* Protect against concurrent loads and unloads. */ + __rtld_lock_lock_recursive (GL(dl_load_lock)); + /* Find the highest-addressed object that ADDRESS is not below. */ match = NULL; - for (l = GL(dl_loaded); l; l = l->l_next) - if (addr >= l->l_map_start && addr < l->l_map_end) - { - /* We know ADDRESS lies within L if in any shared object. - Make sure it isn't past the end of L's segments. */ - size_t n = l->l_phnum; - if (n > 0) - { - do - --n; - while (l->l_phdr[n].p_type != PT_LOAD); - if (addr >= (l->l_addr + - l->l_phdr[n].p_vaddr + l->l_phdr[n].p_memsz)) - /* Off the end of the highest-addressed shared object. */ - continue; - } + for (Lmid_t ns = 0; ns < DL_NNS; ++ns) + for (struct link_map *l = GL(dl_ns)[ns]._ns_loaded; l; l = l->l_next) + if (addr >= l->l_map_start && addr < l->l_map_end) + { + /* We know ADDRESS lies within L if in any shared object. + Make sure it isn't past the end of L's segments. */ + size_t n = l->l_phnum; + if (n > 0) + { + do + --n; + while (l->l_phdr[n].p_type != PT_LOAD); + if (addr >= (l->l_addr + + l->l_phdr[n].p_vaddr + l->l_phdr[n].p_memsz)) + /* Off the end of the highest-addressed shared object. */ + continue; + } - match = l; - break; - } + match = l; + break; + } - if (match == NULL) - return 0; + int result = 0; + if (match != NULL) + { + /* Now we know what object the address lies in. */ + info->dli_fname = match->l_name; + info->dli_fbase = (void *) match->l_map_start; - /* Now we know what object the address lies in. */ - info->dli_fname = match->l_name; - info->dli_fbase = (void *) match->l_map_start; + /* If this is the main program the information is incomplete. */ + if (__builtin_expect (match->l_name[0], 'a') == '\0' + && match->l_type == lt_executable) + info->dli_fname = _dl_argv[0]; - /* If this is the main program the information is incomplete. */ - if (__builtin_expect (l->l_name[0], 'a') == '\0' - && l->l_type == lt_executable) - info->dli_fname = _dl_argv[0]; + symtab = (const void *) D_PTR (match, l_info[DT_SYMTAB]); + strtab = (const void *) D_PTR (match, l_info[DT_STRTAB]); - symtab = (const void *) D_PTR (match, l_info[DT_SYMTAB]); - strtab = (const void *) D_PTR (match, l_info[DT_STRTAB]); + strtabsize = match->l_info[DT_STRSZ]->d_un.d_val; - strtabsize = match->l_info[DT_STRSZ]->d_un.d_val; + if (match->l_info[DT_HASH] != NULL) + symtabend = (symtab + + ((Elf_Symndx *) D_PTR (match, l_info[DT_HASH]))[1]); + else + /* There is no direct way to determine the number of symbols in the + dynamic symbol table and no hash table is present. The ELF + binary is ill-formed but what shall we do? Use the beginning of + the string table which generally follows the symbol table. */ + symtabend = (const ElfW(Sym) *) strtab; - if (match->l_info[DT_HASH] != NULL) - symtabend = symtab + ((Elf_Symndx *) D_PTR (match, l_info[DT_HASH]))[1]; - else - /* There is no direct way to determine the number of symbols in the - dynamic symbol table and no hash table is present. The ELF - binary is ill-formed but what shall we do? Use the beginning of - the string table which generally follows the symbol table. */ - symtabend = (const ElfW(Sym) *) strtab; + /* We assume that the string table follows the symbol table, + because there is no way in ELF to know the size of the + dynamic symbol table!! */ + for (matchsym = NULL; (void *) symtab < (void *) symtabend; ++symtab) + if (addr >= match->l_addr + symtab->st_value +#if defined USE_TLS + && ELFW(ST_TYPE) (symtab->st_info) != STT_TLS +#endif + && ((symtab->st_size == 0 + && addr == match->l_addr + symtab->st_value) + || addr < match->l_addr + symtab->st_value + symtab->st_size) + && symtab->st_name < strtabsize + && (matchsym == NULL || matchsym->st_value < symtab->st_value) + && (ELFW(ST_BIND) (symtab->st_info) == STB_GLOBAL + || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK)) + matchsym = (ElfW(Sym) *) symtab; - /* We assume that the string table follows the symbol table, because - there is no way in ELF to know the size of the dynamic symbol table!! */ - for (matchsym = NULL; (void *) symtab < (void *) symtabend; ++symtab) - if (addr >= match->l_addr + symtab->st_value - && ((symtab->st_size == 0 && addr == match->l_addr + symtab->st_value) - || addr < match->l_addr + symtab->st_value + symtab->st_size) - && symtab->st_name < strtabsize - && (matchsym == NULL || matchsym->st_value < symtab->st_value) - && (ELFW(ST_BIND) (symtab->st_info) == STB_GLOBAL - || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK)) - matchsym = (ElfW(Sym) *) symtab; + if (mapp) + *mapp = match; + if (symbolp) + *symbolp = matchsym; - if (mapp) - *mapp = match; - if (symbolp) - *symbolp = matchsym; + if (matchsym) + { + /* We found a symbol close by. Fill in its name and exact + address. */ + lookup_t matchl = LOOKUP_VALUE (match); - if (matchsym) - { - /* We found a symbol close by. Fill in its name and exact address. */ - info->dli_sname = strtab + matchsym->st_name; - info->dli_saddr = (void *) (match->l_addr + matchsym->st_value); - } - else - { - /* No symbol matches. We return only the containing object. */ - info->dli_sname = NULL; - info->dli_saddr = NULL; + info->dli_sname = strtab + matchsym->st_name; + info->dli_saddr = DL_SYMBOL_ADDRESS (matchl, matchsym); + } + else + { + /* No symbol matches. We return only the containing object. */ + info->dli_sname = NULL; + info->dli_saddr = NULL; + } + + result = 1; } - return 1; + __rtld_lock_unlock_recursive (GL(dl_load_lock)); + + return result; } libc_hidden_def (_dl_addr) diff -durpN glibc-2.3.3/elf/dl-caller.c glibc-2.3.4/elf/dl-caller.c --- glibc-2.3.3/elf/dl-caller.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/dl-caller.c 2004-10-13 21:53:55.000000000 -0400 @@ -0,0 +1,87 @@ +/* Check whether caller comes from the right place. + 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. */ + +#include +#include +#include +#include +#include + + +int +attribute_hidden +_dl_check_caller (const void *caller, enum allowmask mask) +{ + static const char expected1[] = LIBC_SO; + static const char expected2[] = LIBDL_SO; +#ifdef LIBPTHREAD_SO + static const char expected3[] = LIBPTHREAD_SO; +#endif + static const char expected4[] = LD_SO; + + for (Lmid_t ns = 0; ns < DL_NNS; ++ns) + for (struct link_map *l = GL(dl_ns)[ns]._ns_loaded; l != NULL; + l = l->l_next) + if (caller >= (const void *) l->l_map_start + && caller < (const void *) l->l_text_end) + { + /* The address falls into this DSO's address range. Check the + name. */ + if ((mask & allow_libc) && strcmp (expected1, l->l_name) == 0) + return 0; + if ((mask & allow_libdl) && strcmp (expected2, l->l_name) == 0) + return 0; +#ifdef LIBPTHREAD_SO + if ((mask & allow_libpthread) && strcmp (expected3, l->l_name) == 0) + return 0; +#endif + if ((mask & allow_ldso) && strcmp (expected4, l->l_name) == 0) + return 0; + + struct libname_list *runp = l->l_libname; + + while (runp != NULL) + { + if ((mask & allow_libc) && strcmp (expected1, runp->name) == 0) + return 0; + if ((mask & allow_libdl) && strcmp (expected2, runp->name) == 0) + return 0; +#ifdef LIBPTHREAD_SO + if ((mask & allow_libpthread) + && strcmp (expected3, runp->name) == 0) + return 0; +#endif + if ((mask & allow_ldso) && strcmp (expected4, runp->name) == 0) + return 0; + + runp = runp->next; + } + + break; + } + + /* Maybe the dynamic linker is not yet on the list. */ + if ((mask & allow_ldso) != 0 + && caller >= (const void *) GL(dl_rtld_map).l_map_start + && caller < (const void *) GL(dl_rtld_map).l_text_end) + return 0; + + /* No valid caller. */ + return 1; +} diff -durpN glibc-2.3.3/elf/dl-close.c glibc-2.3.4/elf/dl-close.c --- glibc-2.3.3/elf/dl-close.c 2003-04-27 02:19:09.000000000 -0400 +++ glibc-2.3.4/elf/dl-close.c 2004-10-14 05:20:57.000000000 -0400 @@ -1,5 +1,5 @@ /* Close a shared object opened by `_dl_open'. - Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1996-2002, 2003, 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 @@ -125,22 +125,32 @@ _dl_close (void *_map) return; if (__builtin_expect (map->l_opencount, 1) == 0) - _dl_signal_error (0, map->l_name, NULL, N_("shared object not open")); + GLRO(dl_signal_error) (0, map->l_name, NULL, N_("shared object not open")); /* Acquire the lock. */ __rtld_lock_lock_recursive (GL(dl_load_lock)); + /* One less direct use. */ + assert (map->l_direct_opencount > 0); + --map->l_direct_opencount; + /* Decrement the reference count. */ if (map->l_opencount > 1 || map->l_type != lt_loaded) { /* There are still references to this object. Do nothing more. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_FILES, 0)) - _dl_debug_printf ("\nclosing file=%s; opencount == %u\n", - map->l_name, map->l_opencount); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) + GLRO(dl_debug_printf) ("\nclosing file=%s; opencount == %u\n", + map->l_name, map->l_opencount); /* Decrement the object's reference counter, not the dependencies'. */ --map->l_opencount; + /* If the direct use counter reaches zero we have to decrement + all the dependencies' usage counter. */ + if (map->l_direct_opencount == 0) + for (i = 1; i < map->l_searchlist.r_nlist; ++i) + --map->l_searchlist.r_list[i]->l_opencount; + __rtld_lock_unlock_recursive (GL(dl_load_lock)); return; } @@ -167,12 +177,13 @@ _dl_close (void *_map) for (i = 1; list[i] != NULL; ++i) if ((list[i]->l_flags_1 & DF_1_NODELETE) == 0 /* Decrement counter. */ - && --new_opencount[i] == 0) + && (assert (new_opencount[i] > 0), --new_opencount[i] == 0)) { void mark_removed (struct link_map *remmap) { /* Test whether this object was also loaded directly. */ - if (remmap->l_searchlist.r_list != NULL) + if (remmap->l_searchlist.r_list != NULL + && remmap->l_direct_opencount > 0) { /* In this case we have to decrement all the dependencies of this object. They are all in MAP's dependency list. */ @@ -184,6 +195,7 @@ _dl_close (void *_map) || ! dep_list[j]->l_init_called) { assert (dep_list[j]->l_idx < map->l_searchlist.r_nlist); + assert (new_opencount[dep_list[j]->l_idx] > 0); if (--new_opencount[dep_list[j]->l_idx] == 0) { assert (dep_list[j]->l_type == lt_loaded); @@ -197,17 +209,53 @@ _dl_close (void *_map) unsigned int j; for (j = 0; j < remmap->l_reldepsact; ++j) { + struct link_map *depmap = remmap->l_reldeps[j]; + /* Find out whether this object is in our list. */ - if (remmap->l_reldeps[j]->l_idx < nopencount - && (list[remmap->l_reldeps[j]->l_idx] - == remmap->l_reldeps[j])) - /* Yes, it is. */ - if (--new_opencount[remmap->l_reldeps[j]->l_idx] == 0) - { - /* This one is now gone, too. */ - assert (remmap->l_reldeps[j]->l_type == lt_loaded); - mark_removed (remmap->l_reldeps[j]); - } + if (depmap->l_idx < nopencount + && list[depmap->l_idx] == depmap) + { + /* Yes, it is. If is has a search list, make a + recursive call to handle this. */ + if (depmap->l_searchlist.r_list != NULL) + { + assert (new_opencount[depmap->l_idx] > 0); + if (--new_opencount[depmap->l_idx] == 0) + { + /* This one is now gone, too. */ + assert (depmap->l_type == lt_loaded); + mark_removed (depmap); + } + } + else + { + /* Otherwise we have to handle the dependency + deallocation here. */ + unsigned int k; + for (k = 0; depmap->l_initfini[k] != NULL; ++k) + { + struct link_map *rl = depmap->l_initfini[k]; + + if (rl->l_idx < nopencount + && list[rl->l_idx] == rl) + { + assert (new_opencount[rl->l_idx] > 0); + if (--new_opencount[rl->l_idx] == 0) + { + /* Another module to remove. */ + assert (rl->l_type == lt_loaded); + mark_removed (rl); + } + } + else + { + assert (rl->l_opencount > 0); + if (--rl->l_opencount == 0) + mark_removed (rl); + } + } + } + } } } } @@ -224,8 +272,9 @@ _dl_close (void *_map) && (imap->l_flags_1 & DF_1_NODELETE) == 0) { /* When debugging print a message first. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) - _dl_debug_printf ("\ncalling fini: %s\n\n", imap->l_name); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) + GLRO(dl_debug_printf) ("\ncalling fini: %s [%lu]\n\n", + imap->l_name, imap->l_ns); /* Call its termination function. Do not do it for half-cooked objects. */ @@ -318,7 +367,7 @@ _dl_close (void *_map) /* Notify the debugger we are about to remove some loaded objects. */ _r_debug.r_state = RT_DELETE; - _dl_debug_state (); + GLRO(dl_debug_state) (); #ifdef USE_TLS size_t tls_free_start; @@ -340,18 +389,21 @@ _dl_close (void *_map) if (__builtin_expect (imap->l_global, 0)) { /* This object is in the global scope list. Remove it. */ - unsigned int cnt = GL(dl_main_searchlist)->r_nlist; + unsigned int cnt + = GL(dl_ns)[imap->l_ns]._ns_main_searchlist->r_nlist; do --cnt; - while (GL(dl_main_searchlist)->r_list[cnt] != imap); + while (GL(dl_ns)[imap->l_ns]._ns_main_searchlist->r_list[cnt] + != imap); /* The object was already correctly registered. */ - while (++cnt < GL(dl_main_searchlist)->r_nlist) - GL(dl_main_searchlist)->r_list[cnt - 1] - = GL(dl_main_searchlist)->r_list[cnt]; + while (++cnt + < GL(dl_ns)[imap->l_ns]._ns_main_searchlist->r_nlist) + GL(dl_ns)[imap->l_ns]._ns_main_searchlist->r_list[cnt - 1] + = GL(dl_ns)[imap->l_ns]._ns_main_searchlist->r_list[cnt]; - --GL(dl_main_searchlist)->r_nlist; + --GL(dl_ns)[imap->l_ns]._ns_main_searchlist->r_nlist; } #ifdef USE_TLS @@ -442,19 +494,18 @@ _dl_close (void *_map) DL_UNMAP (imap); /* Finally, unlink the data structure and free it. */ -#ifdef SHARED - /* We will unlink the first object only if this is a statically - linked program. */ - assert (imap->l_prev != NULL); - imap->l_prev->l_next = imap->l_next; -#else if (imap->l_prev != NULL) imap->l_prev->l_next = imap->l_next; else - GL(dl_loaded) = imap->l_next; + { +#ifdef SHARED + assert (imap->l_ns != LM_ID_BASE); #endif - --GL(dl_nloaded); - if (imap->l_next) + GL(dl_ns)[imap->l_ns]._ns_loaded = imap->l_next; + } + + --GL(dl_ns)[imap->l_ns]._ns_nloaded; + if (imap->l_next != NULL) imap->l_next->l_prev = imap->l_prev; free (imap->l_versions); @@ -528,7 +579,7 @@ _dl_close (void *_map) if (any_tls) { if (__builtin_expect (++GL(dl_tls_generation) == 0, 0)) - __libc_fatal (_("TLS generation counter wrapped! Please send report with the 'glibcbug' script.")); + __libc_fatal (_("TLS generation counter wrapped! Please report as described in .")); if (tls_free_end == GL(dl_tls_static_used)) GL(dl_tls_static_used) = tls_free_start; @@ -537,7 +588,7 @@ _dl_close (void *_map) /* Notify the debugger those objects are finalized and gone. */ _r_debug.r_state = RT_CONSISTENT; - _dl_debug_state (); + GLRO(dl_debug_state) (); /* Now we can perhaps also remove the modules for which we had dependencies because of symbol lookup. */ @@ -565,7 +616,7 @@ libc_hidden_def (_dl_close) #ifdef USE_TLS -static bool +static bool __libc_freeres_fn_section free_slotinfo (struct dtv_slotinfo_list **elemp) { size_t cnt; @@ -596,21 +647,26 @@ free_slotinfo (struct dtv_slotinfo_list libc_freeres_fn (free_mem) { - if (__builtin_expect (GL(dl_global_scope_alloc), 0) != 0 - && GL(dl_main_searchlist)->r_nlist == GL(dl_initial_searchlist).r_nlist) - { - /* All object dynamically loaded by the program are unloaded. Free - the memory allocated for the global scope variable. */ - struct link_map **old = GL(dl_main_searchlist)->r_list; + for (Lmid_t ns = 0; ns < DL_NNS; ++ns) + if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0 + && (GL(dl_ns)[ns]._ns_main_searchlist->r_nlist + // XXX Check whether we need NS-specific initial_searchlist + == GLRO(dl_initial_searchlist).r_nlist)) + { + /* All object dynamically loaded by the program are unloaded. Free + the memory allocated for the global scope variable. */ + struct link_map **old = GL(dl_ns)[ns]._ns_main_searchlist->r_list; - /* Put the old map in. */ - GL(dl_main_searchlist)->r_list = GL(dl_initial_searchlist).r_list; - /* Signal that the original map is used. */ - GL(dl_global_scope_alloc) = 0; + /* Put the old map in. */ + GL(dl_ns)[ns]._ns_main_searchlist->r_list + // XXX Check whether we need NS-specific initial_searchlist + = GLRO(dl_initial_searchlist).r_list; + /* Signal that the original map is used. */ + GL(dl_ns)[ns]._ns_global_scope_alloc = 0; - /* Now free the old map. */ - free (old); - } + /* Now free the old map. */ + free (old); + } #ifdef USE_TLS if (USE___THREAD || GL(dl_tls_dtv_slotinfo_list) != NULL) @@ -622,11 +678,12 @@ libc_freeres_fn (free_mem) /* There was no initial TLS setup, it was set up later when it used the normal malloc. */ free_slotinfo (&GL(dl_tls_dtv_slotinfo_list)); + else # endif - /* The first element of the list does not have to be deallocated. - It was allocated in the dynamic linker (i.e., with a different - malloc), and in the static library it's in .bss space. */ - free_slotinfo (&GL(dl_tls_dtv_slotinfo_list)->next); + /* The first element of the list does not have to be deallocated. + It was allocated in the dynamic linker (i.e., with a different + malloc), and in the static library it's in .bss space. */ + free_slotinfo (&GL(dl_tls_dtv_slotinfo_list)->next); } #endif } diff -durpN glibc-2.3.3/elf/dl-conflict.c glibc-2.3.4/elf/dl-conflict.c --- glibc-2.3.3/elf/dl-conflict.c 2003-04-06 14:55:50.000000000 -0400 +++ glibc-2.3.4/elf/dl-conflict.c 2004-10-13 21:53:55.000000000 -0400 @@ -1,5 +1,5 @@ /* Resolve conflicts against already prelinked libraries. - Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2001. @@ -33,7 +33,7 @@ _dl_resolve_conflicts (struct link_map * ElfW(Rela) *conflictend) { #if ! ELF_MACHINE_NO_RELA - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_RELOC, 0)) + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_RELOC, 0)) _dl_printf ("\nconflict processing: %s\n", l->l_name[0] ? l->l_name : rtld_progname); @@ -54,8 +54,10 @@ _dl_resolve_conflicts (struct link_map * (map) = resolve_conflict_map; \ } while (0) + /* Prelinking makes no sense for anything but the main namespace. */ + assert (l->l_ns == LM_ID_BASE); struct link_map *resolve_conflict_map __attribute__ ((__unused__)) - = GL(dl_loaded); + = GL(dl_ns)[LM_ID_BASE]._ns_loaded; #include "dynamic-link.h" diff -durpN glibc-2.3.3/elf/dl-debug.c glibc-2.3.4/elf/dl-debug.c --- glibc-2.3.3/elf/dl-debug.c 2002-03-01 04:05:32.000000000 -0500 +++ glibc-2.3.4/elf/dl-debug.c 2004-10-19 18:19:58.000000000 -0400 @@ -1,5 +1,5 @@ /* Communicate dynamic linker state to the debugger at runtime. - Copyright (C) 1996, 1998, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 2000, 2002, 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 @@ -39,8 +39,10 @@ _dl_debug_initialize (ElfW(Addr) ldbase) /* Tell the debugger where to find the map of loaded objects. */ _r_debug.r_version = 1 /* R_DEBUG_VERSION XXX */; _r_debug.r_ldbase = ldbase; - _r_debug.r_map = GL(dl_loaded); - _r_debug.r_brk = (ElfW(Addr)) &INTUSE(_dl_debug_state); + // XXX This is problematic. It means we cannot tell the debugger + // XXX about namespaces other than the main one. + _r_debug.r_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded; + _r_debug.r_brk = (ElfW(Addr)) &_dl_debug_state; } return &_r_debug; @@ -55,4 +57,4 @@ void _dl_debug_state (void) { } -INTDEF (_dl_debug_state) +rtld_hidden_def (_dl_debug_state) diff -durpN glibc-2.3.3/elf/dl-deps.c glibc-2.3.4/elf/dl-deps.c --- glibc-2.3.3/elf/dl-deps.c 2003-01-12 03:01:04.000000000 -0500 +++ glibc-2.3.4/elf/dl-deps.c 2004-10-13 22:01:14.000000000 -0400 @@ -1,5 +1,5 @@ /* Load the dependencies of a mapped object. - Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1996-2003, 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 @@ -60,10 +60,11 @@ openaux (void *a) { struct openaux_args *args = (struct openaux_args *) a; - args->aux = INTUSE(_dl_map_object) (args->map, args->name, 0, - (args->map->l_type == lt_executable - ? lt_library : args->map->l_type), - args->trace_mode, args->open_mode); + args->aux = _dl_map_object (args->map, args->name, 0, + (args->map->l_type == lt_executable + ? lt_library : args->map->l_type), + args->trace_mode, args->open_mode, + args->map->l_ns); } static ptrdiff_t @@ -108,26 +109,26 @@ struct list \ /* DST must not appear in SUID/SGID programs. */ \ if (INTUSE(__libc_enable_secure)) \ - INTUSE(_dl_signal_error) (0, __str, NULL, N_("\ + _dl_signal_error (0, __str, NULL, N_("\ DST not allowed in SUID/SGID programs")); \ \ __newp = (char *) alloca (DL_DST_REQUIRED (l, __str, strlen (__str), \ __cnt)); \ \ - __result = INTUSE(_dl_dst_substitute) (l, __str, __newp, 0); \ + __result = _dl_dst_substitute (l, __str, __newp, 0); \ \ if (*__result == '\0') \ { \ /* The replacement for the DST is not known. We can't \ processed. */ \ if (fatal) \ - INTUSE(_dl_signal_error) (0, __str, NULL, N_("\ + _dl_signal_error (0, __str, NULL, N_("\ empty dynamics string token substitution")); \ else \ { \ /* This is for DT_AUXILIARY. */ \ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, 0)) \ - INTUSE(_dl_debug_printf) (N_("\ + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0))\ + _dl_debug_printf (N_("\ cannot load auxiliary `%s' because of empty dynamic string token " \ "substitution\n"), __str); \ continue; \ @@ -144,7 +145,7 @@ _dl_map_object_deps (struct link_map *ma struct link_map **preloads, unsigned int npreloads, int trace_mode, int open_mode) { - struct list known[1 + npreloads + 1]; + struct list *known = __alloca (sizeof *known * (1 + npreloads + 1)); struct list *runp, *tail; unsigned int nlist, i; /* Object name. */ @@ -241,8 +242,7 @@ _dl_map_object_deps (struct link_map *ma /* Store the tag in the argument structure. */ args.name = name; - err = INTUSE(_dl_catch_error) (&objname, &errstring, openaux, - &args); + err = _dl_catch_error (&objname, &errstring, openaux, &args); if (__builtin_expect (errstring != NULL, 0)) { if (err) @@ -291,18 +291,18 @@ _dl_map_object_deps (struct link_map *ma int err; /* Say that we are about to load an auxiliary library. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)) - INTUSE(_dl_debug_printf) ("load auxiliary object=%s" - " requested by file=%s\n", - name, - l->l_name[0] - ? l->l_name : rtld_progname); + _dl_debug_printf ("load auxiliary object=%s" + " requested by file=%s\n", + name, + l->l_name[0] + ? l->l_name : rtld_progname); /* We must be prepared that the addressed shared object is not available. */ - err = INTUSE(_dl_catch_error) (&objname, &errstring, - openaux, &args); + err = _dl_catch_error (&objname, &errstring, openaux, + &args); if (__builtin_expect (errstring != NULL, 0)) { /* We are not interested in the error message. */ @@ -319,17 +319,17 @@ _dl_map_object_deps (struct link_map *ma int err; /* Say that we are about to load an auxiliary library. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)) - INTUSE(_dl_debug_printf) ("load filtered object=%s" - " requested by file=%s\n", - name, - l->l_name[0] - ? l->l_name : rtld_progname); + _dl_debug_printf ("load filtered object=%s" + " requested by file=%s\n", + name, + l->l_name[0] + ? l->l_name : rtld_progname); /* For filter objects the dependency must be available. */ - err = INTUSE(_dl_catch_error) (&objname, &errstring, - openaux, &args); + err = _dl_catch_error (&objname, &errstring, openaux, + &args); if (__builtin_expect (errstring != NULL, 0)) { if (err) @@ -457,8 +457,8 @@ _dl_map_object_deps (struct link_map *ma l->l_initfini = (struct link_map **) malloc ((2 * nneeded + 1) * sizeof needed[0]); if (l->l_initfini == NULL) - INTUSE(_dl_signal_error) (ENOMEM, map->l_name, NULL, - N_("cannot allocate dependency list")); + _dl_signal_error (ENOMEM, map->l_name, NULL, + N_("cannot allocate dependency list")); l->l_initfini[0] = l; memcpy (&l->l_initfini[1], needed, nneeded * sizeof needed[0]); memcpy (&l->l_initfini[nneeded + 1], l->l_initfini, @@ -490,8 +490,8 @@ _dl_map_object_deps (struct link_map *ma (struct link_map **) malloc ((2 * nlist + 1) * sizeof (struct link_map *)); if (map->l_initfini == NULL) - INTUSE(_dl_signal_error) (ENOMEM, map->l_name, NULL, - N_("cannot allocate symbol search list")); + _dl_signal_error (ENOMEM, map->l_name, NULL, + N_("cannot allocate symbol search list")); map->l_searchlist.r_list = &map->l_initfini[nlist + 1]; @@ -510,8 +510,8 @@ _dl_map_object_deps (struct link_map *ma runp->map->l_reserved = 0; } - if (__builtin_expect(GL(dl_debug_mask) & DL_DEBUG_PRELINK, 0) != 0 - && map == GL(dl_loaded)) + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK, 0) != 0 + && map == GL(dl_ns)[LM_ID_BASE]._ns_loaded) { /* If we are to compute conflicts, we have to build local scope for each library, not just the ultimate loader. */ @@ -531,7 +531,7 @@ _dl_map_object_deps (struct link_map *ma /* As current DT_AUXILIARY/DT_FILTER implementation needs to be rewritten, no need to bother with prelinking the old implementation. */ - INTUSE(_dl_signal_error) (EINVAL, l->l_name, NULL, N_("\ + _dl_signal_error (EINVAL, l->l_name, NULL, N_("\ Filters not supported with LD_TRACE_PRELINKING")); } @@ -545,8 +545,8 @@ Filters not supported with LD_TRACE_PREL + (cnt * sizeof (struct link_map *))); if (l->l_local_scope[0] == NULL) - INTUSE(_dl_signal_error) (ENOMEM, map->l_name, NULL, - N_("cannot allocate symbol search list")); + _dl_signal_error (ENOMEM, map->l_name, NULL, + N_("cannot allocate symbol search list")); l->l_local_scope[0]->r_nlist = cnt; l->l_local_scope[0]->r_list = (struct link_map **) (l->l_local_scope[0] + 1); @@ -629,7 +629,6 @@ Filters not supported with LD_TRACE_PREL map->l_initfini[nlist] = NULL; if (errno_reason) - INTUSE(_dl_signal_error) (errno_reason == -1 ? 0 : errno_reason, objname, - NULL, errstring); + _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname, + NULL, errstring); } -INTDEF (_dl_map_object_deps) diff -durpN glibc-2.3.3/elf/dl-dst.h glibc-2.3.4/elf/dl-dst.h --- glibc-2.3.3/elf/dl-dst.h 2002-04-08 14:48:07.000000000 -0400 +++ glibc-2.3.4/elf/dl-dst.h 2004-03-06 03:12:41.000000000 -0500 @@ -1,5 +1,5 @@ /* Handling of dynamic sring tokens. - Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2001, 2002, 2003, 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 @@ -25,51 +25,48 @@ const char *__sf = strchr (name, '$'); \ \ if (__builtin_expect (__sf != NULL, 0)) \ - __cnt = INTUSE(_dl_dst_count) (__sf, is_path); \ + __cnt = _dl_dst_count (__sf, is_path); \ \ __cnt; }) - -/* Prototype for used function. */ -extern size_t _dl_dst_count (const char *name, int is_path); -extern size_t _dl_dst_count_internal (const char *name, int is_path); +#ifndef IS_IN_rtld +# define _dl_dst_count GLRO(dl_dst_count) +#endif /* Guess from the number of DSTs the length of the result string. */ #define DL_DST_REQUIRED(l, name, len, cnt) \ ({ \ - size_t origin_len; \ size_t __len = (len); \ + size_t __cnt = (cnt); \ \ - /* Now we make a guess how many extra characters on top of the length \ - of S we need to represent the result. We know that we have CNT \ - replacements. Each at most can use \ - MAX (strlen (ORIGIN), strlen (_dl_platform)) \ - minus 7 (which is the length of "$ORIGIN"). \ - \ - First get the origin string if it is not available yet. This can \ - only happen for the map of the executable. */ \ - if ((l)->l_origin == NULL) \ + if (__cnt > 0) \ { \ - assert ((l)->l_name[0] == '\0'); \ - (l)->l_origin = _dl_get_origin (); \ - origin_len = ((l)->l_origin && (l)->l_origin != (char *) -1 \ - ? strlen ((l)->l_origin) : 0); \ + size_t origin_len; \ + /* Now we make a guess how many extra characters on top of the \ + length of S we need to represent the result. We know that \ + we have CNT replacements. Each at most can use \ + MAX (strlen (ORIGIN), strlen (_dl_platform)) \ + minus 7 (which is the length of "$ORIGIN"). \ + \ + First get the origin string if it is not available yet. \ + This can only happen for the map of the executable. */ \ + if ((l)->l_origin == NULL) \ + { \ + assert ((l)->l_name[0] == '\0'); \ + (l)->l_origin = _dl_get_origin (); \ + origin_len = ((l)->l_origin && (l)->l_origin != (char *) -1 \ + ? strlen ((l)->l_origin) : 0); \ + } \ + else \ + origin_len = (l)->l_origin == (char *) -1 \ + ? 0 : strlen ((l)->l_origin); \ + \ + __len += __cnt * (MAX (origin_len, GLRO(dl_platformlen)) - 7); \ } \ - else \ - origin_len = (l)->l_origin == (char *) -1 ? 0 : strlen ((l)->l_origin); \ \ - __len + cnt * (MAX (origin_len, GL(dl_platformlen)) - 7); }) - -/* Find origin of the executable. */ -extern const char *_dl_get_origin (void); -extern const char *_dl_get_origin_internal (void); + __len; }) -#ifdef IS_IN_rtld -# define _dl_get_origin INTUSE(_dl_get_origin) +#ifndef IS_IN_rtld +# define _dl_get_origin GLRO(dl_get_origin) +# define _dl_dst_substitute GLRO(dl_dst_substitute) #endif - -/* Prototype for used function. */ -extern char *_dl_dst_substitute (struct link_map *l, const char *name, - char *result, int is_path); -extern char *_dl_dst_substitute_internal (struct link_map *l, const char *name, - char *result, int is_path); diff -durpN glibc-2.3.3/elf/dl-error.c glibc-2.3.4/elf/dl-error.c --- glibc-2.3.3/elf/dl-error.c 2002-11-24 18:56:39.000000000 -0500 +++ glibc-2.3.4/elf/dl-error.c 2004-03-06 03:12:41.000000000 -0500 @@ -1,5 +1,5 @@ /* Error handling for runtime dynamic linker. - Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1995-2002,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 @@ -113,7 +113,6 @@ _dl_signal_error (int errcode, const cha : "")); } } -INTDEF (_dl_signal_error) void @@ -121,10 +120,10 @@ internal_function _dl_signal_cerror (int errcode, const char *objname, const char *occation, const char *errstring) { - if (__builtin_expect (GL(dl_debug_mask) + if (__builtin_expect (GLRO(dl_debug_mask) & ~(DL_DEBUG_STATISTICS|DL_DEBUG_PRELINK), 0)) - INTUSE(_dl_debug_printf) ("%s: error: %s: %s (%s)\n", objname, occation, - errstring, receiver ? "continued" : "fatal"); + _dl_debug_printf ("%s: error: %s: %s (%s)\n", objname, occation, + errstring, receiver ? "continued" : "fatal"); if (receiver) { @@ -134,7 +133,7 @@ _dl_signal_cerror (int errcode, const ch (*receiver) (errcode, objname, errstring); } else - INTUSE(_dl_signal_error) (errcode, objname, occation, errstring); + _dl_signal_error (errcode, objname, occation, errstring); } @@ -172,7 +171,6 @@ _dl_catch_error (const char **objname, c *errstring = c.errstring; return errcode == -1 ? 0 : errcode; } -INTDEF (_dl_catch_error) void diff -durpN glibc-2.3.3/elf/dl-fini.c glibc-2.3.4/elf/dl-fini.c --- glibc-2.3.3/elf/dl-fini.c 2002-11-07 15:47:12.000000000 -0500 +++ glibc-2.3.4/elf/dl-fini.c 2004-10-27 16:24:17.000000000 -0400 @@ -1,5 +1,5 @@ /* Call the termination functions of loaded shared objects. - Copyright (C) 1995,96,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1995,96,1998-2002,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 @@ -32,154 +32,193 @@ internal_function _dl_fini (void) { /* Lots of fun ahead. We have to call the destructors for all still - loaded objects. The problem is that the ELF specification now - demands that dependencies between the modules are taken into account. - I.e., the destructor for a module is called before the ones for any - of its dependencies. + loaded objects, in all namespaces. The problem is that the ELF + specification now demands that dependencies between the modules + are taken into account. I.e., the destructor for a module is + called before the ones for any of its dependencies. To make things more complicated, we cannot simply use the reverse order of the constructors. Since the user might have loaded objects using `dlopen' there are possibly several other modules with its dependencies to be taken into account. Therefore we have to start determining the order of the modules once again from the beginning. */ - unsigned int i; - struct link_map *l; - struct link_map **maps; - - /* XXX Could it be (in static binaries) that there is no object loaded? */ - assert (GL(dl_nloaded) > 0); + struct link_map **maps = NULL; + size_t maps_size = 0; - /* Now we can allocate an array to hold all the pointers and copy - the pointers in. */ - maps = (struct link_map **) alloca (GL(dl_nloaded) - * sizeof (struct link_map *)); - for (l = GL(dl_loaded), i = 0; l != NULL; l = l->l_next) + /* We run the destructors of the main namespaces last. As for the + other namespaces, we pick run the destructors in them in reverse + order of the namespace ID. */ + for (Lmid_t cnt = DL_NNS - 1; cnt >= 0; --cnt) { - assert (i < GL(dl_nloaded)); + /* Protect against concurrent loads and unloads. */ + __rtld_lock_lock_recursive (GL(dl_load_lock)); - maps[i++] = l; + unsigned int nloaded = GL(dl_ns)[cnt]._ns_nloaded; - /* Bump l_opencount of all objects so that they are not dlclose()ed - from underneath us. */ - ++l->l_opencount; - } - assert (i == GL(dl_nloaded)); + /* XXX Could it be (in static binaries) that there is no object + loaded? */ + assert (cnt != LM_ID_BASE || nloaded > 0); - /* Now we have to do the sorting. */ - for (l = GL(dl_loaded)->l_next; l != NULL; l = l->l_next) - { - unsigned int j; - unsigned int k; + /* Now we can allocate an array to hold all the pointers and copy + the pointers in. */ + if (maps_size < nloaded * sizeof (struct link_map *)) + { + if (maps_size == 0) + { + maps_size = nloaded * sizeof (struct link_map *); + maps = (struct link_map **) alloca (maps_size); + } + else + maps = (struct link_map **) + extend_alloca (maps, maps_size, + nloaded * sizeof (struct link_map *)); + } - /* Find the place in the `maps' array. */ - for (j = 1; maps[j] != l; ++j) - ; + unsigned int i; + struct link_map *l; + for (l = GL(dl_ns)[cnt]._ns_loaded, i = 0; l != NULL; l = l->l_next) + /* Do not handle ld.so in secondary namespaces. */ + if (l == l->l_real) + { + assert (i < nloaded); - /* Find all object for which the current one is a dependency and - move the found object (if necessary) in front. */ - for (k = j + 1; k < GL(dl_nloaded); ++k) + maps[i++] = l; + + /* Bump l_opencount of all objects so that they are not + dlclose()ed from underneath us. */ + ++l->l_opencount; + } + assert (cnt != LM_ID_BASE || i == nloaded); + assert (cnt == LM_ID_BASE || i == nloaded || i == nloaded - 1); + unsigned int nmaps = i; + + if (nmaps != 0) { - struct link_map **runp; + /* Now we have to do the sorting. */ + l = GL(dl_ns)[cnt]._ns_loaded; + if (cnt == LM_ID_BASE) + /* The main executable always comes first. */ + l = l->l_next; + for (; l != NULL; l = l->l_next) + /* Do not handle ld.so in secondary namespaces. */ + if (l == l->l_real) + { + /* Find the place in the 'maps' array. */ + unsigned int j; + for (j = cnt == LM_ID_BASE ? 1 : 0; maps[j] != l; ++j) + assert (j < nmaps); - runp = maps[k]->l_initfini; - if (runp != NULL) - { - while (*runp != NULL) - if (*runp == l) + /* Find all object for which the current one is a dependency + and move the found object (if necessary) in front. */ + for (unsigned int k = j + 1; k < nmaps; ++k) { - struct link_map *here = maps[k]; - - /* Move it now. */ - memmove (&maps[j] + 1, - &maps[j], - (k - j) * sizeof (struct link_map *)); - maps[j++] = here; + struct link_map **runp = maps[k]->l_initfini; + if (runp != NULL) + { + while (*runp != NULL) + if (*runp == l) + { + struct link_map *here = maps[k]; - break; - } - else - ++runp; - } + /* Move it now. */ + memmove (&maps[j] + 1, + &maps[j], + (k - j) * sizeof (struct link_map *)); + maps[j++] = here; - if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) - { - unsigned int m = maps[k]->l_reldepsact; - struct link_map **relmaps = maps[k]->l_reldeps; + break; + } + else + ++runp; + } - while (m-- > 0) - { - if (relmaps[m] == l) - { - struct link_map *here = maps[k]; + if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) + { + unsigned int m = maps[k]->l_reldepsact; + struct link_map **relmaps = maps[k]->l_reldeps; - /* Move it now. */ - memmove (&maps[j] + 1, - &maps[j], - (k - j) * sizeof (struct link_map *)); - maps[j] = here; + while (m-- > 0) + { + if (relmaps[m] == l) + { + struct link_map *here = maps[k]; - break; - } + /* Move it now. */ + memmove (&maps[j] + 1, + &maps[j], + (k - j) * sizeof (struct link_map *)); + maps[j] = here; - } - } + break; + } + } + } + } + } } - } - /* `maps' now contains the objects in the right order. Now call the - destructors. We have to process this array from the front. */ - for (i = 0; i < GL(dl_nloaded); ++i) - { - l = maps[i]; + /* We do not rely on the linked list of loaded object anymore from + this point on. We have our own list here (maps). The various + members of this list cannot vanish since the open count is too + high and will be decremented in this loop. So we release the + lock so that some code which might be called from a destructor + can directly or indirectly access the lock. */ + __rtld_lock_unlock_recursive (GL(dl_load_lock)); - if (l->l_init_called) + /* 'maps' now contains the objects in the right order. Now call the + destructors. We have to process this array from the front. */ + for (i = 0; i < nmaps; ++i) { - /* Make sure nothing happens if we are called twice. */ - l->l_init_called = 0; + l = maps[i]; - /* Don't call the destructors for objects we are not supposed to. */ - if (l->l_name[0] == '\0' && l->l_type == lt_executable) - continue; + if (l->l_init_called) + { + /* Make sure nothing happens if we are called twice. */ + l->l_init_called = 0; - /* Is there a destructor function? */ - if (l->l_info[DT_FINI_ARRAY] == NULL && l->l_info[DT_FINI] == NULL) - continue; + /* Don't call the destructors for objects we are not + supposed to. */ + if (l->l_name[0] == '\0' && l->l_type == lt_executable) + continue; - /* When debugging print a message first. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) - INTUSE(_dl_debug_printf) ("\ncalling fini: %s\n\n", - l->l_name[0] - ? l->l_name : rtld_progname); + /* Is there a destructor function? */ + if (l->l_info[DT_FINI_ARRAY] == NULL + && l->l_info[DT_FINI] == NULL) + continue; - /* First see whether an array is given. */ - if (l->l_info[DT_FINI_ARRAY] != NULL) - { - ElfW(Addr) *array = - (ElfW(Addr) *) (l->l_addr - + l->l_info[DT_FINI_ARRAY]->d_un.d_ptr); - unsigned int i = (l->l_info[DT_FINI_ARRAYSZ]->d_un.d_val - / sizeof (ElfW(Addr))); - while (i-- > 0) - ((fini_t) array[i]) (); + /* When debugging print a message first. */ + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, + 0)) + _dl_debug_printf ("\ncalling fini: %s [%lu]\n\n", + l->l_name[0] ? l->l_name : rtld_progname, + cnt); + + /* First see whether an array is given. */ + if (l->l_info[DT_FINI_ARRAY] != NULL) + { + ElfW(Addr) *array = + (ElfW(Addr) *) (l->l_addr + + l->l_info[DT_FINI_ARRAY]->d_un.d_ptr); + unsigned int i = (l->l_info[DT_FINI_ARRAYSZ]->d_un.d_val + / sizeof (ElfW(Addr))); + while (i-- > 0) + ((fini_t) array[i]) (); + } + + /* Next try the old-style destructor. */ + if (l->l_info[DT_FINI] != NULL) + ((fini_t) DL_DT_FINI_ADDRESS (l, l->l_addr + l->l_info[DT_FINI]->d_un.d_ptr)) (); } - /* Next try the old-style destructor. */ - if (l->l_info[DT_FINI] != NULL) - ((fini_t) DL_DT_FINI_ADDRESS (l, l->l_addr + l->l_info[DT_FINI]->d_un.d_ptr)) (); + /* Correct the previous increment. */ + --l->l_opencount; } - - /* Correct the previous increment. */ - --l->l_opencount; } - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_STATISTICS, 0)) - { - INTUSE(_dl_debug_printf) ("\nruntime linker statistics:\n"); - INTUSE(_dl_debug_printf) ("\ - final number of relocations: %lu\n", - GL(dl_num_relocations)); - INTUSE(_dl_debug_printf) ("\ -final number of relocations from cache: %lu\n", - GL(dl_num_cache_relocations)); - } + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_STATISTICS, 0)) + _dl_debug_printf ("\nruntime linker statistics:\n" + " final number of relocations: %lu\n" + "final number of relocations from cache: %lu\n", + GL(dl_num_relocations), + GL(dl_num_cache_relocations)); } diff -durpN glibc-2.3.3/elf/dl-init.c glibc-2.3.4/elf/dl-init.c --- glibc-2.3.3/elf/dl-init.c 2002-09-20 19:56:18.000000000 -0400 +++ glibc-2.3.4/elf/dl-init.c 2004-07-06 00:15:12.000000000 -0400 @@ -1,5 +1,5 @@ /* Return the next shared object initializer function not yet run. - Copyright (C) 1995, 1996, 1998-2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1998-2002, 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 @@ -24,9 +24,11 @@ /* Type of the initializer. */ typedef void (*init_t) (int, char **, char **); +#ifndef HAVE_INLINED_SYSCALLS /* Flag, nonzero during startup phase. */ extern int _dl_starting_up; extern int _dl_starting_up_internal attribute_hidden; +#endif static void @@ -51,9 +53,9 @@ call_init (struct link_map *l, int argc, return; /* Print a debug message if wanted. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) - INTUSE(_dl_debug_printf) ("\ncalling init: %s\n\n", - l->l_name[0] ? l->l_name : rtld_progname); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) + _dl_debug_printf ("\ncalling init: %s\n\n", + l->l_name[0] ? l->l_name : rtld_progname); /* Now run the local constructors. There are two forms of them: - the one named by DT_INIT @@ -108,10 +110,10 @@ _dl_init (struct link_map *main_map, int ElfW(Addr) *addrs; unsigned int cnt; - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) - INTUSE(_dl_debug_printf) ("\ncalling preinit: %s\n\n", - main_map->l_name[0] - ? main_map->l_name : rtld_progname); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) + _dl_debug_printf ("\ncalling preinit: %s\n\n", + main_map->l_name[0] + ? main_map->l_name : rtld_progname); addrs = (ElfW(Addr) *) (preinit_array->d_un.d_ptr + main_map->l_addr); for (cnt = 0; cnt < i; ++cnt) @@ -123,7 +125,7 @@ _dl_init (struct link_map *main_map, int not been used before. */ r = _dl_debug_initialize (0); r->r_state = RT_ADD; - INTUSE(_dl_debug_state) (); + _dl_debug_state (); /* Stupid users forced the ELF specification to be changed. It now says that the dynamic loader is responsible for determining the @@ -141,9 +143,11 @@ _dl_init (struct link_map *main_map, int /* Notify the debugger all new objects are now ready to go. */ r->r_state = RT_CONSISTENT; - INTUSE(_dl_debug_state) (); + _dl_debug_state (); +#ifndef HAVE_INLINED_SYSCALLS /* Finished starting up. */ INTUSE(_dl_starting_up) = 0; +#endif } INTDEF (_dl_init) diff -durpN glibc-2.3.3/elf/dl-iteratephdr.c glibc-2.3.4/elf/dl-iteratephdr.c --- glibc-2.3.3/elf/dl-iteratephdr.c 2003-10-22 03:09:41.000000000 -0400 +++ glibc-2.3.4/elf/dl-iteratephdr.c 2004-10-13 22:02:06.000000000 -0400 @@ -1,5 +1,5 @@ /* Get loaded objects program headers. - Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2001. @@ -42,12 +42,32 @@ __dl_iterate_phdr (int (*callback) (stru __rtld_lock_lock_recursive (GL(dl_load_lock)); __libc_cleanup_push (cancel_handler, 0); - for (l = GL(dl_loaded); l != NULL; l = l->l_next) + /* We have to determine the namespace of the caller since this determines + which namespace is reported. */ + const void *caller = RETURN_ADDRESS (0); + size_t nloaded = GL(dl_ns)[0]._ns_nloaded; + Lmid_t ns = 0; + for (Lmid_t cnt = DL_NNS - 1; cnt > 0; --cnt) + for (struct link_map *l = GL(dl_ns)[cnt]._ns_loaded; l; l = l->l_next) + { + /* We have to count the total number of loaded objects. */ + nloaded += GL(dl_ns)[cnt]._ns_nloaded; + + if (caller >= (const void *) l->l_map_start + && caller < (const void *) l->l_map_end) + /* There must be exactly one DSO for the range of the virtual + memory. Otherwise something is really broken. */ + ns = cnt; + } + + for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next) { info.dlpi_addr = l->l_addr; info.dlpi_name = l->l_name; info.dlpi_phdr = l->l_phdr; info.dlpi_phnum = l->l_phnum; + info.dlpi_adds = GL(dl_load_adds); + info.dlpi_subs = GL(dl_load_adds) - nloaded; ret = callback (&info, sizeof (struct dl_phdr_info), data); if (ret) break; @@ -84,6 +104,8 @@ dl_iterate_phdr (int (*callback) (struct info.dlpi_name = ""; info.dlpi_phdr = _dl_phdr; info.dlpi_phnum = _dl_phnum; + info.dlpi_adds = GL(dl_load_adds); + info.dlpi_subs = GL(dl_load_adds) - GL(dl_ns)[LM_ID_BASE]._ns_nloaded; ret = (*callback) (&info, sizeof (struct dl_phdr_info), data); if (ret) return ret; diff -durpN glibc-2.3.3/elf/dl-libc.c glibc-2.3.4/elf/dl-libc.c --- glibc-2.3.3/elf/dl-libc.c 2003-07-22 19:53:54.000000000 -0400 +++ glibc-2.3.4/elf/dl-libc.c 2004-10-18 19:07:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Handle loading and unloading shared objects for internal libc purposes. - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1999. @@ -39,7 +39,7 @@ dlerror_run (void (*operate) (void *), v const char *last_errstring = NULL; int result; - (void) _dl_catch_error (&objname, &last_errstring, operate, args); + (void) GLRO(dl_catch_error) (&objname, &last_errstring, operate, args); result = last_errstring != NULL; if (result && last_errstring != _dl_out_of_memory) @@ -77,7 +77,7 @@ do_dlopen (void *ptr) { struct do_dlopen_args *args = (struct do_dlopen_args *) ptr; /* Open and relocate the shared object. */ - args->map = _dl_open (args->name, args->mode, NULL); + args->map = _dl_open (args->name, args->mode, NULL, __LM_ID_CALLER); } static void @@ -85,9 +85,9 @@ do_dlsym (void *ptr) { struct do_dlsym_args *args = (struct do_dlsym_args *) ptr; args->ref = NULL; - args->loadbase = _dl_lookup_symbol (args->name, args->map, &args->ref, - args->map->l_local_scope, 0, - DL_LOOKUP_RETURN_NEWEST); + args->loadbase = GLRO(dl_lookup_symbol_x) (args->name, args->map, &args->ref, + args->map->l_local_scope, NULL, 0, + DL_LOOKUP_RETURN_NEWEST, NULL); } static void @@ -121,14 +121,12 @@ do_dlsym_private (void *ptr) vers.hidden = 1; /* vers.hash = _dl_elf_hash (version); */ vers.hash = 0x0963cf85; - /* FIXME: Shouldn't we use libc.so.6* here? */ vers.filename = NULL; struct do_dlsym_args *args = (struct do_dlsym_args *) ptr; args->ref = NULL; - l = _dl_lookup_versioned_symbol (args->name, args->map, - &args->ref, args->map->l_scope, - &vers, 0, 0); + l = GLRO(dl_lookup_symbol_x) (args->name, args->map, &args->ref, + args->map->l_scope, &vers, 0, 0, NULL); args->loadbase = l; } @@ -157,23 +155,36 @@ __libc_dlopen_mode (const char *name, in if (dlerror_run (do_dlopen, &args)) return NULL; + __libc_register_dl_open_hook (args.map); + __libc_register_dlfcn_hook (args.map); + return (void *) args.map; +#endif +} +libc_hidden_def (__libc_dlopen_mode) + +#ifndef SHARED +void * +__libc_dlsym_private (struct link_map *map, const char *name) +{ struct do_dlsym_args sargs; - sargs.map = args.map; - sargs.name = "_dl_open_hook"; + sargs.map = map; + sargs.name = name; if (! dlerror_run (do_dlsym_private, &sargs)) - { - struct dl_open_hook **hook - = (struct dl_open_hook **) - (DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref)); - if (hook != NULL) - *hook = &_dl_open_hook; - } + return DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref); + return NULL; +} - return (void *) args.map; -#endif +void +__libc_register_dl_open_hook (struct link_map *map) +{ + struct dl_open_hook **hook; + + hook = (struct dl_open_hook **) __libc_dlsym_private (map, "_dl_open_hook"); + if (hook != NULL) + *hook = &_dl_open_hook; } -libc_hidden_def (__libc_dlopen_mode) +#endif void * __libc_dlsym (void *map, const char *name) @@ -210,7 +221,7 @@ libc_freeres_fn (free_mem) /* Remove all search directories. */ d = GL(dl_all_dirs); - while (d != GL(dl_init_all_dirs)) + while (d != GLRO(dl_init_all_dirs)) { struct r_search_path_elem *old = d; d = d->next; @@ -218,18 +229,19 @@ libc_freeres_fn (free_mem) } /* Remove all additional names added to the objects. */ - for (l = GL(dl_loaded); l != NULL; l = l->l_next) - { - struct libname_list *lnp = l->l_libname->next; + for (Lmid_t ns = 0; ns < DL_NNS; ++ns) + for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next) + { + struct libname_list *lnp = l->l_libname->next; - l->l_libname->next = NULL; + l->l_libname->next = NULL; - while (lnp != NULL) - { - struct libname_list *old = lnp; - lnp = lnp->next; - if (! old->dont_free) + while (lnp != NULL) + { + struct libname_list *old = lnp; + lnp = lnp->next; + if (! old->dont_free) free (old); - } - } + } + } } diff -durpN glibc-2.3.3/elf/dl-load.c glibc-2.3.4/elf/dl-load.c --- glibc-2.3.3/elf/dl-load.c 2003-11-24 17:54:19.000000000 -0500 +++ glibc-2.3.4/elf/dl-load.c 2004-12-12 15:49:28.000000000 -0500 @@ -1,5 +1,5 @@ /* Map in a shared object's segments from the file. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -34,6 +34,8 @@ #include "dynamic-link.h" #include #include +#include +#include #include @@ -53,6 +55,12 @@ # define MAP_COPY MAP_PRIVATE #endif +/* We want to prevent people from modifying DSOs which are currently in + use. This is what MAP_DENYWRITE is for. */ +#ifndef MAP_DENYWRITE +# define MAP_DENYWRITE 0 +#endif + /* Some systems link their relocatable objects for another base address than 0. We want to know the base address for these such that we can subtract this address from the segment addresses during mapping. @@ -95,6 +103,17 @@ ELF_PREFERRED_ADDRESS_DATA; # define ELF_FIXED_ADDRESS(loader, mapstart) ((void) 0) #endif + +int __stack_prot attribute_hidden attribute_relro + = (PROT_READ|PROT_WRITE +#if _STACK_GROWS_DOWN && defined PROT_GROWSDOWN + |PROT_GROWSDOWN +#elif _STACK_GROWS_UP && defined PROT_GROWSUP + |PROT_GROWSUP +#endif + ); + + /* Type for the buffer we put the ELF header and hopefully the program header. This buffer does not really have to be too large. In most cases the program header follows the ELF header directly. If this @@ -121,12 +140,12 @@ struct filebuf }; /* This is the decomposed LD_LIBRARY_PATH search path. */ -static struct r_search_path_struct env_path_list; +static struct r_search_path_struct env_path_list attribute_relro; /* List of the hardware capabilities we might end up using. */ -static const struct r_strlenpair *capstr; -static size_t ncapstr; -static size_t max_capstrlen; +static const struct r_strlenpair *capstr attribute_relro; +static size_t ncapstr attribute_relro; +static size_t max_capstrlen attribute_relro; /* Get the generated information about the trusted directories. */ @@ -220,7 +239,6 @@ _dl_dst_count (const char *name, int is_ return cnt; } -INTDEF (_dl_dst_count) char * @@ -248,7 +266,7 @@ _dl_dst_substitute (struct link_map *l, INTUSE(__libc_enable_secure))) != 0) repl = l->l_origin; else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) - repl = GL(dl_platform); + repl = GLRO(dl_platform); else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) repl = DL_DST_LIB; @@ -283,7 +301,6 @@ _dl_dst_substitute (struct link_map *l, return result; } -INTDEF (_dl_dst_substitute) /* Return copy of argument with all recognized dynamic string tokens @@ -317,7 +334,7 @@ expand_dynamic_string_token (struct link if (result == NULL) return NULL; - return INTUSE(_dl_dst_substitute) (l, s, result, 1); + return _dl_dst_substitute (l, s, result, 1); } @@ -343,8 +360,7 @@ add_name_to_object (struct link_map *l, if (newname == NULL) { /* No more memory. */ - INTUSE(_dl_signal_error) (ENOMEM, name, NULL, - N_("cannot allocate name record")); + _dl_signal_error (ENOMEM, name, NULL, N_("cannot allocate name record")); return; } /* The object should have a libname set from _dl_new_object. */ @@ -357,7 +373,7 @@ add_name_to_object (struct link_map *l, } /* Standard search directories. */ -static struct r_search_path_struct rtld_search_dirs; +static struct r_search_path_struct rtld_search_dirs attribute_relro; static size_t max_dirnamelen; @@ -445,8 +461,8 @@ fillin_rpath (char *rpath, struct r_sear malloc (sizeof (*dirp) + ncapstr * sizeof (enum r_dir_status) + where_len + len + 1); if (dirp == NULL) - INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL, - N_("cannot create cache for search path")); + _dl_signal_error (ENOMEM, NULL, NULL, + N_("cannot create cache for search path")); dirp->dirname = ((char *) dirp + sizeof (*dirp) + ncapstr * sizeof (enum r_dir_status)); @@ -502,10 +518,10 @@ decompose_rpath (struct r_search_path_st /* First see whether we must forget the RUNPATH and RPATH from this object. */ - if (__builtin_expect (GL(dl_inhibit_rpath) != NULL, 0) + if (__builtin_expect (GLRO(dl_inhibit_rpath) != NULL, 0) && !INTUSE(__libc_enable_secure)) { - const char *inhp = GL(dl_inhibit_rpath); + const char *inhp = GLRO(dl_inhibit_rpath); do { @@ -527,7 +543,7 @@ decompose_rpath (struct r_search_path_st signal_error_cache: errstring = N_("cannot create cache for search path"); signal_error: - INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL, errstring); + _dl_signal_error (ENOMEM, NULL, NULL, errstring); } sps->dirs = result; @@ -623,7 +639,7 @@ _dl_init_paths (const char *llp) directories addressed by the LD_LIBRARY_PATH environment variable. */ /* Get the capabilities. */ - capstr = _dl_important_hwcaps (GL(dl_platform), GL(dl_platformlen), + capstr = _dl_important_hwcaps (GLRO(dl_platform), GLRO(dl_platformlen), &ncapstr, &max_capstrlen); /* First set up the rest of the default search directory entries. */ @@ -633,7 +649,7 @@ _dl_init_paths (const char *llp) { errstring = N_("cannot create search path array"); signal_error: - INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL, errstring); + _dl_signal_error (ENOMEM, NULL, NULL, errstring); } round_size = ((2 * sizeof (struct r_search_path_elem) - 1 @@ -683,7 +699,7 @@ _dl_init_paths (const char *llp) #ifdef SHARED /* This points to the map of the main object. */ - l = GL(dl_loaded); + l = GL(dl_ns)[LM_ID_BASE]._ns_loaded; if (l != NULL) { assert (l->l_type != lt_loaded); @@ -760,30 +776,18 @@ _dl_init_paths (const char *llp) env_path_list.dirs = (void *) -1; /* Remember the last search directory added at startup. */ - GL(dl_init_all_dirs) = GL(dl_all_dirs); + GLRO(dl_init_all_dirs) = GL(dl_all_dirs); } -/* Think twice before changing anything in this function. It is placed - here and prepared using the `alloca' magic to prevent it from being - inlined. The function is only called in case of an error. But then - performance does not count. The function used to be "inlinable" and - the compiled did so all the time. This increased the code size for - absolutely no good reason. */ static void -__attribute__ ((noreturn)) +__attribute__ ((noreturn, noinline)) lose (int code, int fd, const char *name, char *realname, struct link_map *l, const char *msg) { - /* The use of `alloca' here looks ridiculous but it helps. The goal - is to avoid the function from being inlined. There is no official - way to do this so we use this trick. gcc never inlines functions - which use `alloca'. */ - int *a = (int *) alloca (sizeof (int)); - a[0] = fd; /* The file might already be closed. */ - if (a[0] != -1) - (void) __close (a[0]); + if (fd != -1) + (void) __close (fd); if (l != NULL) { /* Remove the stillborn object from the list and free it. */ @@ -791,14 +795,14 @@ lose (int code, int fd, const char *name if (l->l_prev == NULL) /* No other module loaded. This happens only in the static library, or in rtld under --verify. */ - GL(dl_loaded) = NULL; + GL(dl_ns)[l->l_ns]._ns_loaded = NULL; else l->l_prev->l_next = NULL; - --GL(dl_nloaded); + --GL(dl_ns)[l->l_ns]._ns_nloaded; free (l); } free (realname); - INTUSE(_dl_signal_error) (code, name, NULL, msg); + _dl_signal_error (code, name, NULL, msg); } @@ -811,7 +815,7 @@ static struct link_map * _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp, char *realname, struct link_map *loader, int l_type, - int mode) + int mode, void **stack_endp, Lmid_t nsid) { struct link_map *l = NULL; const ElfW(Ehdr) *header; @@ -835,7 +839,7 @@ _dl_map_object_from_fd (const char *name } /* Look again to see if the real name matched another already loaded. */ - for (l = GL(dl_loaded); l; l = l->l_next) + for (l = GL(dl_ns)[nsid]._ns_loaded; l; l = l->l_next) if (l->l_ino == st.st_ino && l->l_dev == st.st_dev) { /* The object is already loaded. @@ -850,14 +854,39 @@ _dl_map_object_from_fd (const char *name return l; } +#ifdef SHARED + /* When loading into a namespace other than the base one we must + avoid loading ld.so since there can only be one copy. Ever. */ + if (__builtin_expect (nsid != LM_ID_BASE, 0) + && ((st.st_ino == GL(dl_rtld_map).l_ino + && st.st_dev == GL(dl_rtld_map).l_dev) + || _dl_name_match_p (name, &GL(dl_rtld_map)))) + { + /* This is indeed ld.so. Create a new link_map which refers to + the real one for almost everything. */ + l = _dl_new_object (realname, name, l_type, loader, mode, nsid); + if (l == NULL) + goto fail_new; + + /* Refer to the real descriptor. */ + l->l_real = &GL(dl_rtld_map); + + /* No need to bump the refcount of the real object, ld.so will + never be unloaded. */ + __close (fd); + + return l; + } +#endif + if (mode & RTLD_NOLOAD) /* We are not supposed to load the object unless it is already loaded. So return now. */ return NULL; /* Print debugging message. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_FILES, 0)) - INTUSE(_dl_debug_printf) ("file=%s; generating link map\n", name); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) + _dl_debug_printf ("file=%s [%lu]; generating link map\n", name, nsid); /* This is the ELF header. We read it in `open_verify'. */ header = (void *) fbp->buf; @@ -870,16 +899,19 @@ _dl_map_object_from_fd (const char *name if (_dl_zerofd == -1) { __close (fd); - INTUSE(_dl_signal_error) (errno, NULL, NULL, - N_("cannot open zero fill device")); + _dl_signal_error (errno, NULL, NULL, + N_("cannot open zero fill device")); } } #endif /* Enter the new object in the list of loaded objects. */ - l = _dl_new_object (realname, name, l_type, loader); - if (__builtin_expect (! l, 0)) + l = _dl_new_object (realname, name, l_type, loader, mode, nsid); + if (__builtin_expect (l == NULL, 0)) { +#ifdef SHARED + fail_new: +#endif errstring = N_("cannot create shared object descriptor"); goto call_lose_errno; } @@ -940,7 +972,7 @@ _dl_map_object_from_fd (const char *name case PT_LOAD: /* A load command tells us to map in part of the file. We record the load commands and process them all later. */ - if (__builtin_expect ((ph->p_align & (GL(dl_pagesize) - 1)) != 0, + if (__builtin_expect ((ph->p_align & (GLRO(dl_pagesize) - 1)) != 0, 0)) { errstring = N_("ELF load command alignment not page-aligned"); @@ -955,12 +987,12 @@ _dl_map_object_from_fd (const char *name } c = &loadcmds[nloadcmds++]; - c->mapstart = ph->p_vaddr & ~(ph->p_align - 1); - c->mapend = ((ph->p_vaddr + ph->p_filesz + GL(dl_pagesize) - 1) - & ~(GL(dl_pagesize) - 1)); + c->mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); + c->mapend = ((ph->p_vaddr + ph->p_filesz + GLRO(dl_pagesize) - 1) + & ~(GLRO(dl_pagesize) - 1)); c->dataend = ph->p_vaddr + ph->p_filesz; c->allocend = ph->p_vaddr + ph->p_memsz; - c->mapoff = ph->p_offset & ~(ph->p_align - 1); + c->mapoff = ph->p_offset & ~(GLRO(dl_pagesize) - 1); /* Determine whether there is a gap between the last segment and this one. */ @@ -1065,6 +1097,11 @@ cannot allocate TLS data structures for case PT_GNU_STACK: stack_flags = ph->p_flags; break; + + case PT_GNU_RELRO: + l->l_relro_addr = ph->p_vaddr; + l->l_relro_size = ph->p_memsz; + break; } if (__builtin_expect (nloadcmds == 0, 0)) @@ -1097,12 +1134,13 @@ cannot allocate TLS data structures for the OS can do whatever it likes. */ ElfW(Addr) mappref; mappref = (ELF_PREFERRED_ADDRESS (loader, maplength, - c->mapstart & GL(dl_use_load_bias)) + c->mapstart & GLRO(dl_use_load_bias)) - MAP_BASE_ADDR (l)); /* Remember which part of the address space this object uses. */ l->l_map_start = (ElfW(Addr)) __mmap ((void *) mappref, maplength, - c->prot, MAP_COPY | MAP_FILE, + c->prot, + MAP_COPY|MAP_FILE|MAP_DENYWRITE, fd, c->mapoff); if (__builtin_expect ((void *) l->l_map_start == MAP_FAILED, 0)) { @@ -1126,21 +1164,20 @@ cannot allocate TLS data structures for goto postmap; } - else - { - /* This object is loaded at a fixed address. This must never - happen for objects loaded with dlopen(). */ - if (__builtin_expect ((mode & __RTLD_OPENEXEC) == 0, 0)) - { - errstring = N_("cannot dynamically load executable"); - goto call_lose; - } - /* Notify ELF_PREFERRED_ADDRESS that we have to load this one - fixed. */ - ELF_FIXED_ADDRESS (loader, c->mapstart); + /* This object is loaded at a fixed address. This must never + happen for objects loaded with dlopen(). */ + if (__builtin_expect ((mode & __RTLD_OPENEXEC) == 0, 0)) + { + errstring = N_("cannot dynamically load executable"); + goto call_lose; } + /* Notify ELF_PREFERRED_ADDRESS that we have to load this one + fixed. */ + ELF_FIXED_ADDRESS (loader, c->mapstart); + + /* Remember which part of the address space this object uses. */ l->l_map_start = c->mapstart + l->l_addr; l->l_map_end = l->l_map_start + maplength; @@ -1151,11 +1188,15 @@ cannot allocate TLS data structures for /* Map the segment contents from the file. */ && (__mmap ((void *) (l->l_addr + c->mapstart), c->mapend - c->mapstart, c->prot, - MAP_FIXED | MAP_COPY | MAP_FILE, fd, c->mapoff) + MAP_FIXED|MAP_COPY|MAP_FILE|MAP_DENYWRITE, + fd, c->mapoff) == MAP_FAILED)) goto map_error; postmap: + if (c->prot & PROT_EXEC) + l->l_text_end = l->l_addr + c->mapend; + if (l->l_phdr == 0 && (ElfW(Off)) c->mapoff <= header->e_phoff && ((size_t) (c->mapend - c->mapstart + c->mapoff) @@ -1171,8 +1212,8 @@ cannot allocate TLS data structures for zero = l->l_addr + c->dataend; zeroend = l->l_addr + c->allocend; - zeropage = ((zero + GL(dl_pagesize) - 1) - & ~(GL(dl_pagesize) - 1)); + zeropage = ((zero + GLRO(dl_pagesize) - 1) + & ~(GLRO(dl_pagesize) - 1)); if (zeroend < zeropage) /* All the extra data is in the last page of the segment. @@ -1185,8 +1226,9 @@ cannot allocate TLS data structures for if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0)) { /* Dag nab it. */ - if (__mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)), - GL(dl_pagesize), c->prot|PROT_WRITE) < 0) + if (__mprotect ((caddr_t) (zero + & ~(GLRO(dl_pagesize) - 1)), + GLRO(dl_pagesize), c->prot|PROT_WRITE) < 0) { errstring = N_("cannot change memory protections"); goto call_lose_errno; @@ -1194,8 +1236,8 @@ cannot allocate TLS data structures for } memset ((void *) zero, '\0', zeropage - zero); if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0)) - __mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)), - GL(dl_pagesize), c->prot); + __mprotect ((caddr_t) (zero & ~(GLRO(dl_pagesize) - 1)), + GLRO(dl_pagesize), c->prot); } if (zeroend > zeropage) @@ -1215,43 +1257,8 @@ cannot allocate TLS data structures for ++c; } - - if (l->l_phdr == NULL) - { - /* The program header is not contained in any of the segments. - We have to allocate memory ourself and copy it over from - out temporary place. */ - ElfW(Phdr) *newp = (ElfW(Phdr) *) malloc (header->e_phnum - * sizeof (ElfW(Phdr))); - if (newp == NULL) - { - errstring = N_("cannot allocate memory for program header"); - goto call_lose_errno; - } - - l->l_phdr = memcpy (newp, phdr, - (header->e_phnum * sizeof (ElfW(Phdr)))); - l->l_phdr_allocated = 1; - } - else - /* Adjust the PT_PHDR value by the runtime load address. */ - (ElfW(Addr)) l->l_phdr += l->l_addr; } -#ifdef USE_TLS - /* Adjust the address of the TLS initialization image. */ - if (l->l_tls_initimage != NULL) - l->l_tls_initimage = (char *) l->l_tls_initimage + l->l_addr; -#endif - - /* We are done mapping in the file. We no longer need the descriptor. */ - __close (fd); - /* Signal that we closed the file. */ - fd = -1; - - if (l->l_type == lt_library && type == ET_EXEC) - l->l_type = lt_executable; - if (l->l_ld == 0) { if (__builtin_expect (type == ET_DYN, 0)) @@ -1261,29 +1268,12 @@ cannot allocate TLS data structures for } } else - (ElfW(Addr)) l->l_ld += l->l_addr; - - l->l_entry += l->l_addr; - - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_FILES, 0)) - INTUSE(_dl_debug_printf) ("\ - dynamic: 0x%0*lx base: 0x%0*lx size: 0x%0*Zx\n\ - entry: 0x%0*lx phdr: 0x%0*lx phnum: %*u\n\n", - (int) sizeof (void *) * 2, - (unsigned long int) l->l_ld, - (int) sizeof (void *) * 2, - (unsigned long int) l->l_addr, - (int) sizeof (void *) * 2, maplength, - (int) sizeof (void *) * 2, - (unsigned long int) l->l_entry, - (int) sizeof (void *) * 2, - (unsigned long int) l->l_phdr, - (int) sizeof (void *) * 2, l->l_phnum); + l->l_ld = (ElfW(Dyn) *) ((ElfW(Addr)) l->l_ld + l->l_addr); elf_get_dynamic_info (l, NULL); - /* Make sure we are not dlopen'ing an object - that has the DF_1_NOOPEN flag set. */ + /* Make sure we are not dlopen'ing an object that has the + DF_1_NOOPEN flag set. */ if (__builtin_expect (l->l_flags_1 & DF_1_NOOPEN, 0) && (mode & __RTLD_DLOPEN)) { @@ -1300,20 +1290,105 @@ cannot allocate TLS data structures for goto call_lose; } - if (l->l_info[DT_HASH]) - _dl_setup_hash (l); + if (l->l_phdr == NULL) + { + /* The program header is not contained in any of the segments. + We have to allocate memory ourself and copy it over from out + temporary place. */ + ElfW(Phdr) *newp = (ElfW(Phdr) *) malloc (header->e_phnum + * sizeof (ElfW(Phdr))); + if (newp == NULL) + { + errstring = N_("cannot allocate memory for program header"); + goto call_lose_errno; + } + + l->l_phdr = memcpy (newp, phdr, + (header->e_phnum * sizeof (ElfW(Phdr)))); + l->l_phdr_allocated = 1; + } + else + /* Adjust the PT_PHDR value by the runtime load address. */ + l->l_phdr = (ElfW(Phdr) *) ((ElfW(Addr)) l->l_phdr + l->l_addr); + + if (__builtin_expect ((stack_flags &~ GL(dl_stack_flags)) & PF_X, 0)) + { + /* The stack is presently not executable, but this module + requires that it be executable. We must change the + protection of the variable which contains the flags used in + the mprotect calls. */ +#ifdef HAVE_Z_RELRO + if (mode & __RTLD_DLOPEN) + { + uintptr_t p = ((uintptr_t) &__stack_prot) & ~(GLRO(dl_pagesize) - 1); + size_t s = (uintptr_t) &__stack_prot - p + sizeof (int); + + __mprotect ((void *) p, s, PROT_READ|PROT_WRITE); + if (__builtin_expect (__check_caller (RETURN_ADDRESS (0), + allow_ldso|allow_libc) == 0, + 0)) + __stack_prot |= PROT_EXEC; + __mprotect ((void *) p, s, PROT_READ); + } + else +#endif + __stack_prot |= PROT_EXEC; + + errval = (*GL(dl_make_stack_executable_hook)) (stack_endp); + if (errval) + { + errstring = N_("\ +cannot enable executable stack as shared object requires"); + goto call_lose; + } + } + +#ifdef USE_TLS + /* Adjust the address of the TLS initialization image. */ + if (l->l_tls_initimage != NULL) + l->l_tls_initimage = (char *) l->l_tls_initimage + l->l_addr; +#endif + + /* We are done mapping in the file. We no longer need the descriptor. */ + if (__builtin_expect (__close (fd) != 0, 0)) + { + errstring = N_("cannot close file descriptor"); + goto call_lose_errno; + } + /* Signal that we closed the file. */ + fd = -1; + + if (l->l_type == lt_library && type == ET_EXEC) + l->l_type = lt_executable; + + l->l_entry += l->l_addr; + + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) + _dl_debug_printf ("\ + dynamic: 0x%0*lx base: 0x%0*lx size: 0x%0*Zx\n\ + entry: 0x%0*lx phdr: 0x%0*lx phnum: %*u\n\n", + (int) sizeof (void *) * 2, + (unsigned long int) l->l_ld, + (int) sizeof (void *) * 2, + (unsigned long int) l->l_addr, + (int) sizeof (void *) * 2, maplength, + (int) sizeof (void *) * 2, + (unsigned long int) l->l_entry, + (int) sizeof (void *) * 2, + (unsigned long int) l->l_phdr, + (int) sizeof (void *) * 2, l->l_phnum); + + /* Set up the symbol hash table. */ + _dl_setup_hash (l); /* If this object has DT_SYMBOLIC set modify now its scope. We don't have to do this for the main map. */ - if (__builtin_expect (l->l_info[DT_SYMBOLIC] != NULL, 0) + if ((mode & RTLD_DEEPBIND) == 0 + && __builtin_expect (l->l_info[DT_SYMBOLIC] != NULL, 0) && &l->l_searchlist != l->l_scope[0]) { /* Create an appropriate searchlist. It contains only this map. - - XXX This is the definition of DT_SYMBOLIC in SysVr4. The old - GNU ld.so implementation had a different interpretation which - is more reasonable. We are prepared to add this possibility - back as part of a GNU extension of the ELF format. */ + This is the definition of DT_SYMBOLIC in SysVr4. */ l->l_symbolic_searchlist.r_list = (struct link_map **) malloc (sizeof (struct link_map *)); @@ -1342,22 +1417,9 @@ cannot allocate TLS data structures for l->l_dev = st.st_dev; l->l_ino = st.st_ino; - if (__builtin_expect ((stack_flags &~ GL(dl_stack_flags)) & PF_X, 0)) - { - /* The stack is presently not executable, but this module - requires that it be executable. */ - errval = (*GL(dl_make_stack_executable_hook)) (); - if (errval) - { - errstring = N_("\ -cannot enable executable stack as shared object requires"); - goto call_lose; - } - } - /* When we profile the SONAME might be needed for something else but loading. Add it right away. */ - if (__builtin_expect (GL(dl_profile) != NULL, 0) + if (__builtin_expect (GLRO(dl_profile) != NULL, 0) && l->l_info[DT_SONAME] != NULL) add_name_to_object (l, ((const char *) D_PTR (l, l_info[DT_STRTAB]) + l->l_info[DT_SONAME]->d_un.d_val)); @@ -1373,7 +1435,7 @@ print_search_path (struct r_search_path_ char buf[max_dirnamelen + max_capstrlen]; int first = 1; - INTUSE(_dl_debug_printf) (" search path="); + _dl_debug_printf (" search path="); while (*list != NULL && (*list)->what == what) /* Yes, ==. */ { @@ -1526,18 +1588,18 @@ open_verify (const char *name, struct fi } if (! __builtin_expect (elf_machine_matches_host (ehdr), 1)) goto close_and_out; - else if (__builtin_expect (ehdr->e_phentsize, sizeof (ElfW(Phdr))) - != sizeof (ElfW(Phdr))) - { - errstring = N_("ELF file's phentsize not the expected size"); - goto call_lose; - } else if (__builtin_expect (ehdr->e_type, ET_DYN) != ET_DYN && __builtin_expect (ehdr->e_type, ET_EXEC) != ET_EXEC) { errstring = N_("only ET_DYN and ET_EXEC can be loaded"); goto call_lose; } + else if (__builtin_expect (ehdr->e_phentsize, sizeof (ElfW(Phdr))) + != sizeof (ElfW(Phdr))) + { + errstring = N_("ELF file's phentsize not the expected size"); + goto call_lose; + } maplength = ehdr->e_phnum * sizeof (ElfW(Phdr)); if (ehdr->e_phoff + maplength <= (size_t) fbp->len) @@ -1577,7 +1639,7 @@ open_verify (const char *name, struct fi + (abi_note[6] & 0xff) * 256 + (abi_note[7] & 0xff); if (abi_note[4] != __ABI_TAG_OS - || (GL(dl_osversion) && GL(dl_osversion) < osversion)) + || (GLRO(dl_osversion) && GLRO(dl_osversion) < osversion)) { close_and_out: __close (fd); @@ -1622,7 +1684,7 @@ open_path (const char *name, size_t name /* If we are debugging the search for libraries print the path now if it hasn't happened now. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, 0) + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0) && current_what != this_dir->what) { current_what = this_dir->what; @@ -1643,8 +1705,8 @@ open_path (const char *name, size_t name - buf); /* Print name we try if this is wanted. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, 0)) - INTUSE(_dl_debug_printf) (" trying file=%s\n", buf); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)) + _dl_debug_printf (" trying file=%s\n", buf); fd = open_verify (buf, fbp); if (this_dir->status[cnt] == unknown) @@ -1737,7 +1799,7 @@ open_path (const char *name, size_t name struct link_map * internal_function _dl_map_object (struct link_map *loader, const char *name, int preloaded, - int type, int trace_mode, int mode) + int type, int trace_mode, int mode, Lmid_t nsid) { int fd; char *realname; @@ -1745,8 +1807,11 @@ _dl_map_object (struct link_map *loader, struct link_map *l; struct filebuf fb; + assert (nsid >= 0); + assert (nsid < DL_NNS); + /* Look for this name among those already loaded. */ - for (l = GL(dl_loaded); l; l = l->l_next) + for (l = GL(dl_ns)[nsid]._ns_loaded; l; l = l->l_next) { /* If the requested name matches the soname of a loaded object, use that object. Elide this check for names that have not @@ -1776,11 +1841,11 @@ _dl_map_object (struct link_map *loader, } /* Display information if we are debugging. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_FILES, 0) + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0) && loader != NULL) - INTUSE(_dl_debug_printf) ("\nfile=%s; needed by %s\n", name, + _dl_debug_printf ("\nfile=%s [%lu]; needed by %s [%lu]\n", name, nsid, loader->l_name[0] - ? loader->l_name : rtld_progname); + ? loader->l_name : rtld_progname, loader->l_ns); if (strchr (name, '/') == NULL) { @@ -1788,8 +1853,8 @@ _dl_map_object (struct link_map *loader, size_t namelen = strlen (name) + 1; - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, 0)) - INTUSE(_dl_debug_printf) ("find library=%s; searching\n", name); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)) + _dl_debug_printf ("find library=%s [%lu]; searching\n", name, nsid); fd = -1; @@ -1805,12 +1870,15 @@ _dl_map_object (struct link_map *loader, &realname, &fb); /* If dynamically linked, try the DT_RPATH of the executable - itself. */ - l = GL(dl_loaded); - if (fd == -1 && l && l->l_type != lt_loaded && l != loader - && l->l_rpath_dirs.dirs != (void *) -1) - fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, - &realname, &fb); + itself. NB: we do this for lookups in any namespace. */ + if (fd == -1) + { + l = GL(dl_ns)[LM_ID_BASE]._ns_loaded; + if (l && l->l_type != lt_loaded && l != loader + && cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, + &realname, &fb); + } } /* Try the LD_LIBRARY_PATH environment variable. */ @@ -1836,7 +1904,8 @@ _dl_map_object (struct link_map *loader, if (cached != NULL) { #ifdef SHARED - l = loader ?: GL(dl_loaded); + // XXX Correct to unconditionally default to namespace 0? + l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded; #else l = loader; #endif @@ -1886,15 +1955,15 @@ _dl_map_object (struct link_map *loader, /* Finally, try the default path. */ if (fd == -1 - && ((l = loader ?: GL(dl_loaded)) == NULL + && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1)) && rtld_search_dirs.dirs != (void *) -1) fd = open_path (name, namelen, preloaded, &rtld_search_dirs, &realname, &fb); /* Add another newline when we are tracing the library loading. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, 0)) - INTUSE(_dl_debug_printf) ("\n"); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)) + _dl_debug_printf ("\n"); } else { @@ -1912,10 +1981,16 @@ _dl_map_object (struct link_map *loader, } } + /* In case the LOADER information has only been provided to get to + the appropriate RUNPATH/RPATH information we do not need it + anymore. */ + if (mode & __RTLD_CALLMAP) + loader = NULL; + if (__builtin_expect (fd, 0) == -1) { if (trace_mode - && __builtin_expect (GL(dl_debug_mask) & DL_DEBUG_PRELINK, 0) == 0) + && __builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK, 0) == 0) { /* We haven't found an appropriate library. But since we are only interested in the list of libraries this isn't @@ -1925,9 +2000,10 @@ _dl_map_object (struct link_map *loader, /* Enter the new object in the list of loaded objects. */ if ((name_copy = local_strdup (name)) == NULL - || (l = _dl_new_object (name_copy, name, type, loader)) == NULL) - INTUSE(_dl_signal_error) (ENOMEM, name, NULL, N_("\ -cannot create shared object descriptor")); + || (l = _dl_new_object (name_copy, name, type, loader, + mode, nsid)) == NULL) + _dl_signal_error (ENOMEM, name, NULL, + N_("cannot create shared object descriptor")); /* Signal that this is a faked entry. */ l->l_faked = 1; /* Since the descriptor is initialized with zero we do not @@ -1940,13 +2016,15 @@ cannot create shared object descriptor") return l; } else - INTUSE(_dl_signal_error) (errno, name, NULL, - N_("cannot open shared object file")); + _dl_signal_error (errno, name, NULL, + N_("cannot open shared object file")); } - return _dl_map_object_from_fd (name, fd, &fb, realname, loader, type, mode); + void *stack_end = __libc_stack_end; + return _dl_map_object_from_fd (name, fd, &fb, realname, loader, type, mode, + &stack_end, nsid); } -INTDEF (_dl_map_object) + void internal_function @@ -2004,10 +2082,13 @@ _dl_rtld_di_serinfo (struct link_map *lo while (l != NULL); /* If dynamically linked, try the DT_RPATH of the executable itself. */ - l = GL(dl_loaded); - if (l != NULL && l->l_type != lt_loaded && l != loader) - if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) - add_path (&l->l_rpath_dirs, XXX_RPATH); + if (loader->l_ns == LM_ID_BASE) + { + l = GL(dl_ns)[LM_ID_BASE]._ns_loaded; + if (l != NULL && l->l_type != lt_loaded && l != loader) + if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + add_path (&l->l_rpath_dirs, XXX_RPATH); + } } /* Try the LD_LIBRARY_PATH environment variable. */ diff -durpN glibc-2.3.3/elf/dl-lookup.c glibc-2.3.4/elf/dl-lookup.c --- glibc-2.3.3/elf/dl-lookup.c 2003-07-31 15:18:48.000000000 -0400 +++ glibc-2.3.4/elf/dl-lookup.c 2004-10-13 22:04:37.000000000 -0400 @@ -1,5 +1,5 @@ /* Look up a symbol in the loaded objects. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -68,14 +68,7 @@ struct sym_val #endif - -/* We have two different situations when looking up a simple: with or - without versioning. gcc is not able to optimize a single function - definition serving for both purposes so we define two functions. */ -#define VERSIONED 0 -#include "do-lookup.h" - -#define VERSIONED 1 +/* The actual lookup code. */ #include "do-lookup.h" @@ -115,7 +108,7 @@ add_dependency (struct link_map *undef_m || (undef_map->l_flags_1 & DF_1_NODELETE) != 0) { ++map->l_opencount; - map->l_flags |= DF_1_NODELETE; + map->l_flags_1 |= DF_1_NODELETE; goto out; } @@ -144,7 +137,7 @@ add_dependency (struct link_map *undef_m reference is still available. There is a brief period in which the object could have been removed since we found the definition. */ - runp = GL(dl_loaded); + runp = GL(dl_ns)[undef_map->l_ns]._ns_loaded; while (runp != NULL && runp != map) runp = runp->l_next; @@ -189,13 +182,18 @@ add_dependency (struct link_map *undef_m for (list = map->l_initfini; *list != NULL; ++list) ++(*list)->l_opencount; + /* As if it is opened through _dl_open. */ + ++map->l_direct_opencount; + /* Display information if we are debugging. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_FILES, 0)) - INTUSE(_dl_debug_printf) ("\ -\nfile=%s; needed by %s (relocation dependency)\n\n", - map->l_name[0] ? map->l_name : rtld_progname, - undef_map->l_name[0] - ? undef_map->l_name : rtld_progname); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) + _dl_debug_printf ("\ +\nfile=%s [%lu]; needed by %s [%lu] (relocation dependency)\n\n", + map->l_name[0] ? map->l_name : rtld_progname, + map->l_ns, + undef_map->l_name[0] + ? undef_map->l_name : rtld_progname, + undef_map->l_ns); } else /* Whoa, that was bad luck. We have to search again. */ @@ -208,20 +206,6 @@ add_dependency (struct link_map *undef_m return result; } -static int -internal_function -_dl_do_lookup (const char *undef_name, unsigned long int hash, - const ElfW(Sym) *ref, struct sym_val *result, - struct r_scope_elem *scope, size_t i, int flags, - struct link_map *skip, int type_class); -static int -internal_function -_dl_do_lookup_versioned (const char *undef_name, unsigned long int hash, - const ElfW(Sym) *ref, struct sym_val *result, - struct r_scope_elem *scope, size_t i, - const struct r_found_version *const version, - struct link_map *skip, int type_class); - static void internal_function _dl_debug_bindings (const char *undef_name, struct link_map *undef_map, @@ -230,210 +214,51 @@ _dl_debug_bindings (const char *undef_na const struct r_found_version *version, int type_class, int protected); -/* Search loaded objects' symbol tables for a definition of the symbol - UNDEF_NAME. */ +/* Search loaded objects' symbol tables for a definition of the symbol + UNDEF_NAME, perhaps with a requested version for the symbol. */ lookup_t internal_function -_dl_lookup_symbol (const char *undef_name, struct link_map *undef_map, - const ElfW(Sym) **ref, struct r_scope_elem *symbol_scope[], - int type_class, int flags) +_dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map, + const ElfW(Sym) **ref, + struct r_scope_elem *symbol_scope[], + const struct r_found_version *version, + int type_class, int flags, struct link_map *skip_map) { const unsigned long int hash = _dl_elf_hash (undef_name); struct sym_val current_value = { NULL, NULL }; - struct r_scope_elem **scope; - int protected; + struct r_scope_elem **scope = symbol_scope; bump_num_relocations (); - /* Search the relevant loaded objects for a definition. */ - for (scope = symbol_scope; *scope; ++scope) - if (do_lookup (undef_name, hash, *ref, ¤t_value, *scope, 0, flags, - NULL, type_class)) - break; - - if (__builtin_expect (current_value.s == NULL, 0)) - { - const char *reference_name = undef_map ? undef_map->l_name : NULL; - - if (*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK) - /* We could find no value for a strong reference. */ - /* XXX We cannot translate the messages. */ - _dl_signal_cerror (0, (reference_name[0] - ? reference_name - : (rtld_progname ?: "
")), - N_("relocation error"), - make_string (undefined_msg, undef_name)); - *ref = NULL; - return 0; - } + /* No other flag than DL_LOOKUP_ADD_DEPENDENCY is allowed if we look + up a versioned symbol. */ + assert (version == NULL || flags == 0 || flags == DL_LOOKUP_ADD_DEPENDENCY); - protected = *ref && ELFW(ST_VISIBILITY) ((*ref)->st_other) == STV_PROTECTED; - if (__builtin_expect (protected != 0, 0)) + size_t i = 0; + if (__builtin_expect (skip_map != NULL, 0)) { - /* It is very tricky. We need to figure out what value to - return for the protected symbol. */ - if (type_class == ELF_RTYPE_CLASS_PLT) - { - if (current_value.s != NULL && current_value.m != undef_map) - { - current_value.s = *ref; - current_value.m = undef_map; - } - } - else - { - struct sym_val protected_value = { NULL, NULL }; - - for (scope = symbol_scope; *scope; ++scope) - if (_dl_do_lookup (undef_name, hash, *ref, - &protected_value, *scope, 0, flags, - NULL, ELF_RTYPE_CLASS_PLT)) - break; + /* Search the relevant loaded objects for a definition. */ + while ((*scope)->r_list[i] != skip_map) + ++i; - if (protected_value.s != NULL - && protected_value.m != undef_map) - { - current_value.s = *ref; - current_value.m = undef_map; - } - } + assert (i < (*scope)->r_nlist); } - /* We have to check whether this would bind UNDEF_MAP to an object - in the global scope which was dynamically loaded. In this case - we have to prevent the latter from being unloaded unless the - UNDEF_MAP object is also unloaded. */ - if (__builtin_expect (current_value.m->l_type == lt_loaded, 0) - /* Don't do this for explicit lookups as opposed to implicit - runtime lookups. */ - && (flags & DL_LOOKUP_ADD_DEPENDENCY) != 0 - /* Add UNDEF_MAP to the dependencies. */ - && add_dependency (undef_map, current_value.m) < 0) - /* Something went wrong. Perhaps the object we tried to reference - was just removed. Try finding another definition. */ - return INTUSE(_dl_lookup_symbol) (undef_name, undef_map, ref, - symbol_scope, type_class, flags); - - if (__builtin_expect (GL(dl_debug_mask) - & (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0)) - _dl_debug_bindings (undef_name, undef_map, ref, symbol_scope, - ¤t_value, NULL, type_class, protected); - - *ref = current_value.s; - return LOOKUP_VALUE (current_value.m); -} -INTDEF (_dl_lookup_symbol) - - -/* This function is nearly the same as `_dl_lookup_symbol' but it - skips in the first list all objects until SKIP_MAP is found. I.e., - it only considers objects which were loaded after the described - object. If there are more search lists the object described by - SKIP_MAP is only skipped. */ -lookup_t -internal_function -_dl_lookup_symbol_skip (const char *undef_name, - struct link_map *undef_map, const ElfW(Sym) **ref, - struct r_scope_elem *symbol_scope[], - struct link_map *skip_map) -{ - const unsigned long int hash = _dl_elf_hash (undef_name); - struct sym_val current_value = { NULL, NULL }; - struct r_scope_elem **scope; - size_t i; - int protected; - - bump_num_relocations (); - /* Search the relevant loaded objects for a definition. */ - scope = symbol_scope; - for (i = 0; (*scope)->r_list[i] != skip_map; ++i) - assert (i < (*scope)->r_nlist); - - if (! _dl_do_lookup (undef_name, hash, *ref, ¤t_value, *scope, i, - DL_LOOKUP_RETURN_NEWEST, skip_map, 0)) - while (*++scope) - if (_dl_do_lookup (undef_name, hash, *ref, ¤t_value, *scope, 0, - DL_LOOKUP_RETURN_NEWEST, skip_map, 0)) - break; - - if (__builtin_expect (current_value.s == NULL, 0)) - { - *ref = NULL; - return 0; - } - - protected = *ref && ELFW(ST_VISIBILITY) ((*ref)->st_other) == STV_PROTECTED; - - if (__builtin_expect (protected != 0, 0)) - { - /* It is very tricky. We need to figure out what value to - return for the protected symbol. */ - struct sym_val protected_value = { NULL, NULL }; - - if (i >= (*scope)->r_nlist - || !_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope, - i, DL_LOOKUP_RETURN_NEWEST, skip_map, - ELF_RTYPE_CLASS_PLT)) - while (*++scope) - if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope, - 0, DL_LOOKUP_RETURN_NEWEST, skip_map, - ELF_RTYPE_CLASS_PLT)) - break; - - if (protected_value.s != NULL && protected_value.m != undef_map) - { - current_value.s = *ref; - current_value.m = undef_map; - } - } - - if (__builtin_expect (GL(dl_debug_mask) - & (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0)) - _dl_debug_bindings (undef_name, undef_map, ref, symbol_scope, - ¤t_value, NULL, 0, protected); - - *ref = current_value.s; - return LOOKUP_VALUE (current_value.m); -} - - -/* This function works like _dl_lookup_symbol but it takes an - additional arguement with the version number of the requested - symbol. - - XXX We'll see whether we need this separate function. */ -lookup_t -internal_function -_dl_lookup_versioned_symbol (const char *undef_name, - struct link_map *undef_map, const ElfW(Sym) **ref, - struct r_scope_elem *symbol_scope[], - const struct r_found_version *version, - int type_class, int flags) -{ - const unsigned long int hash = _dl_elf_hash (undef_name); - struct sym_val current_value = { NULL, NULL }; - struct r_scope_elem **scope; - int protected; - - bump_num_relocations (); - - /* No other flag than DL_LOOKUP_ADD_DEPENDENCY is allowed. */ - assert (flags == 0 || flags == DL_LOOKUP_ADD_DEPENDENCY); - - /* Search the relevant loaded objects for a definition. */ - for (scope = symbol_scope; *scope; ++scope) + for (size_t start = i; *scope != NULL; start = 0, ++scope) { - int res = do_lookup_versioned (undef_name, hash, *ref, ¤t_value, - *scope, 0, version, NULL, type_class); + int res = do_lookup_x (undef_name, hash, *ref, ¤t_value, *scope, + start, version, flags, skip_map, type_class); if (res > 0) break; - if (__builtin_expect (res, 0) < 0) + if (__builtin_expect (res, 0) < 0 && skip_map == NULL) { /* Oh, oh. The file named in the relocation entry does not - contain the needed symbol. */ + contain the needed symbol. This code is never reached + for unversioned lookups. */ + assert (version != NULL); const char *reference_name = undef_map ? undef_map->l_name : NULL; /* XXX We cannot translate the message. */ @@ -455,25 +280,29 @@ _dl_lookup_versioned_symbol (const char if (__builtin_expect (current_value.s == NULL, 0)) { - if (*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK) + if ((*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK) + && skip_map == NULL) { /* We could find no value for a strong reference. */ - const char *reference_name = undef_map ? undef_map->l_name : NULL; + const char *reference_name = undef_map ? undef_map->l_name : ""; + const char *versionstr = version ? ", version " : ""; + const char *versionname = (version && version->name + ? version->name : ""); /* XXX We cannot translate the message. */ _dl_signal_cerror (0, (reference_name[0] ? reference_name - : (rtld_progname ?: "
")), NULL, + : (rtld_progname ?: "
")), + N_("symbol lookup error"), make_string (undefined_msg, undef_name, - ", version ", - version->name ?: NULL)); + versionstr, versionname)); } *ref = NULL; return 0; } - protected = *ref && ELFW(ST_VISIBILITY) ((*ref)->st_other) == STV_PROTECTED; - + int protected = (*ref + && ELFW(ST_VISIBILITY) ((*ref)->st_other) == STV_PROTECTED); if (__builtin_expect (protected != 0, 0)) { /* It is very tricky. We need to figure out what value to @@ -490,15 +319,13 @@ _dl_lookup_versioned_symbol (const char { struct sym_val protected_value = { NULL, NULL }; - for (scope = symbol_scope; *scope; ++scope) - if (_dl_do_lookup_versioned (undef_name, hash, *ref, - &protected_value, - *scope, 0, version, NULL, - ELF_RTYPE_CLASS_PLT)) + for (scope = symbol_scope; *scope != NULL; i = 0, ++scope) + if (do_lookup_x (undef_name, hash, *ref, &protected_value, + *scope, i, version, flags, skip_map, + ELF_RTYPE_CLASS_PLT) != 0) break; - if (protected_value.s != NULL - && protected_value.m != undef_map) + if (protected_value.s != NULL && protected_value.m != undef_map) { current_value.s = *ref; current_value.m = undef_map; @@ -513,106 +340,22 @@ _dl_lookup_versioned_symbol (const char if (__builtin_expect (current_value.m->l_type == lt_loaded, 0) /* Don't do this for explicit lookups as opposed to implicit runtime lookups. */ - && flags != 0 + && (flags & DL_LOOKUP_ADD_DEPENDENCY) != 0 /* Add UNDEF_MAP to the dependencies. */ && add_dependency (undef_map, current_value.m) < 0) /* Something went wrong. Perhaps the object we tried to reference was just removed. Try finding another definition. */ - return INTUSE(_dl_lookup_versioned_symbol) (undef_name, undef_map, - ref, symbol_scope, - version, type_class, flags); - - if (__builtin_expect (GL(dl_debug_mask) - & (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0)) - _dl_debug_bindings (undef_name, undef_map, ref, symbol_scope, - ¤t_value, version, type_class, protected); - - *ref = current_value.s; - return LOOKUP_VALUE (current_value.m); -} -INTDEF (_dl_lookup_versioned_symbol) - - -/* Similar to _dl_lookup_symbol_skip but takes an additional argument - with the version we are looking for. */ -lookup_t -internal_function -_dl_lookup_versioned_symbol_skip (const char *undef_name, - struct link_map *undef_map, - const ElfW(Sym) **ref, - struct r_scope_elem *symbol_scope[], - const struct r_found_version *version, - struct link_map *skip_map) -{ - const char *reference_name = undef_map->l_name; - const unsigned long int hash = _dl_elf_hash (undef_name); - struct sym_val current_value = { NULL, NULL }; - struct r_scope_elem **scope; - size_t i; - int protected; - - bump_num_relocations (); - - /* Search the relevant loaded objects for a definition. */ - scope = symbol_scope; - for (i = 0; (*scope)->r_list[i] != skip_map; ++i) - assert (i < (*scope)->r_nlist); - - if (! _dl_do_lookup_versioned (undef_name, hash, *ref, ¤t_value, - *scope, i, version, skip_map, 0)) - while (*++scope) - if (_dl_do_lookup_versioned (undef_name, hash, *ref, ¤t_value, - *scope, 0, version, skip_map, 0)) - break; - - if (__builtin_expect (current_value.s == NULL, 0)) - { - if (*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK) - { - /* We could find no value for a strong reference. */ - const size_t len = strlen (undef_name); - char buf[sizeof undefined_msg + len]; - __mempcpy (__mempcpy (buf, undefined_msg, sizeof undefined_msg - 1), - undef_name, len + 1); - /* XXX We cannot translate the messages. */ - _dl_signal_cerror (0, (reference_name[0] - ? reference_name - : (rtld_progname ?: "
")), - NULL, buf); - } - *ref = NULL; - return 0; - } - - protected = *ref && ELFW(ST_VISIBILITY) ((*ref)->st_other) == STV_PROTECTED; - - if (__builtin_expect (protected != 0, 0)) - { - /* It is very tricky. We need to figure out what value to - return for the protected symbol. */ - struct sym_val protected_value = { NULL, NULL }; - - if (i >= (*scope)->r_nlist - || !_dl_do_lookup_versioned (undef_name, hash, *ref, - &protected_value, *scope, i, version, - skip_map, ELF_RTYPE_CLASS_PLT)) - while (*++scope) - if (_dl_do_lookup_versioned (undef_name, hash, *ref, - &protected_value, *scope, 0, version, - skip_map, ELF_RTYPE_CLASS_PLT)) - break; + return _dl_lookup_symbol_x (undef_name, undef_map, ref, + symbol_scope, version, type_class, + flags, skip_map); - if (protected_value.s != NULL && protected_value.m != undef_map) - { - current_value.s = *ref; - current_value.m = undef_map; - } - } + /* The object is used. */ + current_value.m->l_used = 1; - if (__builtin_expect (GL(dl_debug_mask) + if (__builtin_expect (GLRO(dl_debug_mask) & (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0)) _dl_debug_bindings (undef_name, undef_map, ref, symbol_scope, - ¤t_value, version, 0, protected); + ¤t_value, version, type_class, protected); *ref = current_value.s; return LOOKUP_VALUE (current_value.m); @@ -650,56 +393,49 @@ _dl_debug_bindings (const char *undef_na { const char *reference_name = undef_map->l_name; - if (GL(dl_debug_mask) & DL_DEBUG_BINDINGS) + if (GLRO(dl_debug_mask) & DL_DEBUG_BINDINGS) { - INTUSE(_dl_debug_printf) ("binding file %s to %s: %s symbol `%s'", - (reference_name[0] - ? reference_name - : (rtld_progname ?: "
")), - value->m->l_name[0] - ? value->m->l_name : rtld_progname, - protected ? "protected" : "normal", - undef_name); + _dl_debug_printf ("binding file %s to %s: %s symbol `%s'", + (reference_name[0] + ? reference_name + : (rtld_progname ?: "
")), + value->m->l_name[0] ? value->m->l_name : rtld_progname, + protected ? "protected" : "normal", undef_name); if (version) _dl_debug_printf_c (" [%s]\n", version->name); else _dl_debug_printf_c ("\n"); } #ifdef SHARED - if (GL(dl_debug_mask) & DL_DEBUG_PRELINK) + if (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK) { int conflict = 0; struct sym_val val = { NULL, NULL }; - if ((GL(dl_trace_prelink_map) == NULL - || GL(dl_trace_prelink_map) == GL(dl_loaded)) - && undef_map != GL(dl_loaded)) + if ((GLRO(dl_trace_prelink_map) == NULL + || GLRO(dl_trace_prelink_map) == GL(dl_ns)[LM_ID_BASE]._ns_loaded) + && undef_map != GL(dl_ns)[LM_ID_BASE]._ns_loaded) { const unsigned long int hash = _dl_elf_hash (undef_name); - if (version == 0) - _dl_do_lookup (undef_name, hash, *ref, &val, - undef_map->l_local_scope[0], 0, 0, NULL, - type_class); - else - _dl_do_lookup_versioned (undef_name, hash, *ref, &val, - undef_map->l_local_scope[0], 0, version, - NULL, type_class); + do_lookup_x (undef_name, hash, *ref, &val, + undef_map->l_local_scope[0], 0, version, 0, NULL, + type_class); if (val.s != value->s || val.m != value->m) conflict = 1; } -#ifdef USE_TLS +# ifdef USE_TLS if (value->s && (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info) == STT_TLS, 0))) type_class = 4; -#endif +# endif if (conflict - || GL(dl_trace_prelink_map) == undef_map - || GL(dl_trace_prelink_map) == NULL + || GLRO(dl_trace_prelink_map) == undef_map + || GLRO(dl_trace_prelink_map) == NULL || type_class == 4) { _dl_printf ("%s 0x%0*Zx 0x%0*Zx -> 0x%0*Zx 0x%0*Zx ", @@ -725,28 +461,3 @@ _dl_debug_bindings (const char *undef_na } #endif } - -/* These are here so that we only inline do_lookup{,_versioned} in the common - case, not everywhere. */ -static int __attribute_noinline__ -internal_function -_dl_do_lookup (const char *undef_name, unsigned long int hash, - const ElfW(Sym) *ref, struct sym_val *result, - struct r_scope_elem *scope, size_t i, int flags, - struct link_map *skip, int type_class) -{ - return do_lookup (undef_name, hash, ref, result, scope, i, flags, skip, - type_class); -} - -static int __attribute_noinline__ -internal_function -_dl_do_lookup_versioned (const char *undef_name, unsigned long int hash, - const ElfW(Sym) *ref, struct sym_val *result, - struct r_scope_elem *scope, size_t i, - const struct r_found_version *const version, - struct link_map *skip, int type_class) -{ - return do_lookup_versioned (undef_name, hash, ref, result, scope, i, - version, skip, type_class); -} diff -durpN glibc-2.3.3/elf/dl-minimal.c glibc-2.3.4/elf/dl-minimal.c --- glibc-2.3.3/elf/dl-minimal.c 2002-12-06 06:11:38.000000000 -0500 +++ glibc-2.3.4/elf/dl-minimal.c 2004-10-18 00:17:17.000000000 -0400 @@ -1,5 +1,5 @@ /* Minimal replacements for basic facilities used in the dynamic linker. - Copyright (C) 1995,96,97,98,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1995-1998,2000-2002,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 @@ -66,8 +66,8 @@ __libc_memalign (size_t align, size_t n) extern int _end attribute_hidden; alloc_ptr = &_end; alloc_end = (void *) 0 + (((alloc_ptr - (void *) 0) - + GL(dl_pagesize) - 1) - & ~(GL(dl_pagesize) - 1)); + + GLRO(dl_pagesize) - 1) + & ~(GLRO(dl_pagesize) - 1)); } /* Make sure the allocation pointer is ideally aligned. */ @@ -78,7 +78,7 @@ __libc_memalign (size_t align, size_t n) { /* Insufficient space left; allocate another page. */ caddr_t page; - size_t nup = (n + GL(dl_pagesize) - 1) & ~(GL(dl_pagesize) - 1); + size_t nup = (n + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); page = __mmap (0, nup, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, _dl_zerofd, 0); assert (page != MAP_FAILED); @@ -354,6 +354,13 @@ __strsep (char **stringp, const char *de weak_alias (__strsep, strsep) strong_alias (__strsep, __strsep_g) +void +__attribute__ ((noreturn)) +__chk_fail (void) +{ + _exit (127); +} +rtld_hidden_def (__chk_fail) /* The '_itoa_lower_digits' variable in libc.so is able to handle bases up to 36. We don't need this here. */ diff -durpN glibc-2.3.3/elf/dl-misc.c glibc-2.3.4/elf/dl-misc.c --- glibc-2.3.3/elf/dl-misc.c 2003-01-08 23:03:46.000000000 -0500 +++ glibc-2.3.4/elf/dl-misc.c 2004-07-06 00:16:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Miscellaneous support functions for dynamic linker - Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003, 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 @@ -88,8 +88,8 @@ _dl_sysdep_read_whole_file (const char * static void _dl_debug_vdprintf (int fd, int tag_p, const char *fmt, va_list arg) { - const int niovmax = 64; - struct iovec iov[niovmax]; +# define NIOVMAX 64 + struct iovec iov[NIOVMAX]; int niov = 0; pid_t pid = 0; char pidbuf[12]; @@ -115,7 +115,7 @@ _dl_debug_vdprintf (int fd, int tag_p, c } /* Append to the output. */ - assert (niov < niovmax); + assert (niov < NIOVMAX); iov[niov].iov_len = 12; iov[niov++].iov_base = pidbuf; @@ -128,7 +128,7 @@ _dl_debug_vdprintf (int fd, int tag_p, c ++fmt; /* Append constant string. */ - assert (niov < niovmax); + assert (niov < NIOVMAX); if ((iov[niov].iov_len = fmt - startp) != 0) iov[niov++].iov_base = (char *) startp; @@ -247,7 +247,7 @@ _dl_debug_vdprintf (int fd, int tag_p, c } /* Finally write the result. */ -#ifdef INTERNAL_SYSCALL +#ifdef HAVE_INLINED_SYSCALLS INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL (writev, err, 3, fd, &iov, niov); #elif RTLD_PRIVATE_ERRNO @@ -276,10 +276,9 @@ _dl_debug_printf (const char *fmt, ...) va_list arg; va_start (arg, fmt); - _dl_debug_vdprintf (GL(dl_debug_fd), 1, fmt, arg); + _dl_debug_vdprintf (GLRO(dl_debug_fd), 1, fmt, arg); va_end (arg); } -INTDEF(_dl_debug_printf) /* Write to debug file but don't start with a tag. */ @@ -289,7 +288,7 @@ _dl_debug_printf_c (const char *fmt, ... va_list arg; va_start (arg, fmt); - _dl_debug_vdprintf (GL(dl_debug_fd), -1, fmt, arg); + _dl_debug_vdprintf (GLRO(dl_debug_fd), -1, fmt, arg); va_end (arg); } @@ -304,3 +303,23 @@ _dl_dprintf (int fd, const char *fmt, .. _dl_debug_vdprintf (fd, 0, fmt, arg); va_end (arg); } + + +/* Test whether given NAME matches any of the names of the given object. */ +int +internal_function +_dl_name_match_p (const char *name, struct link_map *map) +{ + if (strcmp (name, map->l_name) == 0) + return 1; + + struct libname_list *runp = map->l_libname; + + while (runp != NULL) + if (strcmp (name, runp->name) == 0) + return 1; + else + runp = runp->next; + + return 0; +} diff -durpN glibc-2.3.3/elf/dl-object.c glibc-2.3.4/elf/dl-object.c --- glibc-2.3.3/elf/dl-object.c 2003-04-25 05:06:56.000000000 -0400 +++ glibc-2.3.4/elf/dl-object.c 2004-10-13 22:05:07.000000000 -0400 @@ -1,5 +1,5 @@ /* Storage management for the chain of loaded shared objects. - Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 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 @@ -32,7 +32,7 @@ struct link_map * internal_function _dl_new_object (char *realname, const char *libname, int type, - struct link_map *loader) + struct link_map *loader, int mode, Lmid_t nsid) { struct link_map *l; int idx; @@ -45,6 +45,7 @@ _dl_new_object (char *realname, const ch if (new == NULL) return NULL; + new->l_real = new; new->l_libname = newname = (struct libname_list *) (new + 1); newname->name = (char *) memcpy (newname + 1, libname, libname_len); /* newname->next = NULL; We use calloc therefore not necessary. */ @@ -56,6 +57,7 @@ _dl_new_object (char *realname, const ch #if defined USE_TLS && NO_TLS_OFFSET != 0 new->l_tls_offset = NO_TLS_OFFSET; #endif + new->l_ns = nsid; /* new->l_global = 0; We use calloc therefore not necessary. */ @@ -68,9 +70,9 @@ _dl_new_object (char *realname, const ch /* Counter for the scopes we have to handle. */ idx = 0; - if (GL(dl_loaded) != NULL) + if (GL(dl_ns)[nsid]._ns_loaded != NULL) { - l = GL(dl_loaded); + l = GL(dl_ns)[nsid]._ns_loaded; while (l->l_next != NULL) l = l->l_next; new->l_prev = l; @@ -78,11 +80,12 @@ _dl_new_object (char *realname, const ch l->l_next = new; /* Add the global scope. */ - new->l_scope[idx++] = &GL(dl_loaded)->l_searchlist; + new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; } else - GL(dl_loaded) = new; - ++GL(dl_nloaded); + GL(dl_ns)[nsid]._ns_loaded = new; + ++GL(dl_ns)[nsid]._ns_nloaded; + ++GL(dl_load_adds); /* If we have no loader the new object acts as it. */ if (loader == NULL) @@ -94,7 +97,15 @@ _dl_new_object (char *realname, const ch /* Insert the scope if it isn't the global scope we already added. */ if (idx == 0 || &loader->l_searchlist != new->l_scope[0]) - new->l_scope[idx] = &loader->l_searchlist; + { + if ((mode & RTLD_DEEPBIND) != 0 && idx != 0) + { + new->l_scope[1] = new->l_scope[0]; + idx = 0; + } + + new->l_scope[idx] = &loader->l_searchlist; + } new->l_local_scope[0] = &new->l_searchlist; diff -durpN glibc-2.3.3/elf/dl-open.c glibc-2.3.4/elf/dl-open.c --- glibc-2.3.3/elf/dl-open.c 2003-07-31 03:34:54.000000000 -0400 +++ glibc-2.3.4/elf/dl-open.c 2004-10-28 19:10:43.000000000 -0400 @@ -1,5 +1,5 @@ /* Load a shared object at runtime, relocate it, and run its initializer. - Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1996-2001, 2002, 2003, 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 @@ -30,6 +30,7 @@ #include #include #include +#include #include @@ -66,8 +67,13 @@ struct dl_open_args { const char *file; int mode; - const void *caller; + /* This is the caller of the dlopen() function. */ + const void *caller_dlopen; + /* This is the caller if _dl_open(). */ + const void *caller_dl_open; struct link_map *map; + /* Namespace ID. */ + Lmid_t nsid; }; @@ -97,41 +103,44 @@ add_to_global (struct link_map *new) in an realloc() call. Therefore we allocate a completely new array the first time we have to add something to the locale scope. */ - if (GL(dl_global_scope_alloc) == 0) + if (GL(dl_ns)[new->l_ns]._ns_global_scope_alloc == 0) { /* This is the first dynamic object given global scope. */ - GL(dl_global_scope_alloc) = GL(dl_main_searchlist)->r_nlist + to_add + 8; + GL(dl_ns)[new->l_ns]._ns_global_scope_alloc + = GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_nlist + to_add + 8; new_global = (struct link_map **) - malloc (GL(dl_global_scope_alloc) * sizeof (struct link_map *)); + malloc (GL(dl_ns)[new->l_ns]._ns_global_scope_alloc + * sizeof (struct link_map *)); if (new_global == NULL) { - GL(dl_global_scope_alloc) = 0; + GL(dl_ns)[new->l_ns]._ns_global_scope_alloc = 0; nomem: - _dl_signal_error (ENOMEM, new->l_libname->name, NULL, - N_("cannot extend global scope")); + GLRO(dl_signal_error) (ENOMEM, new->l_libname->name, NULL, + N_("cannot extend global scope")); return 1; } /* Copy over the old entries. */ - memcpy (new_global, GL(dl_main_searchlist)->r_list, - (GL(dl_main_searchlist)->r_nlist * sizeof (struct link_map *))); - - GL(dl_main_searchlist)->r_list = new_global; + GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_list + = memcpy (new_global, + GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_list, + (GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_nlist + * sizeof (struct link_map *))); } - else if (GL(dl_main_searchlist)->r_nlist + to_add - > GL(dl_global_scope_alloc)) + else if (GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_nlist + to_add + > GL(dl_ns)[new->l_ns]._ns_global_scope_alloc) { /* We have to extend the existing array of link maps in the main map. */ new_global = (struct link_map **) - realloc (GL(dl_main_searchlist)->r_list, - ((GL(dl_global_scope_alloc) + to_add + 8) + realloc (GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_list, + ((GL(dl_ns)[new->l_ns]._ns_global_scope_alloc + to_add + 8) * sizeof (struct link_map *))); if (new_global == NULL) goto nomem; - GL(dl_global_scope_alloc) += to_add + 8; - GL(dl_main_searchlist)->r_list = new_global; + GL(dl_ns)[new->l_ns]._ns_global_scope_alloc += to_add + 8; + GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_list = new_global; } /* Now add the new entries. */ @@ -142,9 +151,9 @@ add_to_global (struct link_map *new) if (map->l_global == 0) { map->l_global = 1; - GL(dl_main_searchlist)->r_list[GL(dl_main_searchlist)->r_nlist] + GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_list[GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_nlist] = map; - ++GL(dl_main_searchlist)->r_nlist; + ++GL(dl_ns)[new->l_ns]._ns_main_searchlist->r_nlist; } } @@ -159,44 +168,69 @@ dl_open_worker (void *a) const char *file = args->file; int mode = args->mode; struct link_map *new, *l; - const char *dst; int lazy; unsigned int i; #ifdef USE_TLS bool any_tls; #endif + struct link_map *call_map = NULL; + + /* Check whether _dl_open() has been called from a valid DSO. */ + if (__check_caller (args->caller_dl_open, allow_libc|allow_libdl) != 0) + GLRO(dl_signal_error) (0, "dlopen", NULL, N_("invalid caller")); + + /* Determine the caller's map if necessary. This is needed in case + we have a DST, when we don't know the namespace ID we have to put + the new object in, or when the file name has no path in which + case we need to look along the RUNPATH/RPATH of the caller. */ + const char *dst = strchr (file, '$'); + if (dst != NULL || args->nsid == __LM_ID_CALLER + || strchr (file, '/') == NULL) + { + const void *caller_dlopen = args->caller_dlopen; + + /* We have to find out from which object the caller is calling. + By default we assume this is the main application. */ + call_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded; + + for (Lmid_t ns = 0; ns < DL_NNS; ++ns) + for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next) + if (caller_dlopen >= (const void *) l->l_map_start + && caller_dlopen < (const void *) l->l_map_end) + { + /* There must be exactly one DSO for the range of the virtual + memory. Otherwise something is really broken. */ + assert (ns == l->l_ns); + call_map = l; + goto found_caller; + } + + found_caller: + if (args->nsid == __LM_ID_CALLER) + { +#ifndef SHARED + /* In statically linked apps there might be no loaded object. */ + if (call_map == NULL) + args->nsid = LM_ID_BASE; + else +#endif + args->nsid = call_map->l_ns; + } + } /* Maybe we have to expand a DST. */ - dst = strchr (file, '$'); if (__builtin_expect (dst != NULL, 0)) { - const void *caller = args->caller; size_t len = strlen (file); size_t required; - struct link_map *call_map; char *new_file; /* DSTs must not appear in SUID/SGID programs. */ if (__libc_enable_secure) /* This is an error. */ - _dl_signal_error (0, "dlopen", NULL, - N_("DST not allowed in SUID/SGID programs")); - - /* We have to find out from which object the caller is calling. */ - call_map = NULL; - for (l = GL(dl_loaded); l; l = l->l_next) - if (caller >= (const void *) l->l_map_start - && caller < (const void *) l->l_map_end) - { - /* There must be exactly one DSO for the range of the virtual - memory. Otherwise something is really broken. */ - call_map = l; - break; - } + GLRO(dl_signal_error) (0, "dlopen", NULL, + N_("DST not allowed in SUID/SGID programs")); - if (call_map == NULL) - /* In this case we assume this is the main application. */ - call_map = GL(dl_loaded); /* Determine how much space we need. We have to allocate the memory locally. */ @@ -210,15 +244,20 @@ dl_open_worker (void *a) /* If the substitution failed don't try to load. */ if (*new_file == '\0') - _dl_signal_error (0, "dlopen", NULL, - N_("empty dynamic string token substitution")); + GLRO(dl_signal_error) (0, "dlopen", NULL, + N_("empty dynamic string token substitution")); /* Now we have a new file name. */ file = new_file; + + /* It does not matter whether call_map is set even if we + computed it only because of the DST. Since the path contains + a slash the value is not used. See dl-load.c. */ } /* Load the named object. */ - args->map = new = _dl_map_object (NULL, file, 0, lt_loaded, 0, mode); + args->map = new = GLRO(dl_map_object) (call_map, file, 0, lt_loaded, 0, + mode | __RTLD_CALLMAP, args->nsid); /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is set and the object is not already loaded. */ @@ -232,39 +271,50 @@ dl_open_worker (void *a) /* This happens only if we load a DSO for 'sprof'. */ return; + /* This object is directly loaded. */ + ++new->l_direct_opencount; + /* It was already open. */ - if (new->l_searchlist.r_list != NULL) + if (__builtin_expect (new->l_searchlist.r_list != NULL, 0)) { /* Let the user know about the opencount. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_FILES, 0)) - _dl_debug_printf ("opening file=%s; opencount == %u\n\n", - new->l_name, new->l_opencount); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) + GLRO(dl_debug_printf) ("opening file=%s [%lu]; opencount=%u\n\n", + new->l_name, new->l_ns, new->l_opencount); /* If the user requested the object to be in the global namespace but it is not so far, add it now. */ if ((mode & RTLD_GLOBAL) && new->l_global == 0) (void) add_to_global (new); - /* Increment just the reference counter of the object. */ - ++new->l_opencount; + if (new->l_direct_opencount == 1) + /* This is the only direct reference. Increment all the + dependencies' reference counter. */ + for (i = 0; i < new->l_searchlist.r_nlist; ++i) + ++new->l_searchlist.r_list[i]->l_opencount; + else + /* Increment just the reference counter of the object. */ + ++new->l_opencount; return; } /* Load that object's dependencies. */ - _dl_map_object_deps (new, NULL, 0, 0, mode & __RTLD_DLOPEN); + GLRO(dl_map_object_deps) (new, NULL, 0, 0, + mode & (__RTLD_DLOPEN | RTLD_DEEPBIND)); /* So far, so good. Now check the versions. */ for (i = 0; i < new->l_searchlist.r_nlist; ++i) - if (new->l_searchlist.r_list[i]->l_versions == NULL) - (void) _dl_check_map_versions (new->l_searchlist.r_list[i], 0, 0); + if (new->l_searchlist.r_list[i]->l_real->l_versions == NULL) + (void) GLRO(dl_check_map_versions) (new->l_searchlist.r_list[i]->l_real, + 0, 0); #ifdef SCOPE_DEBUG show_scope (new); #endif /* Only do lazy relocation if `LD_BIND_NOW' is not set. */ - lazy = (mode & RTLD_BINDING_MASK) == RTLD_LAZY && GL(dl_lazy); + lazy = (mode & RTLD_BINDING_MASK) == RTLD_LAZY && GLRO(dl_lazy); /* Relocate the objects loaded. We do this in reverse order so that copy relocs of earlier objects overwrite the data written by later objects. */ @@ -274,10 +324,10 @@ dl_open_worker (void *a) l = l->l_next; while (1) { - if (! l->l_relocated) + if (! l->l_real->l_relocated) { #ifdef SHARED - if (GL(dl_profile) != NULL) + if (GLRO(dl_profile) != NULL) { /* If this here is the shared object which we want to profile make sure the profile is started. We can find out whether @@ -286,15 +336,20 @@ dl_open_worker (void *a) start the profiling. */ struct link_map *old_profile_map = GL(dl_profile_map); - _dl_relocate_object (l, l->l_scope, 1, 1); + GLRO(dl_relocate_object) (l, l->l_scope, 1, 1); if (old_profile_map == NULL && GL(dl_profile_map) != NULL) - /* We must prepare the profiling. */ - _dl_start_profile (GL(dl_profile_map), GL(dl_profile_output)); + { + /* We must prepare the profiling. */ + GLRO(dl_start_profile) (); + + /* Prevent unloading the object. */ + GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE; + } } else #endif - _dl_relocate_object (l, l->l_scope, lazy, 0); + GLRO(dl_relocate_object) (l, l->l_scope, lazy, 0); } if (l == new) @@ -323,7 +378,7 @@ dl_open_worker (void *a) loaded object to the scope. */ for (i = 0; i < new->l_searchlist.r_nlist; ++i) if (++new->l_searchlist.r_list[i]->l_opencount > 1 - && new->l_searchlist.r_list[i]->l_type == lt_loaded) + && new->l_real->l_searchlist.r_list[i]->l_type == lt_loaded) { struct link_map *imap = new->l_searchlist.r_list[i]; struct r_scope_elem **runp = imap->l_scope; @@ -357,8 +412,8 @@ dl_open_worker (void *a) newp = (struct r_scope_elem **) malloc (new_size * sizeof (struct r_scope_elem *)); if (newp == NULL) - _dl_signal_error (ENOMEM, "dlopen", NULL, - N_("cannot create scope list")); + GLRO(dl_signal_error) (ENOMEM, "dlopen", NULL, + N_("cannot create scope list")); imap->l_scope = memcpy (newp, imap->l_scope, cnt * sizeof (imap->l_scope[0])); } @@ -368,8 +423,8 @@ dl_open_worker (void *a) realloc (imap->l_scope, new_size * sizeof (struct r_scope_elem *)); if (newp == NULL) - _dl_signal_error (ENOMEM, "dlopen", NULL, - N_("cannot create scope list")); + GLRO(dl_signal_error) (ENOMEM, "dlopen", NULL, + N_("cannot create scope list")); imap->l_scope = newp; } @@ -430,8 +485,8 @@ dl_open_worker (void *a) generation. */ ++GL(dl_tls_generation); - _dl_signal_error (ENOMEM, "dlopen", NULL, - N_("cannot create TLS data structures")); + GLRO(dl_signal_error) (ENOMEM, "dlopen", NULL, N_("\ +cannot create TLS data structures")); } listp->len = TLS_SLOTINFO_SURPLUS; @@ -451,11 +506,11 @@ dl_open_worker (void *a) /* Bump the generation number if necessary. */ if (any_tls) if (__builtin_expect (++GL(dl_tls_generation) == 0, 0)) - __libc_fatal (_("TLS generation counter wrapped! Please send report with the 'glibcbug' script.")); + __libc_fatal (_("TLS generation counter wrapped! Please report this.")); #endif /* Run the initializer functions of new objects. */ - _dl_init (new, __libc_argc, __libc_argv, __environ); + GLRO(dl_init) (new, __libc_argc, __libc_argv, __environ); /* Now we can make the new map available in the global scope. */ if (mode & RTLD_GLOBAL) @@ -476,15 +531,15 @@ dl_open_worker (void *a) #endif /* Let the user know about the opencount. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_FILES, 0)) - _dl_debug_printf ("opening file=%s; opencount == %u\n\n", - new->l_name, new->l_opencount); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) + GLRO(dl_debug_printf) ("opening file=%s [%lu]; opencount=%u\n\n", + new->l_name, new->l_ns, new->l_opencount); } void * internal_function -_dl_open (const char *file, int mode, const void *caller) +_dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid) { struct dl_open_args args; const char *objname; @@ -493,20 +548,46 @@ _dl_open (const char *file, int mode, co if ((mode & RTLD_BINDING_MASK) == 0) /* One of the flags must be set. */ - _dl_signal_error (EINVAL, file, NULL, N_("invalid mode for dlopen()")); + GLRO(dl_signal_error) (EINVAL, file, NULL, + N_("invalid mode for dlopen()")); /* Make sure we are alone. */ __rtld_lock_lock_recursive (GL(dl_load_lock)); + if (nsid == LM_ID_NEWLM) + { + /* Find a new namespace. */ + for (nsid = 1; nsid < DL_NNS; ++nsid) + if (GL(dl_ns)[nsid]._ns_loaded == NULL) + break; + + if (nsid == DL_NNS) + { + /* No more namespace available. */ + __rtld_lock_unlock_recursive (GL(dl_load_lock)); + + GLRO(dl_signal_error) (EINVAL, file, NULL, N_("\ +no more namespaces available for dlmopen()")); + } + } + /* Never allow loading a DSO in a namespace which is empty. Such + direct placements is only causing problems. */ + else if (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER + && GL(dl_ns)[nsid]._ns_nloaded == 0) + GLRO(dl_signal_error) (EINVAL, file, NULL, + N_("invalid target namespace in dlmopen()")); + args.file = file; args.mode = mode; - args.caller = caller; + args.caller_dlopen = caller_dlopen; + args.caller_dl_open = RETURN_ADDRESS (0); args.map = NULL; - errcode = _dl_catch_error (&objname, &errstring, dl_open_worker, &args); + args.nsid = nsid; + errcode = GLRO(dl_catch_error) (&objname, &errstring, dl_open_worker, &args); #ifndef MAP_COPY /* We must munmap() the cache file. */ - _dl_unload_cache (); + GLRO(dl_unload_cache) (); #endif /* Release the lock. */ @@ -562,7 +643,7 @@ _dl_open (const char *file, int mode, co free ((char *) errstring); /* Reraise the error. */ - _dl_signal_error (errcode, objname, NULL, local_errstring); + GLRO(dl_signal_error) (errcode, objname, NULL, local_errstring); } #ifndef SHARED diff -durpN glibc-2.3.3/elf/dl-profile.c glibc-2.3.4/elf/dl-profile.c --- glibc-2.3.3/elf/dl-profile.c 2003-03-20 02:07:22.000000000 -0500 +++ glibc-2.3.4/elf/dl-profile.c 2004-07-06 02:49:12.000000000 -0400 @@ -1,5 +1,5 @@ /* Profiling of shared libraries. - Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. Based on the BSD mcount implementation. @@ -147,8 +147,6 @@ static uint32_t narcs; lists. */ static volatile uint32_t *narcsp; -static volatile uint16_t *kcount; -static size_t kcountsize; struct here_fromstruct { @@ -164,7 +162,6 @@ static volatile uint32_t fromidx; static uintptr_t lowpc; static size_t textsize; -static unsigned int hashfraction; static unsigned int log_hashfraction; @@ -173,7 +170,7 @@ static unsigned int log_hashfraction; file is found (or created) in OUTPUT_DIR. */ void internal_function -_dl_start_profile (struct link_map *map, const char *output_dir) +_dl_start_profile (void) { char *filename; int fd; @@ -188,19 +185,23 @@ _dl_start_profile (struct link_map *map, size_t tossize; size_t fromssize; uintptr_t highpc; + uint16_t *kcount; + size_t kcountsize; struct gmon_hdr *addr = NULL; off_t expected_size; /* See profil(2) where this is described. */ int s_scale; #define SCALE_1_TO_1 0x10000L + const char *errstr = NULL; /* Compute the size of the sections which contain program code. */ - for (ph = map->l_phdr; ph < &map->l_phdr[map->l_phnum]; ++ph) + for (ph = GL(dl_profile_map)->l_phdr; + ph < &GL(dl_profile_map)->l_phdr[GL(dl_profile_map)->l_phnum]; ++ph) if (ph->p_type == PT_LOAD && (ph->p_flags & PF_X)) { - ElfW(Addr) start = (ph->p_vaddr & ~(GL(dl_pagesize) - 1)); - ElfW(Addr) end = ((ph->p_vaddr + ph->p_memsz + GL(dl_pagesize) - 1) - & ~(GL(dl_pagesize) - 1)); + ElfW(Addr) start = (ph->p_vaddr & ~(GLRO(dl_pagesize) - 1)); + ElfW(Addr) end = ((ph->p_vaddr + ph->p_memsz + GLRO(dl_pagesize) - 1) + & ~(GLRO(dl_pagesize) - 1)); if (start < mapstart) mapstart = start; @@ -211,13 +212,12 @@ _dl_start_profile (struct link_map *map, /* Now we can compute the size of the profiling data. This is done with the same formulars as in `monstartup' (see gmon.c). */ running = 0; - lowpc = ROUNDDOWN (mapstart + map->l_addr, + lowpc = ROUNDDOWN (mapstart + GL(dl_profile_map)->l_addr, HISTFRACTION * sizeof (HISTCOUNTER)); - highpc = ROUNDUP (mapend + map->l_addr, + highpc = ROUNDUP (mapend + GL(dl_profile_map)->l_addr, HISTFRACTION * sizeof (HISTCOUNTER)); textsize = highpc - lowpc; kcountsize = textsize / HISTFRACTION; - hashfraction = HASHFRACTION; if ((HASHFRACTION & (HASHFRACTION - 1)) == 0) { /* If HASHFRACTION is a power of two, mcount can use shifting @@ -227,14 +227,14 @@ _dl_start_profile (struct link_map *map, expression away since the __ffs implementation is not known to the compiler. Help the compiler by precomputing the usual cases. */ - assert (hashfraction == 2); + assert (HASHFRACTION == 2); if (sizeof (*froms) == 8) log_hashfraction = 4; else if (sizeof (*froms) == 16) log_hashfraction = 5; else - log_hashfraction = __ffs (hashfraction * sizeof (*froms)) - 1; + log_hashfraction = __ffs (HASHFRACTION * sizeof (*froms)) - 1; } else log_hashfraction = -1; @@ -273,11 +273,11 @@ _dl_start_profile (struct link_map *map, /* First determine the output name. We write in the directory OUTPUT_DIR and the name is composed from the shared objects soname (or the file name) and the ending ".profile". */ - filename = (char *) alloca (strlen (output_dir) + 1 + strlen (GL(dl_profile)) - + sizeof ".profile"); - cp = __stpcpy (filename, output_dir); + filename = (char *) alloca (strlen (GLRO(dl_profile_output)) + 1 + + strlen (GLRO(dl_profile)) + sizeof ".profile"); + cp = __stpcpy (filename, GLRO(dl_profile_output)); *cp++ = '/'; - __stpcpy (__stpcpy (cp, GL(dl_profile)), ".profile"); + __stpcpy (__stpcpy (cp, GLRO(dl_profile)), ".profile"); #ifdef O_NOFOLLOW # define EXTRA_FLAGS | O_NOFOLLOW @@ -287,22 +287,25 @@ _dl_start_profile (struct link_map *map, fd = __open (filename, O_RDWR | O_CREAT EXTRA_FLAGS, DEFFILEMODE); if (fd == -1) { - /* We cannot write the profiling data so don't do anything. */ char buf[400]; - _dl_error_printf ("%s: cannot open file: %s\n", filename, - __strerror_r (errno, buf, sizeof buf)); + int errnum; + + /* We cannot write the profiling data so don't do anything. */ + errstr = "%s: cannot open file: %s\n"; + print_error: + errnum = errno; + if (fd != -1) + __close (fd); + _dl_error_printf (errstr, filename, + __strerror_r (errnum, buf, sizeof buf)); return; } if (__fxstat64 (_STAT_VER, fd, &st) < 0 || !S_ISREG (st.st_mode)) { /* Not stat'able or not a regular file => don't use it. */ - char buf[400]; - int errnum = errno; - __close (fd); - _dl_error_printf ("%s: cannot stat file: %s\n", filename, - __strerror_r (errnum, buf, sizeof buf)); - return; + errstr = "%s: cannot stat file: %s\n"; + goto print_error; } /* Test the size. If it does not match what we expect from the size @@ -310,24 +313,19 @@ _dl_start_profile (struct link_map *map, if (st.st_size == 0) { /* We have to create the file. */ - char buf[GL(dl_pagesize)]; + char buf[GLRO(dl_pagesize)]; - memset (buf, '\0', GL(dl_pagesize)); + memset (buf, '\0', GLRO(dl_pagesize)); - if (__lseek (fd, expected_size & ~(GL(dl_pagesize) - 1), SEEK_SET) == -1) + if (__lseek (fd, expected_size & ~(GLRO(dl_pagesize) - 1), SEEK_SET) == -1) { - char buf[400]; - int errnum; cannot_create: - errnum = errno; - __close (fd); - _dl_error_printf ("%s: cannot create file: %s\n", filename, - __strerror_r (errnum, buf, sizeof buf)); - return; + errstr = "%s: cannot create file: %s\n"; + goto print_error; } if (TEMP_FAILURE_RETRY (__libc_write (fd, buf, (expected_size - & (GL(dl_pagesize) + & (GLRO(dl_pagesize) - 1)))) < 0) goto cannot_create; @@ -341,7 +339,7 @@ _dl_start_profile (struct link_map *map, __munmap ((void *) addr, expected_size); _dl_error_printf ("%s: file is no correct profile data file for `%s'\n", - filename, GL(dl_profile)); + filename, GLRO(dl_profile)); return; } @@ -349,15 +347,11 @@ _dl_start_profile (struct link_map *map, MAP_SHARED|MAP_FILE, fd, 0); if (addr == (struct gmon_hdr *) MAP_FAILED) { - char buf[400]; - int errnum = errno; - __close (fd); - _dl_error_printf ("%s: cannot map file: %s\n", filename, - __strerror_r (errnum, buf, sizeof buf)); - return; + errstr = "%s: cannot map file: %s\n"; + goto print_error; } - /* We don't need the file desriptor anymore. */ + /* We don't need the file descriptor anymore. */ __close (fd); /* Pointer to data after the header. */ @@ -415,7 +409,7 @@ _dl_start_profile (struct link_map *map, size_t to_index; size_t newfromidx; --idx; - to_index = (data[idx].self_pc / (hashfraction * sizeof (*tos))); + to_index = (data[idx].self_pc / (HASHFRACTION * sizeof (*tos))); newfromidx = fromidx++; froms[newfromidx].here = &data[idx]; froms[newfromidx].link = tos[to_index]; @@ -450,7 +444,6 @@ _dl_start_profile (struct link_map *map, /* Turn on profiling. */ running = 1; } -INTDEF (_dl_start_profile) void @@ -484,7 +477,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr if ((HASHFRACTION & (HASHFRACTION - 1)) == 0) i = selfpc >> log_hashfraction; else - i = selfpc / (hashfraction * sizeof (*tos)); + i = selfpc / (HASHFRACTION * sizeof (*tos)); topcindex = &tos[i]; fromindex = *topcindex; @@ -515,7 +508,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr size_t to_index; size_t newfromidx; to_index = (data[narcs].self_pc - / (hashfraction * sizeof (*tos))); + / (HASHFRACTION * sizeof (*tos))); newfromidx = atomic_exchange_and_add (&fromidx, 1) + 1; froms[newfromidx].here = &data[narcs]; froms[newfromidx].link = tos[to_index]; diff -durpN glibc-2.3.3/elf/dl-profstub.c glibc-2.3.4/elf/dl-profstub.c --- glibc-2.3.3/elf/dl-profstub.c 2002-08-10 03:54:24.000000000 -0400 +++ glibc-2.3.4/elf/dl-profstub.c 2004-03-06 03:12:41.000000000 -0500 @@ -1,5 +1,5 @@ /* Helper definitions for profiling of shared libraries. - Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 2000, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -24,13 +24,12 @@ /* This is the map for the shared object we profile. It is defined here only because we test for this value being NULL or not. */ -//Xextern struct link_map *_dl_profile_map; void _dl_mcount_wrapper (void *selfpc) { - _dl_mcount ((ElfW(Addr)) RETURN_ADDRESS (0), (ElfW(Addr)) selfpc); + GLRO(dl_mcount) ((ElfW(Addr)) RETURN_ADDRESS (0), (ElfW(Addr)) selfpc); } @@ -38,6 +37,6 @@ void _dl_mcount_wrapper_check (void *selfpc) { if (GL(dl_profile_map) != NULL) - _dl_mcount ((ElfW(Addr)) RETURN_ADDRESS (0), (ElfW(Addr)) selfpc); + GLRO(dl_mcount) ((ElfW(Addr)) RETURN_ADDRESS (0), (ElfW(Addr)) selfpc); } libc_hidden_def (_dl_mcount_wrapper_check) diff -durpN glibc-2.3.3/elf/dl-reloc.c glibc-2.3.4/elf/dl-reloc.c --- glibc-2.3.3/elf/dl-reloc.c 2003-10-02 14:57:39.000000000 -0400 +++ glibc-2.3.4/elf/dl-reloc.c 2004-03-07 00:21:01.000000000 -0500 @@ -1,5 +1,5 @@ /* Relocate a shared object and resolve its references to other loaded objects. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -54,7 +54,7 @@ _dl_allocate_static_tls (struct link_map if (map->l_tls_align > GL(dl_tls_static_align)) { fail: - INTUSE(_dl_signal_error) (0, map->l_name, NULL, N_("\ + _dl_signal_error (0, map->l_name, NULL, N_("\ cannot allocate memory in static TLS block")); } @@ -146,10 +146,10 @@ _dl_relocate_object (struct link_map *l, && __builtin_expect (l->l_info[DT_BIND_NOW] != NULL, 0)) lazy = 0; - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_RELOC, 0)) - INTUSE(_dl_debug_printf) ("\nrelocation processing: %s%s\n", - l->l_name[0] ? l->l_name : rtld_progname, - lazy ? " (lazy)" : ""); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_RELOC, 0)) + _dl_debug_printf ("\nrelocation processing: %s%s\n", + l->l_name[0] ? l->l_name : rtld_progname, + lazy ? " (lazy)" : ""); /* DT_TEXTREL is now in level 2 and might phase out at some time. But we rewrite the DT_FLAGS entry to a DT_TEXTREL entry to make @@ -165,17 +165,17 @@ _dl_relocate_object (struct link_map *l, struct textrels *newp; newp = (struct textrels *) alloca (sizeof (*newp)); - newp->len = (((ph->p_vaddr + ph->p_memsz + GL(dl_pagesize) - 1) - & ~(GL(dl_pagesize) - 1)) - - (ph->p_vaddr & ~(GL(dl_pagesize) - 1))); - newp->start = ((ph->p_vaddr & ~(GL(dl_pagesize) - 1)) + newp->len = (((ph->p_vaddr + ph->p_memsz + GLRO(dl_pagesize) - 1) + & ~(GLRO(dl_pagesize) - 1)) + - (ph->p_vaddr & ~(GLRO(dl_pagesize) - 1))); + newp->start = ((ph->p_vaddr & ~(GLRO(dl_pagesize) - 1)) + (caddr_t) l->l_addr); if (__mprotect (newp->start, newp->len, PROT_READ|PROT_WRITE) < 0) { errstring = N_("cannot make segment writable for relocation"); call_error: - INTUSE(_dl_signal_error) (errno, l->l_name, NULL, errstring); + _dl_signal_error (errno, l->l_name, NULL, errstring); } #if (PF_R | PF_W | PF_X) == 7 && (PROT_READ | PROT_WRITE | PROT_EXEC) == 7 @@ -213,14 +213,15 @@ _dl_relocate_object (struct link_map *l, int _tc = elf_machine_type_class (r_type); \ l->l_lookup_cache.type_class = _tc; \ l->l_lookup_cache.sym = (*ref); \ - _lr = ((version) != NULL && (version)->hash != 0 \ - ? INTUSE(_dl_lookup_versioned_symbol) (strtab \ - + (*ref)->st_name, \ - l, (ref), scope, \ - (version), _tc, 0) \ - : INTUSE(_dl_lookup_symbol) (strtab + (*ref)->st_name, l, \ - (ref), scope, _tc, \ - DL_LOOKUP_ADD_DEPENDENCY)); \ + const struct r_found_version *v = NULL; \ + int flags = DL_LOOKUP_ADD_DEPENDENCY; \ + if ((version) != NULL && (version)->hash != 0) \ + { \ + v = (version); \ + flags = 0; \ + } \ + _lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref), \ + scope, v, _tc, flags, NULL); \ l->l_lookup_cache.ret = (*ref); \ l->l_lookup_cache.value = _lr; })) \ : l) @@ -235,14 +236,15 @@ _dl_relocate_object (struct link_map *l, int _tc = elf_machine_type_class (r_type); \ l->l_lookup_cache.type_class = _tc; \ l->l_lookup_cache.sym = (*ref); \ - _lr = ((version) != NULL && (version)->hash != 0 \ - ? INTUSE(_dl_lookup_versioned_symbol) (strtab \ - + (*ref)->st_name, \ - l, (ref), scope, \ - (version), _tc, 0) \ - : INTUSE(_dl_lookup_symbol) (strtab + (*ref)->st_name, l, \ - (ref), scope, _tc, \ - DL_LOOKUP_ADD_DEPENDENCY)); \ + const struct r_found_version *v = NULL; \ + int flags = DL_LOOKUP_ADD_DEPENDENCY; \ + if ((version) != NULL && (version)->hash != 0) \ + { \ + v = (version); \ + flags = 0; \ + } \ + _lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref), \ + scope, v, _tc, flags, NULL); \ l->l_lookup_cache.ret = (*ref); \ l->l_lookup_cache.value = _lr; })) \ : l->l_addr) @@ -307,10 +309,31 @@ _dl_relocate_object (struct link_map *l, textrels = textrels->next; } + + /* In case we can protect the data now that the relocations are + done, do it. */ + if (l->l_relro_size != 0) + _dl_protect_relro (l); } -INTDEF (_dl_relocate_object) +void internal_function +_dl_protect_relro (struct link_map *l) +{ + ElfW(Addr) start = ((l->l_addr + l->l_relro_addr) + & ~(GLRO(dl_pagesize) - 1)); + ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size) + & ~(GLRO(dl_pagesize) - 1)); + + if (start != end + && __mprotect ((void *) start, end - start, PROT_READ) < 0) + { + static const char errstring[] = N_("\ +cannot apply additional memory protection after relocation"); + _dl_signal_error (errno, l->l_name, NULL, errstring); + } +} + void internal_function __attribute_noinline__ _dl_reloc_bad_type (struct link_map *map, unsigned int type, int plt) @@ -344,5 +367,5 @@ _dl_reloc_bad_type (struct link_map *map *cp++ = DIGIT (type); *cp = '\0'; - INTUSE(_dl_signal_error) (0, map->l_name, NULL, msgbuf); + _dl_signal_error (0, map->l_name, NULL, msgbuf); } diff -durpN glibc-2.3.3/elf/dl-runtime.c glibc-2.3.4/elf/dl-runtime.c --- glibc-2.3.3/elf/dl-runtime.c 2003-02-07 14:43:36.000000000 -0500 +++ glibc-2.3.4/elf/dl-runtime.c 2004-03-09 02:42:59.000000000 -0500 @@ -1,5 +1,5 @@ /* On-demand PLT fixup for shared objects. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -36,6 +36,12 @@ # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym)) #endif +/* The fixup functions might have need special attributes. If none + are provided define the macro as empty. */ +#ifndef ARCH_FIXUP_ATTRIBUTE +# define ARCH_FIXUP_ATTRIBUTE +#endif + /* This function is called through a special trampoline from the PLT the first time each PLT entry is called. We must perform the relocation @@ -45,7 +51,8 @@ function. */ #ifndef ELF_MACHINE_NO_PLT -static ElfW(Addr) __attribute_used__ +static ElfW(Addr) +__attribute ((used, noinline)) ARCH_FIXUP_ATTRIBUTE fixup ( # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS ELF_MACHINE_RUNTIME_FIXUP_ARGS, @@ -65,12 +72,6 @@ fixup ( lookup_t result; ElfW(Addr) value; - /* The use of `alloca' here looks ridiculous but it helps. The goal is - to prevent the function from being inlined and thus optimized out. - There is no official way to do this so we use this trick. gcc never - inlines functions which use `alloca'. */ - alloca (sizeof (int)); - /* Sanity check that we're really looking at a PLT relocation. */ assert (ELFW(R_TYPE)(reloc->r_info) == ELF_MACHINE_JMP_SLOT); @@ -78,32 +79,26 @@ fixup ( used don't look in the global scope. */ if (__builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0) { - switch (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) - { - default: - { - const ElfW(Half) *vernum = - (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]); - ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)] & 0x7fff; - const struct r_found_version *version = &l->l_versions[ndx]; + const struct r_found_version *version = NULL; + // XXX Why exactly do we have the differentiation of the flags here? + int flags = DL_LOOKUP_ADD_DEPENDENCY; - if (version->hash != 0) - { - result = INTUSE(_dl_lookup_versioned_symbol) (strtab - + sym->st_name, - l, &sym, l->l_scope, - version, - ELF_RTYPE_CLASS_PLT, - 0); - break; - } - } - case 0: - result = INTUSE(_dl_lookup_symbol) (strtab + sym->st_name, l, &sym, - l->l_scope, ELF_RTYPE_CLASS_PLT, - DL_LOOKUP_ADD_DEPENDENCY); + if (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) + { + const ElfW(Half) *vernum = + (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]); + ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)] & 0x7fff; + version = &l->l_versions[ndx]; + if (version->hash == 0) + version = NULL; + else + flags = 0; } + result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym, + l->l_scope, version, ELF_RTYPE_CLASS_PLT, + DL_LOOKUP_ADD_DEPENDENCY, NULL); + /* Currently result contains the base load address (or link map) of the object that defines sym. Now add in the symbol offset. */ @@ -123,7 +118,7 @@ fixup ( value = elf_machine_plt_value (l, reloc, value); /* Finally, fix up the plt itself. */ - if (__builtin_expect (GL(dl_bind_not), 0)) + if (__builtin_expect (GLRO(dl_bind_not), 0)) return value; return elf_machine_fixup_plt (l, result, reloc, rel_addr, value); @@ -132,7 +127,8 @@ fixup ( #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__ -static ElfW(Addr) __attribute_used__ +static ElfW(Addr) +__attribute ((used, noinline)) ARCH_FIXUP_ATTRIBUTE profile_fixup ( #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS ELF_MACHINE_RUNTIME_FIXUP_ARGS, @@ -144,12 +140,6 @@ profile_fixup ( lookup_t result; ElfW(Addr) value; - /* The use of `alloca' here looks ridiculous but it helps. The goal is - to prevent the function from being inlined, and thus optimized out. - There is no official way to do this so we use this trick. gcc never - inlines functions which use `alloca'. */ - alloca (sizeof (int)); - /* This is the address in the array where we store the result of previous relocations. */ resultp = &l->l_reloc_result[reloc_offset / sizeof (PLTREL)]; @@ -173,34 +163,27 @@ profile_fixup ( don't look in the global scope. */ if (__builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0) { - switch (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) - { - default: - { - const ElfW(Half) *vernum = - (const void *) D_PTR (l,l_info[VERSYMIDX (DT_VERSYM)]); - ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)] & 0x7fff; - const struct r_found_version *version = &l->l_versions[ndx]; + const struct r_found_version *version = NULL; + // XXX Why exactly do we have the differentiation of the flags here? + int flags = DL_LOOKUP_ADD_DEPENDENCY; - if (version->hash != 0) - { - result = INTUSE(_dl_lookup_versioned_symbol) (strtab - + sym->st_name, - l, &sym, - l->l_scope, - version, - ELF_RTYPE_CLASS_PLT, - 0); - break; - } - } - case 0: - result = INTUSE(_dl_lookup_symbol) (strtab + sym->st_name, l, - &sym, l->l_scope, - ELF_RTYPE_CLASS_PLT, - DL_LOOKUP_ADD_DEPENDENCY); + if (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) + { + const ElfW(Half) *vernum = + (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]); + ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)] & 0x7fff; + version = &l->l_versions[ndx]; + if (version->hash == 0) + version = NULL; + else + flags = 0; } + result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym, + l->l_scope, version, + ELF_RTYPE_CLASS_PLT, + DL_LOOKUP_ADD_DEPENDENCY, NULL); + /* Currently result contains the base load address (or link map) of the object that defines sym. Now add in the symbol offset. */ @@ -219,7 +202,7 @@ profile_fixup ( value = elf_machine_plt_value (l, reloc, value); /* Store the result for later runs. */ - if (__builtin_expect (! GL(dl_bind_not), 1)) + if (__builtin_expect (! GLRO(dl_bind_not), 1)) *resultp = value; } diff -durpN glibc-2.3.3/elf/dl-support.c glibc-2.3.4/elf/dl-support.c --- glibc-2.3.3/elf/dl-support.c 2003-11-24 17:54:39.000000000 -0500 +++ glibc-2.3.4/elf/dl-support.c 2004-11-05 19:24:49.000000000 -0500 @@ -1,5 +1,5 @@ /* Support for dynamic linking code in static libc. - Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1996-2002, 2003, 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 @@ -49,6 +49,7 @@ int _dl_verbose; /* We never do profiling. */ const char *_dl_profile; +const char *_dl_profile_output; /* Names of shared object for which the RUNPATHs and RPATHs should be ignored. */ @@ -66,24 +67,21 @@ const char *_dl_origin_path; /* Nonzero if runtime lookup should not update the .got/.plt. */ int _dl_bind_not; -/* Initially empty list of loaded objects. */ -struct link_map *_dl_loaded; -/* Number of object in the _dl_loaded list. */ -unsigned int _dl_nloaded; +/* Namespace information. */ +struct link_namespaces _dl_ns[DL_NNS]; + +/* Incremented whenever something may have been added to dl_loaded. */ +unsigned long long _dl_load_adds; /* Fake scope. In dynamically linked binaries this is the scope of the main application but here we don't have something like this. So create a fake scope containing nothing. */ struct r_scope_elem _dl_initial_searchlist; -/* Variable which can be used in lookup to process the global scope. */ -struct r_scope_elem *_dl_global_scope[2] = { &_dl_initial_searchlist, NULL }; -/* This is a global pointer to this structure which is public. It is - used by dlopen/dlclose to add and remove objects from what is regarded - to be the global scope. */ -struct r_scope_elem *_dl_main_searchlist = &_dl_initial_searchlist; +#ifndef HAVE_INLINED_SYSCALLS /* Nonzero during startup. */ int _dl_starting_up = 1; +#endif /* Get architecture specific initializer. */ #include @@ -103,11 +101,6 @@ hp_timing_t _dl_cpuclock_offset; void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls; #endif -/* This is zero at program start to signal that the global scope map is - allocated by rtld. Later it keeps the size of the map. It might be - reset if in _dl_close if the last global object is removed. */ -size_t _dl_global_scope_alloc; - size_t _dl_pagesize; unsigned int _dl_osversion; @@ -136,13 +129,15 @@ ElfW(Word) _dl_stack_flags = PF_R|PF_W|P /* If loading a shared object requires that we make the stack executable when it was not, we do it by calling this function. It returns an errno code or zero on success. */ -int (*_dl_make_stack_executable_hook) (void) internal_function +int (*_dl_make_stack_executable_hook) (void **) internal_function = _dl_make_stack_executable; #ifdef NEED_DL_SYSINFO /* Needed for improved syscall handling on at least x86/Linux. */ uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT; +#endif +#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO /* Address of the ELF headers in the vsyscall page. */ const ElfW(Ehdr) *_dl_sysinfo_dso; #endif @@ -172,10 +167,10 @@ _dl_aux_init (ElfW(auxv_t) *av) switch (av->a_type) { case AT_PAGESZ: - GL(dl_pagesize) = av->a_un.a_val; + GLRO(dl_pagesize) = av->a_un.a_val; break; case AT_CLKTCK: - GL(dl_clktck) = av->a_un.a_val; + GLRO(dl_clktck) = av->a_un.a_val; break; case AT_PHDR: GL(dl_phdr) = av->a_un.a_ptr; @@ -184,13 +179,18 @@ _dl_aux_init (ElfW(auxv_t) *av) GL(dl_phnum) = av->a_un.a_val; break; case AT_HWCAP: - GL(dl_hwcap) = av->a_un.a_val; + GLRO(dl_hwcap) = av->a_un.a_val; break; #ifdef NEED_DL_SYSINFO case AT_SYSINFO: GL(dl_sysinfo) = av->a_un.a_val; break; #endif +#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO + case AT_SYSINFO_EHDR: + GL(dl_sysinfo_dso) = av->a_un.a_ptr; + break; +#endif case AT_UID: uid ^= av->a_un.a_val; seen |= 1; @@ -244,24 +244,29 @@ _dl_non_dynamic_init (void) _dl_dynamic_weak = *(getenv ("LD_DYNAMIC_WEAK") ?: "") == '\0'; + _dl_profile_output = getenv ("LD_PROFILE_OUTPUT"); + if (_dl_profile_output == NULL || _dl_profile_output[0] == '\0') + _dl_profile_output + = &"/var/tmp\0/var/profile"[__libc_enable_secure ? 9 : 0]; + if (__libc_enable_secure) { - static const char *unsecure_envvars[] = - { - UNSECURE_ENVVARS, + static const char unsecure_envvars[] = + UNSECURE_ENVVARS #ifdef EXTRA_UNSECURE_ENVVARS EXTRA_UNSECURE_ENVVARS #endif - }; - size_t cnt; + ; + const char *cp = unsecure_envvars; - for (cnt = 0; - cnt < sizeof (unsecure_envvars) / sizeof (unsecure_envvars[0]); - ++cnt) - unsetenv (unsecure_envvars[cnt]); + while (cp < unsecure_envvars + sizeof (unsecure_envvars)) + { + __unsetenv (cp); + cp = (const char *) __rawmemchr (cp, '\0') + 1; + } if (__access ("/etc/suid-debug", F_OK) != 0) - unsetenv ("MALLOC_CHECK_"); + __unsetenv ("MALLOC_CHECK_"); } #ifdef DL_PLATFORM_INIT diff -durpN glibc-2.3.3/elf/dl-sym.c glibc-2.3.4/elf/dl-sym.c --- glibc-2.3.3/elf/dl-sym.c 2002-04-13 03:53:03.000000000 -0400 +++ glibc-2.3.4/elf/dl-sym.c 2004-10-13 21:53:55.000000000 -0400 @@ -1,5 +1,5 @@ /* Look up a symbol in a shared object loaded by `dlopen'. - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 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 @@ -24,142 +24,94 @@ #include #include #include +#ifdef USE_TLS +# include +#endif -void * -internal_function -_dl_sym (void *handle, const char *name, void *who) -{ - const ElfW(Sym) *ref = NULL; - lookup_t result; - ElfW(Addr) caller = (ElfW(Addr)) who; - struct link_map *match; - struct link_map *l; - /* If the address is not recognized the call comes from the main - program (we hope). */ - match = GL(dl_loaded); +#if defined USE_TLS && defined SHARED +/* Systems which do not have tls_index also probably have to define + DONT_USE_TLS_INDEX. */ - /* Find the highest-addressed object that CALLER is not below. */ - for (l = GL(dl_loaded); l != NULL; l = l->l_next) - if (caller >= l->l_map_start && caller < l->l_map_end) - { - /* There must be exactly one DSO for the range of the virtual - memory. Otherwise something is really broken. */ - match = l; - break; - } +# ifndef __TLS_GET_ADDR +# define __TLS_GET_ADDR __tls_get_addr +# endif - if (handle == RTLD_DEFAULT) - /* Search the global scope as seen in the caller object. */ - result = _dl_lookup_symbol (name, match, &ref, match->l_scope, 0, - DL_LOOKUP_RETURN_NEWEST - | DL_LOOKUP_ADD_DEPENDENCY); - else +/* Return the symbol address given the map of the module it is in and + the symbol record. This is used in dl-sym.c. */ +static void * +internal_function +_dl_tls_symaddr (struct link_map *map, const ElfW(Sym) *ref) +{ +# ifndef DONT_USE_TLS_INDEX + tls_index tmp = { - if (handle != RTLD_NEXT) - { - /* Search the scope of the given object. */ - struct link_map *map = handle; - - result = _dl_lookup_symbol (name, match, &ref, map->l_local_scope, - 0, DL_LOOKUP_RETURN_NEWEST); - } - else - { - if (__builtin_expect (match == GL(dl_loaded), 0)) - { - if (! GL(dl_loaded) - || caller < GL(dl_loaded)->l_map_start - || caller >= GL(dl_loaded)->l_map_end) - _dl_signal_error (0, NULL, NULL, N_("\ -RTLD_NEXT used in code not dynamically loaded")); - } - - l = match; - while (l->l_loader != NULL) - l = l->l_loader; - - result = _dl_lookup_symbol_skip (name, l, &ref, l->l_local_scope, - match); - } - } + .ti_module = map->l_tls_modid, + .ti_offset = ref->st_value + }; - if (ref != NULL) - { -#if defined USE_TLS && defined SHARED - if (ELFW(ST_TYPE) (ref->st_info) == STT_TLS) - /* The found symbol is a thread-local storage variable. - Return the address for to the current thread. */ - return _dl_tls_symaddr (result, ref); + return __TLS_GET_ADDR (&tmp); +# else + return __TLS_GET_ADDR (map->l_tls_modid, ref->st_value); +# endif +} #endif - return DL_SYMBOL_ADDRESS (result, ref); - } - return NULL; -} - -void * +static void * internal_function -_dl_vsym (void *handle, const char *name, const char *version, void *who) +do_sym (void *handle, const char *name, void *who, + struct r_found_version *vers, int flags) { const ElfW(Sym) *ref = NULL; - struct r_found_version vers; lookup_t result; ElfW(Addr) caller = (ElfW(Addr)) who; - struct link_map *match; - struct link_map *l; - - /* Compute hash value to the version string. */ - vers.name = version; - vers.hidden = 1; - vers.hash = _dl_elf_hash (version); - /* We don't have a specific file where the symbol can be found. */ - vers.filename = NULL; /* If the address is not recognized the call comes from the main program (we hope). */ - match = GL(dl_loaded); + struct link_map *match = GL(dl_ns)[LM_ID_BASE]._ns_loaded; /* Find the highest-addressed object that CALLER is not below. */ - for (l = GL(dl_loaded); l != NULL; l = l->l_next) - if (caller >= l->l_map_start && caller < l->l_map_end) - { - /* There must be exactly one DSO for the range of the virtual - memory. Otherwise something is really broken. */ - match = l; - break; - } + for (Lmid_t ns = 0; ns < DL_NNS; ++ns) + for (struct link_map *l = GL(dl_ns)[ns]._ns_loaded; l != NULL; + l = l->l_next) + if (caller >= l->l_map_start && caller < l->l_map_end) + { + /* There must be exactly one DSO for the range of the virtual + memory. Otherwise something is really broken. */ + match = l; + break; + } if (handle == RTLD_DEFAULT) /* Search the global scope. */ - result = _dl_lookup_versioned_symbol (name, match, &ref, match->l_scope, - &vers, 0, DL_LOOKUP_ADD_DEPENDENCY); + result = GLRO(dl_lookup_symbol_x) (name, match, &ref, match->l_scope, + vers, 0, flags|DL_LOOKUP_ADD_DEPENDENCY, + NULL); else if (handle == RTLD_NEXT) { - if (__builtin_expect (match == GL(dl_loaded), 0)) + if (__builtin_expect (match == GL(dl_ns)[LM_ID_BASE]._ns_loaded, 0)) { - if (! GL(dl_loaded) - || caller < GL(dl_loaded)->l_map_start - || caller >= GL(dl_loaded)->l_map_end) - _dl_signal_error (0, NULL, NULL, N_("\ + if (match == NULL + || caller < match->l_map_start + || caller >= match->l_map_end) + GLRO(dl_signal_error) (0, NULL, NULL, N_("\ RTLD_NEXT used in code not dynamically loaded")); } - l = match; + struct link_map *l = match; while (l->l_loader != NULL) l = l->l_loader; - result = _dl_lookup_versioned_symbol_skip (name, l, &ref, - l->l_local_scope, - &vers, match); + result = GLRO(dl_lookup_symbol_x) (name, l, &ref, l->l_local_scope, + vers, 0, 0, match); } else { /* Search the scope of the given object. */ struct link_map *map = handle; - result = _dl_lookup_versioned_symbol (name, map, &ref, - map->l_local_scope, &vers, 0, 0); + result = GLRO(dl_lookup_symbol_x) (name, map, &ref, map->l_local_scope, + vers, 0, flags, NULL); } if (ref != NULL) @@ -176,3 +128,28 @@ RTLD_NEXT used in code not dynamically l return NULL; } + + +void * +internal_function +_dl_vsym (void *handle, const char *name, const char *version, void *who) +{ + struct r_found_version vers; + + /* Compute hash value to the version string. */ + vers.name = version; + vers.hidden = 1; + vers.hash = _dl_elf_hash (version); + /* We don't have a specific file where the symbol can be found. */ + vers.filename = NULL; + + return do_sym (handle, name, who, &vers, 0); +} + + +void * +internal_function +_dl_sym (void *handle, const char *name, void *who) +{ + return do_sym (handle, name, who, NULL, DL_LOOKUP_RETURN_NEWEST); +} diff -durpN glibc-2.3.3/elf/dl-version.c glibc-2.3.4/elf/dl-version.c --- glibc-2.3.3/elf/dl-version.c 2003-06-11 17:25:36.000000000 -0400 +++ glibc-2.3.4/elf/dl-version.c 2004-10-13 21:53:55.000000000 -0400 @@ -1,5 +1,5 @@ /* Handle symbol and library versioning. - Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -59,7 +59,8 @@ find_needed (const char *name, struct li struct link_map *tmap; unsigned int n; - for (tmap = GL(dl_loaded); tmap != NULL; tmap = tmap->l_next) + for (tmap = GL(dl_ns)[map->l_ns]._ns_loaded; tmap != NULL; + tmap = tmap->l_next) if (_dl_name_match_p (name, tmap)) return tmap; @@ -87,11 +88,11 @@ match_symbol (const char *name, ElfW(Wor int result = 0; /* Display information about what we are doing while debugging. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_VERSIONS, 0)) - INTUSE(_dl_debug_printf) ("\ + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_VERSIONS, 0)) + _dl_debug_printf ("\ checking for version `%s' in file %s required by file %s\n", - string, map->l_name[0] - ? map->l_name : rtld_progname, name); + string, map->l_name[0] ? map->l_name : rtld_progname, + name); if (__builtin_expect (map->l_info[VERSYMIDX (DT_VERDEF)] == NULL, 0)) { @@ -215,9 +216,8 @@ _dl_check_map_versions (struct link_map &buf[sizeof (buf) - 1], 10, 0), " of Verneed record\n"); call_error: - INTUSE(_dl_signal_error) (errval, (*map->l_name - ? map->l_name : rtld_progname), - NULL, errstring); + _dl_signal_error (errval, *map->l_name ? map->l_name : rtld_progname, + NULL, errstring); } while (1) @@ -244,7 +244,7 @@ _dl_check_map_versions (struct link_map ? map->l_name : rtld_progname), aux->vna_hash, strtab + aux->vna_name, - needed, verbose, + needed->l_real, verbose, aux->vna_flags & VER_FLG_WEAK); /* Compare the version index. */ @@ -375,7 +375,6 @@ _dl_check_map_versions (struct link_map return result; } -INTDEF (_dl_check_map_versions) int @@ -387,7 +386,7 @@ _dl_check_all_versions (struct link_map for (l = map; l != NULL; l = l->l_next) result |= (! l->l_faked - && INTUSE(_dl_check_map_versions) (l, verbose, trace_mode)); + && _dl_check_map_versions (l, verbose, trace_mode)); return result; } diff -durpN glibc-2.3.3/elf/do-lookup.h glibc-2.3.4/elf/do-lookup.h --- glibc-2.3.3/elf/do-lookup.h 2003-06-11 17:26:06.000000000 -0400 +++ glibc-2.3.4/elf/do-lookup.h 2004-10-13 22:06:51.000000000 -0400 @@ -1,5 +1,5 @@ /* Look up a symbol in the loaded objects. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -17,21 +17,16 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#if VERSIONED -# define FCT do_lookup_versioned -# define ARG const struct r_found_version *const version -#else -# define FCT do_lookup -# define ARG int flags -#endif - /* Inner part of the lookup functions. We return a value > 0 if we found the symbol, the value 0 if nothing is found and < 0 if something bad happened. */ static int -FCT (const char *undef_name, unsigned long int hash, const ElfW(Sym) *ref, - struct sym_val *result, struct r_scope_elem *scope, size_t i, ARG, - struct link_map *skip, int type_class) +__attribute_noinline__ +do_lookup_x (const char *undef_name, unsigned long int hash, + const ElfW(Sym) *ref, struct sym_val *result, + struct r_scope_elem *scope, size_t i, + const struct r_found_version *const version, int flags, + struct link_map *skip, int type_class) { struct link_map **list = scope->r_list; size_t n = scope->r_nlist; @@ -44,12 +39,10 @@ FCT (const char *undef_name, unsigned lo const ElfW(Half) *verstab; Elf_Symndx symidx; const ElfW(Sym) *sym; -#if ! VERSIONED int num_versions = 0; const ElfW(Sym) *versioned_sym = NULL; -#endif - map = list[i]; + map = list[i]->l_real; /* Here come the extra test needed for `_dl_lookup_symbol_skip'. */ if (skip != NULL && map == skip) @@ -60,10 +53,10 @@ FCT (const char *undef_name, unsigned lo continue; /* Print some debugging info if wanted. */ - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_SYMBOLS, 0)) - INTUSE(_dl_debug_printf) ("symbol=%s; lookup in file=%s\n", - undef_name, (map->l_name[0] - ? map->l_name : rtld_progname)); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SYMBOLS, 0)) + _dl_debug_printf ("symbol=%s; lookup in file=%s\n", + undef_name, + map->l_name[0] ? map->l_name : rtld_progname); symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]); strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]); @@ -100,67 +93,71 @@ FCT (const char *undef_name, unsigned lo /* Not the symbol we are looking for. */ continue; -#if VERSIONED - if (__builtin_expect (verstab == NULL, 0)) + if (version != NULL) { - /* We need a versioned symbol but haven't found any. If - this is the object which is referenced in the verneed - entry it is a bug in the library since a symbol must - not simply disappear. + if (__builtin_expect (verstab == NULL, 0)) + { + /* We need a versioned symbol but haven't found any. If + this is the object which is referenced in the verneed + entry it is a bug in the library since a symbol must + not simply disappear. - It would also be a bug in the object since it means that - the list of required versions is incomplete and so the - tests in dl-version.c haven't found a problem.*/ - assert (version->filename == NULL - || ! _dl_name_match_p (version->filename, map)); + It would also be a bug in the object since it means that + the list of required versions is incomplete and so the + tests in dl-version.c haven't found a problem.*/ + assert (version->filename == NULL + || ! _dl_name_match_p (version->filename, map)); - /* Otherwise we accept the symbol. */ + /* Otherwise we accept the symbol. */ + } + else + { + /* We can match the version information or use the + default one if it is not hidden. */ + ElfW(Half) ndx = verstab[symidx] & 0x7fff; + if ((map->l_versions[ndx].hash != version->hash + || strcmp (map->l_versions[ndx].name, version->name)) + && (version->hidden || map->l_versions[ndx].hash + || (verstab[symidx] & 0x8000))) + /* It's not the version we want. */ + continue; + } } else { - /* We can match the version information or use the - default one if it is not hidden. */ - ElfW(Half) ndx = verstab[symidx] & 0x7fff; - if ((map->l_versions[ndx].hash != version->hash - || strcmp (map->l_versions[ndx].name, version->name)) - && (version->hidden || map->l_versions[ndx].hash - || (verstab[symidx] & 0x8000))) - /* It's not the version we want. */ - continue; - } -#else - /* No specific version is selected. There are two ways we - can got here: + /* No specific version is selected. There are two ways we + can got here: - - a binary which does not include versioning information - is loaded + - a binary which does not include versioning information + is loaded - - dlsym() instead of dlvsym() is used to get a symbol which - might exist in more than one form + - dlsym() instead of dlvsym() is used to get a symbol which + might exist in more than one form - If the library does not provide symbol version - information there is no problem at at: we simply use the - symbol if it is defined. + If the library does not provide symbol version + information there is no problem at at: we simply use the + symbol if it is defined. - These two lookups need to be handled differently if the - library defines versions. In the case of the old - unversioned application the oldest (default) version - should be used. In case of a dlsym() call the latest and - public interface should be returned. */ - if (verstab != NULL) - { - if ((verstab[symidx] & 0x7fff) - >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3)) + These two lookups need to be handled differently if the + library defines versions. In the case of the old + unversioned application the oldest (default) version + should be used. In case of a dlsym() call the latest and + public interface should be returned. */ + if (verstab != NULL) { - /* Don't accept hidden symbols. */ - if ((verstab[symidx] & 0x8000) == 0 && num_versions++ == 0) - /* No version so far. */ - versioned_sym = sym; + if ((verstab[symidx] & 0x7fff) + >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3)) + { + /* Don't accept hidden symbols. */ + if ((verstab[symidx] & 0x8000) == 0 + && num_versions++ == 0) + /* No version so far. */ + versioned_sym = sym; - continue; + continue; + } } } -#endif /* There cannot be another entry for this symbol so stop here. */ goto found_it; @@ -170,11 +167,7 @@ FCT (const char *undef_name, unsigned lo looking for an unversioned symbol and the version is not the default version we still accept this symbol since there are no possible ambiguities. */ -#if VERSIONED - sym = NULL; -#else sym = num_versions == 1 ? versioned_sym : NULL; -#endif if (sym != NULL) { @@ -183,7 +176,7 @@ FCT (const char *undef_name, unsigned lo { case STB_WEAK: /* Weak definition. Use this value if we don't find another. */ - if (__builtin_expect (GL(dl_dynamic_weak), 0)) + if (__builtin_expect (GLRO(dl_dynamic_weak), 0)) { if (! result->s) { @@ -204,13 +197,11 @@ FCT (const char *undef_name, unsigned lo } } -#if VERSIONED /* If this current map is the one mentioned in the verneed entry and we have not found a weak entry, it is a bug. */ - if (symidx == STN_UNDEF && version->filename != NULL + if (symidx == STN_UNDEF && version != NULL && version->filename != NULL && __builtin_expect (_dl_name_match_p (version->filename, map), 0)) return -1; -#endif } while (++i < n); diff -durpN glibc-2.3.3/elf/do-rel.h glibc-2.3.4/elf/do-rel.h --- glibc-2.3.3/elf/do-rel.h 2003-01-30 12:36:34.000000000 -0500 +++ glibc-2.3.4/elf/do-rel.h 2004-09-24 13:09:03.000000000 -0400 @@ -1,5 +1,5 @@ /* Do relocations for ELF dynamic linking. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2003, 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 @@ -49,7 +49,7 @@ relocations; they should be set up to call _dl_runtime_resolve, rather than fully resolved now. */ -static inline void __attribute__ ((always_inline)) +auto inline void __attribute__ ((always_inline)) elf_dynamic_do_rel (struct link_map *map, ElfW(Addr) reladdr, ElfW(Addr) relsize, int lazy) diff -durpN glibc-2.3.3/elf/dynamic-link.h glibc-2.3.4/elf/dynamic-link.h --- glibc-2.3.3/elf/dynamic-link.h 2003-07-31 02:33:50.000000000 -0400 +++ glibc-2.3.4/elf/dynamic-link.h 2004-09-24 13:09:03.000000000 -0400 @@ -1,5 +1,5 @@ /* Inline functions for dynamic linking. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -64,8 +64,12 @@ elf_machine_lazy_rel (struct link_map *m /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */ - -static inline void __attribute__ ((unused, always_inline)) +#ifndef RESOLVE +static +#else +auto +#endif +inline void __attribute__ ((unused, always_inline)) elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp) { ElfW(Dyn) *dyn = l->l_ld; @@ -158,31 +162,37 @@ elf_get_dynamic_info (struct link_map *l if (info[DT_REL] != NULL) assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel))); #endif +#ifdef RTLD_BOOTSTRAP + /* Only the bind now flags are allowed. */ + assert (info[VERSYMIDX (DT_FLAGS_1)] == NULL + || info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val == DF_1_NOW); + assert (info[DT_FLAGS] == NULL + || info[DT_FLAGS]->d_un.d_val == DF_BIND_NOW); + /* Flags must not be set for ld.so. */ + assert (info[DT_RUNPATH] == NULL); + assert (info[DT_RPATH] == NULL); +#else if (info[DT_FLAGS] != NULL) { /* Flags are used. Translate to the old form where available. Since these l_info entries are only tested for NULL pointers it is ok if they point to the DT_FLAGS entry. */ l->l_flags = info[DT_FLAGS]->d_un.d_val; -#ifdef RTLD_BOOTSTRAP - /* These three flags must not be set for ld.so. */ - assert ((l->l_flags & (DF_SYMBOLIC | DF_TEXTREL | DF_BIND_NOW)) == 0); -#else + if (l->l_flags & DF_SYMBOLIC) info[DT_SYMBOLIC] = info[DT_FLAGS]; if (l->l_flags & DF_TEXTREL) info[DT_TEXTREL] = info[DT_FLAGS]; if (l->l_flags & DF_BIND_NOW) info[DT_BIND_NOW] = info[DT_FLAGS]; -#endif } if (info[VERSYMIDX (DT_FLAGS_1)] != NULL) - l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val; -#ifdef RTLD_BOOTSTRAP - /* The dynamic linker should have none of these set. */ - assert (info[DT_RUNPATH] == NULL); - assert (info[DT_RPATH] == NULL); -#else + { + l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val; + + if (l->l_flags_1 & DF_1_NOW) + info[DT_BIND_NOW] = info[VERSYMIDX (DT_FLAGS_1)]; + } if (info[DT_RUNPATH] != NULL) /* If both RUNPATH and RPATH are given, the latter is ignored. */ info[DT_RPATH] = NULL; diff -durpN glibc-2.3.3/elf/elf.h glibc-2.3.4/elf/elf.h --- glibc-2.3.3/elf/elf.h 2003-06-26 15:54:29.000000000 -0400 +++ glibc-2.3.4/elf/elf.h 2004-11-12 16:51:33.000000000 -0500 @@ -1,5 +1,5 @@ /* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc. + Copyright (C) 1995-2003, 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 @@ -297,6 +297,10 @@ typedef struct #define SHN_UNDEF 0 /* Undefined section */ #define SHN_LORESERVE 0xff00 /* Start of reserved indices */ #define SHN_LOPROC 0xff00 /* Start of processor-specific */ +#define SHN_BEFORE 0xff00 /* Order section before all others + (Solaris). */ +#define SHN_AFTER 0xff01 /* Order section after all others + (Solaris). */ #define SHN_HIPROC 0xff1f /* End of processor-specific */ #define SHN_LOOS 0xff20 /* Start of OS-specific */ #define SHN_HIOS 0xff3f /* End of OS-specific */ @@ -357,6 +361,10 @@ typedef struct #define SHF_TLS (1 << 10) /* Section hold thread-local data. */ #define SHF_MASKOS 0x0ff00000 /* OS-specific. */ #define SHF_MASKPROC 0xf0000000 /* Processor-specific */ +#define SHF_ORDERED (1 << 30) /* Special ordering requirement + (Solaris). */ +#define SHF_EXCLUDE (1 << 31) /* Section is excluded unless + referenced or allocated (Solaris).*/ /* Section group handling. */ #define GRP_COMDAT 0x1 /* Mark group as COMDAT. */ @@ -559,6 +567,7 @@ typedef struct #define PT_LOOS 0x60000000 /* Start of OS-specific */ #define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */ #define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */ +#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */ #define PT_LOSUNW 0x6ffffffa #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */ @@ -954,6 +963,12 @@ typedef struct #define AT_SYSINFO 32 #define AT_SYSINFO_EHDR 33 +/* Shapes of the caches. Bits 0-3 contains associativity; bits 4-7 contains + log2 of line size; mask those to get cache size. */ +#define AT_L1I_CACHESHAPE 34 +#define AT_L1D_CACHESHAPE 35 +#define AT_L2_CACHESHAPE 36 +#define AT_L3_CACHESHAPE 37 /* Note section contents. Each entry in the note section begins with a header of a fixed form. */ @@ -1126,7 +1141,7 @@ typedef struct /* Legal values for ST_TYPE subfield of st_info (symbol type). */ -#define STT_REGISTER 13 /* Global register reserved to app. */ +#define STT_SPARC_REGISTER 13 /* Global register reserved to app. */ /* Values for Elf64_Ehdr.e_flags. */ @@ -2068,7 +2083,9 @@ typedef Elf32_Addr Elf32_Conflict; /* PowerPC64 specific values for the Dyn d_tag field. */ #define DT_PPC64_GLINK (DT_LOPROC + 0) -#define DT_PPC64_NUM 1 +#define DT_PPC64_OPD (DT_LOPROC + 1) +#define DT_PPC64_OPDSZ (DT_LOPROC + 2) +#define DT_PPC64_NUM 3 /* ARM specific declarations */ @@ -2164,6 +2181,9 @@ typedef Elf32_Addr Elf32_Conflict; /* Processor specific values for the Phdr p_type field. */ #define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */ #define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */ +#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) +#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) +#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) /* Processor specific flags for the Phdr p_flags field. */ #define PF_IA_64_NORECOV 0x80000000 /* spec insns w/o recovery */ @@ -2382,9 +2402,14 @@ typedef Elf32_Addr Elf32_Conflict; #define R_390_TLS_DTPOFF 55 /* Offset in TLS block. */ #define R_390_TLS_TPOFF 56 /* Negated offset in static TLS block. */ - +#define R_390_20 57 /* Direct 20 bit. */ +#define R_390_GOT20 58 /* 20 bit GOT offset. */ +#define R_390_GOTPLT20 59 /* 20 bit offset to jump slot. */ +#define R_390_TLS_GOTIE20 60 /* 20 bit GOT offset for static TLS + block offset. */ /* Keep this the last entry. */ -#define R_390_NUM 57 +#define R_390_NUM 61 + /* CRIS relocations. */ #define R_CRIS_NONE 0 @@ -2410,6 +2435,7 @@ typedef Elf32_Addr Elf32_Conflict; #define R_CRIS_NUM 20 + /* AMD x86-64 relocations. */ #define R_X86_64_NONE 0 /* No reloc */ #define R_X86_64_64 1 /* Direct 64 bit */ @@ -2442,6 +2468,91 @@ typedef Elf32_Addr Elf32_Conflict; #define R_X86_64_NUM 24 + +/* AM33 relocations. */ +#define R_MN10300_NONE 0 /* No reloc. */ +#define R_MN10300_32 1 /* Direct 32 bit. */ +#define R_MN10300_16 2 /* Direct 16 bit. */ +#define R_MN10300_8 3 /* Direct 8 bit. */ +#define R_MN10300_PCREL32 4 /* PC-relative 32-bit. */ +#define R_MN10300_PCREL16 5 /* PC-relative 16-bit signed. */ +#define R_MN10300_PCREL8 6 /* PC-relative 8-bit signed. */ +#define R_MN10300_GNU_VTINHERIT 7 /* Ancient C++ vtable garbage... */ +#define R_MN10300_GNU_VTENTRY 8 /* ... collection annotation. */ +#define R_MN10300_24 9 /* Direct 24 bit. */ +#define R_MN10300_GOTPC32 10 /* 32-bit PCrel offset to GOT. */ +#define R_MN10300_GOTPC16 11 /* 16-bit PCrel offset to GOT. */ +#define R_MN10300_GOTOFF32 12 /* 32-bit offset from GOT. */ +#define R_MN10300_GOTOFF24 13 /* 24-bit offset from GOT. */ +#define R_MN10300_GOTOFF16 14 /* 16-bit offset from GOT. */ +#define R_MN10300_PLT32 15 /* 32-bit PCrel to PLT entry. */ +#define R_MN10300_PLT16 16 /* 16-bit PCrel to PLT entry. */ +#define R_MN10300_GOT32 17 /* 32-bit offset to GOT entry. */ +#define R_MN10300_GOT24 18 /* 24-bit offset to GOT entry. */ +#define R_MN10300_GOT16 19 /* 16-bit offset to GOT entry. */ +#define R_MN10300_COPY 20 /* Copy symbol at runtime. */ +#define R_MN10300_GLOB_DAT 21 /* Create GOT entry. */ +#define R_MN10300_JMP_SLOT 22 /* Create PLT entry. */ +#define R_MN10300_RELATIVE 23 /* Adjust by program base. */ + +#define R_MN10300_NUM 24 + + +/* M32R relocs. */ +#define R_M32R_NONE 0 /* No reloc. */ +#define R_M32R_16 1 /* Direct 16 bit. */ +#define R_M32R_32 2 /* Direct 32 bit. */ +#define R_M32R_24 3 /* Direct 24 bit. */ +#define R_M32R_10_PCREL 4 /* PC relative 10 bit shifted. */ +#define R_M32R_18_PCREL 5 /* PC relative 18 bit shifted. */ +#define R_M32R_26_PCREL 6 /* PC relative 26 bit shifted. */ +#define R_M32R_HI16_ULO 7 /* High 16 bit with unsigned low. */ +#define R_M32R_HI16_SLO 8 /* High 16 bit with signed low. */ +#define R_M32R_LO16 9 /* Low 16 bit. */ +#define R_M32R_SDA16 10 /* 16 bit offset in SDA. */ +#define R_M32R_GNU_VTINHERIT 11 +#define R_M32R_GNU_VTENTRY 12 +/* M32R relocs use SHT_RELA. */ +#define R_M32R_16_RELA 33 /* Direct 16 bit. */ +#define R_M32R_32_RELA 34 /* Direct 32 bit. */ +#define R_M32R_24_RELA 35 /* Direct 24 bit. */ +#define R_M32R_10_PCREL_RELA 36 /* PC relative 10 bit shifted. */ +#define R_M32R_18_PCREL_RELA 37 /* PC relative 18 bit shifted. */ +#define R_M32R_26_PCREL_RELA 38 /* PC relative 26 bit shifted. */ +#define R_M32R_HI16_ULO_RELA 39 /* High 16 bit with unsigned low */ +#define R_M32R_HI16_SLO_RELA 40 /* High 16 bit with signed low */ +#define R_M32R_LO16_RELA 41 /* Low 16 bit */ +#define R_M32R_SDA16_RELA 42 /* 16 bit offset in SDA */ +#define R_M32R_RELA_GNU_VTINHERIT 43 +#define R_M32R_RELA_GNU_VTENTRY 44 + +#define R_M32R_GOT24 48 /* 24 bit GOT entry */ +#define R_M32R_26_PLTREL 49 /* 26 bit PC relative to PLT shifted */ +#define R_M32R_COPY 50 /* Copy symbol at runtime */ +#define R_M32R_GLOB_DAT 51 /* Create GOT entry */ +#define R_M32R_JMP_SLOT 52 /* Create PLT entry */ +#define R_M32R_RELATIVE 53 /* Adjust by program base */ +#define R_M32R_GOTOFF 54 /* 24 bit offset to GOT */ +#define R_M32R_GOTPC24 55 /* 24 bit PC relative offset to GOT */ +#define R_M32R_GOT16_HI_ULO 56 /* High 16 bit GOT entry with unsigned + low */ +#define R_M32R_GOT16_HI_SLO 57 /* High 16 bit GOT entry with signed + low */ +#define R_M32R_GOT16_LO 58 /* Low 16 bit GOT entry */ +#define R_M32R_GOTPC_HI_ULO 59 /* High 16 bit PC relative offset to + GOT with unsigned low */ +#define R_M32R_GOTPC_HI_SLO 60 /* High 16 bit PC relative offset to + GOT with signed low */ +#define R_M32R_GOTPC_LO 61 /* Low 16 bit PC relative offset to + GOT */ +#define R_M32R_GOTOFF_HI_ULO 62 /* High 16 bit offset to GOT + with unsigned low */ +#define R_M32R_GOTOFF_HI_SLO 63 /* High 16 bit offset to GOT + with signed low */ +#define R_M32R_GOTOFF_LO 64 /* Low 16 bit offset to GOT */ +#define R_M32R_NUM 256 /* Keep this the last entry. */ + + __END_DECLS #endif /* elf.h */ diff -durpN glibc-2.3.3/elf/lateglobal.c glibc-2.3.4/elf/lateglobal.c --- glibc-2.3.3/elf/lateglobal.c 2000-10-21 03:13:32.000000000 -0400 +++ glibc-2.3.4/elf/lateglobal.c 2004-04-21 14:57:39.000000000 -0400 @@ -13,14 +13,14 @@ main (void) mtrace (); h[0] = dlopen ("ltglobmod1.so", RTLD_LAZY); - if (h == NULL) + if (h[0] == NULL) { printf ("%s: cannot open %s: %s", __FUNCTION__, "ltglobmod1.so", dlerror ()); exit (EXIT_FAILURE); } h[1] = dlopen ("ltglobmod2.so", RTLD_LAZY); - if (h == NULL) + if (h[1] == NULL) { printf ("%s: cannot open %s: %s", __FUNCTION__, "ltglobmod2.so", dlerror ()); diff -durpN glibc-2.3.3/elf/ldconfig.c glibc-2.3.4/elf/ldconfig.c --- glibc-2.3.3/elf/ldconfig.c 2003-08-26 04:07:19.000000000 -0400 +++ glibc-2.3.4/elf/ldconfig.c 2004-08-10 00:04:32.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999. @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#define PROCINFO_CLASS static #include #include #include @@ -25,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -34,6 +36,8 @@ #include #include #include +#include +#include #include "ldconfig.h" #include "dl-cache.h" @@ -123,12 +127,12 @@ static const struct argp_option options[ { "verbose", 'v', NULL, 0, N_("Generate verbose messages"), 0}, { NULL, 'N', NULL, 0, N_("Don't build cache"), 0}, { NULL, 'X', NULL, 0, N_("Don't generate links"), 0}, - { NULL, 'r', "ROOT", 0, N_("Change to and use ROOT as root directory"), 0}, - { NULL, 'C', "CACHE", 0, N_("Use CACHE as cache file"), 0}, - { NULL, 'f', "CONF", 0, N_("Use CONF as configuration file"), 0}, + { NULL, 'r', N_("ROOT"), 0, N_("Change to and use ROOT as root directory"), 0}, + { NULL, 'C', N_("CACHE"), 0, N_("Use CACHE as cache file"), 0}, + { NULL, 'f', N_("CONF"), 0, N_("Use CONF as configuration file"), 0}, { NULL, 'n', NULL, 0, N_("Only process directories specified on the command line. Don't build cache."), 0}, { NULL, 'l', NULL, 0, N_("Manually link individual libraries."), 0}, - { "format", 'c', "FORMAT", 0, N_("Format to use: new, old or compat (default)"), 0}, + { "format", 'c', N_("FORMAT"), 0, N_("Format to use: new, old or compat (default)"), 0}, { NULL, 0, NULL, 0, NULL, 0 } }; @@ -275,7 +279,7 @@ print_version (FILE *stream, struct argp Copyright (C) %s Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2003"); +"), "2004"); fprintf (stream, gettext ("Written by %s.\n"), "Andreas Jaeger"); } @@ -315,17 +319,13 @@ add_single_dir (struct dir_entry *entry, static void add_dir (const char *line) { - char *equal_sign; - struct dir_entry *entry; unsigned int i; - struct stat64 stat_buf; - - entry = xmalloc (sizeof (struct dir_entry)); + struct dir_entry *entry = xmalloc (sizeof (struct dir_entry)); entry->next = NULL; /* Search for an '=' sign. */ entry->path = xstrdup (line); - equal_sign = strchr (entry->path, '='); + char *equal_sign = strchr (entry->path, '='); if (equal_sign) { *equal_sign = '\0'; @@ -355,19 +355,28 @@ add_dir (const char *line) while (entry->path[i] == '/' && i > 0) entry->path[i--] = '\0'; - if (stat64 (entry->path, &stat_buf)) + char *path = entry->path; + if (opt_chroot) + path = chroot_canon (opt_chroot, path); + + struct stat64 stat_buf; + if (path == NULL || stat64 (path, &stat_buf)) { if (opt_verbose) error (0, errno, _("Can't stat %s"), entry->path); free (entry->path); free (entry); - return; } + else + { + entry->ino = stat_buf.st_ino; + entry->dev = stat_buf.st_dev; - entry->ino = stat_buf.st_ino; - entry->dev = stat_buf.st_dev; + add_single_dir (entry, 1); + } - add_single_dir (entry, 1); + if (opt_chroot) + free (path); } @@ -934,16 +943,20 @@ search_dirs (void) } +static void parse_conf_include (const char *config_file, unsigned int lineno, + bool do_chroot, const char *pattern); + /* Parse configuration file. */ static void -parse_conf (const char *filename) +parse_conf (const char *filename, bool do_chroot) { FILE *file = NULL; char *line = NULL; const char *canon; size_t len = 0; + unsigned int lineno; - if (opt_chroot) + if (do_chroot && opt_chroot) { canon = chroot_canon (opt_chroot, filename); if (canon) @@ -971,12 +984,14 @@ parse_conf (const char *filename) if (canon != filename) free ((char *) canon); + lineno = 0; do { ssize_t n = getline (&line, &len, file); if (n < 0) break; + ++lineno; if (line[n - 1] == '\n') line[n - 1] = '\0'; @@ -994,7 +1009,16 @@ parse_conf (const char *filename) if (cp[0] == '\0') continue; - add_dir (cp); + if (!strncmp (cp, "include", 7) && isblank (cp[7])) + { + char *dir; + cp += 8; + while ((dir = strsep (&cp, " \t")) != NULL) + if (dir[0] != '\0') + parse_conf_include (filename, lineno, do_chroot, dir); + } + else + add_dir (cp); } while (!feof_unlocked (file)); @@ -1003,6 +1027,64 @@ parse_conf (const char *filename) fclose (file); } +/* Handle one word in an `include' line, a glob pattern of additional + config files to read. */ +static void +parse_conf_include (const char *config_file, unsigned int lineno, + bool do_chroot, const char *pattern) +{ + if (opt_chroot && pattern[0] != '/') + error (EXIT_FAILURE, 0, + _("need absolute file name for configuration file when using -r")); + + char *copy = NULL; + if (pattern[0] != '/' && strchr (config_file, '/') != NULL) + { + if (asprintf (©, "%s/%s", dirname (strdupa (config_file)), + pattern) < 0) + error (EXIT_FAILURE, 0, _("memory exhausted")); + pattern = copy; + } + + glob64_t gl; + int result; + if (do_chroot && opt_chroot) + { + char *canon = chroot_canon (opt_chroot, pattern); + result = glob64 (canon ?: pattern, 0, NULL, &gl); + free (canon); + } + else + result = glob64 (pattern, 0, NULL, &gl); + + switch (result) + { + case 0: + for (size_t i = 0; i < gl.gl_pathc; ++i) + parse_conf (gl.gl_pathv[i], false); + globfree64 (&gl); + break; + + case GLOB_NOMATCH: + break; + + case GLOB_NOSPACE: + errno = ENOMEM; + case GLOB_ABORTED: + if (opt_verbose) + error (0, errno, _("%s:%u: cannot read directory %s"), + config_file, lineno, pattern); + break; + + default: + abort (); + break; + } + + if (copy) + free (copy); +} + /* Honour LD_HWCAP_MASK. */ static void set_hwcap (void) @@ -1127,7 +1209,7 @@ main (int argc, char **argv) if (!opt_only_cline) { - parse_conf (config_file); + parse_conf (config_file, true); /* Always add the standard search paths. */ add_system_dir (SLIBDIR); diff -durpN glibc-2.3.3/elf/ldd.bash.in glibc-2.3.4/elf/ldd.bash.in --- glibc-2.3.3/elf/ldd.bash.in 2003-01-02 15:12:03.000000000 -0500 +++ glibc-2.3.4/elf/ldd.bash.in 2004-12-08 17:08:47.000000000 -0500 @@ -1,5 +1,5 @@ #! @BASH@ -# Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1996-2001, 2002, 2003, 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 @@ -36,10 +36,12 @@ while test $# -gt 0; do case "$1" in --vers | --versi | --versio | --version) echo 'ldd (GNU libc) @VERSION@' - echo $"Copyright (C) 2003 Free Software Foundation, Inc. + printf $"Copyright (C) %s Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -Written by Roland McGrath and Ulrich Drepper." +" "2004" + printf $"Written by %s and %s. +" "Roland McGrath" "Ulrich Drepper" exit 0 ;; --h | --he | --hel | --help) @@ -48,8 +50,10 @@ Written by Roland McGrath and Ulrich Dre --version print version information and exit -d, --data-relocs process data relocations -r, --function-relocs process data and function relocations + -u, --unused print unused direct dependencies -v, --verbose print all information -Report bugs using the \`glibcbug' script to ." +For bug reporting instructions, please see: +." exit 0 ;; -d | --d | --da | --dat | --data | --data- | --data-r | --data-re | \ @@ -68,6 +72,10 @@ Report bugs using the \`glibcbug' script verbose=yes shift ;; + -u | --u | --un | --unu | --unus | --unuse | --unused) + unused=yes + shift + ;; --v | --ve | --ver) echo >&2 $"ldd: option \`$1' is ambiguous" exit 1 @@ -94,6 +102,24 @@ nonelf () add_env="LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now" add_env="$add_env LD_VERBOSE=$verbose" +if test "$unused" = yes; then + add_env="$add_env LD_DEBUG=\"$LD_DEBUG${LD_DEBUG:+,}unused\"" +fi + +# The following use of cat is needed to make ldd work in SELinux +# environments where the executed program might not have permissions +# to write to the console/tty. But only bash 3.x supports the pipefail +# option, and we don't bother to handle the case for older bash versions. +if set -o pipefail 2> /dev/null; then + try_trace() { + eval $add_env '"$@"' | cat + } +else + try_trace() { + eval $add_env '"$@"' + } +fi + case $# in 0) echo >&2 'ldd:' $"missing file arguments" @@ -142,7 +168,16 @@ warning: you do not have execution permi fi case $ret in 0) - eval $add_env '"$file"' || result=1 + # If the program exits with exit code 5, it means the process has been + # invoked with __libc_enable_secure. Fall back to running it through + # the dynamic linker. + try_trace "$file" + rc=$? + if [ $rc = 5 ]; then + try_trace "$RTLD" "$file" + rc=$? + fi + [ $rc = 0 ] || result=1 ;; 1) # This can be a non-ELF binary or no binary at all. @@ -152,7 +187,7 @@ warning: you do not have execution permi } ;; 2) - eval $add_env \${RTLD} '"$file"' || result=1 + try_trace "$RTLD" "$file" || result=1 ;; *) echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($ret)" >&2 diff -durpN glibc-2.3.3/elf/link.h glibc-2.3.4/elf/link.h --- glibc-2.3.3/elf/link.h 2003-09-16 01:48:04.000000000 -0400 +++ glibc-2.3.4/elf/link.h 2004-01-27 16:29:06.000000000 -0500 @@ -1,6 +1,6 @@ /* Data structure for communication from the run-time dynamic linker for loaded ELF shared objects. - Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001, 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 @@ -100,6 +100,16 @@ struct dl_phdr_info const char *dlpi_name; const ElfW(Phdr) *dlpi_phdr; ElfW(Half) dlpi_phnum; + + /* Note: the next two members were introduced after the first + version of this structure was available. Check the SIZE + argument passed to the dl_iterate_phdr() callback to determine + whether or not they are provided. */ + + /* Incremented when a new object may have been added. */ + unsigned long long int dlpi_adds; + /* Incremented when an object may have been removed. */ + unsigned long long int dlpi_subs; }; __BEGIN_DECLS diff -durpN glibc-2.3.3/elf/Makefile glibc-2.3.4/elf/Makefile --- glibc-2.3.3/elf/Makefile 2003-10-22 03:09:41.000000000 -0400 +++ glibc-2.3.4/elf/Makefile 2004-10-27 16:26:47.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1995-2002, 2003, 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 @@ -30,10 +30,11 @@ routines = $(dl-routines) dl-open dl-clo dl-routines = $(addprefix dl-,load cache lookup object reloc deps \ runtime error init fini debug misc \ version profile conflict tls origin \ - execstack) + execstack caller) all-dl-routines = $(dl-routines) $(sysdep-dl-routines) # But they are absent from the shared libc, because that code is in ld.so. elide-routines.os = $(all-dl-routines) dl-support enbl-secure dl-origin +shared-only-routines += dl-caller # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. @@ -79,9 +80,10 @@ distribute := rtld-Rules \ nodel2mod1.c nodel2mod2.c nodel2mod3.c \ reldep9.c reldep9mod1.c reldep9mod2.c reldep9mod3.c \ tst-array1.exp tst-array2.exp tst-array4.exp \ - tst-array2dep.c \ - tst-execstack-mod.c \ - check-textrel.c dl-sysdep.h + tst-array2dep.c tst-piemod1.c \ + tst-execstack-mod.c tst-dlmodcount.c \ + check-textrel.c dl-sysdep.h test-dlopenrpathmod.c \ + tst-deep1mod1.c tst-deep1mod2.c tst-deep1mod3.c CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables @@ -91,7 +93,7 @@ include ../Makeconfig ifeq ($(unwind-find-fde),yes) routines += unwind-dw2-fde-glibc -shared-only-routines = unwind-dw2-fde-glibc +shared-only-routines += unwind-dw2-fde-glibc endif before-compile = $(objpfx)trusted-dirs.h @@ -151,7 +153,8 @@ tests += loadtest restest1 preloadtest l restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \ circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \ tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-align \ - $(tests-execstack-$(have-z-execstack)) + $(tests-execstack-$(have-z-execstack)) tst-dlmodcount \ + tst-dlopenrpath tst-deep1 tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 # reldep9 test-srcs = tst-pathopt tests-vis-yes = vismain @@ -159,6 +162,9 @@ tests-nodelete-yes = nodelete nodelete2 tests-nodlopen-yes = nodlopen nodlopen2 tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog endif +ifeq (yesyes,$(have-fpie)$(build-shared)) +tests: $(objpfx)tst-pie1.out +endif modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ testobj1_1 failobj constload2 constload3 unloadmod \ dep1 dep2 dep3 dep4 $(modules-vis-$(have-protected)) \ @@ -180,10 +186,15 @@ modules-names = testobj1 testobj2 testob circlemod3 circlemod3a \ reldep8mod1 reldep8mod2 reldep8mod3 \ reldep9mod1 reldep9mod2 reldep9mod3 \ - tst-alignmod $(modules-execstack-$(have-z-execstack)) + tst-alignmod $(modules-execstack-$(have-z-execstack)) \ + tst-dlopenrpathmod tst-deep1mod1 tst-deep1mod2 tst-deep1mod3 \ + tst-dlmopen1mod ifeq (yes,$(have-initfini-array)) modules-names += tst-array2dep endif +ifeq (yesyes,$(have-fpie)$(build-shared)) +modules-names += tst-piemod1 +endif modules-vis-yes = vismod1 vismod2 vismod3 modules-nodelete-yes = nodelmod1 nodelmod2 nodelmod3 nodelmod4 \ nodel2mod1 nodel2mod2 nodel2mod3 @@ -256,22 +267,25 @@ $(objpfx)librtld.os: $(objpfx)dl-allobjs generated += librtld.map librtld.mk rtld-libc.a librtld.os.map +z-now-yes = -Wl,-z,now + $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map) @rm -f $@.lds - $(LINK.o) -nostdlib -nostartfiles -shared \ + $(LINK.o) -nostdlib -nostartfiles -shared $(z-now-$(bind-now)) \ $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \ LC_ALL=C \ sed -e '/^=========/,/^=========/!d;/^=========/d' \ -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ > $@.lds $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ - $(LDFLAGS-rtld) -Wl,-z,defs \ + $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \ $(filter-out $(map-file),$^) $(load-map-file) \ -Wl,-soname=$(rtld-installed-name) -T $@.lds rm -f $@.lds # interp.c exists just to get this string into the libraries. -CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' +CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \ + -DNOT_IN_libc=1 $(objpfx)interp.os: $(common-objpfx)config.make ifneq (ld.so,$(rtld-installed-name)) @@ -701,6 +715,25 @@ $(objpfx)tst-array4.out: $(objpfx)tst-ar $< > $@ cmp $@ tst-array4.exp > /dev/null +ifeq (yesyes,$(have-fpie)$(build-shared)) +CFLAGS-tst-pie1.c += -fpie + +$(objpfx)tst-pie1.out: $(objpfx)tst-pie1 + $(elf-objpfx)$(rtld-installed-name) \ + --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ + $< > $@ + +$(objpfx)tst-pie1: $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so + $(LINK.o) -pie -Wl,-O1 \ + $(sysdep-LDFLAGS) $(config-LDFLAGS) \ + $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \ + $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \ + $(LDFLAGS) $(LDFLAGS-$(@F)) \ + -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \ + -o $@ $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so \ + $(common-objpfx)libc_nonshared.a +endif + check-textrel-CFLAGS = -O -Wall -D_XOPEN_SOURCE=600 -D_BSD_SOURCE $(objpfx)check-textrel: check-textrel.c $(native-compile) @@ -713,4 +746,30 @@ $(objpfx)check-textrel.out: $(objpfx)che $(sort $(wildcard $(common-objpfx)*/lib*.so \ $(common-objpfx)iconvdata/*.so)) > $@ generated += check-textrel check-textrel.out + +$(objpfx)tst-dlmodcount: $(libdl) +$(objpfx)tst-dlmodcount.out: $(test-modules) + endif + +$(objpfx)tst-dlopenrpathmod.so: $(libdl) +$(objpfx)tst-dlopenrpath: $(objpfx)tst-dlopenrpathmod.so $(libdl) +CFLAGS-tst-dlopenrpath.c += -DPFX=\"$(objpfx)\" +LDFLAGS-tst-dlopenrpathmod.so += -Wl,-rpath,\$$ORIGIN/test-subdir +$(objpfx)tst-dlopenrpath.out: $(objpfx)firstobj.so + +$(objpfx)tst-deep1mod2.so: $(objpfx)tst-deep1mod3.so +$(objpfx)tst-deep1: $(libdl) $(objpfx)tst-deep1mod1.so +$(objpfx)tst-deep1.out: $(objpfx)tst-deep1mod2.so +LDFLAGS-tst-deep1 += -rdynamic +tst-deep1mod3.so-no-z-defs = yes + +$(objpfx)tst-dlmopen1mod.so: $(libdl) +$(objpfx)tst-dlmopen1: $(libdl) +$(objpfx)tst-dlmopen1.out: $(objpfx)tst-dlmopen1mod.so + +$(objpfx)tst-dlmopen2: $(libdl) +$(objpfx)tst-dlmopen2.out: $(objpfx)tst-dlmopen1mod.so + +$(objpfx)tst-dlmopen3: $(libdl) +$(objpfx)tst-dlmopen3.out: $(objpfx)tst-dlmopen1mod.so diff -durpN glibc-2.3.3/elf/readlib.c glibc-2.3.4/elf/readlib.c --- glibc-2.3.3/elf/readlib.c 2003-07-22 17:35:06.000000000 -0400 +++ glibc-2.3.4/elf/readlib.c 2004-09-26 09:38:59.000000000 -0400 @@ -105,7 +105,15 @@ process_file (const char *real_file_name if ((size_t) statbuf.st_size < sizeof (struct exec) || (size_t) statbuf.st_size < sizeof (ElfW(Ehdr))) { - error (0, 0, _("File %s is too small, not checked."), file_name); + if (statbuf.st_size == 0) + error (0, 0, _("File %s is empty, not checked."), file_name); + else + { + char buf[SELFMAG]; + size_t n = MIN (statbuf.st_size, SELFMAG); + if (fread (buf, n, 1, file) == 1 && memcmp (buf, ELFMAG, n) == 0) + error (0, 0, _("File %s is too small, not checked."), file_name); + } fclose (file); return 1; } diff -durpN glibc-2.3.3/elf/rtld.c glibc-2.3.4/elf/rtld.c --- glibc-2.3.3/elf/rtld.c 2003-11-24 17:55:26.000000000 -0500 +++ glibc-2.3.4/elf/rtld.c 2004-12-08 17:08:47.000000000 -0500 @@ -1,5 +1,5 @@ /* Run time dynamic linker. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -18,6 +18,7 @@ 02111-1307 USA. */ #include +#include #include #include #include @@ -57,7 +58,7 @@ static void print_missing_version (int e const char *errsting); /* Print the various times we collected. */ -static void print_statistics (void); +static void print_statistics (hp_timing_t *total_timep); /* This is a list of all the modes the dynamic loader can be in. */ enum mode { normal, list, verify, trace }; @@ -67,13 +68,18 @@ enum mode { normal, list, verify, trace all the entries. */ static void process_envvars (enum mode *modep); -int _dl_argc attribute_hidden; +int _dl_argc attribute_relro attribute_hidden; +#ifdef DL_ARGV_NOT_RELRO char **_dl_argv = NULL; +#else +char **_dl_argv attribute_relro = NULL; +#endif INTDEF(_dl_argv) /* Nonzero if we were run directly. */ -unsigned int _dl_skip_args attribute_hidden; +unsigned int _dl_skip_args attribute_relro attribute_hidden; +#ifndef HAVE_INLINED_SYSCALLS /* Set nonzero during loading and initialization of executable and libraries, cleared before the executable's entry point runs. This must not be initialized to nonzero, because the unused dynamic @@ -83,33 +89,75 @@ unsigned int _dl_skip_args attribute_hid never be called. */ int _dl_starting_up = 0; INTVARDEF(_dl_starting_up) +#endif /* This is the structure which defines all variables global to ld.so (except those which cannot be added for some reason). */ struct rtld_global _rtld_global = { + /* Default presumption without further information is executable stack. */ + ._dl_stack_flags = PF_R|PF_W|PF_X, +#ifdef _LIBC_REENTRANT + ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER +#endif + }; +/* If we would use strong_alias here the compiler would see a + non-hidden definition. This would undo the effect of the previous + declaration. So spell out was strong_alias does plus add the + visibility attribute. */ +extern struct rtld_global _rtld_local + __attribute__ ((alias ("_rtld_global"), visibility ("hidden"))); + + +/* This variable is similar to _rtld_local, but all values are + read-only after relocation. */ +struct rtld_global_ro _rtld_global_ro attribute_relro = + { /* Get architecture specific initializer. */ #include - ._dl_debug_fd = STDERR_FILENO, #ifdef NEED_DL_SYSINFO ._dl_sysinfo = DL_SYSINFO_DEFAULT, #endif - ._dl_lazy = 1, + ._dl_debug_fd = STDERR_FILENO, ._dl_use_load_bias = -2, - ._dl_fpu_control = _FPU_DEFAULT, ._dl_correct_cache_id = _DL_CACHE_DEFAULT_ID, ._dl_hwcap_mask = HWCAP_IMPORTANT, - /* Default presumption without further information is executable stack. */ - ._dl_stack_flags = PF_R|PF_W|PF_X, -#ifdef _LIBC_REENTRANT - ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER + ._dl_lazy = 1, + ._dl_fpu_control = _FPU_DEFAULT, + + /* Function pointers. */ + ._dl_get_origin = _dl_get_origin, + ._dl_dst_count = _dl_dst_count, + ._dl_dst_substitute = _dl_dst_substitute, + ._dl_map_object = _dl_map_object, + ._dl_map_object_deps = _dl_map_object_deps, + ._dl_relocate_object = _dl_relocate_object, + ._dl_check_map_versions = _dl_check_map_versions, + ._dl_init = _dl_init, + ._dl_debug_state = _dl_debug_state, +#ifndef MAP_COPY + ._dl_unload_cache = _dl_unload_cache, #endif + ._dl_debug_printf = _dl_debug_printf, + ._dl_catch_error = _dl_catch_error, + ._dl_signal_error = _dl_signal_error, + ._dl_start_profile = _dl_start_profile, + ._dl_mcount = _dl_mcount_internal, + ._dl_lookup_symbol_x = _dl_lookup_symbol_x, + ._dl_check_caller = _dl_check_caller }; -strong_alias (_rtld_global, _rtld_local); +/* If we would use strong_alias here the compiler would see a + non-hidden definition. This would undo the effect of the previous + declaration. So spell out was strong_alias does plus add the + visibility attribute. */ +extern struct rtld_global_ro _rtld_local_ro + __attribute__ ((alias ("_rtld_global_ro"), visibility ("hidden"))); + static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum, ElfW(Addr) *user_entry); +/* These two variables cannot be moved into .data.rel.ro. */ static struct libname_list _dl_rtld_libname; static struct libname_list _dl_rtld_libname2; @@ -121,10 +169,9 @@ static struct libname_list _dl_rtld_libn /* Variable for statistics. */ #ifndef HP_TIMING_NONAVAIL -static hp_timing_t rtld_total_time; static hp_timing_t relocate_time; -static hp_timing_t load_time; -static hp_timing_t start_time; +static hp_timing_t load_time attribute_relro; +static hp_timing_t start_time attribute_relro; #endif /* Additional definitions needed by TLS initialization. */ @@ -140,7 +187,7 @@ DL_SYSINFO_IMPLEMENTATION /* Before ld.so is relocated we must not access variables which need relocations. This means variables which are exported. Variables declared as static are fine. If we can mark a variable hidden this - is fine, too. The latter is impotant here. We can avoid setting + is fine, too. The latter is important here. We can avoid setting up a temporary link map for ld.so if we can mark _rtld_global as hidden. */ #if defined PI_STATIC_AND_HIDDEN && defined HAVE_HIDDEN \ @@ -164,6 +211,7 @@ static ElfW(Addr) _dl_start_final (void /* These defined magically in the linker script. */ extern char _begin[] attribute_hidden; +extern char _etext[] attribute_hidden; extern char _end[] attribute_hidden; @@ -221,9 +269,11 @@ _dl_start_final (void *arg, struct dl_st GL(dl_rtld_map).l_mach = info->l.l_mach; #endif _dl_setup_hash (&GL(dl_rtld_map)); + GL(dl_rtld_map).l_real = &GL(dl_rtld_map); GL(dl_rtld_map).l_opencount = 1; GL(dl_rtld_map).l_map_start = (ElfW(Addr)) _begin; GL(dl_rtld_map).l_map_end = (ElfW(Addr)) _end; + GL(dl_rtld_map).l_text_end = (ElfW(Addr)) _etext; /* Copy the TLS related data if necessary. */ #if USE_TLS && !defined DONT_USE_BOOTSTRAP_MAP # if USE___THREAD @@ -248,6 +298,9 @@ _dl_start_final (void *arg, struct dl_st HP_TIMING_NOW (GL(dl_cpuclock_offset)); #endif + /* Initialize the stack end variable. */ + __libc_stack_end = __builtin_frame_address (0); + /* Call the OS-dependent function to set up life so we can do things like file access. It will call `dl_main' (below) to do all the real work of the dynamic linker, and then unwind our frame and run the user @@ -255,6 +308,7 @@ _dl_start_final (void *arg, struct dl_st start_addr = _dl_sysdep_start (arg, &dl_main); #ifndef HP_TIMING_NONAVAIL + hp_timing_t rtld_total_time; if (HP_TIMING_AVAIL) { hp_timing_t end_time; @@ -267,8 +321,14 @@ _dl_start_final (void *arg, struct dl_st } #endif - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_STATISTICS, 0)) - print_statistics (); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_STATISTICS, 0)) + { +#ifndef HP_TIMING_NONAVAIL + print_statistics (&rtld_total_time); +#else + print_statistics (NULL); +#endif + } return start_addr; } @@ -327,17 +387,18 @@ _dl_start (void *arg) bootstrap_map.l_tls_offset = NO_TLS_OFFSET; #endif -#if USE___THREAD /* Get the dynamic linker's own program header. First we need the ELF file header. The `_begin' symbol created by the linker script points to it. When we have something like GOTOFF relocs, we can use a plain reference to find the runtime address. Without that, we have to rely on the `l_addr' value, which is not the value we want when prelinked. */ +#if USE___THREAD dtv_t initdtv[3]; ElfW(Ehdr) *ehdr # ifdef DONT_USE_BOOTSTRAP_MAP = (ElfW(Ehdr) *) &_begin; # else +# error This will not work with prelink. = (ElfW(Ehdr) *) bootstrap_map.l_addr; # endif ElfW(Phdr) *phdr = (ElfW(Phdr) *) ((void *) ehdr + ehdr->e_phoff); @@ -476,7 +537,7 @@ _dl_start (void *arg) # define ELF_MACHINE_START_ADDRESS(map, start) (start) #endif - return ELF_MACHINE_START_ADDRESS (GL(dl_loaded), entry); + return ELF_MACHINE_START_ADDRESS (GL(dl_ns)[LM_ID_BASE]._ns_loaded, entry); } } @@ -498,8 +559,11 @@ struct map_args { /* Argument to map_doit. */ char *str; + struct link_map *loader; + int is_preloaded; + int mode; /* Return value of map_doit. */ - struct link_map *main_map; + struct link_map *map; }; /* Arguments to version_check_doit. */ @@ -514,22 +578,24 @@ relocate_doit (void *a) { struct relocate_args *args = (struct relocate_args *) a; - INTUSE(_dl_relocate_object) (args->l, args->l->l_scope, args->lazy, 0); + _dl_relocate_object (args->l, args->l->l_scope, args->lazy, 0); } static void map_doit (void *a) { struct map_args *args = (struct map_args *) a; - args->main_map = INTUSE(_dl_map_object) (NULL, args->str, 0, lt_library, 0, - __RTLD_OPENEXEC); + args->map = _dl_map_object (args->loader, args->str, + args->is_preloaded, lt_library, 0, args->mode, + LM_ID_BASE); } static void version_check_doit (void *a) { struct version_check_args *args = (struct version_check_args *) a; - if (_dl_check_all_versions (GL(dl_loaded), 1, args->dotrace) && args->doexit) + if (_dl_check_all_versions (GL(dl_ns)[LM_ID_BASE]._ns_loaded, 1, + args->dotrace) && args->doexit) /* We cannot start the application. Abort now. */ _exit (1); } @@ -538,11 +604,12 @@ version_check_doit (void *a) static inline struct link_map * find_needed (const char *name) { - unsigned int n = GL(dl_loaded)->l_searchlist.r_nlist; + struct r_scope_elem *scope = &GL(dl_ns)[LM_ID_BASE]._ns_loaded->l_searchlist; + unsigned int n = scope->r_nlist; while (n-- > 0) - if (_dl_name_match_p (name, GL(dl_loaded)->l_searchlist.r_list[n])) - return GL(dl_loaded)->l_searchlist.r_list[n]; + if (_dl_name_match_p (name, scope->r_list[n])) + return scope->r_list[n]; /* Should never happen. */ return NULL; @@ -606,10 +673,12 @@ static void rtld_lock_default_unlock_rec #endif -static const char *library_path; /* The library search path. */ -static const char *preloadlist; /* The list preloaded objects. */ -static int version_info; /* Nonzero if information about - versions has to be printed. */ +/* The library search path. */ +static const char *library_path attribute_relro; +/* The list preloaded objects. */ +static const char *preloadlist attribute_relro; +/* Nonzero if information about versions has to be printed. */ +static int version_info attribute_relro; static void dl_main (const ElfW(Phdr) *phdr, @@ -620,6 +689,7 @@ dl_main (const ElfW(Phdr) *phdr, enum mode mode; struct link_map **preloads; unsigned int npreloads; + struct link_map *main_map; size_t file_size; char *file; bool has_interp = false; @@ -657,8 +727,10 @@ dl_main (const ElfW(Phdr) *phdr, /* Process the environment variable which control the behaviour. */ process_envvars (&mode); +#ifndef HAVE_INLINED_SYSCALLS /* Set up a flag which tells we are just starting. */ INTUSE(_dl_starting_up) = 1; +#endif if (*user_entry == (ElfW(Addr)) ENTRY_POINT) { @@ -686,7 +758,7 @@ dl_main (const ElfW(Phdr) *phdr, if (! strcmp (INTUSE(_dl_argv)[1], "--list")) { mode = list; - GL(dl_lazy) = -1; /* This means do no dependency analysis. */ + GLRO(dl_lazy) = -1; /* This means do no dependency analysis. */ ++_dl_skip_args; --_dl_argc; @@ -712,7 +784,7 @@ dl_main (const ElfW(Phdr) *phdr, else if (! strcmp (INTUSE(_dl_argv)[1], "--inhibit-rpath") && _dl_argc > 2) { - GL(dl_inhibit_rpath) = INTUSE(_dl_argv)[2]; + GLRO(dl_inhibit_rpath) = INTUSE(_dl_argv)[2]; _dl_skip_args += 2; _dl_argc -= 2; @@ -780,7 +852,10 @@ of this helper program; chances are you struct map_args args; args.str = rtld_progname; - (void) INTUSE(_dl_catch_error) (&objname, &err_str, map_doit, &args); + args.loader = NULL; + args.is_preloaded = 0; + args.mode = __RTLD_OPENEXEC; + (void) _dl_catch_error (&objname, &err_str, map_doit, &args); if (__builtin_expect (err_str != NULL, 0)) /* We don't free the returned string, the programs stops anyway. */ @@ -789,32 +864,36 @@ of this helper program; chances are you else { HP_TIMING_NOW (start); - INTUSE(_dl_map_object) (NULL, rtld_progname, 0, lt_library, 0, - __RTLD_OPENEXEC); + _dl_map_object (NULL, rtld_progname, 0, lt_library, 0, + __RTLD_OPENEXEC, LM_ID_BASE); HP_TIMING_NOW (stop); HP_TIMING_DIFF (load_time, start, stop); } - phdr = GL(dl_loaded)->l_phdr; - phnum = GL(dl_loaded)->l_phnum; + /* Now the map for the main executable is available. */ + main_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded; + + phdr = main_map->l_phdr; + phnum = main_map->l_phnum; /* We overwrite here a pointer to a malloc()ed string. But since the malloc() implementation used at this point is the dummy implementations which has no real free() function it does not makes sense to free the old string first. */ - GL(dl_loaded)->l_name = (char *) ""; - *user_entry = GL(dl_loaded)->l_entry; + main_map->l_name = (char *) ""; + *user_entry = main_map->l_entry; } else { /* Create a link_map for the executable itself. This will be what dlopen on "" returns. */ - _dl_new_object ((char *) "", "", lt_executable, NULL); - if (GL(dl_loaded) == NULL) + _dl_new_object ((char *) "", "", lt_executable, NULL, 0, LM_ID_BASE); + main_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded; + if (main_map == NULL) _dl_fatal_printf ("cannot allocate memory for link map\n"); - GL(dl_loaded)->l_phdr = phdr; - GL(dl_loaded)->l_phnum = phnum; - GL(dl_loaded)->l_entry = *user_entry; + main_map->l_phdr = phdr; + main_map->l_phnum = phnum; + main_map->l_entry = *user_entry; /* At this point we are in a bit of trouble. We would have to fill in the values for l_dev and l_ino. But in general we @@ -835,11 +914,14 @@ of this helper program; chances are you information for the program. */ } - GL(dl_loaded)->l_map_end = 0; + main_map->l_map_end = 0; + main_map->l_text_end = 0; /* Perhaps the executable has no PT_LOAD header entries at all. */ - GL(dl_loaded)->l_map_start = ~0; + main_map->l_map_start = ~0; /* We opened the file, account for it. */ - ++GL(dl_loaded)->l_opencount; + ++main_map->l_opencount; + /* And it was opened directly. */ + ++main_map->l_direct_opencount; /* Scan the program header table for the dynamic section. */ for (ph = phdr; ph < &phdr[phnum]; ++ph) @@ -847,12 +929,12 @@ of this helper program; chances are you { case PT_PHDR: /* Find out the load address. */ - GL(dl_loaded)->l_addr = (ElfW(Addr)) phdr - ph->p_vaddr; + main_map->l_addr = (ElfW(Addr)) phdr - ph->p_vaddr; break; case PT_DYNAMIC: /* This tells us where to find the dynamic section, which tells us everything we need to do. */ - GL(dl_loaded)->l_ld = (void *) GL(dl_loaded)->l_addr + ph->p_vaddr; + main_map->l_ld = (void *) main_map->l_addr + ph->p_vaddr; break; case PT_INTERP: /* This "interpreter segment" was used by the program loader to @@ -861,7 +943,7 @@ of this helper program; chances are you dlopen call or DT_NEEDED entry, for something that wants to link against the dynamic linker as a shared library, will know that the shared object is already loaded. */ - _dl_rtld_libname.name = ((const char *) GL(dl_loaded)->l_addr + _dl_rtld_libname.name = ((const char *) main_map->l_addr + ph->p_vaddr); /* _dl_rtld_libname.next = NULL; Already zero. */ GL(dl_rtld_map).l_libname = &_dl_rtld_libname; @@ -897,15 +979,16 @@ of this helper program; chances are you ElfW(Addr) allocend; /* Remember where the main program starts in memory. */ - mapstart = (GL(dl_loaded)->l_addr - + (ph->p_vaddr & ~(ph->p_align - 1))); - if (GL(dl_loaded)->l_map_start > mapstart) - GL(dl_loaded)->l_map_start = mapstart; + mapstart = (main_map->l_addr + (ph->p_vaddr & ~(ph->p_align - 1))); + if (main_map->l_map_start > mapstart) + main_map->l_map_start = mapstart; /* Also where it ends. */ - allocend = GL(dl_loaded)->l_addr + ph->p_vaddr + ph->p_memsz; - if (GL(dl_loaded)->l_map_end < allocend) - GL(dl_loaded)->l_map_end = allocend; + allocend = main_map->l_addr + ph->p_vaddr + ph->p_memsz; + if (main_map->l_map_end < allocend) + main_map->l_map_end = allocend; + if ((ph->p_flags & PF_X) && allocend > main_map->l_text_end) + main_map->l_text_end = allocend; } break; #ifdef USE_TLS @@ -916,34 +999,41 @@ of this helper program; chances are you here since we read the PT_TLS entry already in _dl_start_final. But the result is repeatable so do not check for this special but unimportant case. */ - GL(dl_loaded)->l_tls_blocksize = ph->p_memsz; - GL(dl_loaded)->l_tls_align = ph->p_align; + main_map->l_tls_blocksize = ph->p_memsz; + main_map->l_tls_align = ph->p_align; if (ph->p_align == 0) - GL(dl_loaded)->l_tls_firstbyte_offset = 0; + main_map->l_tls_firstbyte_offset = 0; else - GL(dl_loaded)->l_tls_firstbyte_offset = (ph->p_vaddr - & (ph->p_align - 1)); - GL(dl_loaded)->l_tls_initimage_size = ph->p_filesz; - GL(dl_loaded)->l_tls_initimage = (void *) ph->p_vaddr; + main_map->l_tls_firstbyte_offset = (ph->p_vaddr + & (ph->p_align - 1)); + main_map->l_tls_initimage_size = ph->p_filesz; + main_map->l_tls_initimage = (void *) ph->p_vaddr; /* This image gets the ID one. */ - GL(dl_tls_max_dtv_idx) = GL(dl_loaded)->l_tls_modid = 1; + GL(dl_tls_max_dtv_idx) = main_map->l_tls_modid = 1; } break; #endif case PT_GNU_STACK: GL(dl_stack_flags) = ph->p_flags; break; + + case PT_GNU_RELRO: + main_map->l_relro_addr = ph->p_vaddr; + main_map->l_relro_size = ph->p_memsz; + break; } #ifdef USE_TLS /* Adjust the address of the TLS initialization image in case the executable is actually an ET_DYN object. */ - if (GL(dl_loaded)->l_tls_initimage != NULL) - GL(dl_loaded)->l_tls_initimage - = (char *) GL(dl_loaded)->l_tls_initimage + GL(dl_loaded)->l_addr; + if (main_map->l_tls_initimage != NULL) + main_map->l_tls_initimage + = (char *) main_map->l_tls_initimage + main_map->l_addr; #endif - if (! GL(dl_loaded)->l_map_end) - GL(dl_loaded)->l_map_end = ~0; + if (! main_map->l_map_end) + main_map->l_map_end = ~0; + if (! main_map->l_text_end) + main_map->l_text_end = ~0; if (! GL(dl_rtld_map).l_libname && GL(dl_rtld_map).l_name) { /* We were invoked directly, so the program might not have a @@ -958,10 +1048,9 @@ of this helper program; chances are you if (! rtld_is_main) { /* Extract the contents of the dynamic section for easy access. */ - elf_get_dynamic_info (GL(dl_loaded), NULL); - if (GL(dl_loaded)->l_info[DT_HASH]) - /* Set up our cache of pointers into the hash table. */ - _dl_setup_hash (GL(dl_loaded)); + elf_get_dynamic_info (main_map, NULL); + /* Set up our cache of pointers into the hash table. */ + _dl_setup_hash (main_map); } if (__builtin_expect (mode, normal) == verify) @@ -970,7 +1059,7 @@ of this helper program; chances are you executable using us as the program interpreter. Exit with an error if we were not able to load the binary or no interpreter is specified (i.e., this is no dynamically linked binary. */ - if (GL(dl_loaded)->l_ld == NULL) + if (main_map->l_ld == NULL) _exit (1); /* We allow here some platform specific code. */ @@ -993,23 +1082,35 @@ of this helper program; chances are you found by the PT_INTERP name. */ GL(dl_rtld_map).l_name = (char *) GL(dl_rtld_map).l_libname->name; GL(dl_rtld_map).l_type = lt_library; - GL(dl_loaded)->l_next = &GL(dl_rtld_map); - GL(dl_rtld_map).l_prev = GL(dl_loaded); - ++GL(dl_nloaded); + main_map->l_next = &GL(dl_rtld_map); + GL(dl_rtld_map).l_prev = main_map; + ++GL(dl_ns)[LM_ID_BASE]._ns_nloaded; + ++GL(dl_load_adds); /* If LD_USE_LOAD_BIAS env variable has not been seen, default to not using bias for non-prelinked PIEs and libraries and using it for executables or prelinked PIEs or libraries. */ - if (GL(dl_use_load_bias) == (ElfW(Addr)) -2) - GL(dl_use_load_bias) = (GL(dl_loaded)->l_addr == 0) ? -1 : 0; + if (GLRO(dl_use_load_bias) == (ElfW(Addr)) -2) + GLRO(dl_use_load_bias) = main_map->l_addr == 0 ? -1 : 0; /* Set up the program header information for the dynamic linker itself. It is needed in the dl_iterate_phdr() callbacks. */ ElfW(Ehdr) *rtld_ehdr = (ElfW(Ehdr) *) GL(dl_rtld_map).l_map_start; - GL(dl_rtld_map).l_phdr = (ElfW(Phdr) *) (GL(dl_rtld_map).l_map_start - + rtld_ehdr->e_phoff); + ElfW(Phdr) *rtld_phdr = (ElfW(Phdr) *) (GL(dl_rtld_map).l_map_start + + rtld_ehdr->e_phoff); + GL(dl_rtld_map).l_phdr = rtld_phdr; GL(dl_rtld_map).l_phnum = rtld_ehdr->e_phnum; + /* PT_GNU_RELRO is usually the last phdr. */ + size_t cnt = rtld_ehdr->e_phnum; + while (cnt-- > 0) + if (rtld_phdr[cnt].p_type == PT_GNU_RELRO) + { + GL(dl_rtld_map).l_relro_addr = rtld_phdr[cnt].p_vaddr; + GL(dl_rtld_map).l_relro_size = rtld_phdr[cnt].p_memsz; + break; + } + /* We have two ways to specify objects to preload: via environment variable and via the file /etc/ld.so.preload. The latter can also be used when security is enabled. */ @@ -1034,10 +1135,9 @@ of this helper program; chances are you && (__builtin_expect (! INTUSE(__libc_enable_secure), 1) || strchr (p, '/') == NULL)) { - struct link_map *new_map = INTUSE(_dl_map_object) (GL(dl_loaded), - p, 1, - lt_library, - 0, 0); + struct link_map *new_map = _dl_map_object (main_map, p, 1, + lt_library, 0, 0, + LM_ID_BASE); if (++new_map->l_opencount == 1) /* It is no duplicate. */ ++npreloads; @@ -1048,89 +1148,115 @@ of this helper program; chances are you HP_TIMING_ACCUM_NT (load_time, diff); } - /* Read the contents of the file. */ - file = _dl_sysdep_read_whole_file ("/etc/ld.so.preload", &file_size, - PROT_READ | PROT_WRITE); - if (__builtin_expect (file != MAP_FAILED, 0)) + /* There usually is no ld.so.preload file, it should only be used + for emergencies and testing. So the open call etc should usually + fail. Using access() on a non-existing file is faster than using + open(). So we do this first. If it succeeds we do almost twice + the work but this does not matter, since it is not for production + use. */ + static const char preload_file[] = "/etc/ld.so.preload"; + if (__builtin_expect (__access (preload_file, R_OK) == 0, 0)) { - /* Parse the file. It contains names of libraries to be loaded, - separated by white spaces or `:'. It may also contain - comments introduced by `#'. */ - char *problem; - char *runp; - size_t rest; - - /* Eliminate comments. */ - runp = file; - rest = file_size; - while (rest > 0) + /* Read the contents of the file. */ + file = _dl_sysdep_read_whole_file (preload_file, &file_size, + PROT_READ | PROT_WRITE); + if (__builtin_expect (file != MAP_FAILED, 0)) { - char *comment = memchr (runp, '#', rest); - if (comment == NULL) - break; + /* Parse the file. It contains names of libraries to be loaded, + separated by white spaces or `:'. It may also contain + comments introduced by `#'. */ + char *problem; + char *runp; + size_t rest; - rest -= comment - runp; - do - *comment = ' '; - while (--rest > 0 && *++comment != '\n'); - } + /* Eliminate comments. */ + runp = file; + rest = file_size; + while (rest > 0) + { + char *comment = memchr (runp, '#', rest); + if (comment == NULL) + break; - /* We have one problematic case: if we have a name at the end of - the file without a trailing terminating characters, we cannot - place the \0. Handle the case separately. */ - if (file[file_size - 1] != ' ' && file[file_size - 1] != '\t' - && file[file_size - 1] != '\n' && file[file_size - 1] != ':') - { - problem = &file[file_size]; - while (problem > file && problem[-1] != ' ' && problem[-1] != '\t' - && problem[-1] != '\n' && problem[-1] != ':') - --problem; + rest -= comment - runp; + do + *comment = ' '; + while (--rest > 0 && *++comment != '\n'); + } - if (problem > file) - problem[-1] = '\0'; - } - else - { - problem = NULL; - file[file_size - 1] = '\0'; - } + /* We have one problematic case: if we have a name at the end of + the file without a trailing terminating characters, we cannot + place the \0. Handle the case separately. */ + if (file[file_size - 1] != ' ' && file[file_size - 1] != '\t' + && file[file_size - 1] != '\n' && file[file_size - 1] != ':') + { + problem = &file[file_size]; + while (problem > file && problem[-1] != ' ' + && problem[-1] != '\t' + && problem[-1] != '\n' && problem[-1] != ':') + --problem; - HP_TIMING_NOW (start); + if (problem > file) + problem[-1] = '\0'; + } + else + { + problem = NULL; + file[file_size - 1] = '\0'; + } - if (file != problem) - { - char *p; - runp = file; - while ((p = strsep (&runp, ": \t\n")) != NULL) - if (p[0] != '\0') - { - struct link_map *new_map = INTUSE(_dl_map_object) (GL(dl_loaded), - p, 1, - lt_library, - 0, 0); - if (++new_map->l_opencount == 1) - /* It is no duplicate. */ - ++npreloads; - } - } + HP_TIMING_NOW (start); - if (problem != NULL) - { - char *p = strndupa (problem, file_size - (problem - file)); - struct link_map *new_map = INTUSE(_dl_map_object) (GL(dl_loaded), p, - 1, lt_library, - 0, 0); - if (++new_map->l_opencount == 1) - /* It is no duplicate. */ - ++npreloads; - } + if (file != problem) + { + char *p; + runp = file; + while ((p = strsep (&runp, ": \t\n")) != NULL) + if (p[0] != '\0') + { + const char *objname; + const char *err_str = NULL; + struct map_args args; - HP_TIMING_NOW (stop); - HP_TIMING_DIFF (diff, start, stop); - HP_TIMING_ACCUM_NT (load_time, diff); + args.str = p; + args.loader = main_map; + args.is_preloaded = 1; + args.mode = 0; - /* We don't need the file anymore. */ - __munmap (file, file_size); + (void) _dl_catch_error (&objname, &err_str, map_doit, + &args); + if (__builtin_expect (err_str != NULL, 0)) + { + _dl_error_printf ("\ +ERROR: ld.so: object '%s' from %s cannot be preloaded: ignored.\n", + p, preload_file); + /* No need to call free, this is still before + the libc's malloc is used. */ + } + else if (++args.map->l_opencount == 1) + /* It is no duplicate. */ + ++npreloads; + } + } + + if (problem != NULL) + { + char *p = strndupa (problem, file_size - (problem - file)); + struct link_map *new_map = _dl_map_object (main_map, p, 1, + lt_library, 0, 0, + LM_ID_BASE); + if (++new_map->l_opencount == 1) + /* It is no duplicate. */ + ++npreloads; + } + + HP_TIMING_NOW (stop); + HP_TIMING_DIFF (diff, start, stop); + HP_TIMING_ACCUM_NT (load_time, diff); + + /* We don't need the file anymore. */ + __munmap (file, file_size); + } } if (__builtin_expect (npreloads, 0) != 0) @@ -1148,25 +1274,24 @@ of this helper program; chances are you assert (i == npreloads); } -#ifdef NEED_DL_SYSINFO - if (GL(dl_sysinfo_dso) != NULL) +#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO + struct link_map *sysinfo_map = NULL; + if (GLRO(dl_sysinfo_dso) != NULL) { - /* We have a prelinked DSO preloaded by the system. */ - GL(dl_sysinfo) = GL(dl_sysinfo_dso)->e_entry; - /* Do an abridged version of the work _dl_map_object_from_fd would do to map in the object. It's already mapped and prelinked (and better be, since it's read-only and so we couldn't relocate it). We just want our data structures to describe it as if we had just mapped and relocated it normally. */ - struct link_map *l = _dl_new_object ((char *) "", "", lt_library, NULL); + struct link_map *l = _dl_new_object ((char *) "", "", lt_library, NULL, + 0, LM_ID_BASE); if (__builtin_expect (l != NULL, 1)) { - static ElfW(Dyn) dyn_temp[DL_RO_DYN_TEMP_CNT]; + static ElfW(Dyn) dyn_temp[DL_RO_DYN_TEMP_CNT] attribute_relro; - l->l_phdr = ((const void *) GL(dl_sysinfo_dso) - + GL(dl_sysinfo_dso)->e_phoff); - l->l_phnum = GL(dl_sysinfo_dso)->e_phnum; + l->l_phdr = ((const void *) GLRO(dl_sysinfo_dso) + + GLRO(dl_sysinfo_dso)->e_phoff); + l->l_phnum = GLRO(dl_sysinfo_dso)->e_phnum; for (uint_fast16_t i = 0; i < l->l_phnum; ++i) { const ElfW(Phdr) *const ph = &l->l_phdr[i]; @@ -1174,15 +1299,26 @@ of this helper program; chances are you { l->l_ld = (void *) ph->p_vaddr; l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn)); - break; } - if (ph->p_type == PT_LOAD) - assert ((void *) ph->p_vaddr == GL(dl_sysinfo_dso)); + else if (ph->p_type == PT_LOAD) + { + if (! l->l_addr) + l->l_addr = ph->p_vaddr; + else if (ph->p_vaddr + ph->p_memsz >= l->l_map_end) + l->l_map_end = ph->p_vaddr + ph->p_memsz; + else if ((ph->p_flags & PF_X) + && ph->p_vaddr + ph->p_memsz >= l->l_text_end) + l->l_text_end = ph->p_vaddr + ph->p_memsz; + } } + l->l_map_start = (ElfW(Addr)) GLRO(dl_sysinfo_dso); + l->l_addr = l->l_map_start - l->l_addr; + l->l_map_end += l->l_addr; + l->l_text_end += l->l_addr; + l->l_ld = (void *) ((ElfW(Addr)) l->l_ld + l->l_addr); elf_get_dynamic_info (l, dyn_temp); _dl_setup_hash (l); l->l_relocated = 1; - l->l_map_start = (ElfW(Addr)) GL(dl_sysinfo_dso); /* Now that we have the info handy, use the DSO image's soname so this object can be looked up by name. Note that we do not @@ -1200,6 +1336,13 @@ of this helper program; chances are you _dl_fatal_printf ("out of memory\n"); l->l_libname->name = memcpy (copy, dsoname, len); } + + /* We have a prelinked DSO preloaded by the system. */ + sysinfo_map = l; +# ifdef NEED_DL_SYSINFO + if (GLRO(dl_sysinfo) == DL_SYSINFO_DEFAULT) + GLRO(dl_sysinfo) = GLRO(dl_sysinfo_dso)->e_entry + l->l_addr; +# endif } } #endif @@ -1208,19 +1351,18 @@ of this helper program; chances are you specified some libraries to load, these are inserted before the actual dependencies in the executable's searchlist for symbol resolution. */ HP_TIMING_NOW (start); - INTUSE(_dl_map_object_deps) (GL(dl_loaded), preloads, npreloads, - mode == trace, 0); + _dl_map_object_deps (main_map, preloads, npreloads, mode == trace, 0); HP_TIMING_NOW (stop); HP_TIMING_DIFF (diff, start, stop); HP_TIMING_ACCUM_NT (load_time, diff); /* Mark all objects as being in the global scope and set the open counter. */ - for (i = GL(dl_loaded)->l_searchlist.r_nlist; i > 0; ) + for (i = main_map->l_searchlist.r_nlist; i > 0; ) { --i; - GL(dl_loaded)->l_searchlist.r_list[i]->l_global = 1; - ++GL(dl_loaded)->l_searchlist.r_list[i]->l_opencount; + main_map->l_searchlist.r_list[i]->l_global = 1; + ++main_map->l_searchlist.r_list[i]->l_opencount; } #ifndef MAP_ANON @@ -1241,13 +1383,21 @@ of this helper program; chances are you chain in symbol search order because gdb uses the chain's order as its symbol search order. */ i = 1; - while (GL(dl_loaded)->l_searchlist.r_list[i] != &GL(dl_rtld_map)) + while (main_map->l_searchlist.r_list[i] != &GL(dl_rtld_map)) ++i; - GL(dl_rtld_map).l_prev = GL(dl_loaded)->l_searchlist.r_list[i - 1]; + GL(dl_rtld_map).l_prev = main_map->l_searchlist.r_list[i - 1]; if (__builtin_expect (mode, normal) == normal) - GL(dl_rtld_map).l_next = (i + 1 < GL(dl_loaded)->l_searchlist.r_nlist - ? GL(dl_loaded)->l_searchlist.r_list[i + 1] - : NULL); + { + GL(dl_rtld_map).l_next = (i + 1 < main_map->l_searchlist.r_nlist + ? main_map->l_searchlist.r_list[i + 1] + : NULL); +#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO + if (sysinfo_map != NULL + && GL(dl_rtld_map).l_prev->l_next == sysinfo_map + && GL(dl_rtld_map).l_next != sysinfo_map) + GL(dl_rtld_map).l_prev = sysinfo_map; +#endif + } else /* In trace mode there might be an invisible object (which we could not find) after the previous one in the search list. @@ -1296,7 +1446,7 @@ of this helper program; chances are you an old kernel that can't perform TLS_INIT_TP, even if no TLS is ever used. Trying to do it lazily is too hairy to try when there could be multiple threads (from a non-TLS-using libpthread). */ - if (GL(dl_tls_max_dtv_idx) > 0 || !TLS_INIT_TP_EXPENSIVE) + if (!TLS_INIT_TP_EXPENSIVE || GL(dl_tls_max_dtv_idx) > 0) { struct link_map *l; size_t nelem; @@ -1323,7 +1473,7 @@ of this helper program; chances are you GL(dl_tls_dtv_slotinfo_list)->next = NULL; /* Fill in the information from the loaded modules. */ - for (l = GL(dl_loaded), i = 0; l != NULL; l = l->l_next) + for (l = main_map, i = 0; l != NULL; l = l->l_next) if (l->l_tls_blocksize != 0) /* This is a module with TLS data. Store the map reference. The generation counter is zero. */ @@ -1357,9 +1507,9 @@ cannot allocate TLS data structures for after relocation. */ struct link_map *l; - if (GL(dl_debug_mask) & DL_DEBUG_PRELINK) + if (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK) { - struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist; + struct r_scope_elem *scope = &main_map->l_searchlist; for (i = 0; i < scope->r_nlist; i++) { @@ -1369,8 +1519,8 @@ cannot allocate TLS data structures for _dl_printf ("\t%s => not found\n", l->l_libname->name); continue; } - if (_dl_name_match_p (GL(dl_trace_prelink), l)) - GL(dl_trace_prelink_map) = l; + if (_dl_name_match_p (GLRO(dl_trace_prelink), l)) + GLRO(dl_trace_prelink_map) = l; _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)", l->l_libname->name[0] ? l->l_libname->name : rtld_progname ?: "
", @@ -1390,14 +1540,56 @@ cannot allocate TLS data structures for _dl_printf ("\n"); } } - else if (! GL(dl_loaded)->l_info[DT_NEEDED]) + else if (GLRO(dl_debug_mask) & DL_DEBUG_UNUSED) + { + /* Look through the dependencies of the main executable + and determine which of them is not actually + required. */ + struct link_map *l = main_map; + + /* Relocate the main executable. */ + struct relocate_args args = { .l = l, .lazy = GLRO(dl_lazy) }; + _dl_receive_error (print_unresolved, relocate_doit, &args); + + /* This loop depends on the dependencies of the executable to + correspond in number and order to the DT_NEEDED entries. */ + ElfW(Dyn) *dyn = main_map->l_ld; + bool first = true; + while (dyn->d_tag != DT_NULL) + { + if (dyn->d_tag == DT_NEEDED) + { + l = l->l_next; + + if (!l->l_used) + { + if (first) + { + _dl_printf ("Unused direct dependencies:\n"); + first = false; + } + + _dl_printf ("\t%s\n", l->l_name); + } + } + + ++dyn; + } + + _exit (first != true); + } + else if (! main_map->l_info[DT_NEEDED]) _dl_printf ("\tstatically linked\n"); else { - for (l = GL(dl_loaded)->l_next; l; l = l->l_next) + for (l = main_map->l_next; l; l = l->l_next) if (l->l_faked) /* The library was not found. */ _dl_printf ("\t%s => not found\n", l->l_libname->name); + else if (strcmp (l->l_libname->name, l->l_name) == 0) + _dl_printf ("\t%s (0x%0*Zx)\n", l->l_libname->name, + (int) sizeof l->l_map_start * 2, + (size_t) l->l_map_start); else _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name, l->l_name, (int) sizeof l->l_map_start * 2, @@ -1411,10 +1603,10 @@ cannot allocate TLS data structures for ElfW(Addr) loadbase; lookup_t result; - result = INTUSE(_dl_lookup_symbol) (INTUSE(_dl_argv)[i], - GL(dl_loaded), - &ref, GL(dl_loaded)->l_scope, - ELF_RTYPE_CLASS_PLT, 1); + result = _dl_lookup_symbol_x (INTUSE(_dl_argv)[i], main_map, + &ref, main_map->l_scope, NULL, + ELF_RTYPE_CLASS_PLT, + DL_LOOKUP_ADD_DEPENDENCY, NULL); loadbase = LOOKUP_VALUE_ADDRESS (result); @@ -1427,15 +1619,15 @@ cannot allocate TLS data structures for else { /* If LD_WARN is set warn about undefined symbols. */ - if (GL(dl_lazy) >= 0 && GL(dl_verbose)) + if (GLRO(dl_lazy) >= 0 && GLRO(dl_verbose)) { /* We have to do symbol dependency testing. */ struct relocate_args args; struct link_map *l; - args.lazy = GL(dl_lazy); + args.lazy = GLRO(dl_lazy); - l = GL(dl_loaded); + l = main_map; while (l->l_next) l = l->l_next; do @@ -1449,10 +1641,10 @@ cannot allocate TLS data structures for l = l->l_prev; } while (l); - if ((GL(dl_debug_mask) & DL_DEBUG_PRELINK) + if ((GLRO(dl_debug_mask) & DL_DEBUG_PRELINK) && GL(dl_rtld_map).l_opencount > 1) - INTUSE(_dl_relocate_object) (&GL(dl_rtld_map), - GL(dl_loaded)->l_scope, 0, 0); + _dl_relocate_object (&GL(dl_rtld_map), main_map->l_scope, + 0, 0); } #define VERNEEDTAG (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (DT_VERNEED)) @@ -1461,9 +1653,9 @@ cannot allocate TLS data structures for /* Print more information. This means here, print information about the versions needed. */ int first = 1; - struct link_map *map = GL(dl_loaded); + struct link_map *map; - for (map = GL(dl_loaded); map != NULL; map = map->l_next) + for (map = main_map; map != NULL; map = map->l_next) { const char *strtab; ElfW(Dyn) *dyn = map->l_info[VERNEEDTAG]; @@ -1531,28 +1723,27 @@ cannot allocate TLS data structures for _exit (0); } - if (GL(dl_loaded)->l_info [ADDRIDX (DT_GNU_LIBLIST)] - && ! __builtin_expect (GL(dl_profile) != NULL, 0)) + if (main_map->l_info[ADDRIDX (DT_GNU_LIBLIST)] + && ! __builtin_expect (GLRO(dl_profile) != NULL, 0)) { ElfW(Lib) *liblist, *liblistend; struct link_map **r_list, **r_listend, *l; - const char *strtab = (const void *) D_PTR (GL(dl_loaded), - l_info[DT_STRTAB]); + const char *strtab = (const void *) D_PTR (main_map, l_info[DT_STRTAB]); - assert (GL(dl_loaded)->l_info [VALIDX (DT_GNU_LIBLISTSZ)] != NULL); + assert (main_map->l_info[VALIDX (DT_GNU_LIBLISTSZ)] != NULL); liblist = (ElfW(Lib) *) - GL(dl_loaded)->l_info [ADDRIDX (DT_GNU_LIBLIST)]->d_un.d_ptr; + main_map->l_info[ADDRIDX (DT_GNU_LIBLIST)]->d_un.d_ptr; liblistend = (ElfW(Lib) *) - ((char *) liblist - + GL(dl_loaded)->l_info [VALIDX (DT_GNU_LIBLISTSZ)]->d_un.d_val); - r_list = GL(dl_loaded)->l_searchlist.r_list; - r_listend = r_list + GL(dl_loaded)->l_searchlist.r_nlist; + ((char *) liblist + + main_map->l_info[VALIDX (DT_GNU_LIBLISTSZ)]->d_un.d_val); + r_list = main_map->l_searchlist.r_list; + r_listend = r_list + main_map->l_searchlist.r_nlist; for (; r_list < r_listend && liblist < liblistend; r_list++) { l = *r_list; - if (l == GL(dl_loaded)) + if (l == main_map) continue; /* If the library is not mapped where it should, fail. */ @@ -1580,15 +1771,51 @@ cannot allocate TLS data structures for if (r_list == r_listend && liblist == liblistend) prelinked = true; - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_LIBS, 0)) - _dl_printf ("\nprelink checking: %s\n", prelinked ? "ok" : "failed"); + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)) + _dl_debug_printf ("\nprelink checking: %s\n", + prelinked ? "ok" : "failed"); } + + /* Initialize _r_debug. */ + struct r_debug *r = _dl_debug_initialize (GL(dl_rtld_map).l_addr); + { + struct link_map *l = main_map; + +#ifdef ELF_MACHINE_DEBUG_SETUP + + /* Some machines (e.g. MIPS) don't use DT_DEBUG in this way. */ + + ELF_MACHINE_DEBUG_SETUP (l, r); + ELF_MACHINE_DEBUG_SETUP (&GL(dl_rtld_map), r); + +#else + + if (l->l_info[DT_DEBUG] != NULL) + /* There is a DT_DEBUG entry in the dynamic section. Fill it in + with the run-time address of the r_debug structure */ + l->l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; + + /* Fill in the pointer in the dynamic linker's own dynamic section, in + case you run gdb on the dynamic linker directly. */ + if (GL(dl_rtld_map).l_info[DT_DEBUG] != NULL) + GL(dl_rtld_map).l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; +#endif + } + + /* Now set up the variable which helps the assembler startup code. */ + GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist = &main_map->l_searchlist; + GL(dl_ns)[LM_ID_BASE]._ns_global_scope[0] = &main_map->l_searchlist; + + /* Save the information about the original global scope list since + we need it in the memory handling later. */ + GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist; + if (prelinked) { struct link_map *l; - if (GL(dl_loaded)->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) + if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) { ElfW(Rela) *conflict, *conflictend; #ifndef HP_TIMING_NONAVAIL @@ -1597,21 +1824,25 @@ cannot allocate TLS data structures for #endif HP_TIMING_NOW (start); - assert (GL(dl_loaded)->l_info [VALIDX (DT_GNU_CONFLICTSZ)] != NULL); + assert (main_map->l_info [VALIDX (DT_GNU_CONFLICTSZ)] != NULL); conflict = (ElfW(Rela) *) - GL(dl_loaded)->l_info [ADDRIDX (DT_GNU_CONFLICT)]->d_un.d_ptr; + main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)]->d_un.d_ptr; conflictend = (ElfW(Rela) *) ((char *) conflict - + GL(dl_loaded)->l_info [VALIDX (DT_GNU_CONFLICTSZ)]->d_un.d_val); - _dl_resolve_conflicts (GL(dl_loaded), conflict, conflictend); + + main_map->l_info [VALIDX (DT_GNU_CONFLICTSZ)]->d_un.d_val); + _dl_resolve_conflicts (main_map, conflict, conflictend); HP_TIMING_NOW (stop); HP_TIMING_DIFF (relocate_time, start, stop); } /* Mark all the objects so we know they have been already relocated. */ - for (l = GL(dl_loaded); l != NULL; l = l->l_next) - l->l_relocated = 1; + for (l = main_map; l != NULL; l = l->l_next) + { + l->l_relocated = 1; + if (l->l_relro_size) + _dl_protect_relro (l); + } _dl_sysdep_start_cleanup (); } @@ -1627,7 +1858,7 @@ cannot allocate TLS data structures for know that because it is self-contained). */ struct link_map *l; - int consider_profiling = GL(dl_profile) != NULL; + int consider_profiling = GLRO(dl_profile) != NULL; #ifndef HP_TIMING_NONAVAIL hp_timing_t start; hp_timing_t stop; @@ -1635,9 +1866,9 @@ cannot allocate TLS data structures for #endif /* If we are profiling we also must do lazy reloaction. */ - GL(dl_lazy) |= consider_profiling; + GLRO(dl_lazy) |= consider_profiling; - l = GL(dl_loaded); + l = main_map; while (l->l_next) l = l->l_next; @@ -1656,8 +1887,8 @@ cannot allocate TLS data structures for } if (l != &GL(dl_rtld_map)) - INTUSE(_dl_relocate_object) (l, l->l_scope, GL(dl_lazy), - consider_profiling); + _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy), + consider_profiling); l = l->l_prev; } @@ -1679,29 +1910,20 @@ cannot allocate TLS data structures for needs to have _dl_profile_map set up by the relocator. */ if (__builtin_expect (GL(dl_profile_map) != NULL, 0)) /* We must prepare the profiling. */ - INTUSE(_dl_start_profile) (GL(dl_profile_map), GL(dl_profile_output)); + _dl_start_profile (); if (GL(dl_rtld_map).l_opencount > 1) { /* There was an explicit ref to the dynamic linker as a shared lib. Re-relocate ourselves with user-controlled symbol definitions. */ HP_TIMING_NOW (start); - INTUSE(_dl_relocate_object) (&GL(dl_rtld_map), GL(dl_loaded)->l_scope, - 0, 0); + _dl_relocate_object (&GL(dl_rtld_map), main_map->l_scope, 0, 0); HP_TIMING_NOW (stop); HP_TIMING_DIFF (add, start, stop); HP_TIMING_ACCUM_NT (relocate_time, add); } } - /* Now set up the variable which helps the assembler startup code. */ - GL(dl_main_searchlist) = &GL(dl_loaded)->l_searchlist; - GL(dl_global_scope)[0] = &GL(dl_loaded)->l_searchlist; - - /* Save the information about the original global scope list since - we need it in the memory handling later. */ - GL(dl_initial_searchlist) = *GL(dl_main_searchlist); - #ifndef NONTLS_INIT_TP # define NONTLS_INIT_TP do { } while (0) #endif @@ -1724,42 +1946,13 @@ cannot allocate TLS data structures for #endif NONTLS_INIT_TP; - { - /* Initialize _r_debug. */ - struct r_debug *r = _dl_debug_initialize (GL(dl_rtld_map).l_addr); - struct link_map *l; - - l = GL(dl_loaded); - -#ifdef ELF_MACHINE_DEBUG_SETUP - - /* Some machines (e.g. MIPS) don't use DT_DEBUG in this way. */ - - ELF_MACHINE_DEBUG_SETUP (l, r); - ELF_MACHINE_DEBUG_SETUP (&GL(dl_rtld_map), r); - -#else - - if (l->l_info[DT_DEBUG] != NULL) - /* There is a DT_DEBUG entry in the dynamic section. Fill it in - with the run-time address of the r_debug structure */ - l->l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; - - /* Fill in the pointer in the dynamic linker's own dynamic section, in - case you run gdb on the dynamic linker directly. */ - if (GL(dl_rtld_map).l_info[DT_DEBUG] != NULL) - GL(dl_rtld_map).l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; - -#endif - - /* Notify the debugger that all objects are now mapped in. */ - r->r_state = RT_ADD; - INTUSE(_dl_debug_state) (); - } + /* Notify the debugger that all objects are now mapped in. */ + r->r_state = RT_ADD; + _dl_debug_state (); #ifndef MAP_COPY /* We must munmap() the cache file. */ - INTUSE(_dl_unload_cache) (); + _dl_unload_cache (); #endif /* Once we return, _dl_sysdep_start will invoke @@ -1788,7 +1981,7 @@ print_missing_version (int errcode __att } /* Nonzero if any of the debugging options is enabled. */ -static int any_debug; +static int any_debug attribute_relro; /* Process the string given as the parameter which explains which debugging options are enabled. */ @@ -1823,6 +2016,8 @@ process_dl_debug (const char *dl_debug) | DL_DEBUG_BINDINGS | DL_DEBUG_VERSIONS | DL_DEBUG_IMPCALLS }, { LEN_AND_STR ("statistics"), "display relocation statistics", DL_DEBUG_STATISTICS }, + { LEN_AND_STR ("unused"), "determined unused DSOs", + DL_DEBUG_UNUSED }, { LEN_AND_STR ("help"), "display this help message and exit", DL_DEBUG_HELP }, }; @@ -1844,7 +2039,7 @@ process_dl_debug (const char *dl_debug) if (debopts[cnt].len == len && memcmp (dl_debug, debopts[cnt].name, len) == 0) { - GL(dl_debug_mask) |= debopts[cnt].mask; + GLRO(dl_debug_mask) |= debopts[cnt].mask; any_debug = 1; break; } @@ -1865,7 +2060,7 @@ warning: debug option `%s' unknown; try ++dl_debug; } - if (GL(dl_debug_mask) & DL_DEBUG_HELP) + if (GLRO(dl_debug_mask) & DL_DEBUG_HELP) { size_t cnt; @@ -1899,7 +2094,7 @@ process_envvars (enum mode *modep) char *debug_output = NULL; /* This is the default place for profiling data file. */ - GL(dl_profile_output) + GLRO(dl_profile_output) = &"/var/tmp\0/var/profile"[INTUSE(__libc_enable_secure) ? 9 : 0]; while ((envline = _dl_next_ld_env_entry (&runp)) != NULL) @@ -1920,7 +2115,7 @@ process_envvars (enum mode *modep) case 4: /* Warning level, verbose or not. */ if (memcmp (envline, "WARN", 4) == 0) - GL(dl_verbose) = envline[5] != '\0'; + GLRO(dl_verbose) = envline[5] != '\0'; break; case 5: @@ -1946,38 +2141,40 @@ process_envvars (enum mode *modep) /* Which shared object shall be profiled. */ if (memcmp (envline, "PROFILE", 7) == 0 && envline[8] != '\0') - GL(dl_profile) = &envline[8]; + GLRO(dl_profile) = &envline[8]; break; case 8: /* Do we bind early? */ if (memcmp (envline, "BIND_NOW", 8) == 0) { - GL(dl_lazy) = envline[9] == '\0'; + GLRO(dl_lazy) = envline[9] == '\0'; break; } if (memcmp (envline, "BIND_NOT", 8) == 0) - GL(dl_bind_not) = envline[9] != '\0'; + GLRO(dl_bind_not) = envline[9] != '\0'; break; case 9: /* Test whether we want to see the content of the auxiliary array passed up from the kernel. */ - if (memcmp (envline, "SHOW_AUXV", 9) == 0) + if (!INTUSE(__libc_enable_secure) + && memcmp (envline, "SHOW_AUXV", 9) == 0) _dl_show_auxv (); break; case 10: /* Mask for the important hardware capabilities. */ if (memcmp (envline, "HWCAP_MASK", 10) == 0) - GL(dl_hwcap_mask) = __strtoul_internal (&envline[11], NULL, 0, 0); + GLRO(dl_hwcap_mask) = __strtoul_internal (&envline[11], NULL, + 0, 0); break; case 11: /* Path where the binary is found. */ if (!INTUSE(__libc_enable_secure) && memcmp (envline, "ORIGIN_PATH", 11) == 0) - GL(dl_origin_path) = &envline[12]; + GLRO(dl_origin_path) = &envline[12]; break; case 12: @@ -1995,8 +2192,9 @@ process_envvars (enum mode *modep) break; } - if (memcmp (envline, "DYNAMIC_WEAK", 12) == 0) - GL(dl_dynamic_weak) = 1; + if (!INTUSE(__libc_enable_secure) + && memcmp (envline, "DYNAMIC_WEAK", 12) == 0) + GLRO(dl_dynamic_weak) = 1; break; case 13: @@ -2007,7 +2205,7 @@ process_envvars (enum mode *modep) #endif if (!INTUSE(__libc_enable_secure) && memcmp (envline, "USE_LOAD_BIAS", 13) == 0) - GL(dl_use_load_bias) = envline[14] == '1' ? -1 : 0; + GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0; break; case 14: @@ -2015,7 +2213,7 @@ process_envvars (enum mode *modep) if (!INTUSE(__libc_enable_secure) && memcmp (envline, "PROFILE_OUTPUT", 14) == 0 && envline[15] != '\0') - GL(dl_profile_output) = &envline[15]; + GLRO(dl_profile_output) = &envline[15]; break; case 16: @@ -2023,9 +2221,9 @@ process_envvars (enum mode *modep) if (memcmp (envline, "TRACE_PRELINKING", 16) == 0) { mode = trace; - GL(dl_verbose) = 1; - GL(dl_debug_mask) |= DL_DEBUG_PRELINK; - GL(dl_trace_prelink) = &envline[17]; + GLRO(dl_verbose) = 1; + GLRO(dl_debug_mask) |= DL_DEBUG_PRELINK; + GLRO(dl_trace_prelink) = &envline[17]; } break; @@ -2069,7 +2267,13 @@ process_envvars (enum mode *modep) while (*nextp != '\0'); if (__access ("/etc/suid-debug", F_OK) != 0) - unsetenv ("MALLOC_CHECK_"); + { + unsetenv ("MALLOC_CHECK_"); + GLRO(dl_debug_mask) = 0; + } + + if (mode != normal) + _exit (5); } /* If we have to run the dynamic linker in debugging mode and the LD_DEBUG_OUTPUT environment variable is given, we write the debug @@ -2090,17 +2294,18 @@ process_envvars (enum mode *modep) *--startp = '.'; startp = memcpy (startp - name_len, debug_output, name_len); - GL(dl_debug_fd) = __open (startp, flags, DEFFILEMODE); - if (GL(dl_debug_fd) == -1) + GLRO(dl_debug_fd) = __open (startp, flags, DEFFILEMODE); + if (GLRO(dl_debug_fd) == -1) /* We use standard output if opening the file failed. */ - GL(dl_debug_fd) = STDOUT_FILENO; + GLRO(dl_debug_fd) = STDOUT_FILENO; } } /* Print the various times we collected. */ static void -print_statistics (void) +__attribute ((noinline)) +print_statistics (hp_timing_t *rtld_total_timep) { #ifndef HP_TIMING_NONAVAIL char buf[200]; @@ -2110,18 +2315,14 @@ print_statistics (void) /* Total time rtld used. */ if (HP_TIMING_AVAIL) { - HP_TIMING_PRINT (buf, sizeof (buf), rtld_total_time); - INTUSE(_dl_debug_printf) ("\nruntime linker statistics:\n" - " total startup time in dynamic loader: %s\n", - buf); - } + HP_TIMING_PRINT (buf, sizeof (buf), *rtld_total_timep); + _dl_debug_printf ("\nruntime linker statistics:\n" + " total startup time in dynamic loader: %s\n", buf); - /* Print relocation statistics. */ - if (HP_TIMING_AVAIL) - { + /* Print relocation statistics. */ char pbuf[30]; HP_TIMING_PRINT (buf, sizeof (buf), relocate_time); - cp = _itoa ((1000ULL * relocate_time) / rtld_total_time, + cp = _itoa ((1000ULL * relocate_time) / *rtld_total_timep, pbuf + sizeof (pbuf), 10, 0); wp = pbuf; switch (pbuf + sizeof (pbuf) - cp) @@ -2135,35 +2336,48 @@ print_statistics (void) *wp++ = *cp++; } *wp = '\0'; - INTUSE(_dl_debug_printf) ("\ - time needed for relocation: %s (%s%%)\n", - buf, pbuf); + _dl_debug_printf ("\ + time needed for relocation: %s (%s%%)\n", buf, pbuf); } #endif unsigned long int num_relative_relocations = 0; - struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist; - unsigned int i; - - for (i = 0; i < scope->r_nlist; i++) + for (Lmid_t ns = 0; ns < DL_NNS; ++ns) { - struct link_map *l = scope->r_list [i]; - - if (!l->l_addr) + if (GL(dl_ns)[ns]._ns_loaded == NULL) continue; - if (l->l_info[VERSYMIDX (DT_RELCOUNT)]) - num_relative_relocations += l->l_info[VERSYMIDX (DT_RELCOUNT)]->d_un.d_val; - if (l->l_info[VERSYMIDX (DT_RELACOUNT)]) - num_relative_relocations += l->l_info[VERSYMIDX (DT_RELACOUNT)]->d_un.d_val; + struct r_scope_elem *scope = &GL(dl_ns)[ns]._ns_loaded->l_searchlist; + + for (unsigned int i = 0; i < scope->r_nlist; i++) + { + struct link_map *l = scope->r_list [i]; + + if (l->l_addr != 0 && l->l_info[VERSYMIDX (DT_RELCOUNT)]) + num_relative_relocations + += l->l_info[VERSYMIDX (DT_RELCOUNT)]->d_un.d_val; +#ifndef ELF_MACHINE_REL_RELATIVE + /* Relative relocations are processed on these architectures if + library is loaded to different address than p_vaddr or + if not prelinked. */ + if ((l->l_addr != 0 || !l->l_info[VALIDX(DT_GNU_PRELINKED)]) + && l->l_info[VERSYMIDX (DT_RELACOUNT)]) +#else + /* On e.g. IA-64 or Alpha, relative relocations are processed + only if library is loaded to different address than p_vaddr. */ + if (l->l_addr != 0 && l->l_info[VERSYMIDX (DT_RELACOUNT)]) +#endif + num_relative_relocations + += l->l_info[VERSYMIDX (DT_RELACOUNT)]->d_un.d_val; + } } - INTUSE(_dl_debug_printf) (" number of relocations: %lu\n", - GL(dl_num_relocations)); - INTUSE(_dl_debug_printf) (" number of relocations from cache: %lu\n", - GL(dl_num_cache_relocations)); - INTUSE(_dl_debug_printf) (" number of relative relocations: %lu\n", - num_relative_relocations); + _dl_debug_printf (" number of relocations: %lu\n" + " number of relocations from cache: %lu\n" + " number of relative relocations: %lu\n", + GL(dl_num_relocations), + GL(dl_num_cache_relocations), + num_relative_relocations); #ifndef HP_TIMING_NONAVAIL /* Time spend while loading the object and the dependencies. */ @@ -2171,7 +2385,7 @@ print_statistics (void) { char pbuf[30]; HP_TIMING_PRINT (buf, sizeof (buf), load_time); - cp = _itoa ((1000ULL * load_time) / rtld_total_time, + cp = _itoa ((1000ULL * load_time) / *rtld_total_timep, pbuf + sizeof (pbuf), 10, 0); wp = pbuf; switch (pbuf + sizeof (pbuf) - cp) @@ -2185,7 +2399,7 @@ print_statistics (void) *wp++ = *cp++; } *wp = '\0'; - INTUSE(_dl_debug_printf) ("\ + _dl_debug_printf ("\ time needed to load objects: %s (%s%%)\n", buf, pbuf); } diff -durpN glibc-2.3.3/elf/sprof.c glibc-2.3.4/elf/sprof.c --- glibc-2.3.3/elf/sprof.c 2003-10-27 04:17:14.000000000 -0500 +++ glibc-2.3.4/elf/sprof.c 2004-09-21 22:18:30.000000000 -0400 @@ -1,5 +1,5 @@ /* Read and display shared object profiling data. - Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -47,14 +48,18 @@ #include #if BYTE_ORDER == BIG_ENDIAN -#define byteorder ELFDATA2MSB -#define byteorder_name "big-endian" +# define byteorder ELFDATA2MSB +# define byteorder_name "big-endian" #elif BYTE_ORDER == LITTLE_ENDIAN -#define byteorder ELFDATA2LSB -#define byteorder_name "little-endian" +# define byteorder ELFDATA2LSB +# define byteorder_name "little-endian" #else -#error "Unknown BYTE_ORDER " BYTE_ORDER -#define byteorder ELFDATANONE +# error "Unknown BYTE_ORDER " BYTE_ORDER +# define byteorder ELFDATANONE +#endif + +#ifndef PATH_MAX +# define PATH_MAX 1024 #endif @@ -81,7 +86,9 @@ static const struct argp_option options[ }; /* Short description of program. */ -static const char doc[] = N_("Read and display shared object profiling data"); +static const char doc[] = N_("Read and display shared object profiling data.\v\ +For bug reporting instructions, please see:\n\ +.\n"); /* Strings for arguments in help texts. */ static const char args_doc[] = N_("SHOBJ [PROFDATA]"); @@ -92,7 +99,7 @@ static error_t parse_opt (int key, char /* Data structure to communicate with argp functions. */ static struct argp argp = { - options, parse_opt, args_doc, doc, NULL, NULL + options, parse_opt, args_doc, doc }; @@ -107,11 +114,8 @@ static enum DEFAULT_MODE = FLAT_MODE | CALL_GRAPH_MODE } mode; -/* If nonzero the total number of invocations of a function is emitted. */ -int count_total; - /* Nozero for testing. */ -int do_test; +static int do_test; /* Strcuture describing calls. */ struct here_fromstruct @@ -148,6 +152,8 @@ struct known_symbol const char *name; uintptr_t addr; size_t size; + bool weak; + bool hidden; uintmax_t ticks; uintmax_t calls; @@ -201,7 +207,7 @@ struct profdata }; /* Search tree for symbols. */ -void *symroot; +static void *symroot; static struct known_symbol **sortsym; static size_t symidx; static uintmax_t total_ticks; @@ -351,7 +357,7 @@ Copyright (C) %s Free Software Foundatio This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ "), - "2003"); + "2004"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } @@ -371,11 +377,7 @@ load_shobj (const char *name) ElfW(Ehdr) *ehdr; int fd; ElfW(Shdr) *shdr; - void *ptr; size_t pagesize = getpagesize (); - const char *shstrtab; - int idx; - ElfW(Shdr) *symtab_entry; /* Since we use dlopen() we must be prepared to work around the sometimes strange lookup rules for the shared objects. If we have a file foo.so @@ -526,39 +528,131 @@ load_shobj (const char *name) error (EXIT_FAILURE, errno, _("Reopening shared object `%s' failed"), map->l_name); - /* Now map the section header. */ - ptr = mmap (NULL, (ehdr->e_shnum * sizeof (ElfW(Shdr)) - + (ehdr->e_shoff & (pagesize - 1))), PROT_READ, - MAP_SHARED|MAP_FILE, fd, ehdr->e_shoff & ~(pagesize - 1)); - if (ptr == MAP_FAILED) - error (EXIT_FAILURE, errno, _("mapping of section headers failed")); - shdr = (ElfW(Shdr) *) ((char *) ptr + (ehdr->e_shoff & (pagesize - 1))); + /* Map the section header. */ + size_t size = ehdr->e_shnum * sizeof (ElfW(Shdr)); + shdr = (ElfW(Shdr) *) alloca (size); + if (pread (fd, shdr, size, ehdr->e_shoff) != size) + error (EXIT_FAILURE, errno, _("reading of section headers failed")); /* Get the section header string table. */ - ptr = mmap (NULL, (shdr[ehdr->e_shstrndx].sh_size - + (shdr[ehdr->e_shstrndx].sh_offset & (pagesize - 1))), - PROT_READ, MAP_SHARED|MAP_FILE, fd, - shdr[ehdr->e_shstrndx].sh_offset & ~(pagesize - 1)); - if (ptr == MAP_FAILED) + char *shstrtab = (char *) alloca (shdr[ehdr->e_shstrndx].sh_size); + if (pread (fd, shstrtab, shdr[ehdr->e_shstrndx].sh_size, + shdr[ehdr->e_shstrndx].sh_offset) + != shdr[ehdr->e_shstrndx].sh_size) error (EXIT_FAILURE, errno, - _("mapping of section header string table failed")); - shstrtab = ((const char *) ptr - + (shdr[ehdr->e_shstrndx].sh_offset & (pagesize - 1))); + _("reading of section header string table failed")); /* Search for the ".symtab" section. */ - symtab_entry = NULL; - for (idx = 0; idx < ehdr->e_shnum; ++idx) + ElfW(Shdr) *symtab_entry = NULL; + ElfW(Shdr) *debuglink_entry = NULL; + for (int idx = 0; idx < ehdr->e_shnum; ++idx) if (shdr[idx].sh_type == SHT_SYMTAB && strcmp (shstrtab + shdr[idx].sh_name, ".symtab") == 0) { symtab_entry = &shdr[idx]; break; } + else if (shdr[idx].sh_type == SHT_PROGBITS + && strcmp (shstrtab + shdr[idx].sh_name, ".gnu_debuglink") == 0) + debuglink_entry = &shdr[idx]; - /* We don't need the section header string table anymore. */ - munmap (ptr, (shdr[ehdr->e_shstrndx].sh_size - + (shdr[ehdr->e_shstrndx].sh_offset & (pagesize - 1)))); + /* Get the file name of the debuginfo file if necessary. */ + int symfd = fd; + if (symtab_entry == NULL && debuglink_entry != NULL) + { + size_t size = debuglink_entry->sh_size; + char *debuginfo_fname = (char *) alloca (size + 1); + debuginfo_fname[size] = '\0'; + if (pread (fd, debuginfo_fname, size, debuglink_entry->sh_offset) + != size) + { + fprintf (stderr, _("*** Cannot read debuginfo file name: %m\n")); + goto no_debuginfo; + } + + static const char procpath[] = "/proc/self/fd/%d"; + char origprocname[sizeof (procpath) + sizeof (int) * 3]; + snprintf (origprocname, sizeof (origprocname), procpath, fd); + char *origlink = (char *) alloca (PATH_MAX + 1); + origlink[PATH_MAX] = '\0'; + if (readlink (origprocname, origlink, PATH_MAX) == -1) + goto no_debuginfo; + /* Try to find the actual file. There are three places: + 1. the same directory the DSO is in + 2. in a subdir named .debug of the directory the DSO is in + 3. in /usr/lib/debug/PATH-OF-DSO + */ + char *realname = canonicalize_file_name (origlink); + char *cp = NULL; + if (realname == NULL || (cp = strrchr (realname, '/')) == NULL) + error (EXIT_FAILURE, errno, _("cannot determine file name")); + + /* Leave the last slash in place. */ + *++cp = '\0'; + + /* First add the debuginfo file name only. */ + static const char usrlibdebug[]= "/usr/lib/debug/"; + char *workbuf = (char *) alloca (sizeof (usrlibdebug) + + (cp - realname) + + strlen (debuginfo_fname)); + strcpy (stpcpy (workbuf, realname), debuginfo_fname); + + int fd2 = open (workbuf, O_RDONLY); + if (fd2 == -1) + { + strcpy (stpcpy (stpcpy (workbuf, realname), ".debug/"), + debuginfo_fname); + fd2 = open (workbuf, O_RDONLY); + if (fd2 == -1) + { + strcpy (stpcpy (stpcpy (workbuf, usrlibdebug), realname), + debuginfo_fname); + fd2 = open (workbuf, O_RDONLY); + } + } + + if (fd2 != -1) + { + ElfW(Ehdr) ehdr2; + + /* Read the ELF header. */ + if (pread (fd2, &ehdr2, sizeof (ehdr2), 0) != sizeof (ehdr2)) + error (EXIT_FAILURE, errno, + _("reading of ELF header failed")); + + /* Map the section header. */ + size_t size = ehdr2.e_shnum * sizeof (ElfW(Shdr)); + ElfW(Shdr) *shdr2 = (ElfW(Shdr) *) alloca (size); + if (pread (fd2, shdr2, size, ehdr2.e_shoff) != size) + error (EXIT_FAILURE, errno, + _("reading of section headers failed")); + + /* Get the section header string table. */ + shstrtab = (char *) alloca (shdr2[ehdr2.e_shstrndx].sh_size); + if (pread (fd2, shstrtab, shdr2[ehdr2.e_shstrndx].sh_size, + shdr2[ehdr2.e_shstrndx].sh_offset) + != shdr2[ehdr2.e_shstrndx].sh_size) + error (EXIT_FAILURE, errno, + _("reading of section header string table failed")); + + /* Search for the ".symtab" section. */ + for (int idx = 0; idx < ehdr2.e_shnum; ++idx) + if (shdr2[idx].sh_type == SHT_SYMTAB + && strcmp (shstrtab + shdr2[idx].sh_name, ".symtab") == 0) + { + symtab_entry = &shdr2[idx]; + shdr = shdr2; + symfd = fd2; + break; + } + + if (fd2 != symfd) + close (fd2); + } + } + + no_debuginfo: if (symtab_entry == NULL) { fprintf (stderr, _("\ @@ -588,9 +682,9 @@ load_shobj (const char *name) } result->symbol_map = mmap (NULL, max_offset - min_offset, - PROT_READ, MAP_SHARED|MAP_FILE, fd, + PROT_READ, MAP_SHARED|MAP_FILE, symfd, min_offset); - if (result->symbol_map == NULL) + if (result->symbol_map == MAP_FAILED) error (EXIT_FAILURE, errno, _("failed to load symbol data")); result->symtab @@ -602,13 +696,10 @@ load_shobj (const char *name) result->symbol_mapsize = max_offset - min_offset; } - /* Now we also don't need the section header table anymore. */ - munmap ((char *) shdr - (ehdr->e_shoff & (pagesize - 1)), - (ehdr->e_phnum * sizeof (ElfW(Shdr)) - + (ehdr->e_shoff & (pagesize - 1)))); - /* Free the descriptor for the shared object. */ close (fd); + if (symfd != fd) + close (symfd); return result; } @@ -938,6 +1029,9 @@ read_symbols (struct shobj *shobj) newsym->name = &shobj->strtab[sym->st_name]; newsym->addr = sym->st_value; newsym->size = sym->st_size; + newsym->weak = ELFW(ST_BIND) (sym->st_info) == STB_WEAK; + newsym->hidden = (ELFW(ST_VISIBILITY) (sym->st_other) + != STV_DEFAULT); newsym->ticks = 0; newsym->calls = 0; @@ -952,7 +1046,10 @@ read_symbols (struct shobj *shobj) { /* The function is already defined. See whether we have a better name here. */ - if ((*existp)->name[0] == '_' && newsym->name[0] != '_') + if (((*existp)->hidden && !newsym->hidden) + || ((*existp)->name[0] == '_' && newsym->name[0] != '_') + || ((*existp)->name[0] != '_' && newsym->name[0] != '_' + && ((*existp)->weak && !newsym->weak))) *existp = newsym; else /* We don't need the allocated memory. */ @@ -990,6 +1087,9 @@ read_symbols (struct shobj *shobj) newsym->name = &strtab[symtab->st_name]; newsym->addr = symtab->st_value; newsym->size = symtab->st_size; + newsym->weak = ELFW(ST_BIND) (symtab->st_info) == STB_WEAK; + newsym->hidden = (ELFW(ST_VISIBILITY) (symtab->st_other) + != STV_DEFAULT); newsym->ticks = 0; newsym->froms = NULL; newsym->tos = NULL; @@ -1005,7 +1105,10 @@ read_symbols (struct shobj *shobj) { /* The function is already defined. See whether we have a better name here. */ - if ((*existp)->name[0] == '_' && newsym->name[0] != '_') + if (((*existp)->hidden && !newsym->hidden) + || ((*existp)->name[0] == '_' && newsym->name[0] != '_') + || ((*existp)->name[0] != '_' && newsym->name[0] != '_' + && ((*existp)->weak && !newsym->weak))) *existp = newsym; else /* We don't need the allocated memory. */ diff -durpN glibc-2.3.3/elf/tls-macros.h glibc-2.3.4/elf/tls-macros.h --- glibc-2.3.3/elf/tls-macros.h 2003-09-11 19:35:21.000000000 -0400 +++ glibc-2.3.4/elf/tls-macros.h 2004-06-11 05:55:50.000000000 -0400 @@ -484,7 +484,7 @@ register void *__gp __asm__("$29"); "algr %0,%%r2\n\t" \ "lgr %%r12,%1" \ : "=&a" (__offset), "=&a" (__save12) \ - : : "cc", "0", "1", "2", "3", "4", "5" ); \ + : : "cc", "0", "1", "2", "3", "4", "5", "14" ); \ (int *) (__builtin_thread_pointer() + __offset); }) # else # define TLS_LD(x) \ @@ -497,7 +497,8 @@ register void *__gp __asm__("$29"); "brasl %%r14,__tls_get_offset@plt:tls_ldcall:" #x "\n\t" \ "lg %0,8(%0)\n\t" \ "algr %0,%%r2" \ - : "=&a" (__offset) : : "cc", "0", "1", "2", "3", "4", "5", "12" ); \ + : "=&a" (__offset) \ + : : "cc", "0", "1", "2", "3", "4", "5", "12", "14" ); \ (int *) (__builtin_thread_pointer() + __offset); }) # endif @@ -513,7 +514,7 @@ register void *__gp __asm__("$29"); "lgr %0,%%r2\n\t" \ "lgr %%r12,%1" \ : "=&a" (__offset), "=&a" (__save12) \ - : : "cc", "0", "1", "2", "3", "4", "5" ); \ + : : "cc", "0", "1", "2", "3", "4", "5", "14" ); \ (int *) (__builtin_thread_pointer() + __offset); }) # else # define TLS_GD(x) \ @@ -524,7 +525,8 @@ register void *__gp __asm__("$29"); "lg %%r2,0(%0)\n\t" \ "brasl %%r14,__tls_get_offset@plt:tls_gdcall:" #x "\n\t" \ "lgr %0,%%r2" \ - : "=&a" (__offset) : : "cc", "0", "1", "2", "3", "4", "5", "12" ); \ + : "=&a" (__offset) \ + : : "cc", "0", "1", "2", "3", "4", "5", "12", "14" ); \ (int *) (__builtin_thread_pointer() + __offset); }) # endif diff -durpN glibc-2.3.3/elf/tst-deep1.c glibc-2.3.4/elf/tst-deep1.c --- glibc-2.3.3/elf/tst-deep1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-deep1.c 2004-09-23 03:38:50.000000000 -0400 @@ -0,0 +1,36 @@ +#include +#include + +int +xyzzy (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return 21; +} + +int +back (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return 1; +} + +extern int foo (void); + +static int +do_test (void) +{ + void *p = dlopen ("$ORIGIN/tst-deep1mod2.so", RTLD_LAZY|RTLD_DEEPBIND); + + int (*f) (void) = dlsym (p, "bar"); + if (f == NULL) + { + puts (dlerror ()); + return 1; + } + + return foo () + f (); +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.3/elf/tst-deep1mod1.c glibc-2.3.4/elf/tst-deep1mod1.c --- glibc-2.3.3/elf/tst-deep1mod1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-deep1mod1.c 2004-09-23 03:38:50.000000000 -0400 @@ -0,0 +1,14 @@ +#include +int +foo (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return 1; +} + +int +baz (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return 20; +} diff -durpN glibc-2.3.3/elf/tst-deep1mod2.c glibc-2.3.4/elf/tst-deep1mod2.c --- glibc-2.3.3/elf/tst-deep1mod2.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-deep1mod2.c 2004-09-23 03:38:50.000000000 -0400 @@ -0,0 +1,16 @@ +#include +extern int baz (void); +extern int xyzzy (void); +int +bar (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return baz () + xyzzy ();; +} + +int +back (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return -1; +} diff -durpN glibc-2.3.3/elf/tst-deep1mod3.c glibc-2.3.4/elf/tst-deep1mod3.c --- glibc-2.3.3/elf/tst-deep1mod3.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-deep1mod3.c 2004-09-23 03:38:50.000000000 -0400 @@ -0,0 +1,17 @@ +#include + +extern int back (void); + +int +baz (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return back (); +} + +int +xyzzy (void) +{ + printf ("%s:%s\n", __FILE__, __func__); + return 0; +} diff -durpN glibc-2.3.3/elf/tst-dlmodcount.c glibc-2.3.4/elf/tst-dlmodcount.c --- glibc-2.3.3/elf/tst-dlmodcount.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-dlmodcount.c 2004-03-26 04:48:53.000000000 -0500 @@ -0,0 +1,107 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by David Mosberger , 2004. + + 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 +#include +#include + +#define SET 0 +#define ADD 1 +#define REMOVE 2 + +#define leq(l,r) (((r) - (l)) <= ~0ULL / 2) + +static int +callback (struct dl_phdr_info *info, size_t size, void *ptr) +{ + static int last_adds = 0, last_subs = 0; + intptr_t cmd = (intptr_t) ptr; + + printf (" size = %Zu\n", size); + if (size < (offsetof (struct dl_phdr_info, dlpi_subs) + + sizeof (info->dlpi_subs))) + { + fprintf (stderr, "dl_iterate_phdr failed to pass dlpi_adds/dlpi_subs\n"); + exit (5); + } + + printf (" dlpi_adds = %Lu dlpi_subs = %Lu\n", + info->dlpi_adds, info->dlpi_subs); + + switch (cmd) + { + case SET: + break; + + case ADD: + if (leq (info->dlpi_adds, last_adds)) + { + fprintf (stderr, "dlpi_adds failed to get incremented!\n"); + exit (3); + } + break; + + case REMOVE: + if (leq (info->dlpi_subs, last_subs)) + { + fprintf (stderr, "dlpi_subs failed to get incremented!\n"); + exit (4); + } + break; + } + last_adds = info->dlpi_adds; + last_subs = info->dlpi_subs; + return -1; +} + +static void * +load (const char *path) +{ + void *handle; + + printf ("loading `%s'\n", path); + handle = dlopen (path, RTLD_LAZY); + if (!handle) + exit (1); + dl_iterate_phdr (callback, (void *)(intptr_t) ADD); + return handle; +} + +static void +unload (const char *path, void *handle) +{ + printf ("unloading `%s'\n", path); + if (dlclose (handle) < 0) + exit (2); + dl_iterate_phdr (callback, (void *)(intptr_t) REMOVE); +} + +int +main (int argc, char **argv) +{ + void *handle1, *handle2; + + dl_iterate_phdr (callback, (void *)(intptr_t) SET); + handle1 = load ("firstobj.so"); + handle2 = load ("globalmod1.so"); + unload ("firstobj.so", handle1); + unload ("globalmod1.so", handle2); + return 0; +} diff -durpN glibc-2.3.3/elf/tst-dlmopen1.c glibc-2.3.4/elf/tst-dlmopen1.c --- glibc-2.3.3/elf/tst-dlmopen1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-dlmopen1.c 2004-10-13 21:58:54.000000000 -0400 @@ -0,0 +1,80 @@ +#include +#include +#include + + +static int +do_test (void) +{ + void *h = dlopen (LIBC_SO, RTLD_LAZY|RTLD_NOLOAD); + if (h == NULL) + { + printf ("cannot get handle for %s: %s\n", LIBC_SO, dlerror ()); + return 1; + } + + Lmid_t ns = -10; + if (dlinfo (h, RTLD_DI_LMID, &ns) != 0) + { + printf ("dlinfo for %s in %s failed: %s\n", + LIBC_SO, __func__, dlerror ()); + return 1; + } + + if (ns != LM_ID_BASE) + { + printf ("namespace for %s not LM_ID_BASE\n", LIBC_SO); + return 1; + } + + if (dlclose (h) != 0) + { + printf ("dlclose for %s in %s failed: %s\n", + LIBC_SO, __func__, dlerror ()); + return 1; + } + + h = dlmopen (LM_ID_NEWLM, "$ORIGIN/tst-dlmopen1mod.so", RTLD_LAZY); + if (h == NULL) + { + printf ("cannot get handle for %s: %s\n", + "tst-dlmopen1mod.so", dlerror ()); + return 1; + } + + ns = -10; + if (dlinfo (h, RTLD_DI_LMID, &ns) != 0) + { + printf ("dlinfo for %s in %s failed: %s\n", + "tst-dlmopen1mod.so", __func__, dlerror ()); + return 1; + } + + if (ns == LM_ID_BASE) + { + printf ("namespace for %s is LM_ID_BASE\n", LIBC_SO); + return 1; + } + + int (*fct) (Lmid_t) = dlsym (h, "foo"); + if (fct == NULL) + { + printf ("could not find %s: %s\n", "foo", dlerror ()); + return 1; + } + + if (fct (ns) != 0) + return 1; + + if (dlclose (h) != 0) + { + printf ("dlclose for %s in %s failed: %s\n", + LIBC_SO, __func__, dlerror ()); + return 1; + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.3/elf/tst-dlmopen1mod.c glibc-2.3.4/elf/tst-dlmopen1mod.c --- glibc-2.3.3/elf/tst-dlmopen1mod.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-dlmopen1mod.c 2004-10-27 16:25:50.000000000 -0400 @@ -0,0 +1,59 @@ +#include +#include +#include + + +static int cnt; + +static void +__attribute ((constructor)) +constr (void) +{ + ++cnt; +} + + +int +foo (Lmid_t ns2) +{ + void *h = dlopen (LIBC_SO, RTLD_LAZY|RTLD_NOLOAD); + if (h == NULL) + { + printf ("cannot get handle for %s: %s\n", LIBC_SO, dlerror ()); + return 1; + } + + Lmid_t ns = -10; + if (dlinfo (h, RTLD_DI_LMID, &ns) != 0) + { + printf ("dlinfo for %s in %s failed: %s\n", + LIBC_SO, __func__, dlerror ()); + return 1; + } + + if (ns != ns2) + { + printf ("namespace for %s not LM_ID_BASE\n", LIBC_SO); + return 1; + } + + if (dlclose (h) != 0) + { + printf ("dlclose for %s in %s failed: %s\n", + LIBC_SO, __func__, dlerror ()); + return 1; + } + + if (cnt == 0) + { + puts ("constructor did not run"); + return 1; + } + else if (cnt != 1) + { + puts ("constructor did not run exactly once"); + return 1; + } + + return 0; +} diff -durpN glibc-2.3.3/elf/tst-dlmopen2.c glibc-2.3.4/elf/tst-dlmopen2.c --- glibc-2.3.3/elf/tst-dlmopen2.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-dlmopen2.c 2004-10-13 22:03:57.000000000 -0400 @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include + + +static int +do_test (void) +{ + int result = 0; + + for (int i = 1; i <= 10; ++i) + { + void *h[DL_NNS - 1]; + char used[DL_NNS]; + + printf ("round %d\n", i); + + memset (used, '\0', sizeof (used)); + used[LM_ID_BASE] = 1; + + for (int j = 0; j < DL_NNS - 1; ++j) + { + h[j] = dlmopen (LM_ID_NEWLM, "$ORIGIN/tst-dlmopen1mod.so", + RTLD_LAZY); + if (h[j] == NULL) + { + printf ("round %d, namespace %d: load failed: %s\n", + i, j, dlerror ()); + return 1; + } + Lmid_t ns; + if (dlinfo (h[j], RTLD_DI_LMID, &ns) != 0) + { + printf ("round %d, namespace %d: dlinfo failed: %s\n", + i, j, dlerror ()); + return 1; + } + if (ns < 0 || ns >= DL_NNS) + { + printf ("round %d, namespace %d: invalid namespace %ld", + i, j, (long int) ns); + result = 1; + } + else if (used[ns] != 0) + { + printf ("\ +round %d, namespace %d: duplicate allocate of namespace %ld", + i, j, (long int) ns); + result = 1; + } + else + used[ns] = 1; + } + + for (int j = 0; j < DL_NNS - 1; ++j) + if (dlclose (h[j]) != 0) + { + printf ("round %d, namespace %d: close failed: %s\n", + i, j, dlerror ()); + return 1; + } + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.3/elf/tst-dlmopen3.c glibc-2.3.4/elf/tst-dlmopen3.c --- glibc-2.3.3/elf/tst-dlmopen3.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-dlmopen3.c 2004-10-27 18:01:03.000000000 -0400 @@ -0,0 +1,22 @@ +#include +#include + + +static int +do_test (void) +{ + void *h = dlmopen (LM_ID_NEWLM, "$ORIGIN/tst-dlmopen1mod.so", RTLD_LAZY); + if (h == NULL) + { + printf ("cannot get handle for %s: %s\n", + "tst-dlmopen1mod.so", dlerror ()); + return 1; + } + + /* Do not unload. */ + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.3/elf/tst-dlopenrpath.c glibc-2.3.4/elf/tst-dlopenrpath.c --- glibc-2.3.3/elf/tst-dlopenrpath.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-dlopenrpath.c 2004-10-11 06:15:57.000000000 -0400 @@ -0,0 +1,72 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2004. + + 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 +#include +#include +#include +#include + + +extern int foo (void); + +static const char testsubdir[] = PFX "test-subdir"; + + +static int +do_test (void) +{ + struct stat64 st; + int result = 1; + + if (mkdir (testsubdir, 0777) != 0 + && (errno != EEXIST + || stat64 (testsubdir, &st) != 0 + || !S_ISDIR (st.st_mode))) + { + printf ("cannot create directory %s\n", testsubdir); + return 1; + } + + if (system ("cp " PFX "firstobj.so " PFX "test-subdir/in-subdir.so") != 0) + { + puts ("cannot copy DSO"); + return 1; + } + + void *p = dlopen ("in-subdir.so", RTLD_LAZY|RTLD_LOCAL); + if (p != NULL) + { + puts ("succeeded in opening in-subdir.so from do_test"); + dlclose (p); + goto out; + } + + result = foo (); + + out: + unlink (PFX "test-subdir/in-subdir.so"); + rmdir (testsubdir); + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.3/elf/tst-dlopenrpathmod.c glibc-2.3.4/elf/tst-dlopenrpathmod.c --- glibc-2.3.3/elf/tst-dlopenrpathmod.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-dlopenrpathmod.c 2004-08-15 16:08:06.000000000 -0400 @@ -0,0 +1,36 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2004. + + 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 + + +int +foo (void) +{ + void *p = dlopen ("in-subdir.so", RTLD_LAZY|RTLD_LOCAL); + if (p != NULL) + { + dlclose (p); + return 0; + } + + puts ("couldn't open in-subdir.so from foo"); + return 1; +} diff -durpN glibc-2.3.3/elf/tst-execstack.c glibc-2.3.4/elf/tst-execstack.c --- glibc-2.3.3/elf/tst-execstack.c 2003-09-23 08:07:02.000000000 -0400 +++ glibc-2.3.4/elf/tst-execstack.c 2004-04-01 21:23:05.000000000 -0500 @@ -48,7 +48,7 @@ waiter_thread (void *arg) static int do_test (void) { - void *f; + static void *f; /* Address of this is used in other threads. */ #if USE_PTHREADS /* Create some threads while stacks are nonexecutable. */ diff -durpN glibc-2.3.3/elf/tst-pie1.c glibc-2.3.4/elf/tst-pie1.c --- glibc-2.3.3/elf/tst-pie1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-pie1.c 2004-07-16 13:51:55.000000000 -0400 @@ -0,0 +1,5 @@ +int +foo (void) +{ + return 34; +} diff -durpN glibc-2.3.3/elf/tst-piemod1.c glibc-2.3.4/elf/tst-piemod1.c --- glibc-2.3.3/elf/tst-piemod1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/elf/tst-piemod1.c 2004-07-16 13:51:55.000000000 -0400 @@ -0,0 +1,20 @@ +#include + +int +foo (void) +{ + return 21; +} + +int +main (void) +{ + int val = foo (); + if (val != 34) + { + printf ("foo () returned %d\n", val); + return 1; + } + + return 0; +} diff -durpN glibc-2.3.3/elf/tst-tls13.c glibc-2.3.4/elf/tst-tls13.c --- glibc-2.3.3/elf/tst-tls13.c 2003-04-27 02:15:09.000000000 -0400 +++ glibc-2.3.4/elf/tst-tls13.c 2004-02-20 21:23:40.000000000 -0500 @@ -26,4 +26,5 @@ do_test (void) } #define TEST_FUNCTION do_test () +#define TIMEOUT 3 #include "../test-skeleton.c" diff -durpN glibc-2.3.3/elf/Versions glibc-2.3.4/elf/Versions --- glibc-2.3.3/elf/Versions 2003-09-24 17:05:28.000000000 -0400 +++ glibc-2.3.4/elf/Versions 2004-10-19 18:20:33.000000000 -0400 @@ -46,16 +46,15 @@ ld { GLIBC_PRIVATE { # Those are in the dynamic linker, but used by libc.so. __libc_enable_secure; - _dl_argv; _dl_catch_error; _dl_check_map_versions; - _dl_debug_printf; _dl_debug_state; _dl_dst_count; - _dl_dst_substitute; _dl_init; _dl_lookup_symbol; _dl_lookup_symbol_skip; - _dl_lookup_versioned_symbol; _dl_lookup_versioned_symbol_skip; - _dl_map_object; _dl_map_object_deps; _dl_out_of_memory; - _dl_relocate_object; _dl_signal_error; _dl_start_profile; _dl_starting_up; - _dl_unload_cache; - _rtld_global; _dl_tls_symaddr; _dl_allocate_tls; _dl_deallocate_tls; + _dl_argv; + _dl_out_of_memory; + _dl_starting_up; + _rtld_global; _rtld_global_ro; + _dl_allocate_tls; _dl_deallocate_tls; _dl_get_tls_static_info; _dl_allocate_tls_init; - _dl_get_origin; _dl_tls_setup; _dl_rtld_di_serinfo; + _dl_tls_setup; _dl_rtld_di_serinfo; _dl_make_stack_executable; + # Only here for gdb while a better method is developed. + _dl_debug_state; } } diff -durpN glibc-2.3.3/extra-lib.mk glibc-2.3.4/extra-lib.mk --- glibc-2.3.3/extra-lib.mk 2002-10-16 18:09:47.000000000 -0400 +++ glibc-2.3.4/extra-lib.mk 2004-12-02 17:54:47.000000000 -0500 @@ -11,6 +11,12 @@ extra-libs-left := $(filter-out $(lib),$ object-suffixes-$(lib) := $(filter-out $($(lib)-inhibit-o),$(object-suffixes)) +ifneq (,$($(lib)-static-only-routines)) +ifneq (,$(filter yesyes%,$(build-shared)$(elf)$($(lib).so-version))) +object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oS) +endif +endif + ifneq (,$(object-suffixes-$(lib))) # Make sure these are simply-expanded variables before we append to them, @@ -23,7 +29,7 @@ all-$(lib)-routines := $($(lib)-routines # Add each flavor of library to the lists of things to build and install. install-lib += $(foreach o,$(object-suffixes-$(lib)),$(lib:lib%=$(libtype$o))) -extra-objs += $(foreach o,$(object-suffixes-$(lib):.os=),\ +extra-objs += $(foreach o,$(filter-out .os .oS,$(object-suffixes-$(lib))),\ $(patsubst %,%$o,$(filter-out \ $($(lib)-shared-only-routines),\ $(all-$(lib)-routines)))) @@ -51,7 +57,7 @@ endif # Use o-iterator.mk to generate a rule for each flavor of library. -ifneq (,$(filter-out .os,$(object-suffixes-$(lib)))) +ifneq (,$(filter-out .os .oS,$(object-suffixes-$(lib)))) define o-iterator-doit $(objpfx)$(patsubst %,$(libtype$o),$(lib:lib%=%)): \ $(patsubst %,$(objpfx)%$o,\ @@ -59,13 +65,23 @@ $(objpfx)$(patsubst %,$(libtype$o),$(lib $(all-$(lib)-routines))); \ $$(build-extra-lib) endef -object-suffixes-left = $(object-suffixes-$(lib):.os=) -include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-$(lib):.os=)) +object-suffixes-left = $(filter-out .os .oS,$(object-suffixes-$(lib))) +include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left)) endif ifneq (,$(filter .os,$(object-suffixes-$(lib)))) $(objpfx)$(patsubst %,$(libtype.os),$(lib:lib%=%)): \ - $(all-$(lib)-routines:%=$(objpfx)%.os) + $(patsubst %,$(objpfx)%.os,\ + $(filter-out $($(lib)-static-only-routines),\ + $(all-$(lib)-routines))) + $(build-extra-lib) +endif + +ifneq (,$(filter .oS,$(object-suffixes-$(lib)))) +$(objpfx)$(patsubst %,$(libtype.oS),$(lib:lib%=%)): \ + $(patsubst %,$(objpfx)%.oS,\ + $(filter $($(lib)-static-only-routines),\ + $(all-$(lib)-routines))) $(build-extra-lib) endif diff -durpN glibc-2.3.3/extra-modules.mk glibc-2.3.4/extra-modules.mk --- glibc-2.3.3/extra-modules.mk 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/extra-modules.mk 2004-03-08 16:23:37.000000000 -0500 @@ -0,0 +1,9 @@ +# This file is included several times in a row, once +# for each element of $(modules-names). $(extra-modules-left) +# is initialized first to $(modules-names) so that with each +# inclusion, we advance $(module) to the next name. + +module := $(firstword $(extra-modules-left)) +extra-modules-left := $(filter-out $(module),$(extra-modules-left)) + +CPPFLAGS-$(module).c += -DNOT_IN_libc diff -durpN glibc-2.3.3/FAQ glibc-2.3.4/FAQ --- glibc-2.3.3/FAQ 2003-02-21 01:17:16.000000000 -0500 +++ glibc-2.3.4/FAQ 2004-08-10 01:12:34.000000000 -0400 @@ -228,9 +228,10 @@ ports to other operating systems are und expressed interest. If you have a system not listed above (or in the `README' file) and you are -really interested in porting it, contact +really interested in porting it, see the GNU C Library web pages to learn +how to start contributing: - + http://www.gnu.org/software/libc/resources.html 1.2. What compiler do I need to build GNU libc? @@ -332,8 +333,6 @@ them. A full build of the PowerPC library took 1h on a PowerPC 750@400Mhz w/ 64MB of RAM, and about 9h on a 601@60Mhz w/ 72Mb. - If you have some more measurements let me know. - 1.8. What version of the Linux kernel headers should be used? diff -durpN glibc-2.3.3/FAQ.in glibc-2.3.4/FAQ.in --- glibc-2.3.3/FAQ.in 2003-10-22 15:07:07.000000000 -0400 +++ glibc-2.3.4/FAQ.in 2004-08-09 23:00:24.000000000 -0400 @@ -48,9 +48,10 @@ ports to other operating systems are und expressed interest. If you have a system not listed above (or in the `README' file) and you are -really interested in porting it, contact +really interested in porting it, see the GNU C Library web pages to learn +how to start contributing: - + http://www.gnu.org/software/libc/resources.html ??binsize What compiler do I need to build GNU libc? diff -durpN glibc-2.3.3/glibcbug.in glibc-2.3.4/glibcbug.in --- glibc-2.3.3/glibcbug.in 2002-07-16 14:13:24.000000000 -0400 +++ glibc-2.3.4/glibcbug.in 1969-12-31 19:00:00.000000000 -0500 @@ -1,283 +0,0 @@ -#! /bin/sh -# -# glibcbug - create a bug report and mail it to the bug address. -# -# configuration section: -# these variables are filled in by configure -# -VERSION="@VERSION@" -RELEASE="@RELEASE@" -ADDONS="@subdirs@" -HOST="@host@" -CC='@CC@' -CCVERSION='@CCVERSION@' -CFLAGS="@CFLAGS@" -SYSINCLUDES="@SYSINCLUDES@" -VERSIONING="@VERSIONING@" -BUILD_STATIC="@static@" -BUILD_SHARED="@shared@" -BUILD_PIC_DEFAULT="@pic_default@" -BUILD_PROFILE="@profile@" -BUILD_OMITFP="@omitfp@" -BUILD_BOUNDED="@bounded@" -BUILD_STATIC_NSS="@static_nss@" - -TEMP=`mktemp -q ${TMPDIR-/tmp}/glibcbugXXXXXX 2>/dev/null` -if test $? -ne 0; then - TEMP=${TMPDIR-/tmp}/glibcbug.$$ - echo > $TEMP - chmod 600 $TEMP -fi -TEMPx=`mktemp -q ${TMPDIR-/tmp}/glibcbugXXXXXX 2>/dev/null` -if test $? -ne 0; then - TEMPx=${TMPDIR-/tmp}/glibcbug.$$.x - echo > $TEMPx - chmod 600 $TEMPx -fi - -BUGGLIBC="glibc-bug-reports-${RELEASE}@gnu.org" -BUGADDR=${1-$BUGGLIBC} - -: ${EDITOR=emacs} - -: ${USER=${LOGNAME-`whoami`}} - -trap 'rm -f $TEMP $TEMPx; exit 1' 1 2 3 13 15 -trap 'rm -f $TEMP $TEMPx' 0 - - -# How to read the passwd database. -PASSWD="cat /etc/passwd" - -if [ -f /usr/lib/sendmail ] ; then - MAIL_AGENT="/usr/lib/sendmail -oi -t" -elif [ -f /usr/sbin/sendmail ] ; then - MAIL_AGENT="/usr/sbin/sendmail -oi -t" -else - MAIL_AGENT=rmail -fi - -# Figure out how to echo a string without a trailing newline -N=`echo 'hi there\c'` -case "$N" in -*c) ECHON1='echo -n' ECHON2= ;; -*) ECHON1=echo ECHON2='\c' ;; -esac - -# Find out the name of the originator of this PR. -if [ -n "$NAME" ]; then - ORIGINATOR="$NAME" -elif [ -f $HOME/.fullname ]; then - ORIGINATOR="`sed -e '1q' $HOME/.fullname`" -else - # Must use temp file due to incompatibilities in quoting behavior - # and to protect shell metacharacters in the expansion of $LOGNAME - $PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP - ORIGINATOR="`cat $TEMP`" -fi - -if [ -n "$ORGANIZATION" ]; then - if [ -f "$ORGANIZATION" ]; then - ORGANIZATION="`cat $ORGANIZATION`" - fi -else - if [ -f $HOME/.organization ]; then - ORGANIZATION="`cat $HOME/.organization`" - elif [ -f $HOME/.signature ]; then - ORGANIZATION=`sed -e "s/^/ /" $HOME/.signature; echo ">"` - fi -fi - -# If they don't have a preferred editor set, then use -if [ -z "$VISUAL" ]; then - if [ -z "$EDITOR" ]; then - EDIT=vi - else - EDIT="$EDITOR" - fi -else - EDIT="$VISUAL" -fi - -# Find out some information. -SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \ - ( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""` -ARCH=`[ -f /bin/arch ] && /bin/arch` -MACHINE=`[ -f /bin/machine ] && /bin/machine` - -case $HOST in *linux*) - KHDRS=`(echo '#include ' - echo '! UTS_RELEASE' ) | - $CC $SYSINCLUDES -E - | sed -n '/!/s/[! "]//gp'`;; -esac - -ORGANIZATION_C='' -SYNOPSIS_C='' -SEVERITY_C='<[ non-critical | serious | critical ] (one line)>' -PRIORITY_C='<[ low | medium | high ] (one line)>' -CLASS_C='<[ sw-bug | doc-bug | change-request | support ] (one line)>' -RELEASE_C='' -ENVIRONMENT_C='' -DESCRIPTION_C='' -HOW_TO_REPEAT_C='' -FIX_C='' - - -cat > $TEMP <'). -SEND-PR: -From: ${USER} -To: ${BUGADDR} -Subject: [50 character or so descriptive subject here (for reference)] - ->Submitter-Id: net ->Originator: ${ORIGINATOR} ->Organization: -${ORGANIZATION- $ORGANIZATION_C} ->Confidential: no ->Synopsis: $SYNOPSIS_C ->Severity: $SEVERITY_C ->Priority: $PRIORITY_C ->Category: libc ->Class: $CLASS_C ->Release: libc-${VERSION} ->Environment: - $ENVIRONMENT_C -`[ -n "$HOST" ] && echo Host type: $HOST` -`[ -n "$SYSTEM" ] && echo System: $SYSTEM` -`[ -n "$ARCH" ] && echo Architecture: $ARCH` -`[ -n "$MACHINE" ] && echo Machine: $MACHINE` -`[ -n "$ADDONS" ] && echo Addons: $ADDONS` -`[ -n "$CFLAGS" ] && echo Build CFLAGS: $CFLAGS` -`[ -n "$CC" ] && echo Build CC: $CC` -`[ -n "$CCVERSION" ] && echo Compiler version: $CCVERSION` -`[ -n "$KHDRS" ] && echo Kernel headers: $KHDRS` -`[ -n "$VERSIONING" ] && echo Symbol versioning: $VERSIONING` -`[ -n "$BUILD_STATIC" ] && echo Build static: $BUILD_STATIC` -`[ -n "$BUILD_SHARED" ] && echo Build shared: $BUILD_SHARED` -`[ -n "$BUILD_PIC_DEFAULT" ] && echo Build pic-default: $BUILD_PIC_DEFAULT` -`[ -n "$BUILD_PROFILE" ] && echo Build profile: $BUILD_PROFILE` -`[ -n "$BUILD_OMITFP" ] && echo Build omitfp: $BUILD_OMITFP` -`[ -n "$BUILD_BOUNDED" ] && echo Build bounded: $BUILD_BOUNDED` -`[ -n "$BUILD_STATIC_NSS" ] && echo Build static-nss: $BUILD_STATIC_NSS` - ->Description: - $DESCRIPTION_C ->How-To-Repeat: - $HOW_TO_REPEAT_C ->Fix: - $FIX_C -EOF - -chmod u+w $TEMP -cp $TEMP $TEMPx - -eval $EDIT $TEMP - -if cmp -s $TEMP $TEMPx; then - echo "File not changed, no bug report submitted." - exit 1 -fi - -# -# Check the enumeration fields - -# This is a "sed-subroutine" with one keyword parameter -# (with workaround for Sun sed bug) -# -SED_CMD=' -/$PATTERN/{ -s||| -s|<.*>|| -s|^[ ]*|| -s|[ ]*$|| -p -q -}' - - -while :; do - CNT=0 - - # - # 1) Severity - # - PATTERN=">Severity:" - SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP` - case "$SEVERITY" in - ""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;; - *) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'." - esac - # - # 2) Priority - # - PATTERN=">Priority:" - PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP` - case "$PRIORITY" in - ""|low|medium|high) CNT=`expr $CNT + 1` ;; - *) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'." - esac - # - # 3) Class - # - PATTERN=">Class:" - CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP` - case "$CLASS" in - ""|sw-bug|doc-bug|change-request|support) CNT=`expr $CNT + 1` ;; - *) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'." - esac - - [ $CNT -lt 3 ] && - echo "Errors were found with the problem report." - - while :; do - $ECHON1 "a)bort, e)dit or s)end? $ECHON2" - read input - case "$input" in - a*) - echo "$COMMAND: problem report saved in $HOME/dead.glibcbug." - cat $TEMP >> $HOME/dead.glibcbug - xs=1; exit - ;; - e*) - eval $EDIT $TEMP - continue 2 - ;; - s*) - break 2 - ;; - esac - done -done -# -# Remove comments and send the problem report -# (we have to use patterns, where the comment contains regex chars) -# -# /^>Originator:/s;$ORIGINATOR;; -sed -e " -/^SEND-PR:/d -/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;; -/^>Confidential:/s;<.*>;; -/^>Synopsis:/s;$SYNOPSIS_C;; -/^>Severity:/s;<.*>;; -/^>Priority:/s;<.*>;; -/^>Class:/s;<.*>;; -/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;; -/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;; -/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;; -/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;; -/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;; -" $TEMP > $TEMPx - -if $MAIL_AGENT < $TEMPx; then - echo "$COMMAND: problem report sent" - xs=0; exit -else - echo "$COMMAND: mysterious mail failure, report not sent." - echo "$COMMAND: problem report saved in $HOME/dead.glibcbug." - cat $TEMP >> $HOME/dead.glibcbug -fi - -exit 0 diff -durpN glibc-2.3.3/gmon/gmon.c glibc-2.3.4/gmon/gmon.c --- glibc-2.3.3/gmon/gmon.c 2003-09-04 10:20:46.000000000 -0400 +++ glibc-2.3.4/gmon/gmon.c 2004-09-14 00:24:43.000000000 -0400 @@ -61,11 +61,11 @@ static int s_scale; #define ERR(s) write_not_cancel (STDERR_FILENO, s, sizeof (s) - 1) -void moncontrol __P ((int mode)); -void __moncontrol __P ((int mode)); -static void write_hist __P ((int fd)) internal_function; -static void write_call_graph __P ((int fd)) internal_function; -static void write_bb_counts __P ((int fd)) internal_function; +void moncontrol (int mode); +void __moncontrol (int mode); +static void write_hist (int fd) internal_function; +static void write_call_graph (int fd) internal_function; +static void write_bb_counts (int fd) internal_function; /* * Control profiling @@ -114,7 +114,7 @@ __monstartup (lowpc, highpc) p->lowpc = ROUNDDOWN(lowpc, HISTFRACTION * sizeof(HISTCOUNTER)); p->highpc = ROUNDUP(highpc, HISTFRACTION * sizeof(HISTCOUNTER)); p->textsize = p->highpc - p->lowpc; - p->kcountsize = p->textsize / HISTFRACTION; + p->kcountsize = ROUNDUP(p->textsize / HISTFRACTION, sizeof(*p->froms)); p->hashfraction = HASHFRACTION; p->log_hashfraction = -1; /* The following test must be kept in sync with the corresponding diff -durpN glibc-2.3.3/gmon/Makefile glibc-2.3.4/gmon/Makefile --- glibc-2.3.3/gmon/Makefile 2002-03-11 05:26:47.000000000 -0500 +++ glibc-2.3.4/gmon/Makefile 2004-10-06 18:04:46.000000000 -0400 @@ -29,11 +29,11 @@ elide-routines.os = bb_init_func bb_exit tests := tst-sprofil -include ../Rules - # The mcount code won't work without a frame pointer. CFLAGS-mcount.c := -fno-omit-frame-pointer +include ../Rules + # We cannot compile mcount.c with -pg because that would # create recursive calls. Just copy the normal static object. # On systems where `profil' is not a system call, the same diff -durpN glibc-2.3.3/grp/compat-initgroups.c glibc-2.3.4/grp/compat-initgroups.c --- glibc-2.3.3/grp/compat-initgroups.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/grp/compat-initgroups.c 2004-10-05 11:36:26.000000000 -0400 @@ -0,0 +1,109 @@ +/* Prototype for the setgrent functions we use here. */ +typedef enum nss_status (*set_function) (void); + +/* Prototype for the endgrent functions we use here. */ +typedef enum nss_status (*end_function) (void); + +/* Prototype for the setgrent functions we use here. */ +typedef enum nss_status (*get_function) (struct group *, char *, + size_t, int *); + +static enum nss_status +compat_call (service_user *nip, const char *user, gid_t group, long int *start, + long int *size, gid_t **groupsp, long int limit, int *errnop) +{ + struct group grpbuf; + size_t buflen = __sysconf (_SC_GETGR_R_SIZE_MAX); + char *tmpbuf; + enum nss_status status; + set_function setgrent_fct; + get_function getgrent_fct; + end_function endgrent_fct; + gid_t *groups = *groupsp; + + getgrent_fct = __nss_lookup_function (nip, "getgrent_r"); + if (getgrent_fct == NULL) + return NSS_STATUS_UNAVAIL; + + setgrent_fct = __nss_lookup_function (nip, "setgrent"); + if (setgrent_fct) + { + status = DL_CALL_FCT (setgrent_fct, ()); + if (status != NSS_STATUS_SUCCESS) + return status; + } + + endgrent_fct = __nss_lookup_function (nip, "endgrent"); + + tmpbuf = __alloca (buflen); + + do + { + while ((status = DL_CALL_FCT (getgrent_fct, + (&grpbuf, tmpbuf, buflen, errnop)), + status == NSS_STATUS_TRYAGAIN) + && *errnop == ERANGE) + { + buflen *= 2; + tmpbuf = __alloca (buflen); + } + + if (status != NSS_STATUS_SUCCESS) + goto done; + + if (grpbuf.gr_gid != group) + { + char **m; + + for (m = grpbuf.gr_mem; *m != NULL; ++m) + if (strcmp (*m, user) == 0) + { + /* Check whether the group is already on the list. */ + long int cnt; + for (cnt = 0; cnt < *start; ++cnt) + if (groups[cnt] == grpbuf.gr_gid) + break; + + if (cnt == *start) + { + /* Matches user and not yet on the list. Insert + this group. */ + if (__builtin_expect (*start == *size, 0)) + { + /* Need a bigger buffer. */ + gid_t *newgroups; + long int newsize; + + if (limit > 0 && *size == limit) + /* We reached the maximum. */ + goto done; + + if (limit <= 0) + newsize = 2 * *size; + else + newsize = MIN (limit, 2 * *size); + + newgroups = realloc (groups, + newsize * sizeof (*groups)); + if (newgroups == NULL) + goto done; + *groupsp = groups = newgroups; + *size = newsize; + } + + groups[*start] = grpbuf.gr_gid; + *start += 1; + } + + break; + } + } + } + while (status == NSS_STATUS_SUCCESS); + + done: + if (endgrent_fct) + DL_CALL_FCT (endgrent_fct, ()); + + return NSS_STATUS_SUCCESS; +} diff -durpN glibc-2.3.3/grp/grp.h glibc-2.3.4/grp/grp.h --- glibc-2.3.3/grp/grp.h 2003-04-19 12:48:37.000000000 -0400 +++ glibc-2.3.4/grp/grp.h 2004-07-23 02:52:51.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,1992,1995-2001, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1995-2001,2003,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 @@ -34,7 +34,7 @@ __BEGIN_DECLS /* For the Single Unix specification we must define this type here. */ -#if defined __USE_XOPEN && !defined __gid_t_defined +#if (defined __USE_XOPEN || defined __USE_XOPEN2K) && !defined __gid_t_defined typedef __gid_t gid_t; # define __gid_t_defined #endif diff -durpN glibc-2.3.3/grp/initgroups.c glibc-2.3.4/grp/initgroups.c --- glibc-2.3.3/grp/initgroups.c 2003-06-16 13:16:06.000000000 -0400 +++ glibc-2.3.4/grp/initgroups.c 2004-10-05 11:36:26.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1989,91,93,1996-2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1989,91,93,1996-2003, 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 @@ -27,19 +27,14 @@ #include #include +#include "../nscd/nscd-client.h" +#include "../nscd/nscd_proto.h" + + /* Type of the lookup function. */ typedef enum nss_status (*initgroups_dyn_function) (const char *, gid_t, long int *, long int *, gid_t **, long int, int *); -/* Prototype for the setgrent functions we use here. */ -typedef enum nss_status (*set_function) (void); - -/* Prototype for the endgrent functions we use here. */ -typedef enum nss_status (*end_function) (void); - -/* Prototype for the setgrent functions we use here. */ -typedef enum nss_status (*get_function) (struct group *, char *, - size_t, int *); /* The lookup function for the first entry of this service. */ extern int __nss_group_lookup (service_user **nip, const char *name, @@ -48,99 +43,29 @@ extern void *__nss_lookup_function (serv extern service_user *__nss_group_database attribute_hidden; -static enum nss_status -compat_call (service_user *nip, const char *user, gid_t group, long int *start, - long int *size, gid_t **groupsp, long int limit, int *errnop) -{ - struct group grpbuf; - size_t buflen = __sysconf (_SC_GETGR_R_SIZE_MAX); - char *tmpbuf; - enum nss_status status; - set_function setgrent_fct; - get_function getgrent_fct; - end_function endgrent_fct; - gid_t *groups = *groupsp; - - getgrent_fct = __nss_lookup_function (nip, "getgrent_r"); - if (getgrent_fct == NULL) - return NSS_STATUS_UNAVAIL; - - setgrent_fct = __nss_lookup_function (nip, "setgrent"); - if (setgrent_fct) - { - status = DL_CALL_FCT (setgrent_fct, ()); - if (status != NSS_STATUS_SUCCESS) - return status; - } - endgrent_fct = __nss_lookup_function (nip, "endgrent"); - - tmpbuf = __alloca (buflen); - - do - { - while ((status = DL_CALL_FCT (getgrent_fct, - (&grpbuf, tmpbuf, buflen, errnop)), - status == NSS_STATUS_TRYAGAIN) - && *errnop == ERANGE) - { - buflen *= 2; - tmpbuf = __alloca (buflen); - } - - if (status != NSS_STATUS_SUCCESS) - goto done; - - if (grpbuf.gr_gid != group) - { - char **m; - - for (m = grpbuf.gr_mem; *m != NULL; ++m) - if (strcmp (*m, user) == 0) - { - /* Matches user. Insert this group. */ - if (__builtin_expect (*start == *size, 0)) - { - /* Need a bigger buffer. */ - gid_t *newgroups; - long int newsize; - - if (limit > 0 && *size == limit) - /* We reached the maximum. */ - goto done; - - if (limit <= 0) - newsize = 2 * *size; - else - newsize = MIN (limit, 2 * *size); - - newgroups = realloc (groups, newsize * sizeof (*groups)); - if (newgroups == NULL) - goto done; - *groupsp = groups = newgroups; - *size = newsize; - } - - groups[*start] = grpbuf.gr_gid; - *start += 1; - - break; - } - } - } - while (status == NSS_STATUS_SUCCESS); - - done: - if (endgrent_fct) - DL_CALL_FCT (endgrent_fct, ()); +#include "compat-initgroups.c" - return NSS_STATUS_SUCCESS; -} static int internal_getgrouplist (const char *user, gid_t group, long int *size, gid_t **groupsp, long int limit) { +#ifdef USE_NSCD + if (__nss_not_use_nscd_group > 0 + && ++__nss_not_use_nscd_group > NSS_NSCD_RETRY) + __nss_not_use_nscd_group = 0; + if (!__nss_not_use_nscd_group) + { + int n = __nscd_getgrouplist (user, group, size, groupsp, limit); + if (n >= 0) + return n; + + /* nscd is not usable. */ + __nss_not_use_nscd_group = 1; + } +#endif + service_user *nip = NULL; initgroups_dyn_function fct; enum nss_status status = NSS_STATUS_UNAVAIL; @@ -148,7 +73,7 @@ internal_getgrouplist (const char *user, /* Start is one, because we have the first group as parameter. */ long int start = 1; - *groupsp[0] = group; + (*groupsp)[0] = group; if (__nss_group_database != NULL) { @@ -161,6 +86,8 @@ internal_getgrouplist (const char *user, while (! no_more) { + long int prev_start = start; + fct = __nss_lookup_function (nip, "initgroups_dyn"); if (fct == NULL) @@ -175,6 +102,21 @@ internal_getgrouplist (const char *user, status = DL_CALL_FCT (fct, (user, group, &start, size, groupsp, limit, &errno)); + /* Remove duplicates. */ + long int cnt = prev_start; + while (cnt < start) + { + long int inner; + for (inner = 0; inner < prev_start; ++inner) + if ((*groupsp)[inner] == (*groupsp)[cnt]) + break; + + if (inner < prev_start) + (*groupsp)[cnt] = (*groupsp)[--start]; + else + ++cnt; + } + /* This is really only for debugging. */ if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) __libc_fatal ("illegal status in internal_getgrouplist"); @@ -199,12 +141,16 @@ int getgrouplist (const char *user, gid_t group, gid_t *groups, int *ngroups) { gid_t *newgroups; - long int size = *ngroups; + long int size = MAX (1, *ngroups); int result; - newgroups = (gid_t *) malloc (size * sizeof (gid_t)); + newgroups = (gid_t *) malloc ((size + 1) * sizeof (gid_t)); if (__builtin_expect (newgroups == NULL, 0)) /* No more memory. */ + // XXX This is wrong. The user provided memory, we have to use + // XXX it. The internal functions must be called with the user + // XXX provided buffer and not try to increase the size if it is + // XXX too small. For initgroups a flag could say: increase size. return -1; result = internal_getgrouplist (user, group, &size, &newgroups, -1); @@ -249,12 +195,11 @@ initgroups (const char *user, gid_t grou long int limit = __sysconf (_SC_NGROUPS_MAX); if (limit > 0) - size = limit; + /* We limit the size of the intially allocated array. */ + size = MIN (limit, 64); else - { - /* No fixed limit on groups. Pick a starting buffer size. */ - size = 16; - } + /* No fixed limit on groups. Pick a starting buffer size. */ + size = 16; groups = (gid_t *) malloc (size * sizeof (gid_t)); if (__builtin_expect (groups == NULL, 0)) diff -durpN glibc-2.3.3/grp/Makefile glibc-2.3.4/grp/Makefile --- glibc-2.3.3/grp/Makefile 2003-09-12 18:22:32.000000000 -0400 +++ glibc-2.3.4/grp/Makefile 2004-09-29 22:19:22.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1991,92,96,97,98,99,2000,2003 Free Software Foundation, Inc. +# Copyright (C) 1991,1992,1996-2000,2003,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 @@ -22,7 +22,7 @@ subdir := grp headers := grp.h -distribute := tst_fgetgrent.c tst_fgetgrent.sh +distribute := tst_fgetgrent.c tst_fgetgrent.sh compat-initgroups.c routines := fgetgrent initgroups setgroups \ getgrent getgrgid getgrnam putgrent \ @@ -52,9 +52,9 @@ CFLAGS-getgrnam_r.c = -DUSE_NSCD=1 -fexc CFLAGS-getgrent_r.c = -fexceptions CFLAGS-getgrent.c = -fexceptions CFLAGS-fgetgrent.c = -fexceptions -CFLAGS-fgetgrent_r.c = -fexceptions -CFLAGS-putgrent.c = -fexceptions -CFLAGS-initgroups.c = -fexceptions +CFLAGS-fgetgrent_r.c = -fexceptions -D_IO_MTSAFE_IO +CFLAGS-putgrent.c = -fexceptions -D_IO_MTSAFE_IO +CFLAGS-initgroups.c = -DUSE_NSCD=1 -fexceptions CFLAGS-getgrgid.c = -fexceptions endif diff -durpN glibc-2.3.3/hesiod/hesiod.c glibc-2.3.4/hesiod/hesiod.c --- glibc-2.3.3/hesiod/hesiod.c 2001-02-03 03:29:57.000000000 -0500 +++ glibc-2.3.4/hesiod/hesiod.c 2004-08-05 19:28:15.000000000 -0400 @@ -448,10 +448,9 @@ __hesiod_res_get(void *context) { if (!ctx->res) { struct __res_state *res; - res = (struct __res_state *)malloc(sizeof *res); + res = (struct __res_state *)calloc(1, sizeof *res); if (res == NULL) return (NULL); - memset(res, 0, sizeof *res); __hesiod_res_set(ctx, res, free); } @@ -465,6 +464,12 @@ __hesiod_res_set(void *context, struct _ if (ctx->res && ctx->free_res) { res_nclose(ctx->res); + if ((ctx->res->options & RES_INIT) && ctx->res->nscount > 0) { + for (int ns = 0; ns < MAXNS; ns++) { + free (ctx->res->_u._ext.nsaddrs[ns]); + ctx->res->_u._ext.nsaddrs[ns] = NULL; + } + } (*ctx->free_res)(ctx->res); } @@ -478,8 +483,7 @@ init(struct hesiod_p *ctx) { if (!ctx->res && !__hesiod_res_get(ctx)) return (-1); - if (((ctx->res->options & RES_INIT) == 0) && - (res_ninit(ctx->res) == -1)) + if (__res_maybe_init (ctx->res, 0) == -1) return (-1); return (0); diff -durpN glibc-2.3.3/hesiod/hesiod.h glibc-2.3.4/hesiod/hesiod.h --- glibc-2.3.3/hesiod/hesiod.h 2000-07-20 21:36:00.000000000 -0400 +++ glibc-2.3.4/hesiod/hesiod.h 2004-09-14 00:24:43.000000000 -0400 @@ -26,15 +26,15 @@ #ifndef _HESIOD_H_INCLUDED #define _HESIOD_H_INCLUDED -int hesiod_init __P((void **context)); -void hesiod_end __P((void *context)); -char * hesiod_to_bind __P((void *context, const char *name, - const char *type)); -char ** hesiod_resolve __P((void *context, const char *name, - const char *type)); -void hesiod_free_list __P((void *context, char **list)); -struct __res_state * __hesiod_res_get __P((void *context)); -void __hesiod_res_set __P((void *context, struct __res_state *, - void (*)(void *))); +int hesiod_init (void **context); +void hesiod_end (void *context); +char * hesiod_to_bind (void *context, const char *name, + const char *type); +char ** hesiod_resolve (void *context, const char *name, + const char *type); +void hesiod_free_list (void *context, char **list); +struct __res_state * __hesiod_res_get (void *context); +void __hesiod_res_set (void *context, struct __res_state *, + void (*)(void *)); #endif /*_HESIOD_H_INCLUDED*/ diff -durpN glibc-2.3.3/hurd/compat-20.c glibc-2.3.4/hurd/compat-20.c --- glibc-2.3.3/hurd/compat-20.c 2001-07-06 00:54:47.000000000 -0400 +++ glibc-2.3.4/hurd/compat-20.c 2004-03-10 14:27:53.000000000 -0500 @@ -1,5 +1,5 @@ /* Old-versioned functions for binary compatibility with glibc-2.0. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 2000, 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 @@ -28,6 +28,7 @@ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) void +attribute_compat_text_section _hurd_proc_init_compat_20 (char **argv) { _hurd_proc_init (argv, NULL, 0); diff -durpN glibc-2.3.3/hurd/hurdlookup.c glibc-2.3.4/hurd/hurdlookup.c --- glibc-2.3.3/hurd/hurdlookup.c 2001-08-22 19:12:51.000000000 -0400 +++ glibc-2.3.4/hurd/hurdlookup.c 2004-05-10 16:11:11.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1992,93,94,95,96,97,99,2001 Free Software Foundation, Inc. +/* Copyright (C) 1992,93,94,95,96,97,99,2001,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 @@ -141,6 +142,8 @@ __hurd_file_name_split (error_t (*use_in dirname, 0, 0, dir); } } + else if (file_name[0] == '\0') + return ENOENT; else { /* "foobar" => cwdir + "foobar". */ @@ -216,6 +219,8 @@ __hurd_directory_name_split (error_t (*u dirname, 0, 0, dir); } } + else if (file_name[0] == '\0') + return ENOENT; else { /* "foobar" => cwdir + "foobar". */ diff -durpN glibc-2.3.3/iconv/gconv_charset.h glibc-2.3.4/iconv/gconv_charset.h --- glibc-2.3.3/iconv/gconv_charset.h 2003-06-11 17:29:40.000000000 -0400 +++ glibc-2.3.4/iconv/gconv_charset.h 2004-08-09 21:10:44.000000000 -0400 @@ -1,5 +1,5 @@ /* Charset name normalization. - Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -30,7 +30,7 @@ strip (char *wp, const char *s) while (*s != '\0') { if (__isalnum_l (*s, &_nl_C_locobj) - || *s == '_' || *s == '-' || *s == '.') + || *s == '_' || *s == '-' || *s == '.' || *s == ',') *wp++ = __toupper_l (*s, &_nl_C_locobj); else if (*s == '/') { diff -durpN glibc-2.3.3/iconv/gconv_db.c glibc-2.3.4/iconv/gconv_db.c --- glibc-2.3.3/iconv/gconv_db.c 2003-06-11 17:31:59.000000000 -0400 +++ glibc-2.3.4/iconv/gconv_db.c 2004-08-06 13:50:31.000000000 -0400 @@ -1,5 +1,5 @@ /* Provide access to the collection of available transformation modules. - Copyright (C) 1997,98,99,2000,2001,2002,2003 Free Software Foundation, Inc. + Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,7 @@ void *__gconv_alias_db; struct gconv_module *__gconv_modules_db; /* We modify global data. */ -__libc_lock_define_initialized (static, lock) +__libc_lock_define_initialized (, __gconv_lock) /* Provide access to module database. */ @@ -170,7 +171,7 @@ add_derivation (const char *fromset, con not all memory will be freed. */ } -static void +static void __libc_freeres_fn_section free_derivation (void *p) { struct known_derivation *deriv = (struct known_derivation *) p; @@ -683,20 +684,20 @@ __gconv_find_transform (const char *tose __libc_once (once, __gconv_read_conf); /* Acquire the lock. */ - __libc_lock_lock (lock); + __libc_lock_lock (__gconv_lock); result = __gconv_lookup_cache (toset, fromset, handle, nsteps, flags); if (result != __GCONV_NODB) { /* We have a cache and could resolve the request, successful or not. */ - __libc_lock_unlock (lock); + __libc_lock_unlock (__gconv_lock); return result; } /* If we don't have a module database return with an error. */ if (__gconv_modules_db == NULL) { - __libc_lock_unlock (lock); + __libc_lock_unlock (__gconv_lock); return __GCONV_NOCONV; } @@ -715,7 +716,7 @@ __gconv_find_transform (const char *tose && strcmp (toset_expand, fromset_expand) == 0))))) { /* Both character sets are the same. */ - __libc_lock_unlock (lock); + __libc_lock_unlock (__gconv_lock); return __GCONV_NOCONV; } @@ -723,7 +724,7 @@ __gconv_find_transform (const char *tose handle, nsteps); /* Release the lock. */ - __libc_lock_unlock (lock); + __libc_lock_unlock (__gconv_lock); /* The following code is necessary since `find_derivation' will return GCONV_OK even when no derivation was found but the same request @@ -743,7 +744,7 @@ __gconv_close_transform (struct __gconv_ size_t cnt; /* Acquire the lock. */ - __libc_lock_lock (lock); + __libc_lock_lock (__gconv_lock); #ifndef STATIC_GCONV cnt = nsteps; @@ -757,7 +758,7 @@ __gconv_close_transform (struct __gconv_ __gconv_release_cache (steps, nsteps); /* Release the lock. */ - __libc_lock_unlock (lock); + __libc_lock_unlock (__gconv_lock); return result; } @@ -765,7 +766,7 @@ __gconv_close_transform (struct __gconv_ /* Free the modules mentioned. */ static void -internal_function +internal_function __libc_freeres_fn_section free_modules_db (struct gconv_module *node) { if (node->left != NULL) @@ -786,6 +787,14 @@ free_modules_db (struct gconv_module *no /* Free all resources if necessary. */ libc_freeres_fn (free_mem) { + /* First free locale memory. This needs to be done before freeing derivations, + as ctype cleanup functions dereference steps arrays which we free below. */ + _nl_locale_subfreeres (); + + /* finddomain.c has similar problem. */ + extern void _nl_finddomain_subfreeres (void) attribute_hidden; + _nl_finddomain_subfreeres (); + if (__gconv_alias_db != NULL) __tdestroy (__gconv_alias_db, free); diff -durpN glibc-2.3.3/iconv/gconv_dl.c glibc-2.3.4/iconv/gconv_dl.c --- glibc-2.3.3/iconv/gconv_dl.c 2002-11-05 23:37:00.000000000 -0500 +++ glibc-2.3.4/iconv/gconv_dl.c 2004-08-04 17:58:10.000000000 -0400 @@ -1,5 +1,6 @@ /* Handle loading/unloading of shared object for transformation. - Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -191,7 +192,7 @@ __gconv_release_shlib (struct __gconv_lo /* We run this if we debug the memory allocation. */ -static void +static void __libc_freeres_fn_section do_release_all (void *nodep) { struct __gconv_loaded_object *obj = (struct __gconv_loaded_object *) nodep; diff -durpN glibc-2.3.3/iconv/gconv_int.h glibc-2.3.4/iconv/gconv_int.h --- glibc-2.3.3/iconv/gconv_int.h 2003-06-11 17:33:21.000000000 -0400 +++ glibc-2.3.4/iconv/gconv_int.h 2004-03-24 22:51:56.000000000 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -22,6 +22,7 @@ #include "gconv.h" #include /* For alloca used in macro below. */ +#include __BEGIN_DECLS @@ -124,6 +125,9 @@ extern struct gconv_module *__gconv_modu /* Value of the GCONV_PATH environment variable. */ extern const char *__gconv_path_envvar attribute_hidden; +/* Lock for the conversion database content. */ +__libc_lock_define (extern, __gconv_lock); + /* The gconv functions expects the name to be in upper case and complete, including the trailing slashes if necessary. */ @@ -133,7 +137,7 @@ extern const char *__gconv_path_envvar a char *result; \ char *tmp; \ size_t cnt = 0; \ - size_t suffix_len = (suffix) == NULL ? 0 : strlen (suffix); \ + const size_t suffix_len = strlen (suffix); \ \ while (*cp != '\0') \ if (*cp++ == '/') \ @@ -149,7 +153,7 @@ extern const char *__gconv_path_envvar a if (cnt < 1) \ { \ *tmp++ = '/'; \ - if (suffix != NULL) \ + if (suffix_len != 0) \ tmp = __mempcpy (tmp, suffix, suffix_len); \ } \ } \ diff -durpN glibc-2.3.3/iconv/gconv_open.c glibc-2.3.4/iconv/gconv_open.c --- glibc-2.3.3/iconv/gconv_open.c 2001-11-28 23:51:58.000000000 -0500 +++ glibc-2.3.4/iconv/gconv_open.c 2004-02-07 10:56:32.000000000 -0500 @@ -1,5 +1,5 @@ /* Find matching transformation algorithms and initialize steps. - Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -182,8 +182,13 @@ __gconv_open (const char *toset, const c || __builtin_expect (__gconv_translit_find (runp), 0) == 0) lastp = runp; else - /* This means we haven't found the module. Remove it. */ - (lastp == NULL ? trans : lastp->next) = runp->next; + { + /* This means we haven't found the module. Remove it. */ + if (lastp == NULL) + trans = runp->next; + else + lastp->next = runp->next; + } } /* Allocate room for handle. */ diff -durpN glibc-2.3.3/iconv/gconv_simple.c glibc-2.3.4/iconv/gconv_simple.c --- glibc-2.3.3/iconv/gconv_simple.c 2003-06-11 17:36:37.000000000 -0400 +++ glibc-2.3.4/iconv/gconv_simple.c 2004-06-30 03:33:05.000000000 -0400 @@ -1,5 +1,5 @@ /* Simple transformations functions. - Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -87,12 +87,13 @@ internal_ucs4_loop (struct __gconv_step #if __BYTE_ORDER == __LITTLE_ENDIAN /* Sigh, we have to do some real work. */ size_t cnt; + uint32_t *outptr32 = (uint32_t *) outptr; for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) - *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); + *outptr32++ = bswap_32 (*(const uint32_t *) inptr); *inptrp = inptr; - *outptrp = outptr; + *outptrp = (unsigned char *) outptr32; #elif __BYTE_ORDER == __BIG_ENDIAN /* Simply copy the data. */ *inptrp = inptr + n_convert * 4; @@ -192,13 +193,16 @@ internal_ucs4_loop_single (struct __gcon (*outptrp)[2] = state->__value.__wchb[1]; (*outptrp)[3] = state->__value.__wchb[0]; - *outptrp += 4; #elif __BYTE_ORDER == __BIG_ENDIAN /* XXX unaligned */ - *(*((uint32_t **) outptrp)++) = state->__value.__wch; + (*outptrp)[0] = state->__value.__wchb[0]; + (*outptrp)[1] = state->__value.__wchb[1]; + (*outptrp)[2] = state->__value.__wchb[2]; + (*outptrp)[3] = state->__value.__wchb[3]; #else # error "This endianess is not supported." #endif + *outptrp += 4; /* Clear the state buffer. */ state->__count &= ~7; @@ -268,7 +272,8 @@ ucs4_internal_loop (struct __gconv_step return __GCONV_ILLEGAL_INPUT; } - *((uint32_t *) outptr)++ = inval; + *((uint32_t *) outptr) = inval; + outptr += sizeof (uint32_t); } *inptrp = inptr; @@ -447,9 +452,11 @@ internal_ucs4le_loop (struct __gconv_ste #if __BYTE_ORDER == __BIG_ENDIAN /* Sigh, we have to do some real work. */ size_t cnt; + uint32_t *outptr32 = (uint32_t *) outptr; for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) - *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); + *outptr32++ = bswap_32 (*(const uint32_t *) inptr); + outptr = (unsigned char *) outptr32; *inptrp = inptr; *outptrp = outptr; @@ -555,12 +562,17 @@ internal_ucs4le_loop_single (struct __gc (*outptrp)[2] = state->__value.__wchb[1]; (*outptrp)[3] = state->__value.__wchb[0]; - *outptrp += 4; #else /* XXX unaligned */ - *(*((uint32_t **) outptrp)++) = state->__value.__wch; + (*outptrp)[0] = state->__value.__wchb[0]; + (*outptrp)[1] = state->__value.__wchb[1]; + (*outptrp)[2] = state->__value.__wchb[2]; + (*outptrp)[3] = state->__value.__wchb[3]; + #endif + *outptrp += 4; + /* Clear the state buffer. */ state->__count &= ~7; @@ -626,7 +638,8 @@ ucs4le_internal_loop (struct __gconv_ste return __GCONV_ILLEGAL_INPUT; } - *((uint32_t *) outptr)++ = inval; + *((uint32_t *) outptr) = inval; + outptr += sizeof (uint32_t); } *inptrp = inptr; @@ -808,7 +821,8 @@ ucs4le_internal_loop_single (struct __gc } \ else \ /* It's an one byte sequence. */ \ - *((uint32_t *) outptr)++ = *inptr++; \ + *((uint32_t *) outptr) = *inptr++; \ + outptr += sizeof (uint32_t); \ } #define LOOP_NEED_FLAGS #include @@ -838,7 +852,8 @@ ucs4le_internal_loop_single (struct __gc } \ else \ /* It's an one byte sequence. */ \ - *outptr++ = *((const uint32_t *) inptr)++; \ + *outptr++ = *((const uint32_t *) inptr); \ + inptr += sizeof (uint32_t); \ } #define LOOP_NEED_FLAGS #include @@ -887,13 +902,12 @@ ucs4le_internal_loop_single (struct __gc start = outptr; \ *outptr = (unsigned char) (~0xff >> step); \ outptr += step; \ - --step; \ do \ { \ - start[step] = 0x80 | (wc & 0x3f); \ + start[--step] = 0x80 | (wc & 0x3f); \ wc >>= 6; \ } \ - while (--step > 0); \ + while (step > 1); \ start[0] |= wc; \ } \ else \ @@ -975,18 +989,17 @@ ucs4le_internal_loop_single (struct __gc } \ else \ { \ - int skipped; \ - \ /* Search the end of this ill-formed UTF-8 character. This \ is the next byte with (x & 0xc0) != 0x80. */ \ - skipped = 0; \ + i = 0; \ do \ - ++skipped; \ - while (inptr + skipped < inend \ - && (*(inptr + skipped) & 0xc0) == 0x80 \ - && skipped < 5); \ + ++i; \ + while (inptr + i < inend \ + && (*(inptr + i) & 0xc0) == 0x80 \ + && i < 5); \ \ - STANDARD_FROM_LOOP_ERR_HANDLER (skipped); \ + errout: \ + STANDARD_FROM_LOOP_ERR_HANDLER (i); \ } \ \ if (__builtin_expect (inptr + cnt > inend, 0)) \ @@ -1003,7 +1016,7 @@ ucs4le_internal_loop_single (struct __gc break; \ } \ \ - STANDARD_FROM_LOOP_ERR_HANDLER (i); \ + goto errout; \ } \ \ /* Read the possible remaining bytes. */ \ @@ -1025,14 +1038,15 @@ ucs4le_internal_loop_single (struct __gc if (i < cnt || (cnt > 2 && (ch >> (5 * cnt - 4)) == 0)) \ { \ /* This is an illegal encoding. */ \ - STANDARD_FROM_LOOP_ERR_HANDLER (i); \ + goto errout; \ } \ \ inptr += cnt; \ } \ \ /* Now adjust the pointers and store the result. */ \ - *((uint32_t *) outptr)++ = ch; \ + *((uint32_t *) outptr) = ch; \ + outptr += sizeof (uint32_t); \ } #define LOOP_NEED_FLAGS @@ -1144,7 +1158,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - uint16_t u1 = *((const uint16_t *) inptr); \ + uint16_t u1 = get16 (inptr); \ \ if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0)) \ { \ @@ -1153,7 +1167,8 @@ ucs4le_internal_loop_single (struct __gc STANDARD_FROM_LOOP_ERR_HANDLER (2); \ } \ \ - *((uint32_t *) outptr)++ = u1; \ + *((uint32_t *) outptr) = u1; \ + outptr += sizeof (uint32_t); \ inptr += 2; \ } #define LOOP_NEED_FLAGS @@ -1201,7 +1216,8 @@ ucs4le_internal_loop_single (struct __gc } \ else \ { \ - *((uint16_t *) outptr)++ = val; \ + put16 (outptr, val); \ + outptr += sizeof (uint16_t); \ inptr += 4; \ } \ } @@ -1226,7 +1242,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - uint16_t u1 = bswap_16 (*((const uint16_t *) inptr)); \ + uint16_t u1 = bswap_16 (get16 (inptr)); \ \ if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0)) \ { \ @@ -1242,7 +1258,8 @@ ucs4le_internal_loop_single (struct __gc continue; \ } \ \ - *((uint32_t *) outptr)++ = u1; \ + *((uint32_t *) outptr) = u1; \ + outptr += sizeof (uint32_t); \ inptr += 2; \ } #define LOOP_NEED_FLAGS @@ -1291,7 +1308,8 @@ ucs4le_internal_loop_single (struct __gc } \ else \ { \ - *((uint16_t *) outptr)++ = bswap_16 (val); \ + put16 (outptr, bswap_16 (val)); \ + outptr += sizeof (uint16_t); \ inptr += 4; \ } \ } diff -durpN glibc-2.3.3/iconv/iconvconfig.c glibc-2.3.4/iconv/iconvconfig.c --- glibc-2.3.3/iconv/iconvconfig.c 2003-06-11 17:38:47.000000000 -0400 +++ glibc-2.3.4/iconv/iconvconfig.c 2004-12-19 18:23:42.000000000 -0500 @@ -1,5 +1,5 @@ /* Generate fastloading iconv module configuration files. - Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2000. @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -121,16 +122,21 @@ static char *more_help (int key, const c /* Definitions of arguments for argp functions. */ #define OPT_PREFIX 300 +#define OPT_NOSTDLIB 301 static const struct argp_option options[] = { { "prefix", OPT_PREFIX, "PATH", 0, N_("Prefix used for all file accesses") }, + { "output", 'o', "FILE", 0, N_("\ +Put output in FILE instead of installed location\ + (--prefix does not apply to FILE)") }, + { "nostdlib", OPT_NOSTDLIB, NULL, 0, + N_("Do not search standard directories, only those on the command line") }, { NULL, 0, NULL, 0, NULL } }; /* Data structure to communicate with argp functions. */ static struct argp argp = { - options, parse_opt, args_doc, doc, NULL, more_help }; @@ -162,6 +168,14 @@ static const char *prefix = ""; /* Its length. */ static size_t prefix_len; +/* Directory to place output file in. */ +static const char *output_file; +/* Its length. */ +static size_t output_file_len; + +/* If true, omit the GCONV_PATH directories and require some arguments. */ +static bool nostdlib; + /* Search tree of the modules we know. */ static void *modules; @@ -270,8 +284,6 @@ main (int argc, char *argv[]) { int remaining; int status = 0; - char *path; - char *tp; /* Enable memory use testing. */ /* mcheck_pedantic (NULL); */ @@ -286,6 +298,9 @@ main (int argc, char *argv[]) /* Parse and process arguments. */ argp_parse (&argp, argc, argv, 0, &remaining, NULL); + if (nostdlib && remaining == argc) + error (2, 0, _("Directory arguments required when using --nostdlib")); + /* Initialize the string table. */ strtab = strtabinit (); @@ -293,14 +308,16 @@ main (int argc, char *argv[]) while (remaining < argc) status |= handle_dir (argv[remaining++]); - /* In any case also handle the standard directory. */ - path = strdupa (GCONV_PATH); - tp = strtok (path, ":"); - while (tp != NULL) + if (! nostdlib) { - status |= handle_dir (tp); + /* In any case also handle the standard directory. */ + char *path = strdupa (GCONV_PATH), *tp = strsep (&path, ":"); + while (tp != NULL) + { + status |= handle_dir (tp); - tp = strtok (NULL, ":"); + tp = strsep (&path, ":"); + } } /* Add the builtin transformations and aliases without overwriting @@ -340,6 +357,13 @@ parse_opt (int key, char *arg, struct ar prefix = arg; prefix_len = strlen (prefix); break; + case 'o': + output_file = arg; + output_file_len = strlen (output_file); + break; + case OPT_NOSTDLIB: + nostdlib = true; + break; default: return ARGP_ERR_UNKNOWN; } @@ -355,7 +379,8 @@ more_help (int key, const char *text, vo case ARGP_KEY_HELP_EXTRA: /* We print some extra information. */ return strdup (gettext ("\ -Report bugs using the `glibcbug' script to .\n")); +For bug reporting instructions, please see:\n\ +.\n")); default: break; } @@ -372,7 +397,7 @@ print_version (FILE *stream, struct argp Copyright (C) %s Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2003"); +"), "2004"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } @@ -625,7 +650,6 @@ add_module (char *rp, const char *direct static int handle_dir (const char *dir) { - char *infile; char *cp; FILE *fp; char *line = NULL; @@ -640,7 +664,8 @@ handle_dir (const char *dir) newp[dirlen] = '\0'; } - cp = infile = (char *) alloca (prefix_len + dirlen + sizeof "gconv-modules"); + char infile[prefix_len + dirlen + sizeof "gconv-modules"]; + cp = infile; if (dir[0] == '/') cp = mempcpy (cp, prefix, prefix_len); strcpy (mempcpy (cp, dir, dirlen), "gconv-modules"); @@ -1005,12 +1030,13 @@ write_output (void) struct iovec iov[6]; static const gidx_t null_word; size_t total; - char tmpfname[prefix_len + sizeof (GCONV_MODULES_CACHE) + char finalname[prefix_len + sizeof GCONV_MODULES_CACHE]; + char tmpfname[(output_file == NULL ? sizeof finalname : output_file_len + 1) + strlen (".XXXXXX")]; - char finalname[prefix_len + sizeof (GCONV_MODULES_CACHE)]; /* Function to insert the names. */ - static void name_insert (const void *nodep, VISIT value, int level) + auto void + name_insert (const void *nodep, VISIT value, int level) { struct name *name; unsigned int idx; @@ -1034,15 +1060,20 @@ write_output (void) } /* Open the output file. */ - assert (GCONV_MODULES_CACHE[0] == '/'); - strcpy (stpcpy (mempcpy (tmpfname, prefix, prefix_len), GCONV_MODULES_CACHE), - ".XXXXXX"); + if (output_file == NULL) + { + assert (GCONV_MODULES_CACHE[0] == '/'); + strcpy (stpcpy (mempcpy (tmpfname, prefix, prefix_len), + GCONV_MODULES_CACHE), + ".XXXXXX"); + strcpy (mempcpy (finalname, prefix, prefix_len), GCONV_MODULES_CACHE); + } + else + strcpy (mempcpy (tmpfname, output_file, output_file_len), ".XXXXXX"); fd = mkstemp (tmpfname); if (fd == -1) return 1; - strcpy (mempcpy (finalname, prefix, prefix_len), GCONV_MODULES_CACHE); - /* Create the string table. */ string_table = strtabfinalize (strtab, &string_table_size); @@ -1195,7 +1226,7 @@ write_output (void) /* The file was created with mode 0600. Make it world-readable. */ || fchmod (fd, 0644) != 0 /* Rename the file, possibly replacing an old one. */ - || rename (tmpfname, finalname) != 0) + || rename (tmpfname, output_file ?: finalname) != 0) { int save_errno = errno; close (fd); diff -durpN glibc-2.3.3/iconv/iconv_prog.c glibc-2.3.4/iconv/iconv_prog.c --- glibc-2.3.3/iconv/iconv_prog.c 2003-04-06 16:36:19.000000000 -0400 +++ glibc-2.3.4/iconv/iconv_prog.c 2004-09-30 04:55:57.000000000 -0400 @@ -1,5 +1,5 @@ /* Convert text in given files from the specified from-set to the to-set. - Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. + Copyright (C) 1998-2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -280,10 +280,10 @@ conversion from `%s' and to `%s' are not struct stat st; char *addr; #endif - int fd; + int fd, ret; if (verbose) - printf ("%s:\n", argv[remaining]); + fprintf (stderr, "%s:\n", argv[remaining]); if (strcmp (argv[remaining], "-") == 0) fd = 0; else @@ -313,43 +313,42 @@ conversion from `%s' and to `%s' are not _("error while closing input `%s'"), argv[remaining]); - if (process_block (cd, addr, st.st_size, output) < 0) + ret = process_block (cd, addr, st.st_size, output); + + /* We don't need the input data anymore. */ + munmap ((void *) addr, st.st_size); + + if (ret != 0) { - /* Something went wrong. */ status = EXIT_FAILURE; - /* We don't need the input data anymore. */ - munmap ((void *) addr, st.st_size); - - /* We cannot go on with producing output since it might - lead to problem because the last output might leave - the output stream in an undefined state. */ - break; + if (ret < 0) + /* We cannot go on with producing output since it might + lead to problem because the last output might leave + the output stream in an undefined state. */ + break; } - - /* We don't need the input data anymore. */ - munmap ((void *) addr, st.st_size); } else #endif /* _POSIX_MAPPED_FILES */ { /* Read the file in pieces. */ - if (process_fd (cd, fd, output) != 0) + ret = process_fd (cd, fd, output); + + /* Now close the file. */ + close (fd); + + if (ret != 0) { /* Something went wrong. */ status = EXIT_FAILURE; - /* We don't need the input file anymore. */ - close (fd); - - /* We cannot go on with producing output since it might - lead to problem because the last output might leave - the output stream in an undefined state. */ - break; + if (ret < 0) + /* We cannot go on with producing output since it might + lead to problem because the last output might leave + the output stream in an undefined state. */ + break; } - - /* Now close the file. */ - close (fd); } } while (++remaining < argc); @@ -407,7 +406,8 @@ more_help (int key, const char *text, vo case ARGP_KEY_HELP_EXTRA: /* We print some extra information. */ return strdup (gettext ("\ -Report bugs using the `glibcbug' script to .\n")); +For bug reporting instructions, please see:\n\ +.\n")); default: break; } @@ -424,7 +424,7 @@ print_version (FILE *stream, struct argp Copyright (C) %s Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2003"); +"), "2004"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } @@ -438,6 +438,7 @@ process_block (iconv_t cd, char *addr, s char *outptr; size_t outlen; size_t n; + int ret = 0; while (len > 0) { @@ -445,6 +446,15 @@ process_block (iconv_t cd, char *addr, s outlen = OUTBUF_SIZE; n = iconv (cd, &addr, &len, &outptr, &outlen); + if (n == (size_t) -1 && omit_invalid && errno == EILSEQ) + { + ret = 1; + if (len == 0) + n = 0; + else + errno = E2BIG; + } + if (outptr != outbuf) { /* We have something to write out. */ @@ -469,7 +479,7 @@ conversion stopped due to problem in wri character sets we have to flush the state now. */ outptr = outbuf; outlen = OUTBUF_SIZE; - (void) iconv (cd, NULL, NULL, &outptr, &outlen); + n = iconv (cd, NULL, NULL, &outptr, &outlen); if (outptr != outbuf) { @@ -489,7 +499,14 @@ conversion stopped due to problem in wri errno = errno_save; } - break; + if (n != (size_t) -1) + break; + + if (omit_invalid && errno == EILSEQ) + { + ret = 1; + break; + } } if (errno != E2BIG) @@ -518,7 +535,7 @@ incomplete character or shift sequence a } } - return 0; + return ret; } @@ -753,7 +770,10 @@ print_known_names (void) add_known_names (modules); } - fputs (_("\ + bool human_readable = isatty (fileno (stdout)); + + if (human_readable) + fputs (_("\ The following list contain all the coded character sets known. This does\n\ not necessarily mean that all combinations of these names can be used for\n\ the FROM and TO command line parameters. One coded character set can be\n\ @@ -761,13 +781,8 @@ listed with several different names (ali /* Now print the collected names. */ column = 2; - if (isatty (fileno (stdout))) - { - twalk (printlist, do_print_human); + twalk (printlist, human_readable ? do_print_human : do_print); - if (column != 0) - puts (""); - } - else - twalk (printlist, do_print); + if (human_readable && column != 0) + puts (""); } diff -durpN glibc-2.3.3/iconv/Makefile glibc-2.3.4/iconv/Makefile --- glibc-2.3.3/iconv/Makefile 2003-06-11 17:27:05.000000000 -0400 +++ glibc-2.3.4/iconv/Makefile 2004-12-19 18:43:41.000000000 -0500 @@ -1,4 +1,4 @@ -# Copyright (C) 1997,1998,2000,2001,2002,2003 Free Software Foundation, Inc. +# Copyright (C) 1997,1998,2000-2003,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 @@ -49,7 +49,7 @@ CFLAGS-charmap.c = -DCHARMAP_PATH='"$(i1 CFLAGS-linereader.c = -DNO_TRANSLITERATION CFLAGS-simple-hash.c = -I../locale -tests = tst-iconv1 tst-iconv2 tst-iconv3 +tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv5 distribute = gconv_builtin.h gconv_int.h loop.c skeleton.c iconv_prog.h \ iconv_charmap.c dummy-repertoire.c gconv_charset.h strtab.c \ @@ -78,3 +78,15 @@ $(inst_bindir)/iconv: $(objpfx)iconv_pro $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o) $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o) + +ifneq ($(cross-compiling),yes) +xtests: test-iconvconfig +endif + +.PHONY: test-iconvconfig +test-iconvconfig: /dev/null $(objpfx)iconvconfig + tmp=$(objpfx)gconv-modules.cache.$$$$; \ + rm -f $$tmp; \ + $(make-test-out) --output=$$tmp --nostdlib $(inst_gconvdir) && \ + cmp $$tmp $(inst_gconvdir)/gconv-modules.cache && \ + rm -f $$tmp diff -durpN glibc-2.3.3/iconv/tst-iconv5.c glibc-2.3.4/iconv/tst-iconv5.c --- glibc-2.3.3/iconv/tst-iconv5.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/iconv/tst-iconv5.c 2004-06-30 03:34:25.000000000 -0400 @@ -0,0 +1,158 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by GOTO Masanori , 2004 + + 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 +#include +#include +#include + +#define SIZE 256 /* enough room for conversion */ +#define SAMPLESTR "abc" + +struct unalign +{ + char str1[1]; + char str2[SIZE]; +}; + +struct convcode +{ + const char *tocode; + const char *fromcode; +}; + +/* test builtin transformation */ +struct convcode testcode[] = { + {"ASCII", "ASCII"}, + {"UTF-8", "ASCII"}, + {"UCS-2BE", "ASCII"}, + {"UCS-2LE", "ASCII"}, + {"UCS-4BE", "ASCII"}, + {"UCS-4LE", "ASCII"}, +}; + +int number = (int) sizeof (testcode) / sizeof (struct convcode); + +int +convert (const char *tocode, const char *fromcode, char *inbufp, + size_t inbytesleft, char *outbufp, size_t outbytesleft) +{ + iconv_t *ic; + size_t outbytes = outbytesleft; + int ret; + + ic = iconv_open (tocode, fromcode); + if (ic == (iconv_t *) - 1) + { + printf ("iconv_open failed: from: %s, to: %s: %s", + fromcode, tocode, strerror (errno)); + return -1; + } + + while (inbytesleft > 0) + { + ret = iconv (ic, &inbufp, &inbytesleft, &outbufp, &outbytes); + if (ret == -1) + { + printf ("iconv failed: from: %s, to: %s: %s", + fromcode, tocode, strerror (errno)); + return -1; + } + } + + ret = iconv_close (ic); + if (ret == -1) + { + printf ("iconv_close failed: from: %s, to: %s: %s", + fromcode, tocode, strerror (errno)); + return -1; + } + + return outbytesleft - outbytes; +} + + +int +test_unalign (struct convcode *codes, char *str, int len) +{ + struct unalign *inbufp, *outbufp; + char *inbuf, *outbuf; + size_t inbytesleft, outbytesleft; + int retlen; + + /* allocating unaligned buffer for both inbuf and outbuf */ + inbufp = (struct unalign *) malloc (sizeof (struct unalign)); + if (!inbufp) + { + printf ("no memory available\n"); + exit (1); + } + inbuf = inbufp->str2; + + outbufp = (struct unalign *) malloc (sizeof (struct unalign)); + if (!outbufp) + { + printf ("no memory available\n"); + exit (1); + } + outbuf = outbufp->str2; + + /* first iconv phase */ + memcpy (inbuf, str, len); + inbytesleft = len; + outbytesleft = sizeof (struct unalign); + retlen = convert (codes->tocode, codes->fromcode, inbuf, inbytesleft, + outbuf, outbytesleft); + if (retlen == -1) /* failed */ + return 1; + + /* second round trip iconv phase */ + memcpy (inbuf, outbuf, retlen); + inbytesleft = retlen; + outbytesleft = sizeof (struct unalign); + retlen = convert (codes->fromcode, codes->tocode, inbuf, inbytesleft, + outbuf, outbytesleft); + if (retlen == -1) /* failed */ + return 1; + + free (inbufp); + free (outbufp); + + return 0; +} + +int +main (int argc, char *argv[]) +{ + int i; + int ret = 0; + + for (i = 0; i < number; i++) + { + ret = test_unalign (&testcode[i], (char *) SAMPLESTR, sizeof (SAMPLESTR)); + if (ret) + break; + printf ("iconv: %s <-> %s: ok\n", + testcode[i].fromcode, testcode[i].tocode); + } + printf ("Succeeded.\n"); + + return ret; +} diff -durpN glibc-2.3.3/iconvdata/armscii-8.c glibc-2.3.4/iconvdata/armscii-8.c --- glibc-2.3.3/iconvdata/armscii-8.c 2002-12-02 17:07:52.000000000 -0500 +++ glibc-2.3.4/iconvdata/armscii-8.c 2004-02-07 10:57:33.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion to and from ARMSCII-8 - Copyright (C) 1997-1999, 2000-2002 Free Software Foundation, Inc. + Copyright (C) 1997-1999, 2000-2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -57,11 +57,17 @@ static const uint16_t map_from_armscii_8 uint_fast8_t ch = *inptr; \ \ if (ch <= 0xa0) \ - /* Upto and including 0xa0 the ARMSCII-8 corresponds to Unicode. */ \ - *((uint32_t *) outptr)++ = ch; \ + { \ + /* Upto and including 0xa0 the ARMSCII-8 corresponds to Unicode. */ \ + *((uint32_t *) outptr) = ch; \ + outptr += sizeof (uint32_t); \ + } \ else if (ch >= 0xa2 && ch <= 0xfe) \ - /* Use the table. */ \ - *((uint32_t *) outptr)++ = map_from_armscii_8[ch - 0xa2]; \ + { \ + /* Use the table. */ \ + *((uint32_t *) outptr) = map_from_armscii_8[ch - 0xa2]; \ + outptr += sizeof (uint32_t); \ + } \ else \ { \ /* This is an illegal character. */ \ diff -durpN glibc-2.3.3/iconvdata/cp1255.c glibc-2.3.4/iconvdata/cp1255.c --- glibc-2.3.3/iconvdata/cp1255.c 2002-12-02 17:07:52.000000000 -0500 +++ glibc-2.3.4/iconvdata/cp1255.c 2004-02-07 10:57:32.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion from and to CP1255. - Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998, and Bruno Haible , 2001. @@ -69,7 +69,8 @@ if (__builtin_expect (outbuf + 4 <= outend, 1)) \ { \ /* Write out the last character. */ \ - *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ + *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ + outbuf += sizeof (uint32_t); \ data->__statep->__count = 0; \ } \ else \ diff -durpN glibc-2.3.3/iconvdata/cp1258.c glibc-2.3.4/iconvdata/cp1258.c --- glibc-2.3.3/iconvdata/cp1258.c 2002-12-02 17:07:52.000000000 -0500 +++ glibc-2.3.4/iconvdata/cp1258.c 2004-02-07 10:57:33.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion from and to CP1258. - Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998, and Bruno Haible , 2001. @@ -70,7 +70,8 @@ if (__builtin_expect (outbuf + 4 <= outend, 1)) \ { \ /* Write out the last character. */ \ - *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ + *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ + outbuf += sizeof (uint32_t); \ data->__statep->__count = 0; \ } \ else \ diff -durpN glibc-2.3.3/iconvdata/euc-jisx0213.c glibc-2.3.4/iconvdata/euc-jisx0213.c --- glibc-2.3.3/iconvdata/euc-jisx0213.c 2002-12-02 17:07:54.000000000 -0500 +++ glibc-2.3.4/iconvdata/euc-jisx0213.c 2004-03-07 04:34:22.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion from and to EUC-JISX0213. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2002. @@ -83,7 +83,8 @@ if (__builtin_expect (outbuf + 4 <= outend, 1)) \ { \ /* Write out the last character. */ \ - *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ + *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ + outbuf += sizeof (uint32_t); \ data->__statep->__count = 0; \ } \ else \ diff -durpN glibc-2.3.3/iconvdata/gb18030.c glibc-2.3.4/iconvdata/gb18030.c --- glibc-2.3.3/iconvdata/gb18030.c 2002-12-02 17:07:54.000000000 -0500 +++ glibc-2.3.4/iconvdata/gb18030.c 2004-02-07 10:57:33.000000000 -0500 @@ -1,5 +1,5 @@ /* Mapping tables for GBK handling. - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Sean Chen , 1999. @@ -25769,7 +25769,8 @@ static const unsigned char __ucs_to_gb18 } \ } \ \ - *((uint32_t *) outptr)++ = ch; \ + *((uint32_t *) outptr) = ch; \ + outptr += sizeof (uint32_t); \ } #define LOOP_NEED_FLAGS #define ONEBYTE_BODY \ diff -durpN glibc-2.3.3/iconvdata/gconv.map glibc-2.3.4/iconvdata/gconv.map --- glibc-2.3.3/iconvdata/gconv.map 2002-12-12 21:54:53.000000000 -0500 +++ glibc-2.3.4/iconvdata/gconv.map 2004-03-11 19:15:26.000000000 -0500 @@ -1,6 +1,7 @@ { global: gconv; + gconv_end; gconv_init; local: *; diff -durpN glibc-2.3.3/iconvdata/gconv-modules glibc-2.3.4/iconvdata/gconv-modules --- glibc-2.3.3/iconvdata/gconv-modules 2003-07-14 19:40:16.000000000 -0400 +++ glibc-2.3.4/iconvdata/gconv-modules 2004-08-02 18:08:06.000000000 -0400 @@ -1,5 +1,5 @@ # GNU libc iconv configuration. -# Copyright (C) 1997-1999, 2000-2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc. # This file is part of the GNU C Library. # @@ -299,6 +299,7 @@ module INTERNAL ISO-8859-6// ISO8859-6 # from to module cost alias ISO-IR-126// ISO-8859-7// +alias ISO_8859-7:2003// ISO-8859-7// alias ISO_8859-7:1987// ISO-8859-7// alias ISO_8859-7// ISO-8859-7// alias ISO8859-7// ISO-8859-7// @@ -1219,6 +1220,7 @@ module INTERNAL CP1258// CP1258 1 # from to module cost alias 874// IBM874// alias CP874// IBM874// +alias WINDOWS-874// IBM874// module IBM874// INTERNAL IBM874 1 module INTERNAL IBM874// IBM874 1 @@ -1561,3 +1563,12 @@ module INTERNAL Shift_JISX0213// SHIFT_ # from to module cost module TSCII// INTERNAL TSCII 1 module INTERNAL TSCII// TSCII 1 + +# from to module cost +module PT154// INTERNAL PT154 1 +module INTERNAL PT154// PT154 1 + +# from to module cost +alias STRK1048-2002// RK1048// +module RK1048// INTERNAL RK1048 1 +module INTERNAL RK1048// RK1048 1 diff -durpN glibc-2.3.3/iconvdata/ibm932.c glibc-2.3.4/iconvdata/ibm932.c --- glibc-2.3.3/iconvdata/ibm932.c 2002-12-02 17:20:56.000000000 -0500 +++ glibc-2.3.4/iconvdata/ibm932.c 2004-08-02 18:32:06.000000000 -0400 @@ -1,5 +1,5 @@ /* Conversion from and to IBM932. - Copyright (C) 2000-2002 Free Software Foundation, Inc. + Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -169,20 +169,21 @@ high = (sizeof (__ucs4_to_ibm932db) >> 1) \ / sizeof (__ucs4_to_ibm932db[0][FROM]); \ pccode = ch; \ - while (low <= high) \ - { \ - i = (low + high) >> 1; \ - if (pccode < __ucs4_to_ibm932db[i][FROM]) \ - high = i - 1; \ - else if (pccode > __ucs4_to_ibm932db[i][FROM]) \ - low = i + 1; \ - else \ - { \ - pccode = __ucs4_to_ibm932db[i][TO]; \ - found = true; \ - break; \ - } \ - } \ + if (__builtin_expect (rp != NULL, 1)) \ + while (low < high) \ + { \ + i = (low + high) >> 1; \ + if (pccode < __ucs4_to_ibm932db[i][FROM]) \ + high = i; \ + else if (pccode > __ucs4_to_ibm932db[i][FROM]) \ + low = i + 1; \ + else \ + { \ + pccode = __ucs4_to_ibm932db[i][TO]; \ + found = true; \ + break; \ + } \ + } \ if (found) \ { \ if (__builtin_expect (outptr + 2 > outend, 0)) \ diff -durpN glibc-2.3.3/iconvdata/ibm943.c glibc-2.3.4/iconvdata/ibm943.c --- glibc-2.3.3/iconvdata/ibm943.c 2002-12-02 17:22:52.000000000 -0500 +++ glibc-2.3.4/iconvdata/ibm943.c 2004-08-02 18:32:06.000000000 -0400 @@ -1,5 +1,5 @@ /* Conversion from and to IBM943. - Copyright (C) 2000-2002 Free Software Foundation, Inc. + Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -170,20 +170,21 @@ high = (sizeof (__ucs4_to_ibm943db) >> 1) \ / sizeof (__ucs4_to_ibm943db[0][FROM]); \ pccode = ch; \ - while (low <= high) \ - { \ - i = (low + high) >> 1; \ - if (pccode < __ucs4_to_ibm943db[i][FROM]) \ - high = i - 1; \ - else if (pccode > __ucs4_to_ibm943db[i][FROM]) \ - low = i + 1; \ - else \ - { \ - pccode = __ucs4_to_ibm943db[i][TO]; \ - found = true; \ - break; \ - } \ - } \ + if (__builtin_expect (rp != NULL, 1)) \ + while (low < high) \ + { \ + i = (low + high) >> 1; \ + if (pccode < __ucs4_to_ibm943db[i][FROM]) \ + high = i; \ + else if (pccode > __ucs4_to_ibm943db[i][FROM]) \ + low = i + 1; \ + else \ + { \ + pccode = __ucs4_to_ibm943db[i][TO]; \ + found = true; \ + break; \ + } \ + } \ if (found) \ { \ if (__builtin_expect (outptr + 2 > outend, 0)) \ diff -durpN glibc-2.3.3/iconvdata/iso-2022-cn-ext.c glibc-2.3.4/iconvdata/iso-2022-cn-ext.c --- glibc-2.3.3/iconvdata/iso-2022-cn-ext.c 2002-06-28 17:13:14.000000000 -0400 +++ glibc-2.3.4/iconvdata/iso-2022-cn-ext.c 2004-03-07 04:33:54.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion module for ISO-2022-CN-EXT. - Copyright (C) 2000-2002 Free Software Foundation, Inc. + Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2000. @@ -377,7 +377,8 @@ enum } \ } \ \ - *((uint32_t *) outptr)++ = ch; \ + *((uint32_t *) outptr) = ch; \ + outptr += sizeof (uint32_t); \ } #define EXTRA_LOOP_DECLS , int *setp #define INIT_PARAMS int set = (*setp >> 3) & CURRENT_MASK; \ diff -durpN glibc-2.3.3/iconvdata/iso-2022-jp-3.c glibc-2.3.4/iconvdata/iso-2022-jp-3.c --- glibc-2.3.3/iconvdata/iso-2022-jp-3.c 2002-07-10 22:58:10.000000000 -0400 +++ glibc-2.3.4/iconvdata/iso-2022-jp-3.c 2004-08-02 18:15:40.000000000 -0400 @@ -1,5 +1,5 @@ /* Conversion module for ISO-2022-JP-3. - Copyright (C) 1998-1999, 2000-2002 Free Software Foundation, Inc. + Copyright (C) 1998-1999, 2000-2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998, and Bruno Haible , 2002. @@ -61,8 +61,9 @@ enum JISX0208_1983_set = 2 << 3, /* Esc $ B */ JISX0201_Roman_set = 3 << 3, /* Esc ( J */ JISX0201_Kana_set = 4 << 3, /* Esc ( I */ - JISX0213_1_set = 5 << 3, /* Esc $ ( O */ + JISX0213_1_2000_set = 5 << 3, /* Esc $ ( O */ JISX0213_2_set = 6 << 3, /* Esc $ ( P */ + JISX0213_1_2004_set = 7 << 3, /* Esc $ ( Q */ CURRENT_SEL_MASK = 7 << 3 }; @@ -211,10 +212,12 @@ enum } \ else if (inptr[2] == '(') \ { \ - if (inptr[3] == 'O') \ + if (inptr[3] == 'O' || inptr[3] == 'Q') \ { \ /* JIS X 0213 plane 1 selected. */ \ - set = JISX0213_1_set; \ + /* In this direction we don't need to distinguish the \ + versions from 2000 and 2004. */ \ + set = JISX0213_1_2004_set; \ inptr += 4; \ continue; \ } \ @@ -274,7 +277,7 @@ enum STANDARD_FROM_LOOP_ERR_HANDLER (1); \ } \ } \ - else /* (set == JISX0213_1_set || set == JISX0213_2_set) */ \ + else /* (set == JISX0213_1_2004_set || set == JISX0213_2_set) */ \ { \ if (__builtin_expect (inptr + 1 >= inend, 0)) \ { \ @@ -282,8 +285,9 @@ enum break; \ } \ \ - ch = jisx0213_to_ucs4 (((set - JISX0213_1_set + (1 << 3)) << 5) + ch, \ - inptr[1]); \ + ch = jisx0213_to_ucs4 ( \ + ((JISX0213_1_2004_set - set + (1 << 3)) << 5) + ch, \ + inptr[1]); \ if (ch == 0) \ STANDARD_FROM_LOOP_ERR_HANDLER (1); \ \ @@ -408,7 +412,10 @@ static const struct /* We know the combined character is in JISX0213 plane 1, \ but the buffered character may have been in JISX0208 or in \ JISX0213 plane 1. */ \ - size_t need = (lasttwo >> 16 || set != JISX0213_1_set ? 4 : 0); \ + size_t need = \ + (lasttwo >> 16 \ + || (set != JISX0213_1_2000_set && set != JISX0213_1_2004_set) \ + ? 4 : 0); \ \ if (__builtin_expect (outptr + need + 2 > outend, 0)) \ { \ @@ -422,7 +429,7 @@ static const struct *outptr++ = '$'; \ *outptr++ = '('; \ *outptr++ = 'O'; \ - set = JISX0213_1_set; \ + set = JISX0213_1_2000_set; \ } \ lasttwo = comp_table_data[idx].composed; \ *outptr++ = (lasttwo >> 8) & 0xff; \ @@ -529,11 +536,16 @@ static const struct } \ else \ { \ - /* (set == JISX0213_1_set || set == JISX0213_2_set) */ \ + /* (set == JISX0213_1_2000_set || set == JISX0213_1_2004_set \ + || set == JISX0213_2_set) */ \ uint32_t jch = ucs4_to_jisx0213 (ch); \ \ if (jch != 0 \ - && (set == (jch & 0x8000 ? JISX0213_2_set : JISX0213_1_set))) \ + && (jch & 0x8000 \ + ? set == JISX0213_2_set \ + : (set == JISX0213_1_2004_set \ + || (set == JISX0213_1_2000_set \ + && !jisx0213_added_in_2004_p (jch))))) \ { \ if (jch & 0x0080) \ { \ @@ -658,7 +670,11 @@ static const struct if (jch != 0) \ { \ int new_set = \ - (jch & 0x8000 ? JISX0213_2_set : JISX0213_1_set); \ + (jch & 0x8000 \ + ? JISX0213_2_set \ + : jisx0213_added_in_2004_p (jch) \ + ? JISX0213_1_2004_set \ + : JISX0213_1_2000_set); \ \ if (set != new_set) \ { \ @@ -670,7 +686,8 @@ static const struct *outptr++ = ESC; \ *outptr++ = '$'; \ *outptr++ = '('; \ - *outptr++ = ((new_set - JISX0213_1_set) >> 3) + 'O'; \ + *outptr++ = \ + ((new_set - JISX0213_1_2000_set) >> 3) + 'O'; \ set = new_set; \ } \ \ diff -durpN glibc-2.3.3/iconvdata/iso_6937-2.c glibc-2.3.4/iconvdata/iso_6937-2.c --- glibc-2.3.3/iconvdata/iso_6937-2.c 2002-12-02 17:07:56.000000000 -0500 +++ glibc-2.3.4/iconvdata/iso_6937-2.c 2004-01-19 16:42:23.000000000 -0500 @@ -1,5 +1,5 @@ /* Generic conversion to and from ISO 6937-2. - Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -39,13 +39,13 @@ static const uint32_t to_ucs4[256] = /* 0x60 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 0x68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, /* 0x70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, - /* 0x78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, + /* 0x78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, /* 0x80 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, /* 0x88 */ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, /* 0x90 */ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, /* 0x98 */ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - /* 0xa0 */ 0x0000, 0x00a1, 0x00a2, 0x00a3, 0x0024, 0x00a5, 0x0000, 0x00a7, - /* 0xa8 */ 0x0000, 0x2018, 0x201c, 0x00ab, 0x2190, 0x2191, 0x2192, 0x2193, + /* 0xa0 */ 0x0000, 0x00a1, 0x00a2, 0x00a3, 0x0024, 0x00a5, 0x0023, 0x00a7, + /* 0xa8 */ 0x00a4, 0x2018, 0x201c, 0x00ab, 0x2190, 0x2191, 0x2192, 0x2193, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00d7, 0x00b5, 0x00b6, 0x00b7, /* 0xb8 */ 0x00f7, 0x2019, 0x201d, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, /* 0xc0 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -124,7 +124,7 @@ static const uint32_t to_ucs4_comb[15][9 }, /* 0xc5 */ { - /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x20 */ 0x00af, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -317,7 +317,7 @@ static const char from_ucs4[][2] = /* 0x00dc */ "\xc8\x55", "\xc2\x59", "\xec\x00", "\xfb\x00", "\xc1\x61", /* 0x00e1 */ "\xc2\x61", "\xc3\x61", "\xc4\x61", "\xc8\x61", "\xca\x61", /* 0x00e6 */ "\xf1\x00", "\xcb\x63", "\xc1\x65", "\xc2\x65", "\xc3\x65", - /* 0x00eb */ "\xc8\x65", "\xc1\x69", "\xc2\xe9", "\xc3\x69", "\xc8\x69", + /* 0x00eb */ "\xc8\x65", "\xc1\x69", "\xc2\x69", "\xc3\x69", "\xc8\x69", /* 0x00f0 */ "\xf3\x00", "\xc4\x6e", "\xc1\x6f", "\xc2\x6f", "\xc3\x6f", /* 0x00f5 */ "\xc4\x6f", "\xc8\x6f", "\xb8\x00", "\xf9\x00", "\xc1\x75", /* 0x00fa */ "\xc2\x75", "\xc3\x75", "\xc8\x75", "\xc2\x79", "\xfc\x00", @@ -364,14 +364,6 @@ static const char from_ucs4[][2] = ... 0x2190 "\xac\x00", "\xad\x00", "\xae\x00", "\xaf\x00", ... - 0x2500 "\xd6\x00", "\x00\x00", "\xd7\x00", - ... - 0x253c "\xe5\x00", - ... - 0x2571 "\xd8\x00", "\xd9\x00", - ... - 0x25e2 "\xda\x00", "\xdb\x00", - ... 0x266a "\xd5\x00" These would blow up the table and are therefore handled specially in @@ -478,9 +470,10 @@ static const char from_ucs4[][2] = case 0x2c7: \ cp = "\xcf\x20"; \ break; \ - case 0x2d8 ... 0x2dd: \ + case 0x2d8 ... 0x2db: \ + case 0x2dd: \ { \ - static const char map[6] = "\xc6\xc7\xca\xce\x00"; \ + static const char map[6] = "\xc6\xc7\xca\xce\x00\xcd"; \ \ tmp[0] = map[ch - 0x2d8]; \ tmp[1] = ' '; \ @@ -518,27 +511,6 @@ static const char from_ucs4[][2] = tmp[1] = '\0'; \ cp = tmp; \ break; \ - case 0x2500: \ - cp = "\xd6"; \ - break; \ - case 0x2502: \ - cp = "\xd7"; \ - break; \ - case 0x253c: \ - cp = "\xe5"; \ - break; \ - case 0x2571: \ - cp = "\xd8"; \ - break; \ - case 0x2572: \ - cp = "\xd9"; \ - break; \ - case 0x25e2: \ - cp = "\xda"; \ - break; \ - case 0x25e3: \ - cp = "\xdb"; \ - break; \ case 0x266a: \ cp = "\xd5"; \ break; \ diff -durpN glibc-2.3.3/iconvdata/iso8859-1.c glibc-2.3.4/iconvdata/iso8859-1.c --- glibc-2.3.3/iconvdata/iso8859-1.c 2002-12-02 17:07:56.000000000 -0500 +++ glibc-2.3.4/iconvdata/iso8859-1.c 2004-02-07 10:57:34.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion to and from ISO 8859-1. - Copyright (C) 1997-1999, 2000-2002 Free Software Foundation, Inc. + Copyright (C) 1997-1999, 2000-2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -35,7 +35,8 @@ #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO #define LOOPFCT FROM_LOOP #define BODY \ - *((uint32_t *) outptr)++ = *inptr++; + *((uint32_t *) outptr) = *inptr++; \ + outptr += sizeof (uint32_t); #define ONEBYTE_BODY \ { \ return c; \ diff -durpN glibc-2.3.3/iconvdata/jisx0213.c glibc-2.3.4/iconvdata/jisx0213.c --- glibc-2.3.3/iconvdata/jisx0213.c 2002-04-20 03:50:06.000000000 -0400 +++ glibc-2.3.4/iconvdata/jisx0213.c 2004-08-02 18:14:31.000000000 -0400 @@ -1,5 +1,5 @@ /* Mapping tables for JISX0213 character set. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2002. @@ -22,7 +22,7 @@ #include "jisx0213.h" -/* JISX0213 plane 1 (= ISO-IR-228) characters are in the range +/* JISX0213 plane 1 (= ISO-IR-233) characters are in the range 0x{21..7E}{21..7E}. JISX0213 plane 2 (= ISO-IR-229) characters are in the range 0x{21,23..25,28,2C..2F,6E..7E}{21..7E}. @@ -160,7 +160,7 @@ const uint16_t __jisx0213_to_ucs_main[12 0x1000, 0x1001, 0x1002, 0x830c, 0x830e, 0x10fb, 0x831a, 0x831b, 0x831f, 0x8301, 0x109b, 0x109c, 0x00b4, 0x8340, 0x00a8, 0x833e, 0x83e3, 0x833f, 0x10fd, 0x10fe, 0x109d, 0x109e, 0x1003, 0x2edd, - 0x1005, 0x1006, 0x1007, 0x10fc, 0x0715, 0x0710, 0x830f, 0x833c, + 0x1005, 0x1006, 0x1007, 0x10fc, 0x0714, 0x0710, 0x830f, 0x833c, 0x101c, 0x0716, 0x835c, 0x0726, 0x0725, 0x0718, 0x0719, 0x071c, 0x071d, 0x8308, 0x8309, 0x1014, 0x1015, 0x833b, 0x833d, 0x835b, 0x835d, 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, @@ -186,7 +186,7 @@ const uint16_t __jisx0213_to_ucs_main[12 0x0cb7, 0x0cb6, 0x0cc1, 0x0cc0, 0x0897, 0x0898, 0x0896, 0x0899, 0x08c4, 0x08e8, 0x08e6, 0x08e7, 0x08e9, 0x0f34, 0x0f35, 0x8310, 0x8311, 0x8312, 0x8313, 0x8314, 0x8315, 0x8316, 0x8317, 0x8318, - 0x8319, 0x0999, 0x0cc9, 0x103d, 0x8246, 0x8245, 0x0ce6, 0x0722, + 0x8319, 0x0fbf, 0x0cc9, 0x103d, 0x8246, 0x8245, 0x0ce6, 0x0722, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8327, 0x8328, 0x8329, 0x832a, 0x832b, 0x832c, 0x832d, 0x832e, 0x832f, 0x8330, 0x8331, 0x8332, 0x8333, 0x8334, 0x8335, 0x8336, 0x8337, 0x8338, @@ -326,7 +326,7 @@ const uint16_t __jisx0213_to_ucs_main[12 0x0000, 0x0000, 0x092e, 0x0000, 0x0000, 0x0000, 0x0000, 0x091f, 0x09bf, 0x0000, 0x0000, 0x0000, 0x0e56, 0x0d1e, /* 0x12E21..0x12E7E */ - 0x0000, 0x840b, 0x1402, 0x2e28, 0x2e2f, 0x2e30, 0x2e8d, 0x2ee1, + 0x2ff1, 0x840b, 0x1402, 0x2e28, 0x2e2f, 0x2e30, 0x2e8d, 0x2ee1, 0x2efd, 0x2eff, 0x2f03, 0x2f0b, 0x2f60, 0x2f48, 0x2f49, 0x2f56, 0x2f5f, 0x2f6a, 0x2f6c, 0x2f7e, 0x2f8a, 0x2f94, 0x2f97, 0x8130, 0x2fc9, 0x2fe0, 0x3001, 0x3002, 0x300e, 0x3018, 0x3027, 0x302e, @@ -343,14 +343,14 @@ const uint16_t __jisx0213_to_ucs_main[12 0x3581, 0x3586, 0x358e, 0x8136, 0x35ad, 0x35ce, 0x8137, 0x3608, 0x360e, 0x363b, 0x3649, 0x3676, 0x3666, 0x8138, 0x366f, 0x3671, 0x3672, 0x3699, 0x369e, 0x36a9, 0x36ac, 0x36b3, 0x36c9, 0x36ca, - 0x370a, 0x913d, 0x3721, 0x372f, 0x3733, 0x3734, 0x3770, 0x3777, - 0x377c, 0x379c, 0x810f, 0x921b, 0x37b8, 0x37c7, 0x37c8, 0x37cf, + 0x370a, 0x923d, 0x3721, 0x372f, 0x3733, 0x3734, 0x3770, 0x3777, + 0x377c, 0x379c, 0x810f, 0x931b, 0x37b8, 0x37c7, 0x37c8, 0x37cf, 0x37e4, 0x37ed, 0x37f5, 0x37f6, 0x37ff, 0x3809, 0x8110, 0x3861, - 0x3864, 0x8139, 0x387c, 0x3889, 0x389e, 0x813a, 0x38a9, 0x936e, + 0x3864, 0x8139, 0x387c, 0x3889, 0x389e, 0x813a, 0x38a9, 0x946e, 0x38d2, 0x38ce, 0x38d4, 0x38da, 0x38e0, 0x38e9, 0x390c, 0x6641, 0x395d, 0x396d, 0x398b, 0x3992, 0x39a4, 0x39c3, 0x39d2, 0x39dd, 0x3a13, 0x3a23, 0x3a67, 0x3a6d, 0x3a77, 0x3a7e, 0x3a84, 0x3a9e, - 0x3aa7, 0x3ac4, 0x97bd, 0x3b19, 0x3b25, 0x0000, + 0x3aa7, 0x3ac4, 0x98bd, 0x3b19, 0x3b25, 0x325d, /* 0x13021..0x1307E */ 0x2e9c, 0x3516, 0x3a03, 0x763f, 0x34c0, 0x411b, 0x4328, 0x39f6, 0x7022, 0x6475, 0x631c, 0x5a50, 0x40aa, 0x43e1, 0x4e25, 0x45ed, @@ -761,12 +761,12 @@ const uint16_t __jisx0213_to_ucs_main[12 0x674b, 0x70ce, 0x316d, 0x7e93, 0x5984, 0x608b, 0x7332, 0x6ad6, 0x302d, 0x348c, 0x6a71, 0x4b6a, 0x6cc4, 0x6107, 0x40d1, 0x47a0, 0x7df2, 0x2e99, 0x2e98, 0x7c10, 0x6a6b, 0x65c1, 0x6568, 0x4900, - 0x4e7e, 0x5897, 0x6155, 0x0000, 0x3b41, 0x3b56, 0x3b7d, 0x3b93, + 0x4e7e, 0x5897, 0x6155, 0x8e9f, 0x3b41, 0x3b56, 0x3b7d, 0x3b93, 0x3bd8, 0x3bec, 0x3c12, 0x3c1e, 0x3c23, 0x3c2b, 0x178d, 0x3c62, - 0x813b, 0x813c, 0x95b4, 0x3c7a, 0x3c8f, 0x3c9f, 0x3ca3, 0x3caa, - 0x3cba, 0x3ccb, 0x3cd0, 0x3cd2, 0x3cf4, 0x9b34, 0x17e2, 0x3d0d, + 0x813b, 0x813c, 0x96b4, 0x3c7a, 0x3c8f, 0x3c9f, 0x3ca3, 0x3caa, + 0x3cba, 0x3ccb, 0x3cd0, 0x3cd2, 0x3cf4, 0x9c34, 0x17e2, 0x3d0d, 0x3d27, 0x8111, 0x3d46, 0x3d47, 0x3d53, 0x3d4a, 0x3d6d, 0x3d81, - 0x3da0, 0x3da4, 0x3da7, 0x3db8, 0x3dcb, 0x0000, + 0x3da0, 0x3da4, 0x3da7, 0x3db8, 0x3dcb, 0x341e, /* 0x15021..0x1507E */ 0x3f0c, 0x2e10, 0x2e15, 0x2e2a, 0x2e31, 0x2e36, 0x2e3c, 0x2e3f, 0x2e42, 0x2e56, 0x2e58, 0x2e82, 0x2e85, 0x6c6b, 0x2e8a, 0x6212, @@ -1236,7 +1236,7 @@ const uint16_t __jisx0213_to_ucs_main[12 0x7f63, 0x7f5f, 0x7f60, 0x7f61, 0x7f66, 0x7f67, 0x7f6c, 0x7f6a, 0x7f77, 0x7f72, 0x7f76, 0x7f95, 0x7f9c, 0x7fa0, /* 0x17421..0x1747E */ - 0x382f, 0x49c7, 0x7059, 0x5464, 0x31dc, 0x5199, 0x0000, 0x3de2, + 0x382f, 0x49c7, 0x7059, 0x5464, 0x31dc, 0x5199, 0x3653, 0x3de2, 0x3e14, 0x3e18, 0x3e58, 0x3e5e, 0x3ebe, 0x8028, 0x3ecb, 0x3ef9, 0x3f00, 0x3f02, 0x3f07, 0x3f1d, 0x3f23, 0x3f34, 0x3f36, 0x3f3d, 0x3f40, 0x3f45, 0x3f54, 0x3f58, 0x3f64, 0x3f67, 0x3f7d, 0x3f89, @@ -1252,24 +1252,24 @@ const uint16_t __jisx0213_to_ucs_main[12 0x44c4, 0x44ca, 0x44d0, 0x44f7, 0x44fb, 0x4522, 0x4529, 0x8141, 0x4567, 0x459d, 0x8142, 0x4600, 0x4609, 0x4615, 0x461e, 0x463a, 0x4622, 0x4624, 0x462b, 0x4630, 0x4631, 0x4633, 0x46fb, 0x4648, - 0x464c, 0xa7c4, 0x4659, 0x465a, 0x4661, 0x4665, 0x4673, 0x4677, + 0x464c, 0xa8c4, 0x4659, 0x465a, 0x4661, 0x4665, 0x4673, 0x4677, 0x4678, 0x468d, 0x8143, 0x46a0, 0x46b2, 0x46bb, 0x46c6, 0x46c8, 0x1b22, 0x46db, 0x46e8, 0x46fa, 0x4713, 0x8029, 0x4733, 0x4766, 0x4747, 0x4748, 0x477b, 0x4781, 0x4793, 0x4798, 0x479b, 0x47bb, 0x47f9, 0x47c0, 0x47d7, 0x47fc, 0x4801, 0x4852, 0x481d, 0x482c, 0x4831, 0x485b, 0x4872, 0x4875, 0x8144, 0x48a3, 0x48a5, 0x48b2, 0x48c8, 0x48d0, 0x48e8, 0x48ed, 0x48f0, 0x48f1, 0x48fc, 0x490a, - 0x4949, 0xaac4, 0x4935, 0x4942, 0x4957, 0x4963, 0x4964, 0x4968, + 0x4949, 0xabc4, 0x4935, 0x4942, 0x4957, 0x4963, 0x4964, 0x4968, 0x4980, 0x8114, 0x49a5, 0x49ad, 0x49cf, 0x1bb6, /* 0x17621..0x1767E */ 0x1bc3, 0x49e2, 0x49e9, 0x49ea, 0x49f5, 0x49f6, 0x4a0f, 0x4a15, - 0xac3f, 0x4a3b, 0x4a3e, 0x4a45, 0x4a50, 0x4a56, 0x4a5b, 0x4a6b, - 0x4a73, 0xac63, 0x4a89, 0x4a94, 0x4a9d, 0x4a9e, 0x4aa5, 0x4ae4, + 0xad3f, 0x4a3b, 0x4a3e, 0x4a45, 0x4a50, 0x4a56, 0x4a5b, 0x4a6b, + 0x4a73, 0xad63, 0x4a89, 0x4a94, 0x4a9d, 0x4a9e, 0x4aa5, 0x4ae4, 0x4ae7, 0x1c0f, 0x801d, 0x4b1b, 0x4b1e, 0x4b2c, 0x4b35, 0x4b46, 0x4b56, 0x4b60, 0x4b65, 0x4b67, 0x4b77, 0x4b82, 0x4ba9, 0x4bad, 0x8070, 0x4bcf, 0x4bd6, 0x4bd7, 0x4bff, 0x4c05, 0x4c10, 0x4c33, 0x4c59, 0x4c5c, 0x4caa, 0x4c74, 0x4c76, 0x4c85, 0x4c86, 0x4c98, - 0x4c9c, 0x4cfb, 0x4cc6, 0x4cd4, 0x4ce0, 0x4ceb, 0x4cee, 0xaffe, + 0x4c9c, 0x4cfb, 0x4cc6, 0x4cd4, 0x4ce0, 0x4ceb, 0x4cee, 0xb0fe, 0x4d04, 0x4d0e, 0x4d2e, 0x4d31, 0x4d39, 0x4d3f, 0x4d58, 0x4d65, 0x8145, 0x4d82, 0x4d87, 0x4d89, 0x4d94, 0x4daa, 0x4dac, 0x4dbf, 0x4dc4, 0x4dd6, 0x4dda, 0x4ddb, 0x4ddd, 0x4dfc, 0x8146, 0x4e34, @@ -1284,7 +1284,7 @@ const uint16_t __jisx0213_to_ucs_main[12 0x5130, 0x5146, 0x5147, 0x5151, 0x8148, 0x5152, 0x515c, 0x5160, 0x5168, 0x8115, 0x5185, 0x5187, 0x5192, 0x51c1, 0x51ba, 0x51c4, 0x51fe, 0x5200, 0x5215, 0x5255, 0x5256, 0x1e3f, 0x528d, 0x529b, - 0x52be, 0x52c0, 0x52fb, 0xb6f1, 0x5327, 0x5328, 0x8116, 0x5350, + 0x52be, 0x52c0, 0x52fb, 0xb7f1, 0x5327, 0x5328, 0x8116, 0x5350, 0x5366, 0x537c, 0x5395, 0x539f, 0x53a0, 0x53a2, 0x53a6, 0x53ab, 0x53c9, 0x53cf, 0x53d6, 0x53d9, 0x53e3, 0x53e9, /* 0x17821..0x1787E */ @@ -1299,18 +1299,18 @@ const uint16_t __jisx0213_to_ucs_main[12 0x569b, 0x569d, 0x569e, 0x56a6, 0x56aa, 0x56b6, 0x56c5, 0x56cc, 0x56ce, 0x56d4, 0x56e6, 0x56f1, 0x56fc, 0x570a, 0x5719, 0x5734, 0x5736, 0x5746, 0x574d, 0x574e, 0x575c, 0x575f, 0x5762, 0x577a, - 0x5780, 0x5794, 0x57aa, 0x57e0, 0x582d, 0xc08e, + 0x5780, 0x5794, 0x57aa, 0x57e0, 0x582d, 0xc18e, /* 0x17921..0x1797E */ 0x5843, 0x584e, 0x584f, 0x5851, 0x5868, 0x586e, 0x814b, 0x58b0, - 0xc10e, 0x58ad, 0x58e4, 0x58f2, 0x5900, 0x58f7, 0x591c, 0x592e, + 0xc20e, 0x58ad, 0x58e4, 0x58f2, 0x5900, 0x58f7, 0x591c, 0x592e, 0x5931, 0x5934, 0x814c, 0x814d, 0x5945, 0x5946, 0x814e, 0x814f, 0x8150, 0x595c, 0x8151, 0x8119, 0x811a, 0x5979, 0x8152, 0x8153, - 0x811b, 0x5998, 0x59b1, 0x59b8, 0x59c8, 0x59ca, 0xc271, 0x59d4, + 0x811b, 0x5998, 0x59b1, 0x59b8, 0x59c8, 0x59ca, 0xc371, 0x59d4, 0x59de, 0x59eb, 0x59ed, 0x5a03, 0x8154, 0x5a39, 0x5a5d, 0x5a6d, - 0x8155, 0x5a85, 0x5aa0, 0xc3c4, 0x5ab3, 0x5abb, 0x5ace, 0x5aeb, + 0x8155, 0x5a85, 0x5aa0, 0xc4c4, 0x5ab3, 0x5abb, 0x5ace, 0x5aeb, 0x5afd, 0x5b12, 0x5b2d, 0x5b3b, 0x5b47, 0x5b4e, 0x5b60, 0x5b6d, 0x5b6f, 0x5b72, 0x5b9e, 0x8156, 0x5bd7, 0x5bd9, 0x5c01, 0x5c31, - 0x5c1e, 0x5c20, 0x5c33, 0x5c36, 0x2264, 0xc6a1, 0x5c59, 0x5c6d, + 0x5c1e, 0x5c20, 0x5c33, 0x5c36, 0x2264, 0xc7a1, 0x5c59, 0x5c6d, 0x5c79, 0x5c8f, 0x5c94, 0x5ca0, 0x5cbc, 0x5cd5, 0x5cd9, 0x5cdd, 0x5d07, 0x5d08, 0x5d13, 0x5d1d, 0x5d23, 0x5d31, /* 0x17A21..0x17A7E */ @@ -1321,7 +1321,7 @@ const uint16_t __jisx0213_to_ucs_main[12 0x5fec, 0x5fee, 0x5ffa, 0x815b, 0x6014, 0x6026, 0x6035, 0x6037, 0x603c, 0x60ca, 0x60d7, 0x60e0, 0x60f3, 0x6118, 0x614a, 0x6160, 0x6167, 0x6168, 0x616d, 0x61bb, 0x61ca, 0x61cf, 0x61d7, 0x815c, - 0x2453, 0x245b, 0x6260, 0x6274, 0xd1ff, 0x628e, 0x62a1, 0x62a3, + 0x2453, 0x245b, 0x6260, 0x6274, 0xd2ff, 0x628e, 0x62a1, 0x62a3, 0x62a4, 0x62a9, 0x62ae, 0x62b7, 0x62be, 0x62bf, 0x62c6, 0x62d5, 0x62fd, 0x62fe, 0x6300, 0x6301, 0x6362, 0x6322, 0x632d, 0x633a, 0x6343, 0x6347, 0x6351, 0x6355, 0x637d, 0x6386, 0x6392, 0x6398, @@ -1329,14 +1329,14 @@ const uint16_t __jisx0213_to_ucs_main[12 /* 0x17B21..0x17B7E */ 0x63d1, 0x63e1, 0x63ea, 0x6401, 0x6406, 0x640a, 0x815f, 0x6448, 0x645f, 0x6470, 0x6473, 0x6485, 0x649e, 0x64af, 0x64b4, 0x64ba, - 0x64c0, 0x64c2, 0xd340, 0x6532, 0x651e, 0x6523, 0x652f, 0x6559, + 0x64c0, 0x64c2, 0xd440, 0x6532, 0x651e, 0x6523, 0x652f, 0x6559, 0x6564, 0x811f, 0x65ad, 0x657a, 0x658c, 0x658f, 0x65a2, 0x65b0, 0x65cb, 0x65ce, 0x65ed, 0x6612, 0x65ff, 0x6604, 0x6605, 0x6610, - 0xd574, 0x6618, 0x6629, 0x6638, 0x6657, 0x665b, 0x8036, 0x6662, + 0xd674, 0x6618, 0x6629, 0x6638, 0x6657, 0x665b, 0x8036, 0x6662, 0x259d, 0x666c, 0x6675, 0x6698, 0x66b8, 0x66fa, 0x66fc, 0x66fd, 0x670b, 0x6771, 0x6787, 0x6788, 0x67ac, 0x67ad, 0x67b5, 0x25ea, 0x67d6, 0x67ec, 0x6806, 0x680a, 0x6810, 0x6814, 0x681f, 0x6898, - 0x68aa, 0x68ca, 0x68ce, 0xd784, 0x68f5, 0x691c, 0x8160, 0x6918, + 0x68aa, 0x68ca, 0x68ce, 0xd884, 0x68f5, 0x691c, 0x8160, 0x6918, 0x6919, 0x691a, 0x6927, 0x6930, 0x6932, 0x6939, 0x6940, 0x6994, 0x8161, 0x69d4, 0x69e5, 0x69f6, 0x6a12, 0x6a15, /* 0x17C21..0x17C7E */ @@ -1345,8 +1345,8 @@ const uint16_t __jisx0213_to_ucs_main[12 0x6b46, 0x6b54, 0x6b59, 0x6b69, 0x6b9d, 0x6c49, 0x6c68, 0x8164, 0x6ce1, 0x6cf4, 0x6cf8, 0x6cfe, 0x8165, 0x6d12, 0x6d1b, 0x6daf, 0x6dce, 0x6dd1, 0x6dd7, 0x6e20, 0x6e23, 0x6e3d, 0x6e70, 0x6e7b, - 0xe077, 0x6ec0, 0x2844, 0x6efa, 0x6f1e, 0x6f2d, 0x6f36, 0x6f54, - 0xe14d, 0x6fa6, 0x6fb5, 0x6fe4, 0x6fe8, 0x6fee, 0x7008, 0x702d, + 0xe177, 0x6ec0, 0x2844, 0x6efa, 0x6f1e, 0x6f2d, 0x6f36, 0x6f54, + 0xe24d, 0x6fa6, 0x6fb5, 0x6fe4, 0x6fe8, 0x6fee, 0x7008, 0x702d, 0x8167, 0x7088, 0x7095, 0x7097, 0x7099, 0x709b, 0x70a2, 0x70b3, 0x70be, 0x70c4, 0x70c5, 0x70c7, 0x70d7, 0x70dd, 0x70de, 0x70ef, 0x70f4, 0x8126, 0x7114, 0x7115, 0x7116, 0x7122, 0x7123, 0x7127, @@ -1374,10 +1374,10 @@ const uint16_t __jisx0213_to_ucs_main[12 0x7ba7, 0x7bc1, 0x7bce, 0x7be5, 0x7bf8, 0x7bfd, 0x7c00, 0x7c23, 0x7c41, 0x7c4f, 0x7c50, 0x7c53, 0x7c63, 0x7c65, 0x7c77, 0x7d1d, 0x7d1e, 0x7d43, 0x7d47, 0x7d52, 0x7d63, 0x7d70, 0x7d7c, 0x7d8a, - 0x7d96, 0x7dc0, 0x7dac, 0x7dbc, 0x7dd7, 0xf590, 0x7de7, 0x7e07, + 0x7d96, 0x7dc0, 0x7dac, 0x7dbc, 0x7dd7, 0xf690, 0x7de7, 0x7e07, 0x7e15, 0x7e7c, 0x7e9e, 0x7ea4, 0x7eac, 0x7eaf, 0x7eb4, 0x7eb5, 0x7ec3, 0x7ed1, 0x7f10, 0x7f39, 0x7f57, 0x7f90, 0x7f94, 0x7f97, - 0x7fa2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7fa2, 0x39f8, 0x3c5b, 0x3e77, 0x5626, 0x5e6b, /* 0x22121..0x2217E */ 0x8489, 0x2e02, 0x2e0f, 0x2e12, 0x2e29, 0x2e2b, 0x2e2e, 0x2e40, 0x2e47, 0x2e48, 0x84a2, 0x2e51, 0x1406, 0x84a4, 0x2e5a, 0x2e69, @@ -1399,111 +1399,111 @@ const uint16_t __jisx0213_to_ucs_main[12 0x8b3a, 0x32a4, 0x32a6, 0x32af, 0x32ba, 0x32bb, 0x32ca, 0x151f, 0x32d1, 0x8bb9, 0x32f7, 0x330a, 0x330b, 0x3324, 0x3335, 0x333e, 0x3342, 0x8c7c, 0x8c9d, 0x3367, 0x336c, 0x337a, 0x33a4, 0x33b4, - 0x8d53, 0x33b7, 0x33c0, 0x8d9d, 0x155d, 0x155e, 0x33d5, 0x33da, + 0x8dd3, 0x33b7, 0x33c0, 0x8e1d, 0x155d, 0x155e, 0x33d5, 0x33da, 0x1563, 0x33f4, 0x33f5, 0x3455, 0x3424, 0x3428, 0x156e, 0x3443, 0x3462, 0x3466, 0x346c, 0x348a, 0x348d, 0x3495, 0x34a0, 0x34a6, - 0x34ad, 0x34ae, 0x34b7, 0x34ba, 0x34bf, 0x34c3, 0x8e45, 0x34ec, + 0x34ad, 0x34ae, 0x34b7, 0x34ba, 0x34bf, 0x34c3, 0x8f45, 0x34ec, 0x34ef, 0x34f1, 0x34f3, 0x3500, 0x3501, 0x3509, /* 0x22421..0x2247E */ 0x353c, 0x3541, 0x15a6, 0x3547, 0x354a, 0x15a8, 0x3560, 0x3561, - 0x3564, 0x8ee1, 0x357d, 0x3582, 0x3588, 0x3591, 0x15c5, 0x35d2, - 0x8f95, 0x8f6d, 0x35bf, 0x35c9, 0x35cc, 0x35d1, 0x35dd, 0x15da, - 0x35e2, 0x8f64, 0x35e9, 0x3628, 0x905f, 0x3607, 0x3610, 0x3630, + 0x3564, 0x8fe1, 0x357d, 0x3582, 0x3588, 0x3591, 0x15c5, 0x35d2, + 0x9095, 0x906d, 0x35bf, 0x35c9, 0x35cc, 0x35d1, 0x35dd, 0x15da, + 0x35e2, 0x9064, 0x35e9, 0x3628, 0x915f, 0x3607, 0x3610, 0x3630, 0x3637, 0x15f4, 0x363d, 0x363f, 0x3640, 0x3647, 0x365e, 0x3660, 0x366d, 0x1605, 0x3688, 0x368c, 0x3695, 0x369a, 0x369d, 0x36a8, 0x36ad, 0x36b2, 0x36c5, 0x36cd, 0x36df, 0x36e8, 0x36f6, 0x36f7, - 0x9101, 0x3715, 0x3723, 0x9155, 0x3729, 0x917b, 0x3745, 0x3746, - 0x374c, 0x374d, 0x9174, 0x3768, 0x376f, 0x3773, 0x3774, 0x3775, - 0x377b, 0x91e4, 0x91d7, 0x37ac, 0x379a, 0x379d, 0x379e, 0x37a8, - 0x37d7, 0x91fd, 0x37cc, 0x9236, 0x9244, 0x37de, 0x37e6, 0x37f0, + 0x9201, 0x3715, 0x3723, 0x9255, 0x3729, 0x927b, 0x3745, 0x3746, + 0x374c, 0x374d, 0x9274, 0x3768, 0x376f, 0x3773, 0x3774, 0x3775, + 0x377b, 0x92e4, 0x92d7, 0x37ac, 0x379a, 0x379d, 0x379e, 0x37a8, + 0x37d7, 0x92fd, 0x37cc, 0x9336, 0x9344, 0x37de, 0x37e6, 0x37f0, 0x164a, 0x37f8, 0x37fb, 0x37fd, 0x3804, 0x381e, /* 0x22521..0x2257E */ - 0x3820, 0x3827, 0x3832, 0x3839, 0x92c4, 0x3849, 0x384c, 0x3867, + 0x3820, 0x3827, 0x3832, 0x3839, 0x93c4, 0x3849, 0x384c, 0x3867, 0x388a, 0x388b, 0x388d, 0x388f, 0x3890, 0x3894, 0x389d, 0x38aa, - 0x38b1, 0x936d, 0x38c3, 0x38cd, 0x38e2, 0x38f3, 0x38f4, 0x3905, - 0x3906, 0x390b, 0x390d, 0x3914, 0x3924, 0x94d7, 0x1691, 0x393d, - 0x1699, 0x3946, 0x1696, 0xd229, 0x395b, 0x395f, 0x9547, 0x3975, + 0x38b1, 0x946d, 0x38c3, 0x38cd, 0x38e2, 0x38f3, 0x38f4, 0x3905, + 0x3906, 0x390b, 0x390d, 0x3914, 0x3924, 0x95d7, 0x1691, 0x393d, + 0x1699, 0x3946, 0x1696, 0xd329, 0x395b, 0x395f, 0x9647, 0x3975, 0x3976, 0x397c, 0x399f, 0x39ae, 0x39bc, 0x39c8, 0x39cd, 0x39de, - 0x39e3, 0x39e4, 0x39e7, 0x39ee, 0x9606, 0x9642, 0x16cf, 0x3a0c, + 0x39e3, 0x39e4, 0x39e7, 0x39ee, 0x9706, 0x9742, 0x16cf, 0x3a0c, 0x3a0d, 0x3a17, 0x3a27, 0x3a2d, 0x3a55, 0x3a65, 0x3a7a, 0x3a8b, 0x3a9c, 0x3a9f, 0x3aa0, 0x3aa2, 0x3ab1, 0x3ab3, 0x3ab5, 0x3aba, 0x3abf, 0x3ada, 0x3adc, 0x3ae0, 0x3ae5, 0x3af0, 0x3aee, 0x3af5, 0x3b00, 0x3b08, 0x3b17, 0x3b34, 0x3b2d, 0x3b4c, 0x3b52, 0x3b68, - 0x3b6f, 0x3b7c, 0x3b7f, 0x3b81, 0x3b84, 0x98c3, + 0x3b6f, 0x3b7c, 0x3b7f, 0x3b81, 0x3b84, 0x99c3, /* 0x22821..0x2287E */ 0x3b96, 0x3bac, 0x1761, 0x3bc0, 0x1762, 0x3bce, 0x3bd6, 0x176c, - 0x176b, 0x3bf1, 0x3bfd, 0x1775, 0x3c03, 0x3c29, 0x3c30, 0x9956, - 0x3c5f, 0x3c63, 0x3c67, 0x3c68, 0x3c69, 0x3c70, 0x9a2d, 0x9a45, - 0x3c7c, 0x9a78, 0x9a62, 0x3c88, 0x3c8a, 0x17c1, 0x9aa1, 0x9a9c, - 0x3ca0, 0x3ca2, 0x3ca6, 0x3ca7, 0x9a92, 0x3cad, 0x3cb5, 0x9ab7, - 0x3cc9, 0x9ae0, 0x9b33, 0x3d06, 0x3d10, 0x3d2b, 0x3d1d, 0x3d20, + 0x176b, 0x3bf1, 0x3bfd, 0x1775, 0x3c03, 0x3c29, 0x3c30, 0x9a56, + 0x3c5f, 0x3c63, 0x3c67, 0x3c68, 0x3c69, 0x3c70, 0x9b2d, 0x9b45, + 0x3c7c, 0x9b78, 0x9b62, 0x3c88, 0x3c8a, 0x17c1, 0x9ba1, 0x9b9c, + 0x3ca0, 0x3ca2, 0x3ca6, 0x3ca7, 0x9b92, 0x3cad, 0x3cb5, 0x9bb7, + 0x3cc9, 0x9be0, 0x9c33, 0x3d06, 0x3d10, 0x3d2b, 0x3d1d, 0x3d20, 0x3d24, 0x3d26, 0x3d31, 0x3d39, 0x3d42, 0x17e8, 0x3d61, 0x3d6a, - 0x17f4, 0x3d70, 0x9c1e, 0x17fd, 0x3d88, 0x1800, 0x3d92, 0x3d94, - 0x3d97, 0x3d99, 0x3db0, 0x3db2, 0x3db4, 0x9c76, 0x3db9, 0x3dd1, - 0x3dd7, 0x3dd8, 0x3de0, 0x9cfa, 0x3de4, 0x3de9, 0x182f, 0x3e00, + 0x17f4, 0x3d70, 0x9d1e, 0x17fd, 0x3d88, 0x1800, 0x3d92, 0x3d94, + 0x3d97, 0x3d99, 0x3db0, 0x3db2, 0x3db4, 0x9d76, 0x3db9, 0x3dd1, + 0x3dd7, 0x3dd8, 0x3de0, 0x9dfa, 0x3de4, 0x3de9, 0x182f, 0x3e00, 0x1836, 0x3e12, 0x3e15, 0x1840, 0x3e1f, 0x3e2e, 0x3e3e, 0x3e49, 0x185c, 0x3e56, 0x1861, 0x3e6b, 0x3e6c, 0x3e6d, /* 0x22C21..0x22C7E */ - 0x3e6e, 0x9d7b, 0x3ea5, 0x3eaa, 0x3eac, 0x3eb9, 0x3ebf, 0x3ec6, - 0x3ed2, 0x3ed9, 0x9f1e, 0x3efd, 0x3f08, 0x3f0e, 0x3f1c, 0x9fad, + 0x3e6e, 0x9e7b, 0x3ea5, 0x3eaa, 0x3eac, 0x3eb9, 0x3ebf, 0x3ec6, + 0x3ed2, 0x3ed9, 0xa01e, 0x3efd, 0x3f08, 0x3f0e, 0x3f1c, 0xa0ad, 0x3f1e, 0x3f47, 0x3f63, 0x3f72, 0x3f7e, 0x3f8f, 0x3fa2, 0x3fa4, 0x3fb8, 0x3fc4, 0x18fa, 0x3fc7, 0x3fcb, 0x3fd2, 0x3fd3, 0x3fd4, 0x3fe2, 0x3fee, 0x3fef, 0x3ff3, 0x3ffc, 0x1917, 0x4017, 0x4022, - 0x4024, 0x191a, 0x404c, 0x407f, 0x408a, 0x4095, 0x40a8, 0xa0f3, + 0x4024, 0x191a, 0x404c, 0x407f, 0x408a, 0x4095, 0x40a8, 0xa1f3, 0x40b0, 0x40b1, 0x40be, 0x40c8, 0x40d9, 0x40db, 0x40ee, 0x40f2, 0x40f5, 0x4110, 0x4112, 0x4113, 0x4119, 0x411e, 0x413a, 0x196f, - 0x4141, 0x4146, 0x4160, 0x417c, 0xa15b, 0x4192, 0x4193, 0x4197, - 0x4198, 0x41a5, 0x41a8, 0x41ad, 0xa1ab, 0x41d5, 0x41dd, 0x41df, - 0x41f5, 0xa28f, 0x4215, 0x4223, 0x4229, 0x4246, 0x424c, 0x4251, + 0x4141, 0x4146, 0x4160, 0x417c, 0xa25b, 0x4192, 0x4193, 0x4197, + 0x4198, 0x41a5, 0x41a8, 0x41ad, 0xa2ab, 0x41d5, 0x41dd, 0x41df, + 0x41f5, 0xa38f, 0x4215, 0x4223, 0x4229, 0x4246, 0x424c, 0x4251, 0x4252, 0x4261, 0x4264, 0x427b, 0x426d, 0x4273, /* 0x22D21..0x22D7E */ - 0x4299, 0x42a6, 0x42d5, 0xa3b8, 0x42fd, 0x4303, 0x430d, 0x4310, - 0xa44f, 0xa450, 0x4332, 0x4335, 0x433b, 0x433c, 0x4341, 0x4344, - 0x434e, 0xa446, 0x4359, 0xa51d, 0xa4a6, 0x436c, 0x4384, 0x4399, - 0xa524, 0x4394, 0x43bd, 0x43f7, 0x43d4, 0x43d5, 0x43dc, 0x43e0, + 0x4299, 0x42a6, 0x42d5, 0xa4b8, 0x42fd, 0x4303, 0x430d, 0x4310, + 0xa54f, 0xa550, 0x4332, 0x4335, 0x433b, 0x433c, 0x4341, 0x4344, + 0x434e, 0xa546, 0x4359, 0xa61d, 0xa5a6, 0x436c, 0x4384, 0x4399, + 0xa624, 0x4394, 0x43bd, 0x43f7, 0x43d4, 0x43d5, 0x43dc, 0x43e0, 0x43eb, 0x43ec, 0x43f2, 0x4409, 0x441e, 0x4425, 0x4429, 0x442f, 0x445a, 0x445b, 0x445d, 0x4473, 0x447d, 0x4487, 0x4491, 0x449d, - 0x449f, 0x44cb, 0x44cc, 0x44d5, 0x44d7, 0xa6e1, 0x44e4, 0x44e5, + 0x449f, 0x44cb, 0x44cc, 0x44d5, 0x44d7, 0xa7e1, 0x44e4, 0x44e5, 0x44ff, 0x4504, 0x1a6e, 0x450f, 0x4514, 0x4516, 0x1a73, 0x451e, 0x4532, 0x4544, 0x4554, 0x456b, 0x457a, 0x4581, 0x4584, 0x4585, 0x458a, 0x45b2, 0x45b5, 0x45b8, 0x45bf, 0x45c2, 0x45c9, 0x45d4, 0x1ad6, 0x45f2, 0x45f9, 0x45fc, 0x4604, 0x4608, 0x4621, 0x462a, - 0x4645, 0x4651, 0x464e, 0x1aea, 0xa7c3, 0x4657, + 0x4645, 0x4651, 0x464e, 0x1aea, 0xa8c3, 0x4657, /* 0x22E21..0x22E7E */ - 0x465b, 0x4663, 0xa7f5, 0xa7b6, 0x466a, 0x466b, 0x466c, 0x466d, + 0x465b, 0x4663, 0xa8f5, 0xa8b6, 0x466a, 0x466b, 0x466c, 0x466d, 0x467b, 0x4680, 0x4690, 0x4692, 0x4699, 0x1b0e, 0x46ad, 0x46b1, 0x46b5, 0x1b1a, 0x46bf, 0x1b1c, 0x46ec, 0x1ad7, 0x4701, 0x4705, - 0x4712, 0xa872, 0x4719, 0xa8d3, 0xa8d2, 0x474c, 0x474d, 0x4754, - 0x475d, 0xa8d0, 0xa8e4, 0xa8d5, 0x4774, 0x4776, 0xa8da, 0x4792, - 0xa8df, 0x6363, 0x4810, 0x47b0, 0x47b2, 0x47c3, 0x47c8, 0x47d2, - 0x47d9, 0x47db, 0x47f0, 0x47f7, 0xa94a, 0xa951, 0xa94b, 0x4818, - 0x481f, 0x482d, 0xa965, 0x4833, 0x483b, 0x483e, 0x4844, 0x4845, + 0x4712, 0xa972, 0x4719, 0xa9d3, 0xa9d2, 0x474c, 0x474d, 0x4754, + 0x475d, 0xa9d0, 0xa9e4, 0xa9d5, 0x4774, 0x4776, 0xa9da, 0x4792, + 0xa9df, 0x6363, 0x4810, 0x47b0, 0x47b2, 0x47c3, 0x47c8, 0x47d2, + 0x47d9, 0x47db, 0x47f0, 0x47f7, 0xaa4a, 0xaa51, 0xaa4b, 0x4818, + 0x481f, 0x482d, 0xaa65, 0x4833, 0x483b, 0x483e, 0x4844, 0x4845, 0x4849, 0x484c, 0x4855, 0x4857, 0x1b77, 0x486b, 0x486e, 0x487a, 0x487c, 0x4882, 0x4890, 0x4896, 0x1b6d, 0x4898, 0x4899, 0x489a, - 0x489c, 0x48aa, 0x48ab, 0x48b4, 0x48bb, 0x48fb, 0xa9e4, 0xaa5a, + 0x489c, 0x48aa, 0x48ab, 0x48b4, 0x48bb, 0x48fb, 0xaae4, 0xab5a, 0x8113, 0x48c3, 0x48c5, 0x48cc, 0x48cf, 0x48d6, /* 0x22F21..0x22F7E */ 0x48d9, 0x48e4, 0x48e5, 0x48ec, 0x48f7, 0x4903, 0x4907, 0x1b87, - 0x1b88, 0xaa94, 0x493b, 0x1b8d, 0x4946, 0x4969, 0x496c, 0x4972, + 0x1b88, 0xab94, 0x493b, 0x1b8d, 0x4946, 0x4969, 0x496c, 0x4972, 0x497a, 0x497f, 0x4992, 0x1ba4, 0x4996, 0x4998, 0x49a6, 0x49b0, - 0x49b7, 0x49ba, 0x49bc, 0x49c0, 0x49d1, 0x49d6, 0xab39, 0xab47, - 0x4a30, 0xab38, 0xab3a, 0x49e3, 0x49ee, 0x49ef, 0x49f3, 0x1bcd, - 0x49f4, 0x49fe, 0x4a11, 0x4a1a, 0x4a1d, 0xac1c, 0x4a32, 0x4a33, + 0x49b7, 0x49ba, 0x49bc, 0x49c0, 0x49d1, 0x49d6, 0xac39, 0xac47, + 0x4a30, 0xac38, 0xac3a, 0x49e3, 0x49ee, 0x49ef, 0x49f3, 0x1bcd, + 0x49f4, 0x49fe, 0x4a11, 0x4a1a, 0x4a1d, 0xad1c, 0x4a32, 0x4a33, 0x4a34, 0x4a3f, 0x4a46, 0x4a49, 0x4a7a, 0x4a4e, 0x4a52, 0x4a64, - 0xac0c, 0x4a7e, 0x4a83, 0x4a8b, 0x1bf0, 0x4a91, 0x4a9f, 0x4aa1, - 0xac64, 0x4aab, 0x4abd, 0x4ac6, 0x4ad4, 0x4ad0, 0x4adc, 0x4add, - 0xacff, 0xace7, 0x4aec, 0x4af1, 0x4af2, 0x4af3, 0x4afd, 0xad24, - 0x4b0b, 0x4b0f, 0x4b10, 0x4b11, 0xad3d, 0x4b17, 0x1c26, 0x4b2f, + 0xad0c, 0x4a7e, 0x4a83, 0x4a8b, 0x1bf0, 0x4a91, 0x4a9f, 0x4aa1, + 0xad64, 0x4aab, 0x4abd, 0x4ac6, 0x4ad4, 0x4ad0, 0x4adc, 0x4add, + 0xadff, 0xade7, 0x4aec, 0x4af1, 0x4af2, 0x4af3, 0x4afd, 0xae24, + 0x4b0b, 0x4b0f, 0x4b10, 0x4b11, 0xae3d, 0x4b17, 0x1c26, 0x4b2f, 0x4b4a, 0x4b58, 0x4b6c, 0x4b75, 0x4b7a, 0x4b81, /* 0x26E21..0x26E7E */ - 0x4b9b, 0x4bae, 0xae98, 0x4bbd, 0x4bbe, 0x4bc7, 0x4bc8, 0x4bc9, + 0x4b9b, 0x4bae, 0xaf98, 0x4bbd, 0x4bbe, 0x4bc7, 0x4bc8, 0x4bc9, 0x4bda, 0x4be6, 0x4be7, 0x4bee, 0x4bf1, 0x4c02, 0x4c0a, 0x4c0e, - 0x4c35, 0x4c36, 0x4c3a, 0xaf7f, 0x4c3f, 0x4c4d, 0x4c5b, 0x4c6d, + 0x4c35, 0x4c36, 0x4c3a, 0xb07f, 0x4c3f, 0x4c4d, 0x4c5b, 0x4c6d, 0x4c84, 0x4c89, 0x1cc3, 0x4c94, 0x4c95, 0x4c97, 0x4cad, 0x4cc2, 0x4cd0, 0x1cd2, 0x4cd6, 0x4cda, 0x4cdc, 0x4ce9, 0x4cec, 0x4ced, - 0xb000, 0x4d00, 0x4d0a, 0x4d24, 0x4d26, 0x4d27, 0x4c67, 0x4d2f, + 0xb100, 0x4d00, 0x4d0a, 0x4d24, 0x4d26, 0x4d27, 0x4c67, 0x4d2f, 0x4d3c, 0x4d5b, 0x4d5e, 0x4d60, 0x4d70, 0x4d80, 0x4d81, 0x4d8a, - 0x4d8d, 0x4d91, 0x4d98, 0xb040, 0x4e17, 0xb0fa, 0xb0f9, 0xb0d3, + 0x4d8d, 0x4d91, 0x4d98, 0xb140, 0x4e17, 0xb1fa, 0xb1f9, 0xb1d3, 0x4dab, 0x4dae, 0x4db4, 0x4dc2, 0x4d34, 0x4dc8, 0x4dce, 0x4dcf, 0x4dd0, 0x4ddf, 0x4de9, 0x4df6, 0x4e36, 0x4e1e, 0x4e22, 0x4e27, 0x1d11, 0x4e32, 0x4e3c, 0x4e48, 0x4e49, 0x4e4b, 0x4e4c, 0x4e4f, @@ -1511,210 +1511,210 @@ const uint16_t __jisx0213_to_ucs_main[12 /* 0x26F21..0x26F7E */ 0x4e93, 0x4ea7, 0x4eb4, 0x4ebf, 0x4ec3, 0x4eca, 0x4ed9, 0x4f35, 0x4eeb, 0x4ef9, 0x4efb, 0x4f0a, 0x4f0c, 0x4f18, 0x4f25, 0x4f36, - 0x4f3c, 0xb17e, 0x4f52, 0x4f57, 0x4f5a, 0x4f60, 0x4f68, 0x4f98, + 0x4f3c, 0xb27e, 0x4f52, 0x4f57, 0x4f5a, 0x4f60, 0x4f68, 0x4f98, 0x4f7d, 0x4f90, 0x4f96, 0x4fbe, 0x4f9f, 0x4fa5, 0x4faf, 0x1d64, - 0x4fb5, 0x4fc8, 0x4fc9, 0x4fda, 0x4fde, 0x4fe9, 0xb296, 0x4ffc, - 0x5000, 0x5007, 0x500a, 0x5023, 0xb303, 0x5039, 0x503a, 0x503c, + 0x4fb5, 0x4fc8, 0x4fc9, 0x4fda, 0x4fde, 0x4fe9, 0xb396, 0x4ffc, + 0x5000, 0x5007, 0x500a, 0x5023, 0xb403, 0x5039, 0x503a, 0x503c, 0x5043, 0x5047, 0x504b, 0x1d9a, 0x5054, 0x5065, 0x5069, 0x506c, 0x506e, 0x5076, 0x507e, 0x5081, 0x5086, 0x5095, 0x5097, 0x50bb, - 0xb3c6, 0x509f, 0x50b1, 0xb3fe, 0x50ec, 0x50ca, 0x50d1, 0x50d3, + 0xb4c6, 0x509f, 0x50b1, 0xb4fe, 0x50ec, 0x50ca, 0x50d1, 0x50d3, 0x50dc, 0x5103, 0x5104, 0x5106, 0x5107, 0x5108, 0x510c, 0x1dc0, 0x512f, 0x5131, 0x5150, 0x514a, 0x5153, 0x515e, 0x1dd4, 0x5196, 0x5180, 0x519b, 0x51a0, 0x51a2, 0x51ae, 0x51af, /* 0x27021..0x2707E */ - 0x51b3, 0xb4bc, 0x51cb, 0x51d3, 0x51d9, 0x51dc, 0x5207, 0x1e05, + 0x51b3, 0xb5bc, 0x51cb, 0x51d3, 0x51d9, 0x51dc, 0x5207, 0x1e05, 0x8149, 0x522b, 0x5234, 0x5238, 0x5239, 0x2e2c, 0x5242, 0x5253, - 0x5257, 0x5263, 0xb529, 0x526e, 0x526f, 0x5278, 0x527f, 0x528e, - 0xb5a5, 0x52ad, 0x52ae, 0x52b0, 0x52b1, 0x52c1, 0x1e60, 0x52cc, + 0x5257, 0x5263, 0xb629, 0x526e, 0x526f, 0x5278, 0x527f, 0x528e, + 0xb6a5, 0x52ad, 0x52ae, 0x52b0, 0x52b1, 0x52c1, 0x1e60, 0x52cc, 0x1e66, 0x1e68, 0x52f3, 0x52fa, 0x5307, 0x5312, 0x5318, 0x5319, 0x1e83, 0x5339, 0x532c, 0x5331, 0x5333, 0x533d, 0x5352, 0x1e94, - 0x536b, 0x536c, 0xb796, 0x536e, 0x536f, 0x5371, 0x5377, 0x5381, + 0x536b, 0x536c, 0xb896, 0x536e, 0x536f, 0x5371, 0x5377, 0x5381, 0x5385, 0x538a, 0x5394, 0x5398, 0x539c, 0x539e, 0x53a5, 0x53a8, 0x53b5, 0x53b7, 0x53b9, 0x53bc, 0x53bf, 0x53c5, 0x53cb, 0x53e1, 0x53e7, 0x53f9, 0x5413, 0x53fa, 0x5401, 0x5424, 0x5431, 0x5439, 0x5453, 0x5440, 0x5443, 0x544d, 0x5452, 0x545d, 0x5471, 0x5481, - 0x5485, 0x5488, 0xb84d, 0x5492, 0x5497, 0x5499, + 0x5485, 0x5488, 0xb94d, 0x5492, 0x5497, 0x5499, /* 0x27121..0x2717E */ 0x54a0, 0x54a1, 0x54a5, 0x54aa, 0x54ab, 0x54b9, 0x54bb, 0x54ba, - 0x54d6, 0x54d8, 0x54de, 0x54ef, 0x54eb, 0xb956, 0x54fa, 0xb96f, - 0x5520, 0x5524, 0x552a, 0x1f57, 0xba16, 0x553d, 0x553e, 0x5540, + 0x54d6, 0x54d8, 0x54de, 0x54ef, 0x54eb, 0xba56, 0x54fa, 0xba6f, + 0x5520, 0x5524, 0x552a, 0x1f57, 0xbb16, 0x553d, 0x553e, 0x5540, 0x5548, 0x554e, 0x5550, 0x5552, 0x556c, 0x5572, 0x5571, 0x557a, - 0x557d, 0x557e, 0x5581, 0xbb14, 0x558c, 0x1f75, 0x55a2, 0x1f77, + 0x557d, 0x557e, 0x5581, 0xbc14, 0x558c, 0x1f75, 0x55a2, 0x1f77, 0x55b0, 0x55b7, 0x55bf, 0x55c0, 0x55c6, 0x55cf, 0x55d3, 0x55dd, 0x55df, 0x55e0, 0x55e7, 0x55ec, 0x55ee, 0x55f1, 0x55f9, 0x5603, - 0x5618, 0x5607, 0x560f, 0x1fae, 0xbc0e, 0x5613, 0x561b, 0x561c, - 0xbc37, 0x5625, 0x5628, 0x563c, 0x5633, 0xbc6a, 0x1fc9, 0x5641, - 0xbc8b, 0x5649, 0x5655, 0x1fd7, 0x566e, 0x5695, 0x569c, 0x56a1, - 0x56a0, 0x56a7, 0x56a8, 0x56af, 0xbd4a, 0x56c9, 0xbd55, 0x56e8, - 0x56ec, 0xbe22, 0x5717, 0x571a, 0x572d, 0x5735, + 0x5618, 0x5607, 0x560f, 0x1fae, 0xbd0e, 0x5613, 0x561b, 0x561c, + 0xbd37, 0x5625, 0x5628, 0x563c, 0x5633, 0xbd6a, 0x1fc9, 0x5641, + 0xbd8b, 0x5649, 0x5655, 0x1fd7, 0x566e, 0x5695, 0x569c, 0x56a1, + 0x56a0, 0x56a7, 0x56a8, 0x56af, 0xbe4a, 0x56c9, 0xbe55, 0x56e8, + 0x56ec, 0xbf22, 0x5717, 0x571a, 0x572d, 0x5735, /* 0x27221..0x2727E */ - 0xbea9, 0x2039, 0xbee5, 0xbecd, 0x5758, 0x5760, 0x576a, 0xbf1e, - 0x5772, 0x577c, 0x577d, 0xbf4c, 0x2058, 0x579a, 0x579f, 0x57a2, + 0xbfa9, 0x2039, 0xbfe5, 0xbfcd, 0x5758, 0x5760, 0x576a, 0xc01e, + 0x5772, 0x577c, 0x577d, 0xc04c, 0x2058, 0x579a, 0x579f, 0x57a2, 0x57a4, 0x57a9, 0x57de, 0x57df, 0x57e4, 0x57e6, 0x57ea, 0x57ec, - 0x2093, 0x57f0, 0x57f4, 0x57fb, 0xc02e, 0x5805, 0x5806, 0x5809, - 0x580d, 0x5819, 0x5821, 0x582c, 0x5847, 0x5864, 0x586a, 0xc0d9, + 0x2093, 0x57f0, 0x57f4, 0x57fb, 0xc12e, 0x5805, 0x5806, 0x5809, + 0x580d, 0x5819, 0x5821, 0x582c, 0x5847, 0x5864, 0x586a, 0xc1d9, 0x588a, 0x5894, 0x58a4, 0x589d, 0x589e, 0x589f, 0x58bb, 0x58c8, 0x58cc, 0x58ce, 0x58d5, 0x58e0, 0x58e1, 0x58e6, 0x58f9, 0x58fa, - 0x58fb, 0x58fe, 0xc1a7, 0x5910, 0x591b, 0x5930, 0x5925, 0x593b, + 0x58fb, 0x58fe, 0xc2a7, 0x5910, 0x591b, 0x5930, 0x5925, 0x593b, 0x594a, 0x5958, 0x595b, 0x2105, 0x5967, 0x5972, 0x5994, 0x5995, 0x5996, 0x599b, 0x59a1, 0x59a9, 0x59b4, 0x59bb, 0x59c2, 0x59c7, - 0x59cc, 0x59cd, 0x59d6, 0x2148, 0xc2a9, 0xc2b4, 0x214f, 0x5a0a, + 0x59cc, 0x59cd, 0x59d6, 0x2148, 0xc3a9, 0xc3b4, 0x214f, 0x5a0a, 0x5a11, 0x5a15, 0x5a1b, 0x5a1e, 0x2163, 0x5a2d, /* 0x27321..0x2737E */ 0x5a38, 0x5a47, 0x5a4c, 0x5a56, 0x5a59, 0x5a5c, 0x5a5f, 0x5a60, 0x5a67, 0x5a6a, 0x5a75, 0x5a78, 0x5a82, 0x5a8a, 0x5a90, 0x5aa3, - 0x5aac, 0xc3d4, 0x21b4, 0x5ab9, 0x5abc, 0x5abe, 0x21bf, 0x5acc, - 0x5ad1, 0x5ae7, 0x5ae8, 0x5af4, 0xc4e4, 0xc4e3, 0x5b07, 0xc4f1, + 0x5aac, 0xc4d4, 0x21b4, 0x5ab9, 0x5abc, 0x5abe, 0x21bf, 0x5acc, + 0x5ad1, 0x5ae7, 0x5ae8, 0x5af4, 0xc5e4, 0xc5e3, 0x5b07, 0xc5f1, 0x5b3d, 0x5b27, 0x5b2a, 0x5b2e, 0x5b2f, 0x5b31, 0x21e6, 0x21f3, 0x5b7f, 0x5b41, 0x21ee, 0x5b55, 0x5b79, 0x5b64, 0x5b66, 0x5b69, - 0x5b73, 0xc532, 0x2207, 0x5b90, 0x5b91, 0x5b9b, 0x220e, 0x5baf, - 0x5bb5, 0x5bbc, 0x5bc5, 0x5bca, 0xc5cb, 0xc5e4, 0x5bd4, 0x5bd6, + 0x5b73, 0xc632, 0x2207, 0x5b90, 0x5b91, 0x5b9b, 0x220e, 0x5baf, + 0x5bb5, 0x5bbc, 0x5bc5, 0x5bca, 0xc6cb, 0xc6e4, 0x5bd4, 0x5bd6, 0x5bda, 0x5bea, 0x5bf0, 0x5c03, 0x5c0b, 0x5c0e, 0x5c0f, 0x5c26, 0x5c45, 0x5c4a, 0x5c51, 0x5c57, 0x5c5e, 0x5c61, 0x5c69, 0x5c6e, - 0x5c6f, 0x5c70, 0xc72e, 0xc756, 0xc765, 0x5ca6, 0xc762, 0x5cb6, - 0x5cb7, 0x5cbf, 0xc7d8, 0x5cc4, 0xc7c2, 0x5cc8, + 0x5c6f, 0x5c70, 0xc82e, 0xc856, 0xc865, 0x5ca6, 0xc862, 0x5cb6, + 0x5cb7, 0x5cbf, 0xc8d8, 0x5cc4, 0xc8c2, 0x5cc8, /* 0x27421..0x2747E */ - 0x5ccd, 0xc7e8, 0x5cd7, 0xc823, 0x5ce6, 0x5ceb, 0xc85c, 0x5cf5, - 0x5d03, 0x5d09, 0x22c6, 0x5d12, 0x5d1e, 0xc8e0, 0xc8d4, 0x5d3d, - 0x5d3e, 0x5d40, 0x5d47, 0xc90c, 0xc8fb, 0x22d6, 0x5d59, 0x5d5a, - 0x5d6a, 0x5d70, 0x22dd, 0x5d7f, 0xc917, 0x5d86, 0x5d88, 0x5d8c, - 0x5d97, 0xc960, 0x5d9d, 0x5da7, 0x5daa, 0x5db6, 0x5db7, 0x5dc0, - 0x5dd7, 0x5dd9, 0x5de6, 0x5df1, 0x5df9, 0x2302, 0xc9ed, 0x8158, + 0x5ccd, 0xc8e8, 0x5cd7, 0xc923, 0x5ce6, 0x5ceb, 0xc95c, 0x5cf5, + 0x5d03, 0x5d09, 0x22c6, 0x5d12, 0x5d1e, 0xc9e0, 0xc9d4, 0x5d3d, + 0x5d3e, 0x5d40, 0x5d47, 0xca0c, 0xc9fb, 0x22d6, 0x5d59, 0x5d5a, + 0x5d6a, 0x5d70, 0x22dd, 0x5d7f, 0xca17, 0x5d86, 0x5d88, 0x5d8c, + 0x5d97, 0xca60, 0x5d9d, 0x5da7, 0x5daa, 0x5db6, 0x5db7, 0x5dc0, + 0x5dd7, 0x5dd9, 0x5de6, 0x5df1, 0x5df9, 0x2302, 0xcaed, 0x8158, 0x5e10, 0x5e17, 0x5e1d, 0x5e20, 0x5e27, 0x5e2c, 0x5e45, 0x5e73, 0x5e75, 0x5e7e, 0x5e86, 0x5e87, 0x232b, 0x5e91, 0x5e98, 0x5e9a, 0x2343, 0x5f3c, 0x5f3b, 0x5f3e, 0x5f43, 0x5f44, 0x5f4f, 0x14c1, - 0xca70, 0x5f52, 0xca86, 0x5f61, 0x5f63, 0x5f64, 0x5f6d, 0x5f7d, - 0x5f7e, 0xcb4c, 0x5f90, 0x317b, 0xb00e, 0x5f96, 0x5f9c, 0x5fad, - 0xcc02, 0x5fc3, 0x5fcf, 0x5fe3, 0x5fe5, 0x5fef, + 0xcb70, 0x5f52, 0xcb86, 0x5f61, 0x5f63, 0x5f64, 0x5f6d, 0x5f7d, + 0x5f7e, 0xcc4c, 0x5f90, 0x317b, 0xb10e, 0x5f96, 0x5f9c, 0x5fad, + 0xcd02, 0x5fc3, 0x5fcf, 0x5fe3, 0x5fe5, 0x5fef, /* 0x27521..0x2757E */ 0x5ff2, 0x6002, 0x600a, 0x6008, 0x600e, 0x6011, 0x6016, 0x6024, 0x602c, 0x6030, 0x6043, 0x6066, 0x6071, 0x6075, 0x607b, 0x6099, - 0x609c, 0x60a4, 0x60a7, 0x60b8, 0xcd7e, 0x60c5, 0x60d5, 0x60d8, - 0x60e6, 0xcdb0, 0x610d, 0x60f5, 0x60fb, 0x23ee, 0x6135, 0x6116, - 0x611e, 0x23f0, 0x6124, 0x6127, 0x612c, 0xce1d, 0x613d, 0x2408, + 0x609c, 0x60a4, 0x60a7, 0x60b8, 0xce7e, 0x60c5, 0x60d5, 0x60d8, + 0x60e6, 0xceb0, 0x610d, 0x60f5, 0x60fb, 0x23ee, 0x6135, 0x6116, + 0x611e, 0x23f0, 0x6124, 0x6127, 0x612c, 0xcf1d, 0x613d, 0x2408, 0x6169, 0x2417, 0x6181, 0x241c, 0x6184, 0x6185, 0x2422, 0x6198, - 0x61b2, 0x61c1, 0x61c3, 0x61d6, 0x61db, 0xcfdd, 0x61e4, 0xcfea, - 0x61ec, 0xd051, 0x61fd, 0x61ff, 0xd06f, 0x6204, 0xd0dd, 0x6219, - 0x6221, 0x6222, 0xd11e, 0x6232, 0x6234, 0x623c, 0x6246, 0x6249, - 0x6245, 0xd158, 0x624b, 0x2476, 0x624f, 0x247a, 0x6257, 0xd18c, - 0x625c, 0x6263, 0xd1b7, 0x815d, 0x815e, 0x6279, 0x2491, 0x627d, + 0x61b2, 0x61c1, 0x61c3, 0x61d6, 0x61db, 0xd0dd, 0x61e4, 0xd0ea, + 0x61ec, 0xd151, 0x61fd, 0x61ff, 0xd16f, 0x6204, 0xd1dd, 0x6219, + 0x6221, 0x6222, 0xd21e, 0x6232, 0x6234, 0x623c, 0x6246, 0x6249, + 0x6245, 0xd258, 0x624b, 0x2476, 0x624f, 0x247a, 0x6257, 0xd28c, + 0x625c, 0x6263, 0xd2b7, 0x815d, 0x815e, 0x6279, 0x2491, 0x627d, 0x627f, 0x6283, 0x628a, 0x6293, 0x62a7, 0x62a8, /* 0x27621..0x2767E */ 0x62b2, 0x62b4, 0x62ba, 0x62bc, 0x62e2, 0x62e8, 0x62f7, 0x6307, 0x6308, 0x630c, 0x6354, 0x631b, 0x631d, 0x6330, 0x633c, 0x6344, 0x6357, 0x24be, 0x637f, 0x24d4, 0x24b3, 0x638d, 0x6394, 0x6395, 0x639b, 0x639d, 0x63c9, 0x63d0, 0x63d4, 0x63dd, 0x63e5, 0x63f9, - 0x640f, 0x6411, 0x6415, 0xd273, 0x6417, 0x6439, 0x644a, 0x644f, - 0x6451, 0x6452, 0x6459, 0x645a, 0x645c, 0xd2dd, 0x6465, 0x6476, + 0x640f, 0x6411, 0x6415, 0xd373, 0x6417, 0x6439, 0x644a, 0x644f, + 0x6451, 0x6452, 0x6459, 0x645a, 0x645c, 0xd3dd, 0x6465, 0x6476, 0x6478, 0x647c, 0x6481, 0x250d, 0x64dc, 0x6497, 0x64a6, 0x64be, - 0x2508, 0x64ce, 0x64cf, 0x64d3, 0xd365, 0x64e7, 0x64ea, 0x64ef, + 0x2508, 0x64ce, 0x64cf, 0x64d3, 0xd465, 0x64e7, 0x64ea, 0x64ef, 0x64f0, 0x64f1, 0x64fa, 0x64fd, 0x650c, 0x651b, 0x6524, 0x6525, 0x652b, 0x6534, 0x654f, 0x656f, 0x2525, 0x2543, 0x653e, 0x6551, - 0x6553, 0x655e, 0x6561, 0x6562, 0xd494, 0x657b, 0x657d, 0x657f, - 0x6581, 0x6586, 0x6593, 0x659d, 0x659f, 0xd4f8, + 0x6553, 0x655e, 0x6561, 0x6562, 0xd594, 0x657b, 0x657d, 0x657f, + 0x6581, 0x6586, 0x6593, 0x659d, 0x659f, 0xd5f8, /* 0x27721..0x2777E */ - 0xd4f6, 0xd4f7, 0x65b7, 0x65bc, 0x65c7, 0x65ca, 0x65d8, 0x65d9, + 0xd5f6, 0xd5f7, 0x65b7, 0x65bc, 0x65c7, 0x65ca, 0x65d8, 0x65d9, 0x65df, 0x65e1, 0x65e6, 0x65f6, 0x6600, 0x6611, 0x661e, 0x6621, - 0x6624, 0x6627, 0xd58d, 0x6639, 0x663c, 0xd5b9, 0x6640, 0x8120, + 0x6624, 0x6627, 0xd68d, 0x6639, 0x663c, 0xd6b9, 0x6640, 0x8120, 0x6653, 0x6656, 0x666f, 0x6677, 0x667a, 0x6687, 0x6689, 0x668d, 0x6691, 0x669c, 0x669d, 0x66a8, 0x8121, 0x66b1, 0x66b3, 0x66c1, 0x66c3, 0x66d1, 0x66d5, 0x66d7, 0x66e3, 0x66e6, 0x25b8, 0x6705, 0x6707, 0x670e, 0x6710, 0x6713, 0x6719, 0x671f, 0x6721, 0x6723, 0x6731, 0x673a, 0x673e, 0x6740, 0x6743, 0x6751, 0x6758, 0x6764, - 0x6765, 0x6772, 0x677c, 0xd65b, 0xd65a, 0x67a7, 0x6789, 0x678b, - 0x6793, 0x67a0, 0xd67e, 0x25e5, 0x67be, 0xd690, 0x67c1, 0x67ce, - 0x67f5, 0x67df, 0xd6c9, 0x67e3, 0x67e5, 0x67e6, 0x67ea, 0x67eb, + 0x6765, 0x6772, 0x677c, 0xd75b, 0xd75a, 0x67a7, 0x6789, 0x678b, + 0x6793, 0x67a0, 0xd77e, 0x25e5, 0x67be, 0xd790, 0x67c1, 0x67ce, + 0x67f5, 0x67df, 0xd7c9, 0x67e3, 0x67e5, 0x67e6, 0x67ea, 0x67eb, 0x67ed, 0x6801, 0x6803, 0x680b, 0x6813, 0x6828, /* 0x27821..0x2787E */ 0x682e, 0x6832, 0x683c, 0x260f, 0x684a, 0x6858, 0x685f, 0x6864, - 0xd715, 0xd714, 0x6869, 0xd731, 0x686f, 0x68a0, 0x68bc, 0x68bd, - 0x68be, 0x68c0, 0x68d2, 0xd793, 0x68d1, 0x68d3, 0x68db, 0x68f0, - 0x68f1, 0x2641, 0x6901, 0xd80e, 0x6937, 0xd823, 0x6942, 0x6945, - 0x6949, 0xd852, 0x2665, 0x6962, 0x6980, 0x6989, 0x6990, 0x699f, + 0xd815, 0xd814, 0x6869, 0xd831, 0x686f, 0x68a0, 0x68bc, 0x68bd, + 0x68be, 0x68c0, 0x68d2, 0xd893, 0x68d1, 0x68d3, 0x68db, 0x68f0, + 0x68f1, 0x2641, 0x6901, 0xd90e, 0x6937, 0xd923, 0x6942, 0x6945, + 0x6949, 0xd952, 0x2665, 0x6962, 0x6980, 0x6989, 0x6990, 0x699f, 0x69b0, 0x69b7, 0x69d6, 0x69d8, 0x69eb, 0x26a1, 0x69f1, 0x69f3, - 0x69fd, 0x69ff, 0x26af, 0x6a11, 0x6a14, 0xd985, 0x6a21, 0x6a35, + 0x69fd, 0x69ff, 0x26af, 0x6a11, 0x6a14, 0xda85, 0x6a21, 0x6a35, 0x6a3e, 0x6a45, 0x6a4d, 0x6a58, 0x6aae, 0x6a90, 0x6ab7, 0x6abe, - 0x6ad7, 0x6afc, 0xda84, 0x6b0a, 0x6b05, 0x6b0d, 0x6b1c, 0x6b1f, + 0x6ad7, 0x6afc, 0xdb84, 0x6b0a, 0x6b05, 0x6b0d, 0x6b1c, 0x6b1f, 0x6b2d, 0x6b43, 0x270c, 0x6b51, 0x6b5e, 0x6b76, 0x6b7f, 0x6b81, - 0x6b8b, 0x6b94, 0x6b95, 0x6b9c, 0x6b9e, 0x6c39, 0xdbb3, 0x6c3d, - 0xdbbe, 0xdbc7, 0x6c45, 0x6c47, 0x6c4f, 0x6c54, + 0x6b8b, 0x6b94, 0x6b95, 0x6b9c, 0x6b9e, 0x6c39, 0xdcb3, 0x6c3d, + 0xdcbe, 0xdcc7, 0x6c45, 0x6c47, 0x6c4f, 0x6c54, /* 0x27921..0x2797E */ - 0x6c57, 0x6c69, 0x6c6d, 0x6c73, 0xdcb8, 0x6c93, 0x6c92, 0x6c99, - 0x2764, 0x6c9b, 0x6ca4, 0x6cd6, 0x6cd5, 0x6cd9, 0xdd20, 0x6cf0, - 0x6cf1, 0xdd90, 0x6d09, 0x6d0e, 0x6d6c, 0x6d84, 0x6d95, 0x6da6, - 0xdeb7, 0x6dc6, 0x6dc8, 0x6dd9, 0x6dec, 0x6e0c, 0x27fd, 0x6dfd, - 0x6e06, 0xdf8a, 0x6e14, 0x6e16, 0x6e21, 0x6e22, 0x6e27, 0xdfbb, + 0x6c57, 0x6c69, 0x6c6d, 0x6c73, 0xddb8, 0x6c93, 0x6c92, 0x6c99, + 0x2764, 0x6c9b, 0x6ca4, 0x6cd6, 0x6cd5, 0x6cd9, 0xde20, 0x6cf0, + 0x6cf1, 0xde90, 0x6d09, 0x6d0e, 0x6d6c, 0x6d84, 0x6d95, 0x6da6, + 0xdfb7, 0x6dc6, 0x6dc8, 0x6dd9, 0x6dec, 0x6e0c, 0x27fd, 0x6dfd, + 0x6e06, 0xe08a, 0x6e14, 0x6e16, 0x6e21, 0x6e22, 0x6e27, 0xe0bb, 0x2816, 0x6e36, 0x6e39, 0x6e4b, 0x6e54, 0x6e62, 0x6e6c, 0x6e6d, 0x6e6f, 0x6e98, 0x6e9e, 0x6eae, 0x6eb3, 0x6eb5, 0x6eb6, 0x6ebb, - 0xe082, 0x6ed1, 0x6ed4, 0x284e, 0x6ef9, 0xe0f3, 0x6f00, 0x6f08, - 0x6f17, 0x6f2b, 0x6f40, 0x6f4a, 0x6f58, 0xe18c, 0x6fa4, 0x6fb4, - 0x8166, 0x6fb6, 0xe1d5, 0x6fc1, 0x6fc6, 0x8124, 0x6fca, 0x6fcd, + 0xe182, 0x6ed1, 0x6ed4, 0x284e, 0x6ef9, 0xe1f3, 0x6f00, 0x6f08, + 0x6f17, 0x6f2b, 0x6f40, 0x6f4a, 0x6f58, 0xe28c, 0x6fa4, 0x6fb4, + 0x8166, 0x6fb6, 0xe2d5, 0x6fc1, 0x6fc6, 0x8124, 0x6fca, 0x6fcd, 0x6fd3, 0x6fd5, 0x6fe0, 0x6ff1, 0x6ff5, 0x6ffb, 0x7002, 0x700c, - 0x7037, 0xe26b, 0x7043, 0x7044, 0x705d, 0xe2c8, + 0x7037, 0xe36b, 0x7043, 0x7044, 0x705d, 0xe3c8, /* 0x27A21..0x27A7E */ - 0xe2c9, 0x7085, 0x708c, 0x7090, 0x761d, 0x70a1, 0x28b5, 0x70b0, - 0x70b6, 0x70c3, 0x70c8, 0xe3d7, 0x70dc, 0x70df, 0xe3fa, 0x70f6, + 0xe3c9, 0x7085, 0x708c, 0x7090, 0x761d, 0x70a1, 0x28b5, 0x70b0, + 0x70b6, 0x70c3, 0x70c8, 0xe4d7, 0x70dc, 0x70df, 0xe4fa, 0x70f6, 0x70f2, 0x7100, 0x70eb, 0x70fe, 0x70ff, 0x7104, 0x7106, 0x7118, 0x711c, 0x711e, 0x7137, 0x7139, 0x713a, 0x7146, 0x7147, 0x7157, 0x7159, 0x7161, 0x7164, 0x7174, 0x7179, 0x7185, 0x718e, 0x71a8, - 0x71ae, 0x71b3, 0x71b6, 0x71c3, 0x71c4, 0x71da, 0xe449, 0xe446, - 0x71ec, 0x71ee, 0x7201, 0x720a, 0x7216, 0x7217, 0xe46b, 0x7233, + 0x71ae, 0x71b3, 0x71b6, 0x71c3, 0x71c4, 0x71da, 0xe549, 0xe546, + 0x71ec, 0x71ee, 0x7201, 0x720a, 0x7216, 0x7217, 0xe56b, 0x7233, 0x7242, 0x7247, 0x724a, 0x724e, 0x7251, 0x7256, 0x7259, 0x7260, - 0x7261, 0x7265, 0x7267, 0x7268, 0xe487, 0xe488, 0x727c, 0x727d, + 0x7261, 0x7265, 0x7267, 0x7268, 0xe587, 0xe588, 0x727c, 0x727d, 0x727f, 0x7289, 0x728d, 0x7297, 0x7299, 0x729f, 0x72a7, 0x72ab, - 0xe4ba, 0xe4bb, 0x72b2, 0x72bf, 0x72c0, 0x72c6, 0x72ce, 0x72d0, - 0x72d7, 0x72d9, 0x72e5, 0x72e7, 0x7311, 0xe51e, + 0xe5ba, 0xe5bb, 0x72b2, 0x72bf, 0x72c0, 0x72c6, 0x72ce, 0x72d0, + 0x72d7, 0x72d9, 0x72e5, 0x72e7, 0x7311, 0xe61e, /* 0x27B21..0x27B7E */ - 0xe529, 0x72f7, 0x72f9, 0x72fb, 0x7302, 0x730d, 0x7315, 0x731d, - 0x731e, 0x7327, 0x7329, 0xe571, 0xe543, 0x7347, 0x7351, 0x7357, - 0x735a, 0x736b, 0x7371, 0x7373, 0x73a1, 0xe599, 0xe5cd, 0x7388, - 0x738b, 0x738f, 0x739e, 0x73f5, 0xe5e4, 0xe5dd, 0x73f1, 0x73c1, + 0xe629, 0x72f7, 0x72f9, 0x72fb, 0x7302, 0x730d, 0x7315, 0x731d, + 0x731e, 0x7327, 0x7329, 0xe671, 0xe643, 0x7347, 0x7351, 0x7357, + 0x735a, 0x736b, 0x7371, 0x7373, 0x73a1, 0xe699, 0xe6cd, 0x7388, + 0x738b, 0x738f, 0x739e, 0x73f5, 0xe6e4, 0xe6dd, 0x73f1, 0x73c1, 0x73c7, 0x73dc, 0x73e2, 0x73e7, 0x7409, 0x740f, 0x7416, 0x7417, - 0x73fb, 0x7432, 0x7434, 0x743b, 0x7445, 0xe6c1, 0xe6ef, 0x746d, - 0x746f, 0x7578, 0x7579, 0x7586, 0x758c, 0x758d, 0xe710, 0x75ab, - 0x75b4, 0xe771, 0x75c8, 0xe7fb, 0xe81f, 0x762c, 0x7633, 0x7634, - 0xe836, 0x763c, 0x7641, 0x7661, 0xe889, 0x7682, 0xe8eb, 0x769a, - 0xe932, 0x29e7, 0x76a9, 0x76af, 0x76b3, 0x76ba, 0x76bd, 0x29fa, - 0xe9f8, 0x76d8, 0x76da, 0x76dd, 0x2a04, 0x7714, 0x7723, 0x2a29, + 0x73fb, 0x7432, 0x7434, 0x743b, 0x7445, 0xe7c1, 0xe7ef, 0x746d, + 0x746f, 0x7578, 0x7579, 0x7586, 0x758c, 0x758d, 0xe810, 0x75ab, + 0x75b4, 0xe871, 0x75c8, 0xe8fb, 0xe91f, 0x762c, 0x7633, 0x7634, + 0xe936, 0x763c, 0x7641, 0x7661, 0xe989, 0x7682, 0xe9eb, 0x769a, + 0xea32, 0x29e7, 0x76a9, 0x76af, 0x76b3, 0x76ba, 0x76bd, 0x29fa, + 0xeaf8, 0x76d8, 0x76da, 0x76dd, 0x2a04, 0x7714, 0x7723, 0x2a29, 0x7736, 0x7741, 0x7747, 0x7755, 0x7757, 0x775b, /* 0x27C21..0x27C7E */ - 0x776a, 0xeaa0, 0xeab1, 0x7796, 0x779a, 0x779e, 0x77a2, 0x77b1, + 0x776a, 0xeba0, 0xebb1, 0x7796, 0x779a, 0x779e, 0x77a2, 0x77b1, 0x77b2, 0x77be, 0x77cc, 0x77d1, 0x77d4, 0x77d8, 0x77d9, 0x77e1, - 0x77f1, 0x7804, 0x780d, 0x780e, 0x7814, 0x7816, 0x2abc, 0xeb90, + 0x77f1, 0x7804, 0x780d, 0x780e, 0x7814, 0x7816, 0x2abc, 0xec90, 0x7823, 0x7832, 0x7833, 0x7825, 0x7847, 0x7866, 0x78ab, 0x78ad, - 0x78b0, 0xeccf, 0x78b7, 0x78b8, 0x78bb, 0x78bc, 0x78bf, 0x78c2, - 0x78c7, 0x78cb, 0x78e0, 0xed7f, 0x78e1, 0x78e3, 0x78e5, 0x78ea, - 0x78f0, 0x78f1, 0x78f3, 0x7908, 0x2b3b, 0xedf0, 0x7916, 0x7917, - 0xee19, 0x791a, 0x791b, 0x791c, 0xee50, 0x7931, 0x7932, 0x7933, + 0x78b0, 0xedcf, 0x78b7, 0x78b8, 0x78bb, 0x78bc, 0x78bf, 0x78c2, + 0x78c7, 0x78cb, 0x78e0, 0xee7f, 0x78e1, 0x78e3, 0x78e5, 0x78ea, + 0x78f0, 0x78f1, 0x78f3, 0x7908, 0x2b3b, 0xeef0, 0x7916, 0x7917, + 0xef19, 0x791a, 0x791b, 0x791c, 0xef50, 0x7931, 0x7932, 0x7933, 0x793a, 0x793b, 0x793c, 0x7940, 0x7941, 0x7946, 0x794d, 0x794e, 0x795c, 0x795f, 0x7960, 0x79a3, 0x79a6, 0x79b9, 0x79bd, 0x79bf, - 0x79c3, 0x79c9, 0x79d4, 0x79d9, 0x79de, 0xefc6, 0x79f0, 0x79f9, + 0x79c3, 0x79c9, 0x79d4, 0x79d9, 0x79de, 0xf0c6, 0x79f0, 0x79f9, 0x79fc, 0x7a0a, 0x7a11, 0x7a16, 0x7a1a, 0x7a20, /* 0x27D21..0x27D7E */ 0x7a31, 0x7a36, 0x7a44, 0x7a4c, 0x7a58, 0x2bc2, 0x7aaf, 0x2bca, - 0x7ab7, 0x2bd2, 0x7ab9, 0xf072, 0x7ac6, 0x7ad0, 0x7ad2, 0x7ad5, + 0x7ab7, 0x2bd2, 0x7ab9, 0xf172, 0x7ac6, 0x7ad0, 0x7ad2, 0x7ad5, 0x2be8, 0x7adc, 0x7ae0, 0x7ae5, 0x7ae9, 0x7b03, 0x7b0c, 0x7b10, 0x7b12, 0x7b16, 0x7b1c, 0x7b2b, 0x7b33, 0x7b3d, 0x2c20, 0x7b4b, 0x7b63, 0x7b65, 0x7b6b, 0x7b6c, 0x7b73, 0x7b76, 0x7b77, 0x7ba6, - 0x7bac, 0x7bb1, 0xf1db, 0xf23d, 0x7bb2, 0x7bb8, 0x7bbe, 0x7bc7, + 0x7bac, 0x7bb1, 0xf2db, 0xf33d, 0x7bb2, 0x7bb8, 0x7bbe, 0x7bc7, 0x7bf3, 0x7bd8, 0x7bdd, 0x7be7, 0x7bea, 0x7beb, 0x7bef, 0x7bee, - 0xf215, 0x7bfa, 0xf28a, 0x7bf7, 0xf249, 0x7c16, 0x7c18, 0x7c19, - 0x7c1a, 0x7c1d, 0x7c22, 0x7c27, 0x7c29, 0x7c2a, 0xf2c4, 0x7c31, - 0x7c36, 0x7c37, 0x7c45, 0x7c5c, 0xf2e9, 0x7c49, 0x7c4a, 0xf2db, + 0xf315, 0x7bfa, 0xf38a, 0x7bf7, 0xf349, 0x7c16, 0x7c18, 0x7c19, + 0x7c1a, 0x7c1d, 0x7c22, 0x7c27, 0x7c29, 0x7c2a, 0xf3c4, 0x7c31, + 0x7c36, 0x7c37, 0x7c45, 0x7c5c, 0xf3e9, 0x7c49, 0x7c4a, 0xf3db, 0x7c54, 0x7c58, 0x7c5b, 0x7c5d, 0x7c5f, 0x7c69, 0x7c6a, 0x7c6b, 0x7c6d, 0x7c6e, 0x7c70, 0x7c72, 0x7c75, 0x7c7a, /* 0x27E21..0x27E7E */ - 0x7ce6, 0x7cf2, 0x7d0b, 0x7d02, 0xf3ce, 0x7d11, 0x7d17, 0x7d18, - 0xf42f, 0x2cc4, 0xf41a, 0x7d32, 0x2cd1, 0x7d42, 0x7d4a, 0x7d5f, - 0x7d62, 0xf4f9, 0x7d69, 0x7d6b, 0xf482, 0x7d73, 0x7d76, 0x7d77, + 0x7ce6, 0x7cf2, 0x7d0b, 0x7d02, 0xf4ce, 0x7d11, 0x7d17, 0x7d18, + 0xf52f, 0x2cc4, 0xf51a, 0x7d32, 0x2cd1, 0x7d42, 0x7d4a, 0x7d5f, + 0x7d62, 0xf5f9, 0x7d69, 0x7d6b, 0xf582, 0x7d73, 0x7d76, 0x7d77, 0x7d7e, 0x7d84, 0x7d8d, 0x7d99, 0x7da1, 0x7dbf, 0x7db5, 0x7db9, 0x7dbd, 0x7dc3, 0x7dc7, 0x7dc9, 0x7dd6, 0x7dda, 0x7ddf, 0x7de0, 0x7de3, 0x7df4, 0x2d07, 0x7e0a, 0x7e02, 0x7e0d, 0x7e19, 0x7e1c, - 0x7e1d, 0x7e7b, 0x9e18, 0x7e80, 0x7e85, 0x7e9b, 0x7ea8, 0xf60c, - 0x7ebd, 0xf6b7, 0x7edf, 0x7ee7, 0x7eee, 0x7eff, 0x7f02, 0x2d77, + 0x7e1d, 0x7e7b, 0x9f18, 0x7e80, 0x7e85, 0x7e9b, 0x7ea8, 0xf70c, + 0x7ebd, 0xf7b7, 0x7edf, 0x7ee7, 0x7eee, 0x7eff, 0x7f02, 0x2d77, 0x7f03, 0x7f17, 0x7f19, 0x7f2f, 0x7f37, 0x7f3a, 0x7f3d, 0x7f41, - 0x7f45, 0x7f46, 0x7f53, 0x7f55, 0x7f58, 0xf7f1, 0x7f5d, 0xf802, - 0x7f69, 0xf81a, 0x7f6d, 0x7f70, 0x7f75, 0xf8b2, 0x0000, 0x0000, + 0x7f45, 0x7f46, 0x7f53, 0x7f55, 0x7f58, 0xf8f1, 0x7f5d, 0xf902, + 0x7f69, 0xf91a, 0x7f6d, 0x7f70, 0x7f75, 0xf9b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; @@ -1737,21 +1737,21 @@ const uint32_t __jisx0213_to_ucs_pagesta 0x9000, 0x9100, 0x9200, 0x9300, 0x9400, 0x9500, 0x9600, 0x9700, 0x9800, 0x9900, 0x9a00, 0x9b00, 0x9c00, 0x9d00, 0x9e00, 0x9f00, 0xf900, 0xfa00, 0xfe00, 0xff00, 0x20000, 0x20180, 0x20300, 0x20400, - 0x20500, 0x20600, 0x20700, 0x20800, 0x20900, 0x20a80, 0x20d00, 0x20e00, - 0x20f00, 0x21200, 0x21300, 0x21400, 0x21500, 0x21600, 0x21700, 0x21800, - 0x21900, 0x21c00, 0x21d00, 0x21e00, 0x21f00, 0x22100, 0x22200, 0x22300, - 0x22600, 0x22800, 0x22900, 0x22a00, 0x22b00, 0x22c00, 0x22d00, 0x23100, - 0x23300, 0x23400, 0x23500, 0x23600, 0x23700, 0x23800, 0x23a00, 0x23c00, - 0x23d00, 0x23f00, 0x24000, 0x24100, 0x24300, 0x24600, 0x24700, 0x24800, - 0x24a00, 0x24b00, 0x24c00, 0x24d00, 0x24e00, 0x25000, 0x25100, 0x25200, - 0x25400, 0x25500, 0x25700, 0x25900, 0x25a00, 0x25b80, 0x25d00, 0x25e00, - 0x25f00, 0x26000, 0x26200, 0x26300, 0x26400, 0x26600, 0x26700, 0x26800, - 0x26900, 0x26a00, 0x26c00, 0x26e00, 0x26f00, 0x27080, 0x27380, 0x27600, - 0x27700, 0x27900, 0x27a00, 0x27b00, 0x27c00, 0x27d80, 0x27f00, 0x28000, - 0x28200, 0x28380, 0x28500, 0x28600, 0x28900, 0x28a00, 0x28b00, 0x28d00, - 0x28e00, 0x28f00, 0x29200, 0x29400, 0x29500, 0x29600, 0x29700, 0x29800, - 0x29a00, 0x29d00, 0x29e00, 0x29f00, 0x2a000, 0x2a100, 0x2a380, 0x2a500, - 0x2a600, + 0x20500, 0x20600, 0x20700, 0x20800, 0x20900, 0x20a00, 0x20b00, 0x20d00, + 0x20e00, 0x20f00, 0x21200, 0x21300, 0x21400, 0x21500, 0x21600, 0x21700, + 0x21800, 0x21900, 0x21c00, 0x21d00, 0x21e00, 0x21f00, 0x22100, 0x22200, + 0x22300, 0x22600, 0x22800, 0x22900, 0x22a00, 0x22b00, 0x22c00, 0x22d00, + 0x23100, 0x23300, 0x23400, 0x23500, 0x23600, 0x23700, 0x23800, 0x23a00, + 0x23c00, 0x23d00, 0x23f00, 0x24000, 0x24100, 0x24300, 0x24600, 0x24700, + 0x24800, 0x24a00, 0x24b00, 0x24c00, 0x24d00, 0x24e00, 0x25000, 0x25100, + 0x25200, 0x25400, 0x25500, 0x25700, 0x25900, 0x25a00, 0x25b80, 0x25d00, + 0x25e00, 0x25f00, 0x26000, 0x26200, 0x26300, 0x26400, 0x26600, 0x26700, + 0x26800, 0x26900, 0x26a00, 0x26c00, 0x26e00, 0x26f00, 0x27080, 0x27380, + 0x27600, 0x27700, 0x27900, 0x27a00, 0x27b00, 0x27c00, 0x27d80, 0x27f00, + 0x28000, 0x28200, 0x28380, 0x28500, 0x28600, 0x28900, 0x28a00, 0x28b00, + 0x28d00, 0x28e00, 0x28f00, 0x29200, 0x29400, 0x29500, 0x29600, 0x29700, + 0x29800, 0x29a00, 0x29d00, 0x29e00, 0x29f00, 0x2a000, 0x2a100, 0x2a380, + 0x2a500, 0x2a600, }; /* Tables UCS-4 -> JISX0213. Generated through @@ -1834,66 +1834,66 @@ const int16_t __jisx0213_from_ucs_level1 24, 25, 26, 27, 28, -1, 29, 30, 31, 32, -1, 33, 34, 35, 36, 37, 38, 39, -1, -1, 40, 41, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 43, + -1, -1, -1, -1, 42, -1, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 44, 45, 46, 47, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, -1, 69, 70, 71, - 72, 73, -1, 74, 75, 76, -1, -1, - -1, 77, -1, 78, 79, 80, 81, 82, - 83, -1, -1, 84, 85, 86, 87, 88, - 89, 90, 91, -1, -1, 92, 93, 94, - 95, 96, 97, -1, 98, 99, 100, 101, - 102, 103, -1, 104, 105, 106, -1, 107, - 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, -1, 119, 120, -1, 121, - 122, 123, 124, -1, -1, -1, 125, 126, - 127, -1, 128, -1, 129, -1, -1, 130, - 131, -1, -1, 132, 133, 134, -1, -1, - 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, -1, - 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, -1, -1, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, -1, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, -1, + 45, 46, 47, 48, -1, -1, -1, 49, + 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, 70, 71, 72, + 73, 74, -1, 75, 76, 77, -1, -1, + -1, 78, -1, 79, 80, 81, 82, 83, + 84, -1, -1, 85, 86, 87, 88, 89, + 90, 91, 92, -1, -1, 93, 94, 95, + 96, 97, 98, -1, 99, 100, 101, 102, + 103, 104, -1, 105, 106, 107, -1, 108, + 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, -1, 120, 121, -1, 122, + 123, 124, 125, -1, -1, -1, 126, 127, + 128, -1, 129, -1, 130, -1, -1, 131, + 132, -1, -1, 133, 134, 135, -1, -1, + 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, -1, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, -1, + 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, -1, -1, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, -1, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1938,10 +1938,10 @@ const int16_t __jisx0213_from_ucs_level1 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 457, 458, -1, 459, - 460, 461, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 458, 459, -1, 460, + 461, 462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 462, -1, -1, 463, 464, -1, 465, + -1, 463, -1, -1, 464, 465, -1, 466, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2070,90 +2070,90 @@ const int16_t __jisx0213_from_ucs_level1 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 466, -1, 467, -1, -1, -1, 468, -1, - 469, -1, -1, -1, 470, 471, 472, 473, - -1, 474, -1, -1, 475, -1, -1, 476, - 477, -1, -1, -1, -1, 478, -1, -1, - 479, -1, 480, -1, -1, 481, 482, -1, - -1, -1, -1, 483, 484, -1, -1, -1, - -1, -1, -1, -1, -1, 485, -1, 486, - -1, 487, 488, -1, -1, 489, -1, -1, + 467, -1, 468, -1, -1, -1, 469, -1, + 470, -1, -1, -1, 471, 472, 473, 474, + -1, 475, -1, -1, 476, -1, -1, 477, + 478, -1, -1, -1, -1, 479, -1, -1, + 480, -1, 481, -1, -1, 482, 483, -1, + -1, -1, -1, 484, 485, -1, 486, -1, + -1, -1, -1, -1, -1, 487, -1, 488, + -1, 489, 490, -1, -1, 491, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 490, 491, -1, 492, 493, 494, -1, 495, - -1, 496, -1, -1, -1, -1, -1, 497, - -1, 498, 499, -1, 500, 501, -1, -1, - -1, -1, 502, -1, -1, -1, -1, 503, + 492, 493, -1, 494, 495, 496, -1, 497, + -1, 498, -1, -1, -1, -1, -1, 499, + -1, 500, 501, -1, 502, 503, -1, -1, + -1, -1, 504, -1, -1, -1, -1, 505, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 504, -1, -1, 505, 506, 507, 508, - 509, -1, -1, -1, 510, 511, -1, 512, - -1, -1, -1, -1, -1, 513, -1, -1, - 514, -1, -1, -1, 515, -1, 516, -1, + -1, 506, -1, -1, 507, 508, 509, 510, + 511, -1, -1, -1, 512, 513, -1, 514, + -1, -1, -1, -1, -1, 515, -1, -1, + 516, -1, -1, -1, 517, -1, 518, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 517, -1, -1, -1, -1, - -1, 518, 519, -1, -1, -1, 520, -1, - -1, -1, 521, -1, -1, 522, 523, -1, - 524, -1, -1, -1, -1, -1, -1, 525, + -1, -1, -1, 519, -1, -1, -1, -1, + -1, 520, 521, -1, -1, -1, 522, -1, + -1, -1, 523, -1, -1, 524, 525, -1, + 526, -1, -1, -1, -1, -1, -1, 527, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 526, 527, - -1, -1, -1, -1, -1, 528, -1, 529, - -1, 530, -1, 531, -1, 532, 533, 534, - 535, 536, -1, -1, 537, 538, -1, 539, - 540, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 541, -1, -1, -1, -1, -1, - -1, 542, -1, 543, 544, 545, -1, 546, - -1, -1, -1, -1, -1, 547, -1, -1, - -1, -1, 548, -1, 549, -1, -1, 550, - -1, -1, -1, -1, -1, -1, 551, -1, + -1, -1, -1, -1, -1, -1, 528, 529, + -1, -1, -1, -1, -1, 530, -1, 531, + -1, 532, -1, 533, -1, 534, 535, 536, + 537, 538, -1, -1, 539, 540, -1, 541, + 542, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 543, -1, -1, -1, -1, -1, + -1, 544, -1, 545, 546, 547, -1, 548, + -1, -1, -1, -1, -1, 549, -1, -1, + -1, -1, 550, -1, 551, -1, -1, 552, + -1, -1, -1, -1, -1, -1, 553, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 552, -1, 553, -1, -1, -1, -1, 554, - -1, -1, 555, -1, -1, -1, -1, -1, - -1, 556, -1, -1, -1, 557, -1, -1, - 558, -1, -1, -1, 559, -1, -1, -1, - 560, 561, 562, -1, -1, -1, -1, -1, - -1, 563, -1, -1, 564, -1, 565, 566, - 567, 568, -1, -1, -1, -1, -1, -1, - 569, -1, 570, 571, 572, -1, 573, -1, - -1, -1, -1, -1, -1, 574, 575, -1, - -1, -1, -1, -1, -1, -1, -1, 576, - -1, -1, -1, 577, -1, -1, 578, -1, - -1, 579, -1, -1, -1, -1, 580, -1, - 581, 582, -1, 583, 584, 585, -1, 586, - 587, 588, -1, 589, -1, -1, -1, -1, - -1, 590, 591, -1, -1, 592, -1, -1, - 593, -1, -1, -1, -1, -1, -1, -1, - -1, 594, 595, -1, 596, -1, -1, -1, - -1, -1, -1, 597, -1, 598, -1, 599, - 600, 601, 602, 603, -1, -1, -1, -1, - 604, 605, -1, 606, -1, -1, -1, -1, - -1, 607, -1, -1, -1, -1, 608, 609, - -1, -1, -1, 610, 611, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 612, - 613, 614, -1, -1, -1, -1, -1, -1, - 615, -1, 616, -1, 617, 618, -1, -1, - -1, -1, -1, -1, -1, -1, 619, -1, - -1, -1, 620, -1, -1, -1, 621, 622, - -1, -1, 623, -1, -1, -1, 624, -1, - 625, -1, -1, -1, -1, -1, 626, -1, - -1, -1, 627, -1, -1, -1, -1, -1, - -1, 628, 629, 630, -1, -1, -1, 631, - 632, 633, -1, -1, -1, 634, -1, 635, - -1, -1, -1, 636, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 637, 638, -1, - 639, 640, 641, 642, -1, -1, -1, 643, - -1, -1, -1, -1, 644, 645, -1, 646, - 647, -1, 648, 649, 650, -1, -1, 651, + 554, -1, 555, -1, -1, -1, -1, 556, + -1, -1, 557, -1, -1, -1, -1, -1, + -1, 558, -1, -1, -1, 559, -1, -1, + 560, -1, -1, -1, 561, -1, -1, -1, + 562, 563, 564, -1, -1, -1, -1, -1, + -1, 565, -1, -1, 566, -1, 567, 568, + 569, 570, -1, -1, -1, -1, -1, -1, + 571, -1, 572, 573, 574, -1, 575, -1, + -1, -1, -1, -1, -1, 576, 577, -1, + -1, -1, -1, -1, -1, -1, -1, 578, + -1, -1, -1, 579, -1, -1, 580, -1, + -1, 581, -1, -1, -1, -1, 582, -1, + 583, 584, -1, 585, 586, 587, -1, 588, + 589, 590, -1, 591, -1, -1, -1, -1, + -1, 592, 593, -1, -1, 594, -1, -1, + 595, -1, -1, -1, -1, -1, -1, -1, + -1, 596, 597, -1, 598, -1, -1, -1, + -1, -1, -1, 599, -1, 600, -1, 601, + 602, 603, 604, 605, -1, -1, -1, -1, + 606, 607, -1, 608, -1, -1, -1, -1, + -1, 609, -1, -1, -1, -1, 610, 611, + -1, -1, -1, 612, 613, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 614, + 615, 616, -1, -1, -1, -1, -1, -1, + 617, -1, 618, -1, 619, 620, -1, -1, + -1, -1, -1, -1, -1, -1, 621, -1, + -1, -1, 622, -1, -1, -1, 623, 624, + -1, -1, 625, -1, -1, -1, 626, -1, + 627, -1, -1, -1, -1, -1, 628, -1, + -1, -1, 629, -1, -1, -1, -1, -1, + -1, 630, 631, 632, -1, -1, -1, 633, + 634, 635, -1, -1, -1, 636, -1, 637, + -1, -1, -1, 638, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 639, 640, -1, + 641, 642, 643, 644, -1, -1, -1, 645, + -1, -1, -1, -1, 646, 647, -1, 648, + 649, -1, 650, 651, 652, -1, -1, 653, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 652, -1, -1, -1, -1, -1, - -1, -1, 653, -1, -1, -1, -1, 654, - -1, 655, -1, 656, 657, 658, -1, -1, - -1, -1, -1, 659, -1, -1, -1, -1, - -1, 660, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 661, - 662, 663, 664, 665, -1, -1, -1, 666, - 667, -1, 668, 669, -1, -1, 670, -1, - -1, -1, -1, -1, -1, -1, 671, -1, - 672, -1, -1, -1, -1, -1, -1, 673, - 674, -1, 675, + -1, -1, 654, -1, -1, -1, -1, -1, + -1, -1, 655, -1, -1, -1, -1, 656, + -1, 657, -1, 658, 659, 660, -1, -1, + -1, -1, -1, 661, -1, -1, -1, -1, + -1, 662, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 663, + 664, 665, 666, 667, -1, -1, -1, 668, + 669, -1, 670, 671, -1, -1, 672, -1, + -1, -1, -1, -1, -1, -1, 673, -1, + 674, -1, -1, -1, -1, -1, -1, 675, + 676, -1, 677, }; const uint16_t __jisx0213_from_ucs_level2[] = @@ -2314,7 +2314,7 @@ const uint16_t __jisx0213_from_ucs_level /* 0x2000 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x213e, 0x0000, 0x0000, 0x237c, 0x0000, 0x213d, 0x2142, 0x0000, + 0x213e, 0x0000, 0x0000, 0x237c, 0x213d, 0x0000, 0x2142, 0x0000, 0x2146, 0x2147, 0x0000, 0x0000, 0x2148, 0x2149, 0x0000, 0x0000, 0x2277, 0x2278, 0x2340, 0x0000, 0x0000, 0x2145, 0x2144, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -2396,7 +2396,7 @@ const uint16_t __jisx0213_from_ucs_level 0x0000, 0x0000, 0x223e, 0x223f, 0x2242, 0x2243, 0x223c, 0x223d, 0x0000, 0x0000, 0x2244, 0x2245, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2251, 0x2252, 0x2253, - 0x0000, 0x233a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x225d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -2545,6 +2545,15 @@ const uint16_t __jisx0213_from_ucs_level 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x232e, 0x232f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x2980 */ + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x233a, /* 0x29C0 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -3443,7 +3452,7 @@ const uint16_t __jisx0213_from_ucs_level 0x505a, 0x0000, 0x505d, 0x505b, 0x0000, 0x4a5d, 0x0000, 0x5058, 0x2e3a, 0x3f2e, 0x0000, 0x4b73, 0x505f, 0x5060, 0xa14f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d24, 0x506d, - 0x0000, 0x0000, 0xa157, 0x4750, 0x0000, 0x4936, 0x5068, 0x0000, + 0x0000, 0x2e21, 0xa157, 0x4750, 0x0000, 0x4936, 0x5068, 0x0000, 0x4a70, 0x0000, 0x3236, 0x0000, 0x0000, 0x0000, 0x506c, 0x0000, /* 0x5000 */ 0xa158, 0x2e3b, 0x2e3c, 0x0000, 0x0000, 0x5066, 0x506f, 0x0000, @@ -3530,7 +3539,7 @@ const uint16_t __jisx0213_from_ucs_level 0x0000, 0x0000, 0x0000, 0x4466, 0x516d, 0x0000, 0x0000, 0x4227, 0x0000, 0x2e5e, 0x3a6f, 0x516e, 0x516f, 0x4130, 0x0000, 0x516c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5171, 0xa339, 0x4b36, 0x2e5f, - 0x0000, 0x0000, 0x0000, 0x3964, 0xa33a, 0x0000, 0x5170, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3964, 0xa33a, 0x2f7e, 0x5170, 0x0000, 0x0000, 0x2e60, 0x0000, 0x3775, 0x3a5e, 0x476d, 0x0000, 0x0000, 0x0000, 0x5174, 0x5172, 0x0000, 0xa33b, 0x0000, 0x0000, 0x497b, 0x3e6a, 0x517b, 0x3364, 0x5175, 0x5173, 0x414f, 0x0000, 0xa33c, @@ -3593,7 +3602,7 @@ const uint16_t __jisx0213_from_ucs_level 0x0000, 0x525e, 0x0000, 0x3549, 0x3346, 0x0000, 0x0000, 0x0000, 0x3967, 0x3548, 0x445f, 0x3125, 0x4631, 0x4c3e, 0x3921, 0x4d79, 0x4547, 0x387e, 0x2e75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x372f, 0x0000, 0x5267, 0x0000, 0x3663, + 0x0000, 0x0000, 0x0000, 0x372f, 0x0000, 0x5267, 0x4f7e, 0x3663, 0x4b4a, 0x0000, 0x0000, 0x0000, 0xa365, 0x0000, 0x485d, 0x2e76, 0xa366, 0x5266, 0x0000, 0x345e, 0x5261, 0x5262, 0x5264, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5265, 0x0000, @@ -3673,7 +3682,7 @@ const uint16_t __jisx0213_from_ucs_level /* 0x5640 */ 0xa445, 0x0000, 0x313d, 0x0000, 0x0000, 0x0000, 0x0000, 0xa446, 0x0000, 0x2f33, 0x0000, 0x0000, 0x4139, 0x0000, 0x5359, 0x0000, - 0x535a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x535a, 0x0000, 0x0000, 0x7427, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337a, 0x0000, 0x0000, 0xa447, 0x0000, 0xa448, 0x0000, 0x0000, 0x0000, 0x5361, 0x0000, 0x2f35, 0x0000, 0x346f, 0x0000, 0x5364, 0x5360, 0x5363, 0xa449, 0x0000, 0x2f37, @@ -3804,7 +3813,7 @@ const uint16_t __jisx0213_from_ucs_level 0x0000, 0x0000, 0x0000, 0xa551, 0xa552, 0x3138, 0x342f, 0xa553, 0x5529, 0x0000, 0x4c45, 0x4931, 0x0000, 0x0000, 0xa554, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3028, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3079, 0x0000, 0x0000, 0x0000, 0x3b51, + 0x7e7a, 0x0000, 0x0000, 0x3079, 0x0000, 0x0000, 0x0000, 0x3b51, /* 0x5A00 */ 0x0000, 0x3052, 0x0000, 0x3023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5532, 0x0000, 0x0000, 0xa558, 0xa559, 0x0000, 0x0000, @@ -3890,7 +3899,7 @@ const uint16_t __jisx0213_from_ucs_level 0x3649, 0x557b, 0x0000, 0x0000, 0x0000, 0x356f, 0x557c, 0x0000, 0x367e, 0x0000, 0x464f, 0x3230, 0x0000, 0x3b53, 0x557d, 0x5622, 0x5621, 0x367d, 0x0000, 0x557e, 0x0000, 0x4538, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4230, 0xa831, + 0x0000, 0x0000, 0x0000, 0x7e7b, 0x0000, 0x0000, 0x4230, 0xa831, 0x454b, 0x3c48, 0x4f60, 0xa832, 0x4158, 0x4d7a, 0x0000, 0xa833, 0xa834, 0xa835, 0x0000, 0x0000, 0x5624, 0x0000, 0x5625, 0x4656, 0xa836, 0x3b33, 0x0000, 0x0000, 0x0000, 0x0000, 0x5627, 0x0000, @@ -3965,7 +3974,7 @@ const uint16_t __jisx0213_from_ucs_level 0x742b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x742c, 0x5670, 0x0000, 0x4828, 0x5671, 0x4a3e, 0x5672, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa87c, 0xa87d, 0xa87e, 0xac21, 0x0000, - 0x0000, 0x0000, 0x3433, 0x4a3f, 0x472f, 0x5674, 0x5675, 0x0000, + 0x0000, 0x0000, 0x3433, 0x4a3f, 0x472f, 0x5674, 0x5675, 0x7e7c, 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476, 0x5678, /* 0x5E80 */ 0x0000, 0x4423, 0x0000, 0x392d, 0x3e31, 0x0000, 0x0000, 0x485f, @@ -4818,7 +4827,7 @@ const uint16_t __jisx0213_from_ucs_level 0x7852, 0x6168, 0x0000, 0x6166, 0x0000, 0x6167, 0x0000, 0xf15b, 0x0000, 0x0000, 0x0000, 0xf15e, 0x0000, 0x7853, 0x7854, 0x0000, 0xf159, 0x7855, 0x0000, 0xf15f, 0xf160, 0x0000, 0x7856, 0x6169, - 0x616b, 0x616c, 0x616d, 0x0000, 0x616e, 0xf162, 0x0000, 0x616a, + 0x616b, 0x616c, 0x616d, 0x0000, 0x616e, 0xf162, 0x7e7d, 0x616a, 0xf163, 0x0000, 0x0000, 0x0000, 0x0000, 0x7857, 0x0000, 0x0000, 0x6170, 0x0000, 0x0000, 0xf165, 0x616f, 0x7858, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6171, 0xf164, 0x0000, 0x0000, 0x0000, @@ -5116,7 +5125,7 @@ const uint16_t __jisx0213_from_ucs_level 0x0000, 0x0000, 0x7a35, 0x0000, 0x3f25, 0x4136, 0x6564, 0x0000, 0x0000, 0x6566, 0x6567, 0x0000, 0x0000, 0x6563, 0x6565, 0x0000, 0x0000, 0x7a36, 0x0000, 0x0000, 0x0000, 0x0000, 0x655a, 0x6562, - 0x0000, 0x656a, 0x6569, 0x0000, 0x0000, 0x4b7a, 0x0000, 0x0000, + 0x0000, 0x656a, 0x6569, 0x7e7e, 0x0000, 0x4b7a, 0x0000, 0x0000, 0x372b, 0x0000, 0x0000, 0xf458, 0x0000, 0xf459, 0x0000, 0x0000, 0x0000, 0x6568, 0x0000, 0x656c, 0x656b, 0x656f, 0xf45a, 0x6571, /* 0x7E80 */ @@ -6523,6 +6532,15 @@ const uint16_t __jisx0213_from_ucs_level 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x20B80 */ + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f54, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x20D40 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa377, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, diff -durpN glibc-2.3.3/iconvdata/jisx0213.h glibc-2.3.4/iconvdata/jisx0213.h --- glibc-2.3.3/iconvdata/jisx0213.h 2003-06-11 17:40:42.000000000 -0400 +++ glibc-2.3.4/iconvdata/jisx0213.h 2004-08-06 13:58:58.000000000 -0400 @@ -1,5 +1,5 @@ /* Functions for JISX0213 conversion. - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2002. @@ -77,4 +77,27 @@ ucs4_to_jisx0213 (uint32_t ucs) return 0x0000; } +static inline int +__attribute ((always_inline)) +jisx0213_added_in_2004_p (uint16_t val) +{ + /* From JISX 0213:2000 to JISX 0213:2004, 10 characters were added to + plane 1, and plane 2 was left unchanged. See ISO-IR-233. */ + switch (val >> 8) + { + case 0x2e: + return val == 0x2e21; + case 0x2f: + return val == 0x2f7e; + case 0x4f: + return val == 0x4f54 || val == 0x4f7e; + case 0x74: + return val == 0x7427; + case 0x7e: + return val >= 0x7e7a && val <= 0x7e7e; + default: + return 0; + } +} + #endif /* _JISX0213_H */ diff -durpN glibc-2.3.3/iconvdata/JISX0213.TXT glibc-2.3.4/iconvdata/JISX0213.TXT --- glibc-2.3.3/iconvdata/JISX0213.TXT 2002-04-20 03:49:02.000000000 -0400 +++ glibc-2.3.4/iconvdata/JISX0213.TXT 2004-08-02 18:13:03.000000000 -0400 @@ -26,7 +26,7 @@ 0x1213A 0x3006 0x1213B 0x3007 0x1213C 0x30FC -0x1213D 0x2015 +0x1213D 0x2014 0x1213E 0x2010 0x1213F 0xFF0F 0x12140 0xFF3C @@ -211,7 +211,7 @@ 0x12337 0xFF17 0x12338 0xFF18 0x12339 0xFF19 -0x1233A 0x2299 +0x1233A 0x29BF 0x1233B 0x25C9 0x1233C 0x303D 0x1233D 0xFE46 @@ -1181,6 +1181,7 @@ 0x12D79 0x22BF 0x12D7D 0x2756 0x12D7E 0x261E +0x12E21 0x4FF1 0x12E22 0x2000B 0x12E23 0x3402 0x12E24 0x4E28 @@ -1367,6 +1368,7 @@ 0x12F7B 0x218BD 0x12F7C 0x5B19 0x12F7D 0x5B25 +0x12F7E 0x525D 0x13021 0x4E9C 0x13022 0x5516 0x13023 0x5A03 @@ -4332,6 +4334,7 @@ 0x14F51 0x6E7E 0x14F52 0x7897 0x14F53 0x8155 +0x14F54 0x20B9F 0x14F55 0x5B41 0x14F56 0x5B56 0x14F57 0x5B7D @@ -4373,6 +4376,7 @@ 0x14F7B 0x5DA7 0x14F7C 0x5DB8 0x14F7D 0x5DCB +0x14F7E 0x541E 0x15021 0x5F0C 0x15022 0x4E10 0x15023 0x4E15 @@ -7763,6 +7767,7 @@ 0x17424 0x7464 0x17425 0x51DC 0x17426 0x7199 +0x17427 0x5653 0x17428 0x5DE2 0x17429 0x5E14 0x1742A 0x5E18 @@ -8785,6 +8790,11 @@ 0x17E77 0x9F94 0x17E78 0x9F97 0x17E79 0x9FA2 +0x17E7A 0x59F8 +0x17E7B 0x5C5B +0x17E7C 0x5E77 +0x17E7D 0x7626 +0x17E7E 0x7E6B 0x22121 0x20089 0x22122 0x4E02 0x22123 0x4E0F diff -durpN glibc-2.3.3/iconvdata/Makefile glibc-2.3.4/iconvdata/Makefile --- glibc-2.3.3/iconvdata/Makefile 2003-07-14 19:39:47.000000000 -0400 +++ glibc-2.3.4/iconvdata/Makefile 2004-04-17 18:00:58.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1997-2002, 2003, 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 @@ -51,7 +51,7 @@ modules := ISO8859-1 ISO8859-2 ISO8859-3 GB18030 ISO-2022-CN-EXT VISCII GBBIG5 CP10007 KOI8-T \ GEORGIAN-PS GEORGIAN-ACADEMY ISO-IR-209 MAC-SAMI ARMSCII-8 \ TCVN5712-1 libJISX0213 EUC-JISX0213 SHIFT_JISX0213 \ - ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS + ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS PT154 RK1048 modules.so := $(addsuffix .so, $(modules)) @@ -172,7 +172,7 @@ distribute := gconv-modules extra-module mac-sami.c ibm1160.c ibm1160.h ibm1161.c ibm1161.h \ ibm1163.c ibm1163.h ibm1164.c ibm1164.h jisx0213.c jisx0213.h \ euc-jisx0213.c shift_jisx0213.c iso-2022-jp-3.c \ - tcvn5712-1.c armscii-8.c tscii.c ibm866nav.c + tcvn5712-1.c armscii-8.c tscii.c ibm866nav.c pt154.c rk1048.c # We build the transformation modules only when we build shared libs. ifeq (yes,$(build-shared)) @@ -213,7 +213,7 @@ gen-8bit-gap-modules := koi8-r latin-gre iso8859-13 iso8859-14 iso8859-15 mac-uk sami-ws2 \ iso-ir-197 tis-620 koi8-u ibm874 cp10007 koi8-t \ georgian-ps georgian-academy iso-ir-209 mac-sami \ - iso8859-11 ibm866nav + iso8859-11 ibm866nav pt154 rk1048 gen-special-modules := iso8859-7jp diff -durpN glibc-2.3.3/iconvdata/MISSING glibc-2.3.4/iconvdata/MISSING --- glibc-2.3.3/iconvdata/MISSING 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/iconvdata/MISSING 2004-09-18 04:15:55.000000000 -0400 @@ -0,0 +1,66 @@ +IBM1112 Baltic Multilingual +IBM921 Baltic 8bit +IBM1122 Estonia +IBM1006 Urdu 8bit +IBM1025 Cyrillic Multilingual +IBM1027 Japanese Latin Host Extended SBCS +CP300 Japanese Host Double-Byte including 1880 UDC +IBM1041 Japanese PC Data Extended SBCS +IBM301 Japanese PC Data Double-Byte including 1880 UDC +CP833 Korean Host SBCS +CP834 Korean Host Double-Byte including 1880 UDC +IBM1088 IBM KS Code - PC Data SBCS +IBM951 IBM KS Code - PC Data Double-Byte including 1880 UDC +CP835 Traditional Chinese Host Double-Byte including 6204 UDC +IBM1043 Traditional Chinese PC Data Extended SBCS +IBM927 Traditional Chinese Double-Byte including 6204 UDC +CP836 Simplified Chinese Host Extended SBCS +CP837 Simplified Chinese Host Double-Byte including 1880 UDC +IBM1115 Simplified Chinese Single-Byte including 5 SAA SB characters +IBM1380 Simplified Chinese DBCS PC including 1880 UDC and 31 IBM selected +CP838 Thai Host Extended SBCS +IBM839 Thai Host Double-Byte including 374 UDC +IBM929 Thai PC Data Double-Byte including 374 UDC +IBM276 DP94-French; Canada +IBM286 Alternate (3270); Austria and Germany +IBM293 APL (USA) +IBM1051 HP Emulation +IBM1100 Multination Emulation +IBM1276 Adobe Standard Encoding +IBM1275 Apple Latin-1 +IBM1277 Adobe Latin-1 +IBM1009 ISO-7: IRV +IBM1010 ISO-7: France +IBM1011 ISO-7: Germany +IBM1012 ISO-7: Italy +IBM1013 ISO-7: United Kingdom +IBM1014 ISO-7: Spain +IBM1015 ISO-7: Portugal +IBM1016 ISO-7: Norway +IBM1017 ISO-7: Denmark +IBM1018 ISO-7: Finland and Sweden +IBM1019 ISO-7: Belgium and Netherlands +IBM1020 ISO-7: Canadian (French) Variant +IBM1021 ISO-7: Switzerland Variant +IBM1022 ISO-7: Spain Variant +IBM1101 ISO-7: British NRC Set +IBM1102 ISO-7: Dutch NRC Set +IBM1103 ISO-7: Finnish NRC Set +IBM1104 ISO-7: French NRC Set +IBM1105 ISO-7: Norwegian/Danish NRC Set +IBM1106 ISO-7: Swedish NRC Set +IBM1107 ISO-7: Norwegian NRC Alternate +IBM1008 Arabic 8-bit ISO/ASCII +IBM1123 Cyrillic Ukraine EBCDIC +IBM1283 Apple Cyrillic +IBM1282 Apple Central European (Latin-2) +IBM1097 Farsi +IBM1098 Farsi - Personal Computer +IBM1280 Apple Greek +IBM803 Hebrew Set A (old code) +IBM421 Maghreb French +IBM853 PC Data: Turkey (replaced by Latin 5) +IBM1281 Apple Turkey +IBM1279 Hitachi Japanese Katakana Host +CP300 Japanese DBCS Host +IBM897 Japanese PC Data Single-Byte diff -durpN glibc-2.3.3/iconvdata/pt154.c glibc-2.3.4/iconvdata/pt154.c --- glibc-2.3.3/iconvdata/pt154.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/iconvdata/pt154.c 2004-04-17 18:01:39.000000000 -0400 @@ -0,0 +1,29 @@ +/* Conversion from and to PT154. + Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2004. + + 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 + +/* Get the conversion table. */ +#define TABLES + +#define CHARSET_NAME "PT154//" +#define HAS_HOLES 0 /* All 256 character are defined. */ + +#include <8bit-gap.c> diff -durpN glibc-2.3.3/iconvdata/rk1048.c glibc-2.3.4/iconvdata/rk1048.c --- glibc-2.3.3/iconvdata/rk1048.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/iconvdata/rk1048.c 2004-04-17 18:02:02.000000000 -0400 @@ -0,0 +1,29 @@ +/* Conversion from and to RK1048. + Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2004. + + 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 + +/* Get the conversion table. */ +#define TABLES + +#define CHARSET_NAME "RK1048//" +#define HAS_HOLES 1 /* Not all 256 character are defined. */ + +#include <8bit-gap.c> diff -durpN glibc-2.3.3/iconvdata/shift_jisx0213.c glibc-2.3.4/iconvdata/shift_jisx0213.c --- glibc-2.3.3/iconvdata/shift_jisx0213.c 2002-12-02 17:07:56.000000000 -0500 +++ glibc-2.3.4/iconvdata/shift_jisx0213.c 2004-03-07 04:34:22.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion from and to Shift_JISX0213. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2002. @@ -83,7 +83,8 @@ if (__builtin_expect (outbuf + 4 <= outend, 1)) \ { \ /* Write out the last character. */ \ - *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ + *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ + outbuf += sizeof (uint32_t); \ data->__statep->__count = 0; \ } \ else \ diff -durpN glibc-2.3.3/iconvdata/tcvn5712-1.c glibc-2.3.4/iconvdata/tcvn5712-1.c --- glibc-2.3.3/iconvdata/tcvn5712-1.c 2002-12-02 17:07:52.000000000 -0500 +++ glibc-2.3.4/iconvdata/tcvn5712-1.c 2004-03-07 04:34:22.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion to and from TCVN5712-1. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -68,7 +68,8 @@ if (__builtin_expect (outbuf + 4 <= outend, 1)) \ { \ /* Write out the last character. */ \ - *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ + *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ + outbuf += sizeof (uint32_t); \ data->__statep->__count = 0; \ } \ else \ diff -durpN glibc-2.3.3/iconvdata/testdata/EUC-JISX0213 glibc-2.3.4/iconvdata/testdata/EUC-JISX0213 --- glibc-2.3.3/iconvdata/testdata/EUC-JISX0213 2002-05-15 01:53:01.000000000 -0400 +++ glibc-2.3.4/iconvdata/testdata/EUC-JISX0213 2004-08-02 18:16:50.000000000 -0400 @@ -242,7 +242,7 @@ p q r s t u v w x y z { | } ~ ­Ð ­Ñ ­Ò ­Ó ­Ô ­Õ ­Ö ­× ­ß ­à ­á ­â ­ã ­ä ­å ­æ ­ç ­è ­é ­ê ­ë ­ì ­í ­î ­ï ­ó ­ø ­ù ­ý ­þ - ®¢ ®£ ®¤ ®¥ ®¦ ®§ ®¨ ®© ®ª ®« ®¬ ®­ ®® ®¯ + ®¡ ®¢ ®£ ®¤ ®¥ ®¦ ®§ ®¨ ®© ®ª ®« ®¬ ®­ ®® ®¯ ®° ®± ®² ®³ ®´ ®µ ®¶ ®· ®¸ ®¹ ®º ®» ®¼ ®½ ®¾ ®¿ ®À ®Á ®Â ®Ã ®Ä ®Å ®Æ ®Ç ®È ®É ®Ê ®Ë ®Ì ®Í ®Î ®Ï ®Ð ®Ñ ®Ò ®Ó ®Ô ®Õ ®Ö ®× ®Ø ®Ù ®Ú ®Û ®Ü ®Ý ®Þ ®ß @@ -253,7 +253,7 @@ p q r s t u v w x y z { | } ~ ¯À ¯Á ¯Â ¯Ã ¯Ä ¯Å ¯Æ ¯Ç ¯È ¯É ¯Ê ¯Ë ¯Ì ¯Í ¯Î ¯Ï ¯Ð ¯Ñ ¯Ò ¯Ó ¯Ô ¯Õ ¯Ö ¯× ¯Ø ¯Ù ¯Ú ¯Û ¯Ü ¯Ý ¯Þ ¯ß ¯à ¯á ¯â ¯ã ¯ä ¯å ¯æ ¯ç ¯è ¯é ¯ê ¯ë ¯ì ¯í ¯î ¯ï -¯ð ¯ñ ¯ò ¯ó ¯ô ¯õ ¯ö ¯÷ ¯ø ¯ù ¯ú ¯û ¯ü ¯ý +¯ð ¯ñ ¯ò ¯ó ¯ô ¯õ ¯ö ¯÷ ¯ø ¯ù ¯ú ¯û ¯ü ¯ý ¯þ °¡ °¢ °£ °¤ °¥ °¦ °§ °¨ °© °ª °« °¬ °­ °® °¯ °° °± °² °³ °´ °µ °¶ °· °¸ °¹ °º °» °¼ °½ °¾ °¿ °À °Á °Â °Ã °Ä °Å °Æ °Ç °È °É °Ê °Ë °Ì °Í °Î °Ï @@ -443,9 +443,9 @@ ΰ α β γ δ ε ζ η θ ι κ λ μ Î Ï¡ Ï¢ Ï£ Ϥ Ï¥ Ϧ ϧ Ϩ Ï© Ϫ Ï« Ϭ Ï­ Ï® ϯ ϰ ϱ ϲ ϳ Ï´ ϵ ϶ Ï· ϸ Ϲ Ϻ Ï» ϼ Ͻ Ͼ Ï¿ ÏÀ ÏÁ Ï Ïà ÏÄ ÏÅ ÏÆ ÏÇ ÏÈ ÏÉ ÏÊ ÏË ÏÌ ÏÍ ÏÎ ÏÏ -ÏÐ ÏÑ ÏÒ ÏÓ ÏÕ ÏÖ Ï× ÏØ ÏÙ ÏÚ ÏÛ ÏÜ ÏÝ ÏÞ Ïß +ÏÐ ÏÑ ÏÒ ÏÓ ÏÔ ÏÕ ÏÖ Ï× ÏØ ÏÙ ÏÚ ÏÛ ÏÜ ÏÝ ÏÞ Ïß Ïà Ïá Ïâ Ïã Ïä Ïå Ïæ Ïç Ïè Ïé Ïê Ïë Ïì Ïí Ïî Ïï -Ïð Ïñ Ïò Ïó Ïô Ïõ Ïö Ï÷ Ïø Ïù Ïú Ïû Ïü Ïý +Ïð Ïñ Ïò Ïó Ïô Ïõ Ïö Ï÷ Ïø Ïù Ïú Ïû Ïü Ïý Ïþ С Т У Ф Ð¥ Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ж з и й к л м н о п ÐÀ ÐÁ РÐà ÐÄ ÐÅ ÐÆ ÐÇ ÐÈ ÐÉ ÐÊ ÐË ÐÌ ÐÍ ÐÎ ÐÏ @@ -662,7 +662,7 @@ Û° Û± Û² Û³ Û´ Ûµ Û¶ Û· Û¸ Û¹ Ûº Û» Û¼ Û óÐ óÑ óÒ óÓ óÔ óÕ óÖ ó× óØ óÙ óÚ óÛ óÜ óÝ óÞ óß óà óá óâ óã óä óå óæ óç óè óé óê óë óì óí óî óï óð óñ óò óó óô óõ óö ó÷ óø óù óú óû óü óý óþ - ô¡ ô¢ ô£ ô¤ ô¥ ô¦ ô¨ ô© ôª ô« ô¬ ô­ ô® ô¯ + ô¡ ô¢ ô£ ô¤ ô¥ ô¦ ô§ ô¨ ô© ôª ô« ô¬ ô­ ô® ô¯ ô° ô± ô² ô³ ô´ ôµ ô¶ ô· ô¸ ô¹ ôº ô» ô¼ ô½ ô¾ ô¿ ôÀ ôÁ ô ôà ôÄ ôÅ ôÆ ôÇ ôÈ ôÉ ôÊ ôË ôÌ ôÍ ôÎ ôÏ ôÐ ôÑ ôÒ ôÓ ôÔ ôÕ ôÖ ô× ôØ ôÙ ôÚ ôÛ ôÜ ôÝ ôÞ ôß @@ -727,4 +727,4 @@ Û° Û± Û² Û³ Û´ Ûµ Û¶ Û· Û¸ Û¹ Ûº Û» Û¼ Û þÀ þÁ þ þà þÄ þÅ þÆ þÇ þÈ þÉ þÊ þË þÌ þÍ þÎ þÏ þÐ þÑ þÒ þÓ þÔ þÕ þÖ þ× þØ þÙ þÚ þÛ þÜ þÝ þÞ þß þà þá þâ þã þä þå þæ þç þè þé þê þë þì þí þî þï -þð þñ þò þó þô þõ þö þ÷ þø þù +þð þñ þò þó þô þõ þö þ÷ þø þù þú þû þü þý þþ diff -durpN glibc-2.3.3/iconvdata/testdata/EUC-JISX0213..UTF8 glibc-2.3.4/iconvdata/testdata/EUC-JISX0213..UTF8 --- glibc-2.3.3/iconvdata/testdata/EUC-JISX0213..UTF8 2002-05-15 01:53:01.000000000 -0400 +++ glibc-2.3.4/iconvdata/testdata/EUC-JISX0213..UTF8 2004-08-02 18:18:40.000000000 -0400 @@ -165,7 +165,7 @@ 鸜 é¸ é¹» 𢈘 麀 麅 麛 麨 𪎌 éº äµ· 鼃 é¼— é¼™ 鼯 é¼· 鼺 é¼½ é½ é½… 齆 齓 齕 齘 𪗱 é½ ðª˜‚ 齩 𪘚 é½­ é½° é½µ 𪚲   〠。 , . ・ : ï¼› ? ï¼ ã‚› ゜ ´ ï½€ ¨ -ï¼¾ ï¿£ _ ヽ ヾ ゠ゞ 〃 ä» ã€… 〆 〇 ー ― â€ ï¼ +ï¼¾ ï¿£ _ ヽ ヾ ゠ゞ 〃 ä» ã€… 〆 〇 ー — â€ ï¼ ï¼¼ 〜 ‖ | … ‥ ‘ ’ “ †( ) 〔 〕 ï¼» ï¼½ ï½› ï½ ã€ˆ 〉 《 》 「 〠『 〠〠】 + − ± × ÷ ï¼ â‰  < > ≦ ≧ ∞ ∴ ♂ ♀ ° ′ ″ ℃ ï¿¥ @@ -177,7 +177,7 @@ äµ· 鼃 é¼— é¼™ 鼯 é¼· 鼺 é¼½ é½ é½… ∇ ≡ ≒ ≪ ≫ √ ∽ ∠∵ ∫ ∬ ≢ ≃ ≅ ≈ ≶ ≷ ↔ â„« ‰ ♯ â™­ ♪ † ‡ ¶ â™® ♫ ♬ ♩ â—¯ â–· â–¶ â— â—€ ↗ ↘ ↖ ↙ ⇄ ⇨ ⇦ ⇧ ⇩ ⤴ ⤵ -ï¼ ï¼‘ ï¼’ 3 ï¼” 5 ï¼– ï¼— 8 ï¼™ ⊙ â—‰ 〽 ﹆ ï¹… â—¦ +ï¼ ï¼‘ ï¼’ 3 ï¼” 5 ï¼– ï¼— 8 ï¼™ ⦿ â—‰ 〽 ﹆ ï¹… â—¦ • A ï¼¢ ï¼£ D ï¼¥ F ï¼§ H I J K L ï¼­ ï¼® O ï¼° ï¼± ï¼² ï¼³ ï¼´ ï¼µ ï¼¶ ï¼· X ï¼¹ Z ∓ ℵ â„ ã‹ â„“ â„§ ï½ ï½‚ c d ï½… f g h i j k l ï½ ï½Ž ï½ @@ -242,7 +242,7 @@ ⓟ â“  â“¡ â“¢ â“£ ⓤ â“¥ ⓦ â“§ ⓨ ㎜ ㎠㎞ ㎎ ㎠ㄠ㎡ â…« 㻠〠〟 â„– ã â„¡ ㊤ ㊥ ㊦ ㊧ ㊨ ㈱ ㈲ ㈹ 㾠㽠㼠∮ ∟ ⊿ ■☞ - 𠀋 ゠丨 丯 丰 äº ä»¡ 份 仿 伃 伋 ä½  佈 佉 + 俱 𠀋 ゠丨 丯 丰 äº ä»¡ 份 仿 伃 伋 ä½  佈 佉 ä½– 佟 佪 佬 ä½¾ 侊 ä¾” ä¾— 侮 俉 ä¿  å€ å€‚ 倎 倘 倧 倮 å€ å€» å å‚” 僌 僲 åƒ åƒ¦ 僧 儆 儃 å„‹ 儞 儵 å…Š 免 å…• å…— ã’µ å† å‡ƒ 凊 凞 凢 凮 åˆ ã“› 刓 刕 剉 剗 @@ -253,7 +253,7 @@ 嘈 嘎 嘻 噉 å™¶ 噦 器 噯 å™± 噲 囊 圊 𡈽 圡 圯 圳 圴 å° å· å¼ åžœ ï¨ ð¡Œ› 垸 埇 埈 åŸ åŸ¤ 埭 埵 埶 埿 å ‰ ï¨ å¡¡ 塤 塀 塼 墉 增 墨 墩 ð¡‘® 壒 壎 壔 壚 壠 壩 夌 è™ å¥ å¥­ 妋 妒 妤 姃 å§’ -å§ å¨“ 娣 å©§ å©­ å©· 婾 媄 媞 媧 å«„ ð¡¢½ 嬙 嬥 +å§ å¨“ 娣 å©§ å©­ å©· 婾 媄 媞 媧 å«„ ð¡¢½ 嬙 嬥 å‰ äºœ å”– 娃 阿 å“€ æ„› 挨 å§¶ 逢 葵 茜 ç© æ‚ª æ¡ æ¸¥ æ—­ 葦 芦 鯵 梓 圧 æ–¡ 扱 å®› å§ è™» 飴 çµ¢ ç¶¾ 鮎 或 粟 袷 安 庵 按 æš— 案 é—‡ éž æ 以 伊 ä½ ä¾ å‰ å›² @@ -443,9 +443,9 @@ é½¢ 暦 æ­´ 列 劣 烈 裂 廉 æ‹ æ† è“® 連 錬 å‘‚ é­¯ æ«“ 炉 賂 è·¯ 露 労 å© å»Š 弄 朗 楼 榔 浪 æ¼ ç‰¢ 狼 篭 è€ è¾ è‹ éƒŽ å…­ 麓 禄 è‚‹ 録 è«– 倭 å’Œ 話 æ­ª 賄 脇 惑 æž  é·² 亙 亘 é° è©« è— è•¨ -椀 æ¹¾ 碗 è…• å­ å­– å­½ 宓 寘 寬 å°’ å°ž å°£ å°« ãž +椀 æ¹¾ 碗 è…• 𠮟 å­ å­– å­½ 宓 寘 寬 å°’ å°ž å°£ å°« ãž å±¢ 層 屮 𡚴 屺 å² å²Ÿ å²£ 岪 岺 峋 å³ å³’ å³´ 𡸴 㟢 -å´ å´§ 﨑 嵆 嵇 嵓 嵊 åµ­ å¶ å¶  嶤 å¶§ 嶸 å·‹ +å´ å´§ 﨑 嵆 嵇 嵓 嵊 åµ­ å¶ å¶  嶤 å¶§ 嶸 å·‹ åž å¼Œ ä¸ ä¸• 个 丱 丶 丼 丿 乂 ä¹– 乘 亂 亅 豫 亊 舒 å¼ äºŽ 亞 亟 亠 亢 亰 亳 亶 从 ä» ä»„ 仆 仂 ä»— 仞 ä»­ 仟 ä»· 伉 佚 ä¼° ä½› ä½ ä½— 佇 ä½¶ 侈 ä¾ ä¾˜ ä½» @@ -662,7 +662,7 @@ 鸚 鸛 鸞 é¹µ é¹¹ é¹½ éº éºˆ 麋 麌 麸 麪 麭 é¡ é»Œ 黎 é» é» é»” 黜 點 é» é»  黥 黨 黯 é»´ é»¶ é»· 黹 é»» 黼 黽 鼇 鼈 çš· 鼕 鼡 鼬 é¼¾ 齊 é½’ é½” é½£ 齟 é½  齡 齦 é½§ 齬 齪 é½· é½² é½¶ 龕 龜 é¾  - å ¯ 槇 é™ ç‘¤ 凜 熙 å·¢ 帔 帘 幘 幞 庾 廊 廋 + å ¯ 槇 é™ ç‘¤ 凜 熙 噓 å·¢ 帔 帘 幘 幞 庾 廊 廋 廹 å¼€ 异 弇 å¼ å¼£ å¼´ å¼¶ å¼½ å½€ å½… å½” 彘 彤 å½§ å½½ 徉 徜 å¾§ 徯 å¾µ å¾· 忉 忞 å¿¡ å¿© æ€ æ€” 怘 怳 怵 æ‡ ï¨½ æ‚ æ‚ž 惋 惔 惕 æƒ æƒ¸ 愜 æ„« æ„° æ„· 慨 æ† ï¨¿ 憼 @@ -727,4 +727,4 @@ 騮 騸 驊 驎 é©’ 骶 é« é«ƒ 髎 é«– é­ž é­¹ é­¦ é­² é­µ 鮄 鮊 é® é®ž é®§ é¯ é¯Ž 鯥 鯸 鯽 é°€ é°£ é± é± é± é±“ é±£ é±¥ é±· é´ é´ž 鵃 鵇 éµ’ éµ£ éµ° éµ¼ é¶Š é¶– é·€ 鶬 é¶¼ é·— 𪆠鷧 鸇 鸕 é¹¼ 麞 麤 麬 麯 麴 -麵 黃 黑 é¼ é¼¹ é½— é¾ é¾” é¾— é¾¢ +麵 黃 黑 é¼ é¼¹ é½— é¾ é¾” é¾— é¾¢ 姸 å±› å¹· 瘦 繫 diff -durpN glibc-2.3.3/iconvdata/testdata/ISO-2022-JP-3 glibc-2.3.4/iconvdata/testdata/ISO-2022-JP-3 --- glibc-2.3.3/iconvdata/testdata/ISO-2022-JP-3 2002-05-15 01:55:32.000000000 -0400 +++ glibc-2.3.4/iconvdata/testdata/ISO-2022-JP-3 2004-08-11 14:47:11.000000000 -0400 @@ -86,7 +86,7 @@ p q r s t u v w x y z { | } ~ $(O-P(B $(O-Q(B $(O-R(B $(O-S(B $(O-T(B $(O-U(B $(O-V(B $(O-W(B $(O-_(B $(O-`(B $(O-a(B $(O-b(B $(O-c(B $(O-d(B $(O-e(B $(O-f(B $(O-g(B $(O-h(B $(O-i(B $(O-j(B $(O-k(B $(O-l(B $(O-m(B $(O-n(B $(O-o(B $(O-s(B $(O-x(B $(O-y(B $(O-}(B $(O-~(B - $(O."(B $(O.#(B $(O.$(B $(O.%(B $(O.&(B $(O.'(B $(O.((B $(O.)(B $(O.*(B $(O.+(B $(O.,(B $(O.-(B $(O..(B $(O./(B + $(Q.!(B $(O."(B $(O.#(B $(O.$(B $(O.%(B $(O.&(B $(O.'(B $(O.((B $(O.)(B $(O.*(B $(O.+(B $(O.,(B $(O.-(B $(O..(B $(O./(B $(O.0(B $(O.1(B $(O.2(B $(O.3(B $(O.4(B $(O.5(B $(O.6(B $(O.7(B $(O.8(B $(O.9(B $(O.:(B $(O.;(B $(O.<(B $(O.=(B $(O.>(B $(O.?(B $(O.@(B $(O.A(B $(O.B(B $(O.C(B $(O.D(B $(O.E(B $(O.F(B $(O.G(B $(O.H(B $(O.I(B $(O.J(B $(O.K(B $(O.L(B $(O.M(B $(O.N(B $(O.O(B $(O.P(B $(O.Q(B $(O.R(B $(O.S(B $(O.T(B $(O.U(B $(O.V(B $(O.W(B $(O.X(B $(O.Y(B $(O.Z(B $(O.[(B $(O.\(B $(O.](B $(O.^(B $(O._(B @@ -97,7 +97,7 @@ p q r s t u v w x y z { | } ~ $(O/@(B $(O/A(B $(O/B(B $(O/C(B $(O/D(B $(O/E(B $(O/F(B $(O/G(B $(O/H(B $(O/I(B $(O/J(B $(O/K(B $(O/L(B $(O/M(B $(O/N(B $(O/O(B $(O/P(B $(O/Q(B $(O/R(B $(O/S(B $(O/T(B $(O/U(B $(O/V(B $(O/W(B $(O/X(B $(O/Y(B $(O/Z(B $(O/[(B $(O/\(B $(O/](B $(O/^(B $(O/_(B $(O/`(B $(O/a(B $(O/b(B $(O/c(B $(O/d(B $(O/e(B $(O/f(B $(O/g(B $(O/h(B $(O/i(B $(O/j(B $(O/k(B $(O/l(B $(O/m(B $(O/n(B $(O/o(B -$(O/p(B $(O/q(B $(O/r(B $(O/s(B $(O/t(B $(O/u(B $(O/v(B $(O/w(B $(O/x(B $(O/y(B $(O/z(B $(O/{(B $(O/|(B $(O/}(B +$(O/p(B $(O/q(B $(O/r(B $(O/s(B $(O/t(B $(O/u(B $(O/v(B $(O/w(B $(O/x(B $(O/y(B $(O/z(B $(O/{(B $(O/|(B $(O/}(B $(Q/~(B $B0!(B $B0"(B $B0#(B $B0$(B $B0%(B $B0&(B $B0'(B $B0((B $B0)(B $B0*(B $B0+(B $B0,(B $B0-(B $B0.(B $B0/(B $B00(B $B01(B $B02(B $B03(B $B04(B $B05(B $B06(B $B07(B $B08(B $B09(B $B0:(B $B0;(B $B0<(B $B0=(B $B0>(B $B0?(B $B0@(B $B0A(B $B0B(B $B0C(B $B0D(B $B0E(B $B0F(B $B0G(B $B0H(B $B0I(B $B0J(B $B0K(B $B0L(B $B0M(B $B0N(B $B0O(B @@ -287,9 +287,9 @@ p q r s t u v w x y z { | } ~ $BO!(B $BO"(B $BO#(B $BO$(B $BO%(B $BO&(B $BO'(B $BO((B $BO)(B $BO*(B $BO+(B $BO,(B $BO-(B $BO.(B $BO/(B $BO0(B $BO1(B $BO2(B $BO3(B $BO4(B $BO5(B $BO6(B $BO7(B $BO8(B $BO9(B $BO:(B $BO;(B $BO<(B $BO=(B $BO>(B $BO?(B $BO@(B $BOA(B $BOB(B $BOC(B $BOD(B $BOE(B $BOF(B $BOG(B $BOH(B $BOI(B $BOJ(B $BOK(B $BOL(B $BOM(B $BON(B $BOO(B -$BOP(B $BOQ(B $BOR(B $BOS(B $(OOU(B $(OOV(B $(OOW(B $(OOX(B $(OOY(B $(OOZ(B $(OO[(B $(OO\(B $(OO](B $(OO^(B $(OO_(B +$BOP(B $BOQ(B $BOR(B $BOS(B $(QOT(B $(OOU(B $(OOV(B $(OOW(B $(OOX(B $(OOY(B $(OOZ(B $(OO[(B $(OO\(B $(OO](B $(OO^(B $(OO_(B $(OO`(B $(OOa(B $(OOb(B $(OOc(B $(OOd(B $(OOe(B $(OOf(B $(OOg(B $(OOh(B $(OOi(B $(OOj(B $(OOk(B $(OOl(B $(OOm(B $(OOn(B $(OOo(B -$(OOp(B $(OOq(B $(OOr(B $(OOs(B $(OOt(B $(OOu(B $(OOv(B $(OOw(B $(OOx(B $(OOy(B $(OOz(B $(OO{(B $(OO|(B $(OO}(B +$(OOp(B $(OOq(B $(OOr(B $(OOs(B $(OOt(B $(OOu(B $(OOv(B $(OOw(B $(OOx(B $(OOy(B $(OOz(B $(OO{(B $(OO|(B $(OO}(B $(QO~(B $BP!(B $BP"(B $BP#(B $BP$(B $BP%(B $BP&(B $BP'(B $BP((B $BP)(B $BP*(B $BP+(B $BP,(B $BP-(B $BP.(B $BP/(B $BP0(B $BP1(B $BP2(B $BP3(B $BP4(B $BP5(B $BP6(B $BP7(B $BP8(B $BP9(B $BP:(B $BP;(B $BP<(B $BP=(B $BP>(B $BP?(B $BP@(B $BPA(B $BPB(B $BPC(B $BPD(B $BPE(B $BPF(B $BPG(B $BPH(B $BPI(B $BPJ(B $BPK(B $BPL(B $BPM(B $BPN(B $BPO(B @@ -506,7 +506,7 @@ p q r s t u v w x y z { | } ~ $BsP(B $BsQ(B $BsR(B $BsS(B $BsT(B $BsU(B $BsV(B $BsW(B $BsX(B $BsY(B $BsZ(B $Bs[(B $Bs\(B $Bs](B $Bs^(B $Bs_(B $Bs`(B $Bsa(B $Bsb(B $Bsc(B $Bsd(B $Bse(B $Bsf(B $Bsg(B $Bsh(B $Bsi(B $Bsj(B $Bsk(B $Bsl(B $Bsm(B $Bsn(B $Bso(B $Bsp(B $Bsq(B $Bsr(B $Bss(B $Bst(B $Bsu(B $Bsv(B $Bsw(B $Bsx(B $Bsy(B $Bsz(B $Bs{(B $Bs|(B $Bs}(B $Bs~(B - $Bt!(B $Bt"(B $Bt#(B $Bt$(B $Bt%(B $Bt&(B $(Ot((B $(Ot)(B $(Ot*(B $(Ot+(B $(Ot,(B $(Ot-(B $(Ot.(B $(Ot/(B + $Bt!(B $Bt"(B $Bt#(B $Bt$(B $Bt%(B $Bt&(B $(Qt'(B $(Ot((B $(Ot)(B $(Ot*(B $(Ot+(B $(Ot,(B $(Ot-(B $(Ot.(B $(Ot/(B $(Ot0(B $(Ot1(B $(Ot2(B $(Ot3(B $(Ot4(B $(Ot5(B $(Ot6(B $(Ot7(B $(Ot8(B $(Ot9(B $(Ot:(B $(Ot;(B $(Ot<(B $(Ot=(B $(Ot>(B $(Ot?(B $(Ot@(B $(OtA(B $(OtB(B $(OtC(B $(OtD(B $(OtE(B $(OtF(B $(OtG(B $(OtH(B $(OtI(B $(OtJ(B $(OtK(B $(OtL(B $(OtM(B $(OtN(B $(OtO(B $(OtP(B $(OtQ(B $(OtR(B $(OtS(B $(OtT(B $(OtU(B $(OtV(B $(OtW(B $(OtX(B $(OtY(B $(OtZ(B $(Ot[(B $(Ot\(B $(Ot](B $(Ot^(B $(Ot_(B @@ -571,7 +571,7 @@ p q r s t u v w x y z { | } ~ $(O~@(B $(O~A(B $(O~B(B $(O~C(B $(O~D(B $(O~E(B $(O~F(B $(O~G(B $(O~H(B $(O~I(B $(O~J(B $(O~K(B $(O~L(B $(O~M(B $(O~N(B $(O~O(B $(O~P(B $(O~Q(B $(O~R(B $(O~S(B $(O~T(B $(O~U(B $(O~V(B $(O~W(B $(O~X(B $(O~Y(B $(O~Z(B $(O~[(B $(O~\(B $(O~](B $(O~^(B $(O~_(B $(O~`(B $(O~a(B $(O~b(B $(O~c(B $(O~d(B $(O~e(B $(O~f(B $(O~g(B $(O~h(B $(O~i(B $(O~j(B $(O~k(B $(O~l(B $(O~m(B $(O~n(B $(O~o(B -$(O~p(B $(O~q(B $(O~r(B $(O~s(B $(O~t(B $(O~u(B $(O~v(B $(O~w(B $(O~x(B $(O~y(B +$(O~p(B $(O~q(B $(O~r(B $(O~s(B $(O~t(B $(O~u(B $(O~v(B $(O~w(B $(O~x(B $(O~y(B $(Q~z(B $(Q~{(B $(Q~|(B $(Q~}(B $(Q~~(B $(P!!(B $(P!"(B $(P!#(B $(P!$(B $(P!%(B $(P!&(B $(P!'(B $(P!((B $(P!)(B $(P!*(B $(P!+(B $(P!,(B $(P!-(B $(P!.(B $(P!/(B $(P!0(B $(P!1(B $(P!2(B $(P!3(B $(P!4(B $(P!5(B $(P!6(B $(P!7(B $(P!8(B $(P!9(B $(P!:(B $(P!;(B $(P!<(B $(P!=(B $(P!>(B $(P!?(B $(P!@(B $(P!A(B $(P!B(B $(P!C(B $(P!D(B $(P!E(B $(P!F(B $(P!G(B $(P!H(B $(P!I(B $(P!J(B $(P!K(B $(P!L(B $(P!M(B $(P!N(B $(P!O(B diff -durpN glibc-2.3.3/iconvdata/testdata/ISO-2022-JP-3..UTF8 glibc-2.3.4/iconvdata/testdata/ISO-2022-JP-3..UTF8 --- glibc-2.3.3/iconvdata/testdata/ISO-2022-JP-3..UTF8 2002-05-15 01:55:32.000000000 -0400 +++ glibc-2.3.4/iconvdata/testdata/ISO-2022-JP-3..UTF8 2004-08-02 18:18:40.000000000 -0400 @@ -21,7 +21,7 @@ ï¾ ï¾‘ ï¾’ モ ï¾” ユ ï¾– ï¾— リ ï¾™ ∇ ≡ ≒ ≪ ≫ √ ∽ ∠∵ ∫ ∬ ≢ ≃ ≅ ≈ ≶ ≷ ↔ â„« ‰ ♯ â™­ ♪ † ‡ ¶ â™® ♫ ♬ ♩ â—¯ â–· â–¶ â— â—€ ↗ ↘ ↖ ↙ ⇄ ⇨ ⇦ ⇧ ⇩ ⤴ ⤵ -ï¼ ï¼‘ ï¼’ 3 ï¼” 5 ï¼– ï¼— 8 ï¼™ ⊙ â—‰ 〽 ﹆ ï¹… â—¦ +ï¼ ï¼‘ ï¼’ 3 ï¼” 5 ï¼– ï¼— 8 ï¼™ ⦿ â—‰ 〽 ﹆ ï¹… â—¦ • A ï¼¢ ï¼£ D ï¼¥ F ï¼§ H I J K L ï¼­ ï¼® O ï¼° ï¼± ï¼² ï¼³ ï¼´ ï¼µ ï¼¶ ï¼· X ï¼¹ Z ∓ ℵ â„ ã‹ â„“ â„§ ï½ ï½‚ c d ï½… f g h i j k l ï½ ï½Ž ï½ @@ -86,7 +86,7 @@ ⓟ â“  â“¡ â“¢ â“£ ⓤ â“¥ ⓦ â“§ ⓨ ㎜ ㎠㎞ ㎎ ㎠ㄠ㎡ â…« 㻠〠〟 â„– ã â„¡ ㊤ ㊥ ㊦ ㊧ ㊨ ㈱ ㈲ ㈹ 㾠㽠㼠∮ ∟ ⊿ ■☞ - 𠀋 ゠丨 丯 丰 äº ä»¡ 份 仿 伃 伋 ä½  佈 佉 + 俱 𠀋 ゠丨 丯 丰 äº ä»¡ 份 仿 伃 伋 ä½  佈 佉 ä½– 佟 佪 佬 ä½¾ 侊 ä¾” ä¾— 侮 俉 ä¿  å€ å€‚ 倎 倘 倧 倮 å€ å€» å å‚” 僌 僲 åƒ åƒ¦ 僧 儆 儃 å„‹ 儞 儵 å…Š 免 å…• å…— ã’µ å† å‡ƒ 凊 凞 凢 凮 åˆ ã“› 刓 刕 剉 剗 @@ -97,7 +97,7 @@ 嘈 嘎 嘻 噉 å™¶ 噦 器 噯 å™± 噲 囊 圊 𡈽 圡 圯 圳 圴 å° å· å¼ åžœ ï¨ ð¡Œ› 垸 埇 埈 åŸ åŸ¤ 埭 埵 埶 埿 å ‰ ï¨ å¡¡ 塤 塀 塼 墉 增 墨 墩 ð¡‘® 壒 壎 壔 壚 壠 壩 夌 è™ å¥ å¥­ 妋 妒 妤 姃 å§’ -å§ å¨“ 娣 å©§ å©­ å©· 婾 媄 媞 媧 å«„ ð¡¢½ 嬙 嬥 +å§ å¨“ 娣 å©§ å©­ å©· 婾 媄 媞 媧 å«„ ð¡¢½ 嬙 嬥 å‰ äºœ å”– 娃 阿 å“€ æ„› 挨 å§¶ 逢 葵 茜 ç© æ‚ª æ¡ æ¸¥ æ—­ 葦 芦 鯵 梓 圧 æ–¡ 扱 å®› å§ è™» 飴 çµ¢ ç¶¾ 鮎 或 粟 袷 安 庵 按 æš— 案 é—‡ éž æ 以 伊 ä½ ä¾ å‰ å›² @@ -287,9 +287,9 @@ é½¢ 暦 æ­´ 列 劣 烈 裂 廉 æ‹ æ† è“® 連 錬 å‘‚ é­¯ æ«“ 炉 賂 è·¯ 露 労 å© å»Š 弄 朗 楼 榔 浪 æ¼ ç‰¢ 狼 篭 è€ è¾ è‹ éƒŽ å…­ 麓 禄 è‚‹ 録 è«– 倭 å’Œ 話 æ­ª 賄 脇 惑 æž  é·² 亙 亘 é° è©« è— è•¨ -椀 æ¹¾ 碗 è…• å­ å­– å­½ 宓 寘 寬 å°’ å°ž å°£ å°« ãž +椀 æ¹¾ 碗 è…• 𠮟 å­ å­– å­½ 宓 寘 寬 å°’ å°ž å°£ å°« ãž å±¢ 層 屮 𡚴 屺 å² å²Ÿ å²£ 岪 岺 峋 å³ å³’ å³´ 𡸴 㟢 -å´ å´§ 﨑 嵆 嵇 嵓 嵊 åµ­ å¶ å¶  嶤 å¶§ 嶸 å·‹ +å´ å´§ 﨑 嵆 嵇 嵓 嵊 åµ­ å¶ å¶  嶤 å¶§ 嶸 å·‹ åž å¼Œ ä¸ ä¸• 个 丱 丶 丼 丿 乂 ä¹– 乘 亂 亅 豫 亊 舒 å¼ äºŽ 亞 亟 亠 亢 亰 亳 亶 从 ä» ä»„ 仆 仂 ä»— 仞 ä»­ 仟 ä»· 伉 佚 ä¼° ä½› ä½ ä½— 佇 ä½¶ 侈 ä¾ ä¾˜ ä½» @@ -506,7 +506,7 @@ 鸚 鸛 鸞 é¹µ é¹¹ é¹½ éº éºˆ 麋 麌 麸 麪 麭 é¡ é»Œ 黎 é» é» é»” 黜 點 é» é»  黥 黨 黯 é»´ é»¶ é»· 黹 é»» 黼 黽 鼇 鼈 çš· 鼕 鼡 鼬 é¼¾ 齊 é½’ é½” é½£ 齟 é½  齡 齦 é½§ 齬 齪 é½· é½² é½¶ 龕 龜 é¾  - å ¯ 槇 é™ ç‘¤ 凜 熙 å·¢ 帔 帘 幘 幞 庾 廊 廋 + å ¯ 槇 é™ ç‘¤ 凜 熙 噓 å·¢ 帔 帘 幘 幞 庾 廊 廋 廹 å¼€ 异 弇 å¼ å¼£ å¼´ å¼¶ å¼½ å½€ å½… å½” 彘 彤 å½§ å½½ 徉 徜 å¾§ 徯 å¾µ å¾· 忉 忞 å¿¡ å¿© æ€ æ€” 怘 怳 怵 æ‡ ï¨½ æ‚ æ‚ž 惋 惔 惕 æƒ æƒ¸ 愜 æ„« æ„° æ„· 慨 æ† ï¨¿ 憼 @@ -571,7 +571,7 @@ 騮 騸 驊 驎 é©’ 骶 é« é«ƒ 髎 é«– é­ž é­¹ é­¦ é­² é­µ 鮄 鮊 é® é®ž é®§ é¯ é¯Ž 鯥 鯸 鯽 é°€ é°£ é± é± é± é±“ é±£ é±¥ é±· é´ é´ž 鵃 鵇 éµ’ éµ£ éµ° éµ¼ é¶Š é¶– é·€ 鶬 é¶¼ é·— 𪆠鷧 鸇 鸕 é¹¼ 麞 麤 麬 麯 麴 -麵 黃 黑 é¼ é¼¹ é½— é¾ é¾” é¾— é¾¢ +麵 黃 黑 é¼ é¼¹ é½— é¾ é¾” é¾— é¾¢ 姸 å±› å¹· 瘦 繫 𠂉 丂 ä¸ ä¸’ 丩 丫 丮 ä¹€ 乇 么 ð ‚¢ 乑 ㆠ𠂤 乚 乩 äº ã¬ ã® äº¹ 亻 𠆢 亼 仃 仈 ä» ä»« 仚 ä»± 仵 ä¼€ ä¼– 佤 ä¼· ä¼¾ ä½” 佘 𠈓 ä½· 佸 佺 ä½½ 侂 ä¾… ä¾’ 侚 俦 diff -durpN glibc-2.3.3/iconvdata/testdata/SHIFT_JISX0213 glibc-2.3.4/iconvdata/testdata/SHIFT_JISX0213 --- glibc-2.3.3/iconvdata/testdata/SHIFT_JISX0213 2002-05-15 01:54:14.000000000 -0400 +++ glibc-2.3.4/iconvdata/testdata/SHIFT_JISX0213 2004-08-02 18:16:50.000000000 -0400 @@ -81,7 +81,7 @@ p q r s t u v w x y z { | } ~ ‡` ‡a ‡b ‡c ‡d ‡e ‡f ‡g ‡h ‡i ‡j ‡k ‡l ‡m ‡n ‡o ‡p ‡q ‡r ‡s ‡t ‡u ‡v ‡~ ‡€ ‡ ‡‚ ‡ƒ ‡„ ‡… ‡† ‡‡ ‡ˆ ‡‰ ‡Š ‡‹ ‡Œ ‡ ‡Ž ‡ - ‡“ ‡˜ ‡™ ‡ ‡ž + ‡“ ‡˜ ‡™ ‡ ‡ž ‡Ÿ ‡  ‡¡ ‡¢ ‡£ ‡¤ ‡¥ ‡¦ ‡§ ‡¨ ‡© ‡ª ‡« ‡¬ ‡­ ‡® ‡¯ ‡° ‡± ‡² ‡³ ‡´ ‡µ ‡¶ ‡· ‡¸ ‡¹ ‡º ‡» ‡¼ ‡½ ‡¾ ‡¿ ‡À ‡Á ‡Â ‡Ã ‡Ä ‡Å ‡Æ ‡Ç ‡È ‡É ‡Ê ‡Ë ‡Ì ‡Í ‡Î ‡Ï @@ -93,7 +93,7 @@ p q r s t u v w x y z { | } ~ ˆ` ˆa ˆb ˆc ˆd ˆe ˆf ˆg ˆh ˆi ˆj ˆk ˆl ˆm ˆn ˆo ˆp ˆq ˆr ˆs ˆt ˆu ˆv ˆw ˆx ˆy ˆz ˆ{ ˆ| ˆ} ˆ~ ˆ€ ˆ ˆ‚ ˆƒ ˆ„ ˆ… ˆ† ˆ‡ ˆˆ ˆ‰ ˆŠ ˆ‹ ˆŒ ˆ ˆŽ ˆ -ˆ ˆ‘ ˆ’ ˆ“ ˆ” ˆ• ˆ– ˆ— ˆ˜ ˆ™ ˆš ˆ› ˆœ ˆ ˆŸ +ˆ ˆ‘ ˆ’ ˆ“ ˆ” ˆ• ˆ– ˆ— ˆ˜ ˆ™ ˆš ˆ› ˆœ ˆ ˆž ˆŸ ˆ  ˆ¡ ˆ¢ ˆ£ ˆ¤ ˆ¥ ˆ¦ ˆ§ ˆ¨ ˆ© ˆª ˆ« ˆ¬ ˆ­ ˆ® ˆ¯ ˆ° ˆ± ˆ² ˆ³ ˆ´ ˆµ ˆ¶ ˆ· ˆ¸ ˆ¹ ˆº ˆ» ˆ¼ ˆ½ ˆ¾ ˆ¿ ˆÀ ˆÁ ˆÂ ˆÃ ˆÄ ˆÅ ˆÆ ˆÇ ˆÈ ˆÉ ˆÊ ˆË ˆÌ ˆÍ ˆÎ ˆÏ @@ -283,9 +283,9 @@ p q r s t u v w x y z { | } ~ ˜@ ˜A ˜B ˜C ˜D ˜E ˜F ˜G ˜H ˜I ˜J ˜K ˜L ˜M ˜N ˜O ˜P ˜Q ˜R ˜S ˜T ˜U ˜V ˜W ˜X ˜Y ˜Z ˜[ ˜\ ˜] ˜^ ˜_ ˜` ˜a ˜b ˜c ˜d ˜e ˜f ˜g ˜h ˜i ˜j ˜k ˜l ˜m ˜n ˜o -˜p ˜q ˜r ˜t ˜u ˜v ˜w ˜x ˜y ˜z ˜{ ˜| ˜} ˜~ +˜p ˜q ˜r ˜s ˜t ˜u ˜v ˜w ˜x ˜y ˜z ˜{ ˜| ˜} ˜~ ˜€ ˜ ˜‚ ˜ƒ ˜„ ˜… ˜† ˜‡ ˜ˆ ˜‰ ˜Š ˜‹ ˜Œ ˜ ˜Ž ˜ -˜ ˜‘ ˜’ ˜“ ˜” ˜• ˜– ˜— ˜˜ ˜™ ˜š ˜› ˜œ ˜ ˜Ÿ +˜ ˜‘ ˜’ ˜“ ˜” ˜• ˜– ˜— ˜˜ ˜™ ˜š ˜› ˜œ ˜ ˜ž ˜Ÿ ˜  ˜¡ ˜¢ ˜£ ˜¤ ˜¥ ˜¦ ˜§ ˜¨ ˜© ˜ª ˜« ˜¬ ˜­ ˜® ˜¯ ˜° ˜± ˜² ˜³ ˜´ ˜µ ˜¶ ˜· ˜¸ ˜¹ ˜º ˜» ˜¼ ˜½ ˜¾ ˜¿ ˜À ˜Á ˜Â ˜Ã ˜Ä ˜Å ˜Æ ˜Ç ˜È ˜É ˜Ê ˜Ë ˜Ì ˜Í ˜Î ˜Ï @@ -502,7 +502,7 @@ p q r s t u v w x y z { | } ~ êp êq êr ês êt êu êv êw êx êy êz ê{ ê| ê} ê~ ê€ ê ê‚ êƒ ê„ ê… ê† ê‡ êˆ ê‰ êŠ ê‹ êŒ ê êŽ ê ê ê‘ ê’ ê“ ê” ê• ê– ê— ê˜ ê™ êš ê› êœ ê êž êŸ -ê  ê¡ ê¢ ê£ ê¤ ê¦ ê§ ê¨ ê© êª ê« ê¬ ê­ ê® ê¯ +ê  ê¡ ê¢ ê£ ê¤ ê¥ ê¦ ê§ ê¨ ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ ê´ êµ ê¶ ê· ê¸ ê¹ êº ê» ê¼ ê½ ê¾ ê¿ êÀ êÁ ê êà êÄ êÅ êÆ êÇ êÈ êÉ êÊ êË êÌ êÍ êÎ êÏ êÐ êÑ êÒ êÓ êÔ êÕ êÖ ê× êØ êÙ êÚ êÛ êÜ êÝ êÞ êß @@ -567,7 +567,7 @@ p q r s t u v w x y z { | } ~ ïÀ ïÁ ï ïà ïÄ ïÅ ïÆ ïÇ ïÈ ïÉ ïÊ ïË ïÌ ïÍ ïÎ ïÏ ïÐ ïÑ ïÒ ïÓ ïÔ ïÕ ïÖ ï× ïØ ïÙ ïÚ ïÛ ïÜ ïÝ ïÞ ïß ïà ïá ïâ ïã ïä ïå ïæ ïç ïè ïé ïê ïë ïì ïí ïî ïï -ïð ïñ ïò ïó ïô ïõ ïö ï÷ +ïð ïñ ïò ïó ïô ïõ ïö ï÷ ïø ïù ïú ïû ïü ð@ ðA ðB ðC ðD ðE ðF ðG ðH ðI ðJ ðK ðL ðM ðN ðO ðP ðQ ðR ðS ðT ðU ðV ðW ðX ðY ðZ ð[ ð\ ð] ð^ ð_ ð` ða ðb ðc ðd ðe ðf ðg ðh ði ðj ðk ðl ðm ðn ðo diff -durpN glibc-2.3.3/iconvdata/testdata/SHIFT_JISX0213..UTF8 glibc-2.3.4/iconvdata/testdata/SHIFT_JISX0213..UTF8 --- glibc-2.3.3/iconvdata/testdata/SHIFT_JISX0213..UTF8 2002-05-15 01:54:14.000000000 -0400 +++ glibc-2.3.4/iconvdata/testdata/SHIFT_JISX0213..UTF8 2004-08-02 18:18:40.000000000 -0400 @@ -5,7 +5,7 @@ P Q R S T U V W X Y Z [ Â¥ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ‾   〠。 , . ・ : ï¼› ? ï¼ ã‚› ゜ ´ ï½€ ¨ ï¼¾ -ï¿£ _ ヽ ヾ ゠ゞ 〃 ä» ã€… 〆 〇 ー ― â€ ï¼ ï¼¼ +ï¿£ _ ヽ ヾ ゠ゞ 〃 ä» ã€… 〆 〇 ー — â€ ï¼ ï¼¼ 〜 ‖ | … ‥ ‘ ’ “ †( ) 〔 〕 ï¼» ï¼½ ï½› ï½ ã€ˆ 〉 《 》 「 〠『 〠〠】 + − ± × ÷ ï¼ â‰  < > ≦ ≧ ∞ ∴ ♂ ♀ ° ′ ″ ℃ ï¿¥ @@ -17,7 +17,7 @@ p q r s t u v w x y z { | } ‾ ≒ ≪ ≫ √ ∽ ∠∵ ∫ ∬ ≢ ≃ ≅ ≈ ≶ ≷ ↔ â„« ‰ ♯ â™­ ♪ † ‡ ¶ â™® ♫ ♬ ♩ â—¯ â–· â–¶ â— â—€ ↗ ↘ ↖ ↙ ⇄ ⇨ ⇦ ⇧ ⇩ ⤴ ⤵ ï¼ -1 ï¼’ 3 ï¼” 5 ï¼– ï¼— 8 ï¼™ ⊙ â—‰ 〽 ﹆ ï¹… â—¦ • +1 ï¼’ 3 ï¼” 5 ï¼– ï¼— 8 ï¼™ ⦿ â—‰ 〽 ﹆ ï¹… â—¦ • A ï¼¢ ï¼£ D ï¼¥ F ï¼§ H I J K L ï¼­ ï¼® O ï¼° ï¼± ï¼² ï¼³ ï¼´ ï¼µ ï¼¶ ï¼· X ï¼¹ Z ∓ ℵ â„ ã‹ â„“ â„§ ï½ ï½‚ c d ï½… f g h i j k l ï½ ï½Ž ï½ @@ -81,7 +81,7 @@ â“¡ â“¢ â“£ ⓤ â“¥ ⓦ â“§ ⓨ â“© ㋠㌔ ㌢ ã ㌘ ㌧ ㌃ ㌶ 㑠㗠㌠㌦ ㌣ ㌫ ㊠㌻ ㎜ ㎠㎞ ㎎ ㎠ㄠ㎡ â…« 㻠〠〟 â„– ã â„¡ ㊤ ㊥ ㊦ ㊧ ㊨ ㈱ ㈲ ㈹ ã¾ ã½ ã¼ - ∮ ∟ ⊿ ■☞ + ∮ ∟ ⊿ ■☞ 俱 𠀋 ゠丨 丯 丰 äº ä»¡ 份 仿 伃 伋 ä½  佈 佉 ä½– 佟 佪 佬 ä½¾ 侊 ä¾” ä¾— 侮 俉 ä¿  å€ å€‚ 倎 倘 倧 倮 å€ å€» å å‚” 僌 僲 åƒ åƒ¦ 僧 儆 儃 å„‹ 儞 儵 å…Š 免 å…• @@ -93,7 +93,7 @@ 嘎 嘻 噉 å™¶ 噦 器 噯 å™± 噲 åš™ 圊 𡈽 圡 圯 圳 圴 å° å· å¼ åžœ ï¨ ð¡Œ› 垸 埇 埈 åŸ åŸ¤ 埭 埵 埶 埿 å ‰ ï¨ å¡¡ 塤 塀 塼 墉 增 墨 墩 ð¡‘® 壒 壎 壔 壚 壠 壩 夌 è™ å¥ å¥­ 妋 妒 妤 姃 å§’ -å§ å¨“ 娣 å©§ å©­ å©· 婾 媄 媞 媧 å«„ ð¡¢½ 嬙 嬥 亜 +å§ å¨“ 娣 å©§ å©­ å©· 婾 媄 媞 媧 å«„ ð¡¢½ 嬙 嬥 å‰ äºœ å”– 娃 阿 å“€ æ„› 挨 å§¶ 逢 葵 茜 ç© æ‚ª æ¡ æ¸¥ æ—­ 葦 芦 鯵 梓 圧 æ–¡ 扱 å®› å§ è™» 飴 çµ¢ ç¶¾ 鮎 或 粟 袷 安 庵 按 æš— 案 é—‡ éž æ 以 伊 ä½ ä¾ å‰ å›² 夷 å§” @@ -283,9 +283,9 @@ æ­´ 列 劣 烈 裂 廉 æ‹ æ† æ¼£ ç…‰ è“® 連 錬 å‘‚ é­¯ æ«“ 炉 賂 è·¯ 露 労 å© å»Š 弄 朗 楼 榔 浪 æ¼ ç‰¢ 狼 篭 è€ è¾ è‹ éƒŽ å…­ 麓 禄 è‚‹ 録 è«– 倭 å’Œ 話 æ­ª 賄 脇 惑 æž  é·² 亙 亘 é° è©« è— è•¨ 椀 -æ¹¾ 碗 è…• å­ å­– å­½ 宓 寘 寬 å°’ å°ž å°£ å°« ãž +æ¹¾ 碗 è…• 𠮟 å­ å­– å­½ 宓 寘 寬 å°’ å°ž å°£ å°« ãž å±¢ 層 屮 𡚴 屺 å² å²Ÿ å²£ 岪 岺 峋 å³ å³’ å³´ 𡸴 㟢 -å´ å´§ 﨑 嵆 嵇 嵓 嵊 åµ­ å¶ å¶  嶤 å¶§ 嶸 å·‹ 弌 +å´ å´§ 﨑 嵆 嵇 嵓 嵊 åµ­ å¶ å¶  嶤 å¶§ 嶸 å·‹ åž å¼Œ ä¸ ä¸• 个 丱 丶 丼 丿 乂 ä¹– 乘 亂 亅 豫 亊 舒 å¼ äºŽ 亞 亟 亠 亢 亰 亳 亶 从 ä» ä»„ 仆 仂 ä»— 仞 ä»­ 仟 ä»· 伉 佚 ä¼° ä½› ä½ ä½— 佇 ä½¶ 侈 ä¾ ä¾˜ ä½» 佩 ä½° @@ -502,7 +502,7 @@ 鸛 鸞 é¹µ é¹¹ é¹½ éº éºˆ 麋 麌 麒 麪 麭 é¡ é»Œ 黎 é» é» é»” 黜 點 é» é»  黥 黨 黯 é»´ é»¶ é»· 黹 é»» 黼 黽 鼇 鼈 çš· 鼕 鼡 鼬 é¼¾ 齊 é½’ é½” é½£ 齟 é½  齡 齦 é½§ 齬 齪 é½· é½² é½¶ 龕 龜 é¾  å ¯ -槇 é™ ç‘¤ 凜 熙 å·¢ 帔 帘 幘 幞 庾 廊 廋 廹 å¼€ +槇 é™ ç‘¤ 凜 熙 噓 å·¢ 帔 帘 幘 幞 庾 廊 廋 廹 å¼€ 异 弇 å¼ å¼£ å¼´ å¼¶ å¼½ å½€ å½… å½” 彘 彤 å½§ å½½ 徉 徜 å¾§ 徯 å¾µ å¾· 忉 忞 å¿¡ å¿© æ€ æ€” 怘 怳 怵 æ‡ ï¨½ æ‚ æ‚ž 惋 惔 惕 æƒ æƒ¸ 愜 æ„« æ„° æ„· 慨 æ† ï¨¿ 憼 憹 ï©€ @@ -567,7 +567,7 @@ 驊 驎 é©’ 骶 é« é«ƒ 髎 é«– 髹 鬂 é­¦ é­² é­µ 鮄 鮊 é® é®ž é®§ é¯ é¯Ž 鯥 鯸 鯽 é°€ é°£ é± é± é± é±“ é±£ é±¥ é±· é´ é´ž 鵃 鵇 éµ’ éµ£ éµ° éµ¼ é¶Š é¶– é·€ 鶬 é¶¼ é·— 𪆠鷧 鸇 鸕 é¹¼ 麞 麤 麬 麯 麴 麵 黃 -黑 é¼ é¼¹ é½— é¾ é¾” é¾— é¾¢ +黑 é¼ é¼¹ é½— é¾ é¾” é¾— é¾¢ 姸 å±› å¹· 瘦 繫 𠂉 丂 ä¸ ä¸’ 丩 丫 丮 ä¹€ 乇 么 ð ‚¢ 乑 ㆠ𠂤 乚 乩 äº ã¬ ã® äº¹ 亻 𠆢 亼 仃 仈 ä» ä»« 仚 ä»± 仵 ä¼€ ä¼– 佤 ä¼· ä¼¾ ä½” 佘 𠈓 ä½· 佸 佺 ä½½ 侂 ä¾… ä¾’ 侚 俦 ä¾² diff -durpN glibc-2.3.3/iconvdata/tscii.c glibc-2.3.4/iconvdata/tscii.c --- glibc-2.3.3/iconvdata/tscii.c 2002-09-23 23:39:45.000000000 -0400 +++ glibc-2.3.4/iconvdata/tscii.c 2004-03-07 04:34:22.000000000 -0500 @@ -1,5 +1,5 @@ /* Conversion from and to TSCII. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2002. @@ -98,7 +98,8 @@ break; \ } \ /* Write out the pending character. */ \ - *((uint32_t *) outbuf)++ = data->__statep->__count >> 8; \ + *((uint32_t *) outbuf) = data->__statep->__count >> 8; \ + outbuf += sizeof (uint32_t); \ /* Retrieve the successor state. */ \ data->__statep->__count = \ tscii_next_state[(data->__statep->__count >> 4) & 0x0f]; \ diff -durpN glibc-2.3.3/iconvdata/tst-tables.sh glibc-2.3.4/iconvdata/tst-tables.sh --- glibc-2.3.3/iconvdata/tst-tables.sh 2003-08-14 04:39:06.000000000 -0400 +++ glibc-2.3.4/iconvdata/tst-tables.sh 2004-04-17 17:59:40.000000000 -0400 @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Bruno Haible , 2000. # @@ -205,6 +205,8 @@ cat <, 2000. @@ -50,7 +50,7 @@ static const unsigned char direct_tab[12 0xfe, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07 }; -static inline int +static int isdirect (uint32_t ch) { return (ch < 128 && ((direct_tab[ch >> 3] >> (ch & 7)) & 1)); @@ -68,7 +68,7 @@ static const unsigned char xdirect_tab[1 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0x3f }; -static inline int +static int isxdirect (uint32_t ch) { return (ch < 128 && ((xdirect_tab[ch >> 3] >> (ch & 7)) & 1)); @@ -85,7 +85,7 @@ static const unsigned char xbase64_tab[1 0xfe, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07 }; -static inline int +static int isxbase64 (uint32_t ch) { return (ch < 128 && ((xbase64_tab[ch >> 3] >> (ch & 7)) & 1)); diff -durpN glibc-2.3.3/include/arpa/inet.h glibc-2.3.4/include/arpa/inet.h --- glibc-2.3.3/include/arpa/inet.h 2002-08-03 08:08:47.000000000 -0400 +++ glibc-2.3.4/include/arpa/inet.h 2004-07-21 12:28:39.000000000 -0400 @@ -1,6 +1,6 @@ #include -extern in_addr_t __inet_aton (__const char *__cp, struct in_addr *__inp); +extern int __inet_aton (__const char *__cp, struct in_addr *__inp); libc_hidden_proto (__inet_aton) libc_hidden_proto (inet_aton) diff -durpN glibc-2.3.3/include/atomic.h glibc-2.3.4/include/atomic.h --- glibc-2.3.3/include/atomic.h 2003-09-22 17:14:27.000000000 -0400 +++ glibc-2.3.4/include/atomic.h 2004-09-07 18:32:21.000000000 -0400 @@ -1,5 +1,5 @@ /* Internal macros for atomic operations for GNU C Library. - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -151,6 +151,11 @@ #endif +#ifndef atomic_increment_val +# define atomic_increment_val(mem) (atomic_exchange_and_add ((mem), 1) + 1) +#endif + + /* Add one to *MEM and return true iff it's now zero. */ #ifndef atomic_increment_and_test # define atomic_increment_and_test(mem) \ @@ -163,6 +168,11 @@ #endif +#ifndef atomic_decrement_val +# define atomic_decrement_val(mem) (atomic_exchange_and_add ((mem), -1) - 1) +#endif + + /* Subtract 1 from *MEM and return true iff it's now zero. */ #ifndef atomic_decrement_and_test # define atomic_decrement_and_test(mem) \ @@ -243,4 +253,9 @@ # define atomic_write_barrier() atomic_full_barrier () #endif + +#ifndef atomic_delay +# define atomic_delay() do { /* nothing */ } while (0) +#endif + #endif /* atomic.h */ diff -durpN glibc-2.3.3/include/bits/string3.h glibc-2.3.4/include/bits/string3.h --- glibc-2.3.3/include/bits/string3.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/bits/string3.h 2004-10-18 00:17:16.000000000 -0400 @@ -0,0 +1 @@ +#include diff -durpN glibc-2.3.3/include/caller.h glibc-2.3.4/include/caller.h --- glibc-2.3.3/include/caller.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/caller.h 2004-03-26 21:43:52.000000000 -0500 @@ -0,0 +1,32 @@ +/* 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. */ + +#ifndef _CALLER_H +#define _CALLER_H 1 + +#include + +/* _dl_check_caller only works in DSOs. */ +#ifdef SHARED +# define __check_caller(caller, mask) \ + GLRO(dl_check_caller) (caller, mask) +#else +# define __check_caller(caller, mask) (0) +#endif + +#endif /* caller.h */ diff -durpN glibc-2.3.3/include/ctype.h glibc-2.3.4/include/ctype.h --- glibc-2.3.3/include/ctype.h 2003-07-29 19:48:23.000000000 -0400 +++ glibc-2.3.4/include/ctype.h 2004-03-16 05:09:04.000000000 -0500 @@ -68,4 +68,15 @@ __ctype_tolower_loc (void) # include +# if !defined __NO_CTYPE && !defined NOT_IN_libc +/* The spec says that isdigit must only match the decimal digits. We + can check this without a memory access. */ +# undef isdigit +# define isdigit(c) ({ int __c = (c); __c >= '0' && __c <= '9'; }) +# undef isdigit_l +# define isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; }) +# undef __isdigit_l +# define __isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; }) +# endif + #endif /* ctype.h */ diff -durpN glibc-2.3.3/include/dlfcn.h glibc-2.3.4/include/dlfcn.h --- glibc-2.3.3/include/dlfcn.h 2003-10-26 20:28:44.000000000 -0500 +++ glibc-2.3.4/include/dlfcn.h 2004-11-27 14:31:13.000000000 -0500 @@ -6,12 +6,14 @@ #define __RTLD_DLOPEN 0x80000000 #define __RTLD_SPROF 0x40000000 #define __RTLD_OPENEXEC 0x20000000 +#define __RTLD_CALLMAP 0x10000000 + +#define __LM_ID_CALLER -2 /* Now define the internal interfaces. */ -extern void *__dlvsym (void *__handle, __const char *__name, - __const char *__version); -#define __libc_dlopen(name) __libc_dlopen_mode (name, RTLD_LAZY) +#define __libc_dlopen(name) \ + __libc_dlopen_mode (name, RTLD_LAZY | __RTLD_DLOPEN) extern void *__libc_dlopen_mode (__const char *__name, int __mode); extern void *__libc_dlsym (void *__map, __const char *__name); extern int __libc_dlclose (void *__map); @@ -30,7 +32,8 @@ libc_hidden_proto (_dl_addr) /* Open the shared object NAME, relocate it, and run its initializer if it hasn't already been run. MODE is as for `dlopen' (see ). If the object is already opened, returns its existing map. */ -extern void *_dl_open (const char *name, int mode, const void *caller) +extern void *_dl_open (const char *name, int mode, const void *caller, + Lmid_t nsid) internal_function; libc_hidden_proto (_dl_open) @@ -64,10 +67,6 @@ extern int _dl_catch_error (const char * void (*operate) (void *), void *args) internal_function; -extern int _dl_catch_error_internal (const char **objname, - const char **errstring, - void (*operate) (void *), void *args) - internal_function; /* Helper function for functions. Runs the OPERATE function via _dl_catch_error. Returns zero for success, nonzero for failure; and @@ -76,4 +75,62 @@ extern int _dl_catch_error_internal (con extern int _dlerror_run (void (*operate) (void *), void *args) internal_function; +#ifdef SHARED +# define DL_CALLER_DECL /* Nothing */ +# define DL_CALLER RETURN_ADDRESS (0) +#else +# define DL_CALLER_DECL , void *dl_caller +# define DL_CALLER dl_caller +#endif + +struct dlfcn_hook +{ + void *(*dlopen) (const char *file, int mode, void *dl_caller); + int (*dlclose) (void *handle); + void *(*dlsym) (void *handle, const char *name, void *dl_caller); + void *(*dlvsym) (void *handle, const char *name, const char *version, + void *dl_caller); + char *(*dlerror) (void); + int (*dladdr) (const void *address, Dl_info *info); + int (*dladdr1) (const void *address, Dl_info *info, + void **extra_info, int flags); + int (*dlinfo) (void *handle, int request, void *arg, void *dl_caller); + void *(*dlmopen) (Lmid_t nsid, const char *file, int mode, void *dl_caller); + void *pad[4]; +}; + +extern struct dlfcn_hook *_dlfcn_hook; +libdl_hidden_proto (_dlfcn_hook) + +extern void *__dlopen (const char *file, int mode DL_CALLER_DECL) + attribute_hidden; +extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL) + attribute_hidden; +extern int __dlclose (void *handle) + attribute_hidden; +extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL) + attribute_hidden; +extern void *__dlvsym (void *handle, const char *name, const char *version + DL_CALLER_DECL) + attribute_hidden; +extern char *__dlerror (void) + attribute_hidden; +extern int __dladdr (const void *address, Dl_info *info) + attribute_hidden; +extern int __dladdr1 (const void *address, Dl_info *info, + void **extra_info, int flags) + attribute_hidden; +extern int __dlinfo (void *handle, int request, void *arg DL_CALLER_DECL) + attribute_hidden; + +#ifndef SHARED +struct link_map; +extern void * __libc_dlsym_private (struct link_map *map, const char *name) + attribute_hidden; +extern void __libc_register_dl_open_hook (struct link_map *map) + attribute_hidden; +extern void __libc_register_dlfcn_hook (struct link_map *map) + attribute_hidden; +#endif + #endif diff -durpN glibc-2.3.3/include/errno.h glibc-2.3.4/include/errno.h --- glibc-2.3.3/include/errno.h 2002-12-31 15:33:33.000000000 -0500 +++ glibc-2.3.4/include/errno.h 2004-10-14 12:13:44.000000000 -0400 @@ -14,8 +14,8 @@ so a single (hidden) global variable is all it needs. */ # undef errno -# define errno errno /* For #ifndef errno tests. */ -extern int errno attribute_hidden; +# define errno rtld_errno +extern int rtld_errno attribute_hidden; # else @@ -36,7 +36,11 @@ extern __thread int errno attribute_tls_ # define __set_errno(val) (errno = (val)) # ifndef __ASSEMBLER__ -extern int *__errno_location (void) __THROW __attribute__ ((__const__)); +extern int *__errno_location (void) __THROW __attribute__ ((__const__)) +# if RTLD_PRIVATE_ERRNO + attribute_hidden +# endif +; libc_hidden_proto (__errno_location) # endif diff -durpN glibc-2.3.3/include/fcntl.h glibc-2.3.4/include/fcntl.h --- glibc-2.3.3/include/fcntl.h 2003-09-04 10:07:32.000000000 -0400 +++ glibc-2.3.4/include/fcntl.h 2004-07-09 13:14:32.000000000 -0400 @@ -9,8 +9,10 @@ extern int __libc_open (const char *file libc_hidden_proto (__libc_open) extern int __libc_creat (const char *file, mode_t mode); extern int __libc_fcntl (int fd, int cmd, ...); +#ifndef NO_CANCELLATION extern int __fcntl_nocancel (int fd, int cmd, ...) attribute_hidden; libc_hidden_proto (__libc_fcntl) +#endif extern int __open (__const char *__file, int __oflag, ...); libc_hidden_proto (__open) extern int __fcntl (int __fd, int __cmd, ...); diff -durpN glibc-2.3.3/include/features.h glibc-2.3.4/include/features.h --- glibc-2.3.3/include/features.h 2003-05-16 20:38:00.000000000 -0400 +++ glibc-2.3.4/include/features.h 2004-10-18 00:17:16.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1993,1995-2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1991-1993,1995-2003, 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 @@ -27,7 +27,8 @@ _POSIX_SOURCE IEEE Std 1003.1. _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; if >=199309L, add IEEE Std 1003.1b-1993; - if >=199506L, add IEEE Std 1003.1c-1995 + if >=199506L, add IEEE Std 1003.1c-1995; + if >=200112L, all of IEEE 1003.1-2004 _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if Single Unix conformance is wanted, to 600 for the upcoming sixth revision. @@ -40,6 +41,8 @@ _GNU_SOURCE All of the above, plus GNU extensions. _REENTRANT Select additionally reentrant object. _THREAD_SAFE Same as _REENTRANT, often used by other systems. + _FORTIFY_SOURCE If set to numeric value > 0 additional security + measures are defined, according to level. The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__. If none of these are defined, the default is to have _SVID_SOURCE, @@ -68,6 +71,7 @@ __USE_MISC Define things common to BSD and System V Unix. __USE_GNU Define GNU extensions. __USE_REENTRANT Define reentrant/thread-safe *_r functions. + __USE_FORTIFY_LEVEL Additional security measures used, according to level. __FAVOR_BSD Favor 4.3BSD things in cases of conflict. The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are @@ -100,6 +104,7 @@ #undef __USE_MISC #undef __USE_GNU #undef __USE_REENTRANT +#undef __USE_FORTIFY_LEVEL #undef __FAVOR_BSD #undef __KERNEL_STRICT_NAMES @@ -112,6 +117,20 @@ /* Always use ISO C things. */ #define __USE_ANSI 1 +/* Convenience macros to test the versions of glibc and gcc. + Use them like this: + #if __GNUC_PREREQ (2,8) + ... code requiring gcc 2.8 or later ... + #endif + Note - they won't work for gcc1 or glibc1, since the _MINOR macros + were not defined then. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define __GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +# define __GNUC_PREREQ(maj, min) 0 +#endif + /* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */ #if defined _BSD_SOURCE && \ @@ -243,6 +262,14 @@ # define __USE_REENTRANT 1 #endif +#if _FORTIFY_SOURCE > 0 && __GNUC_PREREQ (4, 1) && __OPTIMIZE__ > 0 +# if _FORTIFY_SOURCE == 1 +# define __USE_FORTIFY_LEVEL 1 +# elif _FORTIFY_SOURCE > 1 +# define __USE_FORTIFY_LEVEL 2 +# endif +#endif + /* We do support the IEC 559 math functionality, real and complex. */ #define __STDC_IEC_559__ 1 #define __STDC_IEC_559_COMPLEX__ 1 @@ -264,20 +291,6 @@ #define __GLIBC__ 2 #define __GLIBC_MINOR__ 3 -/* Convenience macros to test the versions of glibc and gcc. - Use them like this: - #if __GNUC_PREREQ (2,8) - ... code requiring gcc 2.8 or later ... - #endif - Note - they won't work for gcc1 or glibc1, since the _MINOR macros - were not defined then. */ -#if defined __GNUC__ && defined __GNUC_MINOR__ -# define __GNUC_PREREQ(maj, min) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) -#else -# define __GNUC_PREREQ(maj, min) 0 -#endif - #define __GLIBC_PREREQ(maj, min) \ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) diff -durpN glibc-2.3.3/include/getopt.h glibc-2.3.4/include/getopt.h --- glibc-2.3.3/include/getopt.h 2002-09-01 08:37:56.000000000 -0400 +++ glibc-2.3.4/include/getopt.h 2004-03-09 05:31:49.000000000 -0500 @@ -5,9 +5,6 @@ # ifdef _GETOPT_H -libc_hidden_proto (getopt_long) -libc_hidden_proto (getopt_long_only) - /* Now define the internal interfaces. */ extern void __getopt_clean_environment (char **__env); diff -durpN glibc-2.3.3/include/getopt_int.h glibc-2.3.4/include/getopt_int.h --- glibc-2.3.3/include/getopt_int.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/getopt_int.h 2004-03-09 05:29:58.000000000 -0500 @@ -0,0 +1 @@ +#include diff -durpN glibc-2.3.3/include/glob.h glibc-2.3.4/include/glob.h --- glibc-2.3.3/include/glob.h 2002-08-03 23:30:42.000000000 -0400 +++ glibc-2.3.4/include/glob.h 2004-07-01 13:37:16.000000000 -0400 @@ -2,6 +2,7 @@ #include libc_hidden_proto (glob) +libc_hidden_proto (glob64) libc_hidden_proto (globfree) libc_hidden_proto (globfree64) diff -durpN glibc-2.3.3/include/libc-symbols.h glibc-2.3.4/include/libc-symbols.h --- glibc-2.3.3/include/libc-symbols.h 2003-07-22 15:24:48.000000000 -0400 +++ glibc-2.3.4/include/libc-symbols.h 2004-10-24 17:17:08.000000000 -0400 @@ -1,6 +1,6 @@ /* Support macros for making weak and strong aliases for symbols, and for using symbol sets and linker warnings with GNU ld. - Copyright (C) 1995-1998,2000,2001,2002,2003 Free Software Foundation, Inc. + Copyright (C) 1995-1998,2000-2003,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 @@ -420,10 +420,10 @@ for linking") # ifdef HAVE_ASM_GLOBAL_DOT_NAME # define _symbol_version(real, name, version) \ .symver real, name##@##version ASM_LINE_SEP \ - .symver .##real, .##name##@##version + .symver C_SYMBOL_DOT_NAME(real), C_SYMBOL_DOT_NAME(name##@##version) # define _default_symbol_version(real, name, version) \ .symver real, name##@##@##version ASM_LINE_SEP \ - .symver .##real, .##name##@##@##version + .symver C_SYMBOL_DOT_NAME(real), C_SYMBOL_DOT_NAME(name##@##@##version) # else # define _symbol_version(real, name, version) \ .symver real, name##@##version @@ -458,12 +458,18 @@ for linking") # define attribute_hidden #endif -#if defined HAVE_TLS_MODEL_ATTRIBUTE +#ifdef HAVE_TLS_MODEL_ATTRIBUTE # define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec"))) #else # define attribute_tls_model_ie #endif +#ifdef HAVE_Z_RELRO +# define attribute_relro __attribute__ ((section (".data.rel.ro"))) +#else +# define attribute_relro +#endif + /* Handling on non-exported internal names. We have to do this only for shared code. */ #ifdef SHARED @@ -738,16 +744,145 @@ for linking") # define libm_hidden_data_ver(local, name) #endif +#if defined NOT_IN_libc && defined IS_IN_libresolv +# define libresolv_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) +# define libresolv_hidden_def(name) hidden_def (name) +# define libresolv_hidden_weak(name) hidden_weak (name) +# define libresolv_hidden_ver(local, name) hidden_ver (local, name) +# define libresolv_hidden_data_def(name) hidden_data_def (name) +# define libresolv_hidden_data_weak(name) hidden_data_weak (name) +# define libresolv_hidden_data_ver(local, name) hidden_data_ver (local, name) +#else +# define libresolv_hidden_proto(name, attrs...) +# define libresolv_hidden_def(name) +# define libresolv_hidden_weak(name) +# define libresolv_hidden_ver(local, name) +# define libresolv_hidden_data_def(name) +# define libresolv_hidden_data_weak(name) +# define libresolv_hidden_data_ver(local, name) +#endif + +#if defined NOT_IN_libc && defined IS_IN_libdl +# define libdl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) +# define libdl_hidden_def(name) hidden_def (name) +# define libdl_hidden_weak(name) hidden_weak (name) +# define libdl_hidden_ver(local, name) hidden_ver (local, name) +# define libdl_hidden_data_def(name) hidden_data_def (name) +# define libdl_hidden_data_weak(name) hidden_data_weak (name) +# define libdl_hidden_data_ver(local, name) hidden_data_ver (local, name) +#else +# define libdl_hidden_proto(name, attrs...) +# define libdl_hidden_def(name) +# define libdl_hidden_weak(name) +# define libdl_hidden_ver(local, name) +# define libdl_hidden_data_def(name) +# define libdl_hidden_data_weak(name) +# define libdl_hidden_data_ver(local, name) +#endif + +#if defined NOT_IN_libc && defined IS_IN_libnss_files +# define libnss_files_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) +# define libnss_files_hidden_def(name) hidden_def (name) +# define libnss_files_hidden_weak(name) hidden_weak (name) +# define libnss_files_hidden_ver(local, name) hidden_ver (local, name) +# define libnss_files_hidden_data_def(name) hidden_data_def (name) +# define libnss_files_hidden_data_weak(name) hidden_data_weak (name) +# define libnss_files_hidden_data_ver(local, name) hidden_data_ver(local, name) +#else +# define libnss_files_hidden_proto(name, attrs...) +# define libnss_files_hidden_def(name) +# define libnss_files_hidden_weak(name) +# define libnss_files_hidden_ver(local, name) +# define libnss_files_hidden_data_def(name) +# define libnss_files_hidden_data_weak(name) +# define libnss_files_hidden_data_ver(local, name) +#endif + +#if defined NOT_IN_libc && defined IS_IN_libnsl +# define libnsl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) +# define libnsl_hidden_def(name) hidden_def (name) +# define libnsl_hidden_weak(name) hidden_weak (name) +# define libnsl_hidden_ver(local, name) hidden_ver (local, name) +# define libnsl_hidden_data_def(name) hidden_data_def (name) +# define libnsl_hidden_data_weak(name) hidden_data_weak (name) +# define libnsl_hidden_data_ver(local, name) hidden_data_ver (local, name) +#else +# define libnsl_hidden_proto(name, attrs...) +# define libnsl_hidden_def(name) +# define libnsl_hidden_weak(name) +# define libnsl_hidden_ver(local, name) +# define libnsl_hidden_data_def(name) +# define libnsl_hidden_data_weak(name) +# define libnsl_hidden_data_ver(local, name) +#endif + +#if defined NOT_IN_libc && defined IS_IN_libnss_nisplus +# define libnss_nisplus_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) +# define libnss_nisplus_hidden_def(name) hidden_def (name) +# define libnss_nisplus_hidden_weak(name) hidden_weak (name) +# define libnss_nisplus_hidden_ver(local, name) hidden_ver (local, name) +# define libnss_nisplus_hidden_data_def(name) hidden_data_def (name) +# define libnss_nisplus_hidden_data_weak(name) hidden_data_weak (name) +# define libnss_nisplus_hidden_data_ver(local, name) hidden_data_ver (local, name) +#else +# define libnss_nisplus_hidden_proto(name, attrs...) +# define libnss_nisplus_hidden_def(name) +# define libnss_nisplus_hidden_weak(name) +# define libnss_nisplus_hidden_ver(local, name) +# define libnss_nisplus_hidden_data_def(name) +# define libnss_nisplus_hidden_data_weak(name) +# define libnss_nisplus_hidden_data_ver(local, name) +#endif + #ifdef HAVE_BUILTIN_REDIRECTION # define libc_hidden_builtin_proto(name, attrs...) libc_hidden_proto (name, ##attrs) # define libc_hidden_builtin_def(name) libc_hidden_def (name) # define libc_hidden_builtin_weak(name) libc_hidden_weak (name) # define libc_hidden_builtin_ver(local, name) libc_hidden_ver (local, name) +# ifdef __ASSEMBLER__ +# define HIDDEN_BUILTIN_JUMPTARGET(name) HIDDEN_JUMPTARGET(name) +# endif #else # define libc_hidden_builtin_proto(name, attrs...) # define libc_hidden_builtin_def(name) # define libc_hidden_builtin_weak(name) # define libc_hidden_builtin_ver(local, name) +# ifdef __ASSEMBLER__ +# define HIDDEN_BUILTIN_JUMPTARGET(name) JUMPTARGET(name) +# endif +#endif + +#if defined NOT_IN_libc && defined IS_IN_libutil +# define libutil_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) +# define libutil_hidden_def(name) hidden_def (name) +# define libutil_hidden_weak(name) hidden_weak (name) +# define libutil_hidden_ver(local, name) hidden_ver (local, name) +# define libutil_hidden_data_def(name) hidden_data_def (name) +# define libutil_hidden_data_weak(name) hidden_data_weak (name) +# define libutil_hidden_data_ver(local, name) hidden_data_ver (local, name) +#else +# define libutil_hidden_proto(name, attrs...) +# define libutil_hidden_def(name) +# define libutil_hidden_weak(name) +# define libutil_hidden_ver(local, name) +# define libutil_hidden_data_def(name) +# define libutil_hidden_data_weak(name) +# define libutil_hidden_data_ver(local, name) +#endif + +/* Get some dirty hacks. */ +#include + +/* Move compatibility symbols out of the way by placing them all in a + special section. */ +#ifndef __ASSEMBLER__ +# define attribute_compat_text_section \ + __attribute__ ((section (".text.compat"))) +# define attribute_compat_data_section \ + __attribute__ ((section (".data.compat"))) +#else +# define compat_text_section .section ".text.compat", "ax"; +# define compat_data_section .section ".data.compat", "aw"; #endif #endif /* libc-symbols.h */ diff -durpN glibc-2.3.3/include/link.h glibc-2.3.4/include/link.h --- glibc-2.3.3/include/link.h 2003-07-31 03:35:21.000000000 -0400 +++ glibc-2.3.4/include/link.h 2004-10-13 21:57:54.000000000 -0400 @@ -1,6 +1,6 @@ /* Data structure for communication from the run-time dynamic linker for loaded ELF shared objects. - Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003, 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 @@ -129,6 +129,14 @@ struct link_map /* All following members are internal to the dynamic linker. They may change without notice. */ + /* This is an element which is only ever different from a pointer to + the very same copy of this type for ld.so when it is used in more + than one namespace. */ + struct link_map *l_real; + + /* Number of the namespace this link map belongs to. */ + Lmid_t l_ns; + struct libname_list *l_libname; /* Indexed pointers to dynamic section. [0,DT_NUM) are indexed by the processor-independent tags. @@ -169,7 +177,8 @@ struct link_map Elf_Symndx l_nbuckets; const Elf_Symndx *l_buckets, *l_chain; - unsigned int l_opencount; /* Reference count for dlopen/dlclose. */ + unsigned int l_opencount; /* Counter for direct and indirect usage. */ + unsigned int l_direct_opencount; /* Reference count for dlopen/dlclose. */ enum /* Where this object came from. */ { lt_executable, /* The main executable program. */ @@ -189,6 +198,7 @@ struct link_map unsigned int l_need_tls_init:1; /* Nonzero if GL(dl_init_static_tls) should be called on this link map when relocation finishes. */ + unsigned int l_used:1; /* Nonzero if the DSO is used. */ /* Array with version names. */ unsigned int l_nversions; struct r_found_version *l_versions; @@ -208,6 +218,8 @@ struct link_map /* Start and finish of memory map for this object. l_map_start need not be the same as l_addr. */ ElfW(Addr) l_map_start, l_map_end; + /* End of the executable part of the mapping. */ + ElfW(Addr) l_text_end; /* Default array for 'l_scope'. */ struct r_scope_elem *l_scope_mem[4]; @@ -280,6 +292,11 @@ struct link_map /* Index of the module in the dtv array. */ size_t l_tls_modid; #endif + + /* Information used to change permission after the relocations are + done. */ + ElfW(Addr) l_relro_addr; + size_t l_relro_size; }; struct dl_phdr_info @@ -288,6 +305,9 @@ struct dl_phdr_info const char *dlpi_name; const ElfW(Phdr) *dlpi_phdr; ElfW(Half) dlpi_phnum; + + unsigned long long int dlpi_adds; + unsigned long long int dlpi_subs; }; extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, diff -durpN glibc-2.3.3/include/monetary.h glibc-2.3.4/include/monetary.h --- glibc-2.3.3/include/monetary.h 1997-06-20 21:17:32.000000000 -0400 +++ glibc-2.3.4/include/monetary.h 2004-03-14 15:43:05.000000000 -0500 @@ -1 +1,5 @@ #include +#include + +extern ssize_t __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, + const char *format, va_list ap); diff -durpN glibc-2.3.3/include/mqueue.h glibc-2.3.4/include/mqueue.h --- glibc-2.3.3/include/mqueue.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/mqueue.h 2004-04-12 22:07:03.000000000 -0400 @@ -0,0 +1,7 @@ +#include + +#ifdef IS_IN_librt +hidden_proto (mq_timedsend) +hidden_proto (mq_timedreceive) +hidden_proto (mq_setattr) +#endif diff -durpN glibc-2.3.3/include/net/if.h glibc-2.3.4/include/net/if.h --- glibc-2.3.3/include/net/if.h 2002-08-12 21:07:56.000000000 -0400 +++ glibc-2.3.4/include/net/if.h 2004-06-30 03:39:21.000000000 -0400 @@ -4,5 +4,7 @@ libc_hidden_proto (if_nametoindex) libc_hidden_proto (if_indextoname) +libc_hidden_proto (if_nameindex) +libc_hidden_proto (if_freenameindex) #endif diff -durpN glibc-2.3.3/include/netdb.h glibc-2.3.4/include/netdb.h --- glibc-2.3.3/include/netdb.h 2003-04-24 19:39:46.000000000 -0400 +++ glibc-2.3.4/include/netdb.h 2004-10-24 05:04:34.000000000 -0400 @@ -202,9 +202,10 @@ extern enum nss_status _nss_netgroup_par struct __netgrent *result, char *buffer, size_t buflen, int *errnop); -libc_hidden_proto (_nss_files_parse_protoent) -libc_hidden_proto (_nss_files_parse_servent) -libc_hidden_proto (_nss_files_parse_netent) +libnss_files_hidden_proto (_nss_files_parse_protoent) +libnss_files_hidden_proto (_nss_files_parse_servent) +libnss_files_hidden_proto (_nss_files_parse_netent) +libnss_files_hidden_proto (_nss_netgroup_parseline) #define DECLARE_NSS_PROTOTYPES(service) \ extern enum nss_status _nss_ ## service ## _setprotoent (int); \ diff -durpN glibc-2.3.3/include/netinet/ether.h glibc-2.3.4/include/netinet/ether.h --- glibc-2.3.3/include/netinet/ether.h 2002-08-10 03:54:22.000000000 -0400 +++ glibc-2.3.4/include/netinet/ether.h 2004-10-24 05:04:33.000000000 -0400 @@ -17,7 +17,7 @@ struct parser_data; extern int _nss_files_parse_etherent (char *line, struct etherent *result, struct parser_data *data, size_t datalen, int *errnop); -libc_hidden_proto (_nss_files_parse_etherent) +libnss_files_hidden_proto (_nss_files_parse_etherent) #define DECLARE_NSS_PROTOTYPES(service) \ extern enum nss_status _nss_ ## service ## _setetherent (int __stayopen); \ diff -durpN glibc-2.3.3/include/pty.h glibc-2.3.4/include/pty.h --- glibc-2.3.3/include/pty.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/pty.h 2004-10-24 17:26:42.000000000 -0400 @@ -0,0 +1,6 @@ +#ifndef _PTY_H +#include + +libutil_hidden_proto (openpty) + +#endif diff -durpN glibc-2.3.3/include/resolv.h glibc-2.3.4/include/resolv.h --- glibc-2.3.3/include/resolv.h 2003-07-22 19:08:36.000000000 -0400 +++ glibc-2.3.4/include/resolv.h 2004-10-27 17:26:27.000000000 -0400 @@ -31,6 +31,7 @@ extern struct __res_state _res; /* Now define the internal interfaces. */ extern int __res_vinit (res_state, int); +extern int __res_maybe_init (res_state, int); extern void _sethtent (int); extern void _endhtent (void); extern struct hostent *_gethtent (void); @@ -46,6 +47,7 @@ extern void res_send_setrhook (res_send_ extern int res_ourserver_p (const res_state __statp, const struct sockaddr_in6 *__inp); libc_hidden_proto (__res_ninit) +libc_hidden_proto (__res_maybe_init) libc_hidden_proto (__res_nclose) libc_hidden_proto (__res_randomid) libc_hidden_proto (__res_state) @@ -58,6 +60,47 @@ int __libc_res_nsend (res_state, const u u_char **) attribute_hidden; +libresolv_hidden_proto (_sethtent) +libresolv_hidden_proto (_gethtent) +libresolv_hidden_proto (_gethtbyaddr) +libresolv_hidden_proto (_gethtbyname2) +libresolv_hidden_proto (__dn_expand) +libresolv_hidden_proto (__dn_comp) +libresolv_hidden_proto (__dn_skipname) +libresolv_hidden_proto (__res_hnok) +libresolv_hidden_proto (__res_dnok) +libresolv_hidden_proto (__putlong) +libresolv_hidden_proto (__putshort) +libresolv_hidden_proto (__p_cdnname) +libresolv_hidden_proto (__p_fqnname) +libresolv_hidden_proto (__p_option) +libresolv_hidden_proto (__sym_ntos) +libresolv_hidden_proto (__p_rcode) +libresolv_hidden_proto (__p_class) +libresolv_hidden_proto (__p_type) +libresolv_hidden_proto (__loc_ntoa) +libresolv_hidden_proto (__fp_nquery) +libresolv_hidden_proto (__fp_query) +libresolv_hidden_proto (__hostalias) +libresolv_hidden_proto (__res_nmkquery) +libresolv_hidden_proto (__libc_res_nquery) +libresolv_hidden_proto (__res_nquery) +libresolv_hidden_proto (__res_nquerydomain) +libresolv_hidden_proto (__res_hostalias) +libresolv_hidden_proto (__libc_res_nsearch) +libresolv_hidden_proto (__res_nsearch) +libresolv_hidden_proto (__res_nameinquery) +libresolv_hidden_proto (__res_queriesmatch) +libresolv_hidden_proto (__res_nsend) +libresolv_hidden_proto (__b64_ntop) +libresolv_hidden_proto (__ns_name_ntop) +libresolv_hidden_proto (__ns_name_unpack) +libresolv_hidden_proto (__ns_get16) +libresolv_hidden_proto (__ns_get32) + +extern const char *_res_opcodes[]; +libresolv_hidden_proto (_res_opcodes) + #endif #endif diff -durpN glibc-2.3.3/include/rpc/netdb.h glibc-2.3.4/include/rpc/netdb.h --- glibc-2.3.3/include/rpc/netdb.h 2002-08-10 03:54:21.000000000 -0400 +++ glibc-2.3.4/include/rpc/netdb.h 2004-10-24 05:04:33.000000000 -0400 @@ -26,7 +26,7 @@ struct parser_data; extern int _nss_files_parse_rpcent (char *line, struct rpcent *result, struct parser_data *data, size_t datalen, int *errnop); -libc_hidden_proto (_nss_files_parse_rpcent) +libnss_files_hidden_proto (_nss_files_parse_rpcent) #define DECLARE_NSS_PROTOTYPES(service) \ extern enum nss_status _nss_ ## service ## _setrpcent (int); \ diff -durpN glibc-2.3.3/include/rpc/rpc.h glibc-2.3.4/include/rpc/rpc.h --- glibc-2.3.3/include/rpc/rpc.h 2002-08-05 18:10:59.000000000 -0400 +++ glibc-2.3.4/include/rpc/rpc.h 2004-02-09 05:47:53.000000000 -0500 @@ -17,24 +17,24 @@ struct rpc_thread_variables { struct pollfd *svc_pollfd_s; /* Global, rpc_common.c */ int svc_max_pollfd_s; /* Global, rpc_common.c */ - void *clnt_perr_buf_s; /* clnt_perr.c */ + char *clnt_perr_buf_s; /* clnt_perr.c */ - void *clntraw_private_s; /* clnt_raw.c */ + struct clntraw_private_s *clntraw_private_s; /* clnt_raw.c */ - void *callrpc_private_s; /* clnt_simp.c */ + struct callrpc_private_s *callrpc_private_s; /* clnt_simp.c */ - void *key_call_private_s; /* key_call.c */ + struct key_call_private *key_call_private_s; /* key_call.c */ - void *authdes_cache_s; /* svcauth_des.c */ - void *authdes_lru_s; /* svcauth_des.c */ + struct cache_entry *authdes_cache_s; /* svcauth_des.c */ + int *authdes_lru_s; /* svcauth_des.c */ - void *svc_xports_s; /* svc.c */ - void *svc_head_s; /* svc.c */ + SVCXPRT **svc_xports_s; /* svc.c */ + struct svc_callout *svc_head_s; /* svc.c */ - void *svcraw_private_s; /* svc_raw.c */ + struct svcraw_private_s *svcraw_private_s; /* svc_raw.c */ - void *svcsimple_proglst_s; /* svc_simple.c */ - void *svcsimple_transp_s; /* svc_simple.c */ + struct proglst_ *svcsimple_proglst_s; /* svc_simple.c */ + SVCXPRT *svcsimple_transp_s; /* svc_simple.c */ }; extern struct rpc_thread_variables *__rpc_thread_variables(void) diff -durpN glibc-2.3.3/include/rpcsvc/nislib.h glibc-2.3.4/include/rpcsvc/nislib.h --- glibc-2.3.3/include/rpcsvc/nislib.h 1998-02-04 05:32:05.000000000 -0500 +++ glibc-2.3.4/include/rpcsvc/nislib.h 2004-10-24 16:25:25.000000000 -0400 @@ -1 +1,45 @@ +#ifndef __RPCSVC_NISLIB_H__ #include + +libnsl_hidden_proto (nis_leaf_of_r) +libnsl_hidden_proto (nis_name_of_r) +libnsl_hidden_proto (nis_getnames) +libnsl_hidden_proto (nis_freenames) +libnsl_hidden_proto (nis_dir_cmp) +libnsl_hidden_proto (nis_destroy_object) +libnsl_hidden_proto (nis_local_directory) +libnsl_hidden_proto (nis_local_group) +libnsl_hidden_proto (nis_local_host) +libnsl_hidden_proto (nis_local_principal) +libnsl_hidden_proto (__free_fdresult) +libnsl_hidden_proto (nis_free_request) +libnsl_hidden_proto (nis_free_directory) +libnsl_hidden_proto (nis_free_object) +libnsl_hidden_proto (nis_freeresult) +libnsl_hidden_proto (readColdStartFile) +libnsl_hidden_proto (nis_print_rights) +libnsl_hidden_proto (nis_print_directory) +libnsl_hidden_proto (nis_print_group) +libnsl_hidden_proto (nis_print_table) +libnsl_hidden_proto (nis_print_link) +libnsl_hidden_proto (nis_print_entry) +libnsl_hidden_proto (nis_print_object) +libnsl_hidden_proto (nis_sperrno) +libnsl_hidden_proto (nis_sperror_r) +libnsl_hidden_proto (__nisbind_destroy) +libnsl_hidden_proto (__nisbind_next) +libnsl_hidden_proto (__nisbind_connect) +libnsl_hidden_proto (__nisbind_create) +libnsl_hidden_proto (nis_lookup) +libnsl_hidden_proto (nis_list) +libnsl_hidden_proto (__nis_finddirectory) +libnsl_hidden_proto (nis_domain_of_r) +libnsl_hidden_proto (nis_modify) +libnsl_hidden_proto (nis_remove) +libnsl_hidden_proto (nis_add) +libnsl_hidden_proto (__nis_default_owner) +libnsl_hidden_proto (__nis_default_group) +libnsl_hidden_proto (__nis_default_access) +libnsl_hidden_proto (nis_clone_object) + +#endif diff -durpN glibc-2.3.3/include/rpcsvc/ypclnt.h glibc-2.3.4/include/rpcsvc/ypclnt.h --- glibc-2.3.3/include/rpcsvc/ypclnt.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/rpcsvc/ypclnt.h 2004-10-24 17:28:09.000000000 -0400 @@ -0,0 +1,10 @@ +#ifndef __RPCSVC_YPCLNT_H__ +#include + +libnsl_hidden_proto (ypbinderr_string) +libnsl_hidden_proto (yp_bind) +libnsl_hidden_proto (yp_get_default_domain) +libnsl_hidden_proto (ypprot_err) +libnsl_hidden_proto (yp_master) + +#endif diff -durpN glibc-2.3.3/include/rpcsvc/yp.h glibc-2.3.4/include/rpcsvc/yp.h --- glibc-2.3.3/include/rpcsvc/yp.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/rpcsvc/yp.h 2004-10-24 17:27:26.000000000 -0400 @@ -0,0 +1,18 @@ +#ifndef __RPCSVC_YP_H__ +#include + +libnsl_hidden_proto (xdr_ypstat) +libnsl_hidden_proto (xdr_ypxfrstat) +libnsl_hidden_proto (xdr_domainname) +libnsl_hidden_proto (xdr_mapname) +libnsl_hidden_proto (xdr_peername) +libnsl_hidden_proto (xdr_keydat) +libnsl_hidden_proto (xdr_valdat) +libnsl_hidden_proto (xdr_ypmap_parms) +libnsl_hidden_proto (xdr_ypresp_key_val) +libnsl_hidden_proto (xdr_ypresp_all) +libnsl_hidden_proto (xdr_yppush_status) +libnsl_hidden_proto (xdr_ypbind_resptype) +libnsl_hidden_proto (xdr_ypbind_binding) + +#endif diff -durpN glibc-2.3.3/include/rpcsvc/ypupd.h glibc-2.3.4/include/rpcsvc/ypupd.h --- glibc-2.3.3/include/rpcsvc/ypupd.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.4/include/rpcsvc/ypupd.h 2004-10-24 17:29:05.000000000 -0400 @@ -0,0 +1,6 @@ +#ifndef __RPCSVC_YPUPD_H__ +#include + +libnsl_hidden_proto (xdr_yp_buf) + +#endif diff -durpN glibc-2.3.3/include/stdio.h glibc-2.3.4/include/stdio.h --- glibc-2.3.3/include/stdio.h 2003-08-27 16:21:03.000000000 -0400 +++ glibc-2.3.4/include/stdio.h 2004-11-15 16:56:18.000000000 -0500 @@ -27,6 +27,18 @@ extern int __vsscanf (__const char *__re _G_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))); +extern int __sprintf_chk (char *, int, size_t, const char *, ...) __THROW; +extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...) + __THROW; +extern int __vsprintf_chk (char *, int, size_t, const char *, + _G_va_list) __THROW; +extern int __vsnprintf_chk (char *, size_t, int, size_t, const char *, + _G_va_list) __THROW; +extern int __printf_chk (int, const char *, ...); +extern int __fprintf_chk (FILE *, int, const char *, ...); +extern int __vprintf_chk (int, const char *, _G_va_list); +extern int __vfprintf_chk (FILE *, int, const char *, _G_va_list); + /* Prototypes for compatibility functions. */ extern FILE *__new_tmpfile (void); extern FILE *__old_tmpfile (void); @@ -50,6 +62,7 @@ extern int __gen_tempname (char *__tmpl, /* Print out MESSAGE on the error output and abort. */ extern void __libc_fatal (__const char *__message) __attribute__ ((__noreturn__)); +extern void __libc_message (int do_abort, __const char *__fnt, ...); /* Acquire ownership of STREAM. */ extern void __flockfile (FILE *__stream); @@ -75,18 +88,18 @@ extern int __asprintf_internal (char **_ # define __asprintf(ptr, fmt, args...) \ INTUSE(__asprintf) (ptr, fmt, ##args) -extern _IO_FILE *_IO_new_fopen __P((const char*, const char*)); +extern _IO_FILE *_IO_new_fopen (const char*, const char*); # define fopen(fname, mode) _IO_new_fopen (fname, mode) -extern _IO_FILE *_IO_new_fdopen __P((int, const char*)); +extern _IO_FILE *_IO_new_fdopen (int, const char*); # define fdopen(fd, mode) _IO_new_fdopen (fd, mode) -extern int _IO_new_fclose __P((_IO_FILE*)); +extern int _IO_new_fclose (_IO_FILE*); # define fclose(fp) _IO_new_fclose (fp) -extern int _IO_fputs __P((const char*, _IO_FILE*)); +extern int _IO_fputs (const char*, _IO_FILE*); libc_hidden_proto (_IO_fputs) # define fputs(str, fp) _IO_fputs (str, fp) -extern int _IO_new_fsetpos __P ((_IO_FILE *, const _IO_fpos_t *)); +extern int _IO_new_fsetpos (_IO_FILE *, const _IO_fpos_t *); # define fsetpos(fp, posp) _IO_new_fsetpos (fp, posp) -extern int _IO_new_fgetpos __P ((_IO_FILE *, _IO_fpos_t *)); +extern int _IO_new_fgetpos (_IO_FILE *, _IO_fpos_t *); # define fgetpos(fp, posp) _IO_new_fgetpos (fp, posp) # endif @@ -109,6 +122,8 @@ libc_hidden_proto (fgets_unlocked) libc_hidden_proto (fputs_unlocked) libc_hidden_proto (open_memstream) libc_hidden_proto (__libc_fatal) +libc_hidden_proto (__vsprintf_chk) +libc_hidden_proto (__vsnprintf_chk) # if !defined NOT_IN_libc && defined SHARED && defined DO_VERSIONING \ && defined HAVE_VISIBILITY_ATTRIBUTE && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE\ diff -durpN glibc-2.3.3/include/stdlib.h glibc-2.3.4/include/stdlib.h --- glibc-2.3.3/include/stdlib.h 2002-08-27 19:36:11.000000000 -0400 +++ glibc-2.3.4/include/stdlib.h 2004-09-07 13:04:23.000000000 -0400 @@ -104,36 +104,34 @@ extern int __libc_system (const char *li extern double ____strtod_l_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group, - __locale_t __loc) __THROW; + __locale_t __loc); extern float ____strtof_l_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group, - __locale_t __loc) __THROW; + __locale_t __loc); extern long double ____strtold_l_internal (__const char *__restrict __nptr, char **__restrict __endptr, - int __group, __locale_t __loc) - __THROW; + int __group, __locale_t __loc); extern long int ____strtol_l_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group, - __locale_t __loc) __THROW; + __locale_t __loc); extern unsigned long int ____strtoul_l_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group, - __locale_t __loc) __THROW; + __locale_t __loc); __extension__ extern long long int ____strtoll_l_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group, - __locale_t __loc) __THROW; + __locale_t __loc); __extension__ extern unsigned long long int ____strtoull_l_internal (__const char * __restrict __nptr, char ** __restrict __endptr, int __base, int __group, - __locale_t __loc) - __THROW; + __locale_t __loc); libc_hidden_proto (____strtof_l_internal) libc_hidden_proto (____strtod_l_internal) @@ -145,43 +143,43 @@ libc_hidden_proto (____strtoull_l_intern extern __inline double __strtod_l (__const char *__restrict __nptr, char **__restrict __endptr, - __locale_t __loc) __THROW + __locale_t __loc) { return ____strtod_l_internal (__nptr, __endptr, 0, __loc); } extern __inline long int __strtol_l (__const char *__restrict __nptr, char **__restrict __endptr, - int __base, __locale_t __loc) __THROW + int __base, __locale_t __loc) { return ____strtol_l_internal (__nptr, __endptr, __base, 0, __loc); } extern __inline unsigned long int __strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr, - int __base, __locale_t __loc) __THROW + int __base, __locale_t __loc) { return ____strtoul_l_internal (__nptr, __endptr, __base, 0, __loc); } extern __inline float __strtof_l (__const char *__restrict __nptr, char **__restrict __endptr, - __locale_t __loc) __THROW + __locale_t __loc) { return ____strtof_l_internal (__nptr, __endptr, 0, __loc); } extern __inline long double __strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, - __locale_t __loc) __THROW + __locale_t __loc) { return ____strtold_l_internal (__nptr, __endptr, 0, __loc); } __extension__ extern __inline long long int __strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr, - int __base, __locale_t __loc) __THROW + int __base, __locale_t __loc) { return ____strtoll_l_internal (__nptr, __endptr, __base, 0, __loc); } __extension__ extern __inline unsigned long long int __strtoull_l (__const char * __restrict __nptr, char **__restrict __endptr, - int __base, __locale_t __loc) __THROW + int __base, __locale_t __loc) { return ____strtoull_l_internal (__nptr, __endptr, __base, 0, __loc); } diff -durpN glibc-2.3.3/include/string.h glibc-2.3.4/include/string.h --- glibc-2.3.3/include/string.h 2003-04-29 18:43:42.000000000 -0400 +++ glibc-2.3.4/include/string.h 2004-10-18 00:17:16.000000000 -0400 @@ -3,7 +3,7 @@ #include extern void *__memccpy (void *__dest, __const void *__src, - int __c, size_t __n); + int __c, size_t __n); extern size_t __strnlen (__const char *__string, size_t __maxlen) __attribute_pure__; @@ -78,9 +78,16 @@ libc_hidden_proto (__strerror_r) libc_hidden_proto (__strverscmp) libc_hidden_proto (basename) libc_hidden_proto (strcoll) +libc_hidden_proto (__strcoll_l) +libc_hidden_proto (__strxfrm_l) +libc_hidden_proto (__strtok_r) +extern char *__strsep_g (char **__stringp, __const char *__delim); +libc_hidden_proto (__strsep_g) libc_hidden_builtin_proto (memchr) libc_hidden_builtin_proto (memcpy) +libc_hidden_builtin_proto (mempcpy) +libc_hidden_builtin_proto (memcmp) libc_hidden_builtin_proto (memmove) libc_hidden_builtin_proto (memset) libc_hidden_builtin_proto (strcat) @@ -92,9 +99,11 @@ libc_hidden_builtin_proto (strlen) libc_hidden_builtin_proto (strncmp) libc_hidden_builtin_proto (strncpy) libc_hidden_builtin_proto (strpbrk) +libc_hidden_builtin_proto (stpcpy) libc_hidden_builtin_proto (strrchr) libc_hidden_builtin_proto (strspn) libc_hidden_builtin_proto (strstr) +libc_hidden_builtin_proto (ffs) # ifndef _ISOMAC # ifndef index @@ -105,4 +114,30 @@ libc_hidden_builtin_proto (strstr) # endif # endif +extern void *__memcpy_chk (void *__restrict __dest, + const void *__restrict __src, size_t __len, + size_t __destlen) __THROW; +extern void *__memmove_chk (void *__dest, const void *__src, size_t __len, + size_t __destlen) __THROW; +extern void *__mempcpy_chk (void *__restrict __dest, + const void *__restrict __src, size_t __len, + size_t __destlen) __THROW; +extern void *__memset_chk (void *__dest, int __ch, size_t __len, + size_t __destlen) __THROW; +extern char *__strcpy_chk (char *__restrict __dest, + const char *__restrict __src, + size_t __destlen) __THROW; +extern char *__stpcpy_chk (char *__restrict __dest, + const char *__restrict __src, + size_t __destlen) __THROW; +extern char *__strncpy_chk (char *__restrict __dest, + const char *__restrict __src, + size_t __len, size_t __destlen) __THROW; +extern char *__strcat_chk (char *__restrict __dest, + const char *__restrict __src, + size_t __destlen) __THROW; +extern char *__strncat_chk (char *__restrict __dest, + const char *__restrict __src, + size_t __len, size_t __destlen) __THROW; + #endif diff -durpN glibc-2.3.3/include/sys/cdefs.h glibc-2.3.4/include/sys/cdefs.h --- glibc-2.3.3/include/sys/cdefs.h 1997-06-20 21:21:18.000000000 -0400 +++ glibc-2.3.4/include/sys/cdefs.h 2004-10-18 00:17:15.000000000 -0400 @@ -1 +1,9 @@ +#ifndef _SYS_CDEFS_H + #include + +extern void __chk_fail (void) __attribute__ ((__noreturn__)); +libc_hidden_proto (__chk_fail) +rtld_hidden_proto (__chk_fail) + +#endif diff -durpN glibc-2.3.3/include/sys/socket.h glibc-2.3.4/include/sys/socket.h --- glibc-2.3.3/include/sys/socket.h 2002-12-31 15:33:12.000000000 -0500 +++ glibc-2.3.4/include/sys/socket.h 2004-08-06 00:51:33.000000000 -0400 @@ -97,6 +97,13 @@ extern int __setsockopt (int __fd, int _ __const void *__optval, socklen_t __optlen) attribute_hidden; +/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL + into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's + actual length. Returns 0 on success, -1 for errors. */ +extern int __getsockopt (int __fd, int __level, int __optname, + void *__restrict __optval, + socklen_t *__restrict __optlen) attribute_hidden; + /* Put the local address of FD into *ADDR and its length in *LEN. */ extern int __getsockname (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __len) attribute_hidden; diff -durpN glibc-2.3.3/include/time.h glibc-2.3.4/include/time.h --- glibc-2.3.3/include/time.h 2003-06-25 04:44:04.000000000 -0400 +++ glibc-2.3.4/include/time.h 2004-04-03 19:15:21.000000000 -0500 @@ -3,6 +3,7 @@ # include