2006-07-10 Ulrich Drepper * elf/dl-lookup.c (dl_new_hash): New functions. (_dl_lookup_symbol_x): Rename hash to old_hash and don't compute value here. Compute new-style hash value. Pass new hash value and reference to variable with the old value to do_lookup_x. (_dl_setup_hash): If DT_GNU_HASH is defined, use it and not old-style hash table. (_dl_debug_bindings): Pass new hash value and reference to variable with the old value to do_lookup_x. * elf/do-lookup.h (do_lookup_x): Accept additional parameter with new-style hash value and change old-style hash value parameter to be a reference. Reoganize functions to determine whether new-style hash table is available. Only fall back on old-style table. If old-style hash value is needed, compute it here. * elf/dynamic-link.h (elf_get_dynamic_info): Relocate DT_GNU_HASH entry. * elf/elf.h: Define SHT_GNU_HASH, DT_GNU_HASH, DT_TLSDEC_PLT, DT_TLSDEC_GOT. Adjust DT_ADDRNUM. * include/link.h (struct link_map): Add l_gnu_bitmask_idxbits, l_gnu_shift, l_gnu_bitmask, l_gnu_buckets and l_gnu_chain_zero. * Makeconfig: If linker supports --hash-style option add it to all linker command lines to build DSOs. * config.make.in: Define have-hash-style. * configure.in: Test whether linker supports --hash-style option. * elf/dl-misc.c (_dl_name_match_p): Make MAP parameter const. * sysdeps/generic/ldsodefs.h: Adjust prototype. 2006-06-27 Ulrich Drepper * elf/dl-load.c (open_path): Fix test to determine whether DSO is auditing. * elf/dl-load.c (_dl_map_object): Try harder to avoid looking at RPATH of main map twice. 2006-06-22 Ulrich Drepper * intl/dcigettext.c (DCIGETTEXT): If _nl_find_msg returns -1 don't look further, return original strings. (_nl_find_msg): Do not return found translation if the conversion failed. Either signal the string is unusable or that something went wrong and the original should be used. 2006-06-21 Ulrich Drepper * string/_strerror.c (__strerror_r): Add __builtin_expect. 2006-06-14 Jakub Jelinek [BZ #2766] * misc/insremque.c (insque): Handle prev == NULL. * misc/Makefile (tests): Add tst-insremque. * misc/tst-insremque.c: New test. 2006-06-17 Ulrich Drepper [BZ #2792] * elf/dl-deps.c (expand_dst): Rename __cnt variable to not conflict with DL_DST_REQUIRED. 2006-06-16 Ulrich Drepper * nis/nis_subr.c (nis_getnames): Fix the implementation to better match what Solaris does. 2006-06-04 Ulrich Drepper * sysdeps/posix/spawni.c (__spawni): Use local_seteuid and local_setegid instead of seteuid and setegid. * sysdeps/generic/local-setxid.h: New file. * sysdeps/unix/sysv/linux/local-setxid.h: New file. * sysdeps/posix/spawni.c (__spawni): Use non-cancelable interfaces. * string/Makefile (tests): Add bug-envz1. * string/bug-envz1.c: New file. 2006-06-02 Jakub Jelinek * posix/regex_internal.c (re_string_skip_chars): If no character has been converted at all, set *last_wc to WEOF. If mbrtowc failed, set wc to the byte which couldn't be converted. (re_string_reconstruct): Don't clear valid_raw_len before calling re_string_skip_chars. If wc is WEOF after re_string_skip_chars, set tip_context using re_string_context_at. * posix/Makefile: Add rules to build and run bug-regex25 test. * posix/bug-regex25.c: New test. 2006-06-02 Ryan S. Arnold [BZ #2703] * string/envz.c (envz_strip): Correct erroneously reversed src and dest parameters to memmove() invocation. 2006-05-30 Jakub Jelinek * nscd/nscd.h (prune_cache): Add fd argument to prototype. * nscd/nscd.c (parse_opt): Read response from INVALIDATE request to make sure the database has been already invalidated. * nscd/cache.c (prune_cache): Add fd argument. Write response to fd after the cache has been invalidated. Use pthread_mutex_lock rather than pthread_mutex_trylock if fd != -1. * nscd/connections.c (invalidate_cache): Add fd argument, write response to fd if not calling prune_cache, pass fd to prune_cache. (handle_request): Adjust invalidate_cache caller. (nscd_run): Pass -1 as fd to prune_cache. 2006-05-30 Ulrich Drepper * sysdeps/posix/getaddrinfo.c (gaiconf_init): Initialize bits in the correct place. 2006-05-29 Ulrich Drepper * nscd/nscd.h (struct database_dyn): Add prunelock field. * nscd/cache.c (prune_cache): Take prunelock before starting the work. Just return in case it is already taken. * nscd/connections.c (dbs): Initialize .prunelock. 2006-05-25 Ulrich Drepper * nis/nis_removemember.c (nis_removemember): Avoid unnecessary copying. No need to allocate new array for group members. Just move the pointers and update the size. * nis/nis_addmember.c (nis_addmember): Avoid unnecessary copying. Avoid memory leak in case realloc fails. Simplification for better code generation. Avoid deprecation warning because of libc_hidden_proto for inet6_option_alloc. * inet/inet6_option.c (option_alloc): Renamed from inet6_option_alloc. Made static. (inet6_option_alloc): Now a simple wrapper around option_alloc. (inet6_option_append): Call option_alloc. * include/netinet/in.h: Remove libc_hidden_proto for inet6_option_alloc. * nis/nis_callback.c (__nis_create_callback): Always call xdr_free for cleanup when cb!=NULL [Coverity CID 233]. 2006-05-24 Ulrich Drepper [BZ #2693] * inet/Makefile (routines): Add inet6_opt and inet6_rth. * inet/Versions (libc, GLIBC_2.5): Add inet6_opt_init, inet6_opt_append, inet6_opt_finish, inet6_opt_set_val, inet6_opt_next, inet6_opt_find, inet6_opt_get_val, inet6_rth_space, inet6_rth_init, inet6_rth_add, inet6_rth_reverse, inet6_rth_segments, and inet6_rth_getaddr. * inet/netinet/ip6.h (struct ip6_rthdr0): Make ip6r0_addr a flexible array. * inet/netinet/in.h (struct ip6_mtuinfo): Define. Mark inet6_option_* interfaces as deprecated. Declare inet6_opt_init, inet6_opt_append, inet6_opt_finish, inet6_opt_set_val, inet6_opt_next, inet6_opt_find, inet6_opt_get_val, inet6_rth_space, inet6_rth_init, inet6_rth_add, inet6_rth_reverse, inet6_rth_segments, and inet6_rth_getaddr. * inet/inet6_opt.c: New file. * inet/inet6_rth.c: New file. * inet/netinet/icmp6.h: Pretty printing. [BZ #2683] * elf/dl-addr.c (_dl_addr): Don't match undefined references. 2006-05-23 Ulrich Drepper * nis/nis_lookup.c (nis_lookup): Use __prepare_niscall instead of doing it all here. When server does not know the answer do not fail immediate, try parent first. * nis/nis_domain_of_r.c (nis_domain_of_r): Add missing buffer overflow test. 2006-05-20 Ulrich Drepper * nis/nis_call.c (__prepare_niscall): New function. Split out from __do_niscall. * nis/nis_table.c (__create_ib_request): Renamed from create_ib_request and exported. (__follow_path): New function. Split out from nis_list. * nis/nis_xdr.h: Add libnsl_hidden_proto for _xdr_ib_request and _xdr_nis_result. * nis/nis_xdr.c: Add libnsl_hidden_def for _xdr_ib_request and _xdr_nis_result. * nis/libnsl.h: Declare __prepare_niscall, __create_ib_request, and __follow_path. * nis/Versions: Export __prepare_niscall, __create_ib_request, __follow_path, __do_niscall3, _xdr_ib_request, and _xdr_nis_result from libnsl for version GLIBC_PRIVATE. * nis/nisplus-parser.h: Remove _nss_nisplus_parse_pwent_chk. Remove entry parameter from _nss_nisplus_parse_pwent and _nss_nisplus_parse_grent. * nis/nss_nisplus/nisplus-parser.c: Likewise. * nis/nss_nisplus/nisplus-pwd.c: Remove support for SETENT_BATCH_READ again. Rewrite getpwent handling to not use nis_first_entry and nis_next_entry. Roll out own niscall handling. * nis/nss_nisplus/nisplus-grp.c: Likewise. * sunrpc/xdr_rec.c: Fix typo in comment. 2006-05-19 Ulrich Drepper * nis/nis_call.c (__do_niscall3): Avoid code duplication in error handling. * nis/nis_callback.c (internal_nis_do_callback): Don't use malloc to allocate memory for my_pollfd. Better initialization of cb_is_running. Use TEMP_FAILURE_RETRY. * malloc/memusage.sh (memusageso): Add quotes. (memusagestat): Likewise. * debug/xtrace.sh (pcprofileso): Likewise. (pcprofiledump): Likewise. * debug/Makefile ($(objpfx)xtrace): Use $LIB in SLIBDIR replacement. * malloc/Makefile ($(objpfx)memusage): Likewise. * nis/nis_callback.c (__nis_create_callback): Calls to svcudp_bufcreate and svctcp_create can fail. Free ->xprt if asprintf call fails. * sysdeps/unix/sysv/linux/ifaddrs.c (__netlink_sendreq): Make sure no uninitialized memory is passed to sendto. 2006-05-18 Ulrich Drepper * nis/nis_callback.c (__nis_create_callback): Use asprinf instead of snprintf+strdup. Handle OOM. * nis/nis_callback.c (__nis_create_callback): Allocate cb and cb->serv together. Remove now obsolete free calls. (__nis_destroy_callback): Remove now obsolete free call. 2006-05-18 David Woodhouse * sysdeps/posix/getaddrinfo.c: Add unique labels to the default RFC3484 precedence table for fec0::/10 and fc00::/7 (site-local and ULA respectively). Set precedence for IPv4 address to 10 as defined in RFC3484 for preferring IPv6. * posix/gai.conf: Update to match the new default tables. 2006-05-18 Jakub Jelinek * nis/nss_compat/compat-pwd.c (internal_setpwent): If nss_set*ent returned NSS_STATUS_UNAVAIL, still return NSS_STATUS_SUCCESS. * nis/nss_compat/compat-spwd.c (internal_setspent): Likewise. * nis/nss_compat/compat-grp.c (internal_setgrent): Likewise. * nis/nss_compat/compat-initgroups.c (nss_setgrent, nss_endgrent): Removed. (init_nss_interface): Remove initialization of these variables. 2006-05-18 Ulrich Drepper * nis/nis_call.c (rec_dirsearch): Little optimization: pull nis_free_directory forward to avoid duplication. 2006-05-17 Ulrich Drepper * nis/nis_call.c (rec_dirsearch): Handle __nis_finddirectory and rec_dirsearch returning NULL. (first_shoot): Handle __nis_finddirectory returning NULL. (__nisfind_server): Fix leak when rec_dirsearch returns NULL. * sysdeps/unix/sysv/linux/sys/inotify.h: Define IN_CLOSE, IN_MOVE, IN_ONLYDIR, IN_DONT_FOLLOW, and IN_MASK_ADD. 2006-05-17 Jakub Jelinek * sunrpc/key_call.c (getkeyserv_handle): Call auth_destroy if pid changed. 2006-05-15 Ulrich Drepper * include/rpc/pmap_prot.h: Mark all functions as hidden. * nscd/nscd_initgroups.c: Mark __gr_map_handle as hidden. * nscd/nscd_getgr_r.c: Likewise. * include/rpc/pmap_rmt.h: Mark all functions as hidden. * nscd/nscd_getai.c (__hst_map_handle): Mark as hidden. * nscd/nscd_gethst_r.c (__hst_map_handle): Likewise. * stdlib/longlong.h (__clz_tab): Mark as hidden. * iconv/gconv_int.h: Mark __gconv_lock as hidden. * include/rpc/key_prot.h: Mark all _internal functions as hidden. * include/rpc/auth.h: Mark xdr_des_block_internal and xdr_opaque_auth_internal as hidden. * sysdeps/unix/sysv/linux/getdents.c: Mark __have_no_getdents64 as hidden. * include/rpc/xdr.h: Mark all _internal functions as hidden. * misc/getusershell.c (okshells): Don't use static initializers, do it dynamically. * stdlib/fmtmsg.c (keywords): Change type of len element to uint32_t to not waste space on 64bit machines. * locale/setlocale.c: Change _nl_category_names into a string. Add new _nl_category_name_idxs. Change all users. * locale/localeinfo.h: Adjust declaration of _nl_category_names. Declare _nl_category_name_idxs. * locale/findlocale.c: Adjust for _nl_category_names change. * locale/loadlocale.c: Likewise. * locale/newlocale.c: Likewise. * intl/dcigettext.c: Likewise. * iconv/gconv_conf.c (add_alias): Move actual alias handling to... (add_alias2): ...here. New function. (__gconv_read_conf): Simplify builtin alias handling. (builtin_aliases): Convert to string to avoid relocations. * iconv/gconv_builtin.h: Add comment about correct formatting. 2006-05-15 Jakub Jelinek * resolv/res_debug.c (loc_ntoa): Make error const. 2006-05-14 Andreas Schwab * math/complex.h [__LDBL_COMPAT]: Use __REDIRECT_NTH. 2006-05-12 Jakub Jelinek * sysdeps/unix/sysv/linux/sched_getaffinity.c: Include sys/param.h. (__sched_getaffinity_new): Don't crash if cpusetsize is smaller than sizeof (cpu_set_t). 2006-05-11 Ulrich Drepper * resolv/res_debug.c (loc_ntoa): Define error as array, not pointer. * include/arpa/nameser.h: Declare _ns_flagdata as hidden. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypresp_master. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypresp_master. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypbind_resp. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypbind_resp. * nis/nis_xdr.c: Add libnsl_hidden_def for xdr_cback_data. * include/rpcsvc/nis_callback.h: Add libnsl_hidden_proto for xdr_cback_data. * nis/ypupdate_xdr.c: Add libnsl_hidden_def for xdr_ypupdate_args. * include/rpcsvc/ypupd.h: Add libnsl_hidden_proto for xdr_ypupdate_args. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypresp_order. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypresp_order. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypresp_maplist. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypresp_maplist. * nis/nis_xdr.c: Add libnsl_hidden_def for xdr_obj_p. * include/rpcsvc/nis_callback.h: New file. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypresp_val. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypresp_val. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypreq_nokey. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypreq_nokey. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypmaplist. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypmaplist. * nis/yp_xdr.c: Add libnsl_hidden_def for xdr_ypreq_nokey. * include/rpcsvc/yp.h: Add libnsl_hidden_proto for xdr_ypreq_nokey. * nis/ypupdate_xdr.c: Add libnsl_hidden_def for xdr_ypdelete_args. * include/rpcsvc/ypupd.h: Add libnsl_hidden_proto for xdr_ypdelete_args. * nis/nis_xdr.h: Mark all functions as hidden. Remove __BEGIN_DECLS and __END_DECLS, the header is not installed. * nis/nis_error.c: Remove table of strings. Use position independent mechanism. * nis/nis_error.h: New file. 2006-05-11 Jakub Jelinek * locale/programs/ld-time.c (time_finish): If wide era name or format aren't provided, set both wname and wformat to L"". 2006-05-10 Ulrich Drepper * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Only store results if the call was succesful. * nis/nss-nis.h: Mark __yperr2nss_tab and __yperr2nss_count as hidden. * nis/nss-nisplus.h: Mark __niserr2nss_tab and __niserr2nss_count as hidden. 2006-05-10 Jakub Jelinek * misc/sys/queue.h: Remove uses of all QUEUEDEBUG_* macros. 2006-05-10 Ulrich Drepper * posix/wordexp.c (parse_glob): No need to check ifs for NULL, the caller makes sure this is not the case. (wordexp): Simplify ifs_white creation. [Coverity CID 231] 2006-05-09 Ulrich Drepper * posix/wordexp.c: Remove numerous NULL pointer tests before FREE calls. * io/ftw.c (open_dir_stream): Return right away if REALLOC fails. [Coverity CID 229, 230] * argp/argp-help.c (hol_entry_help): Handle STATE==NULL in ARG and DGETTEXT calls. (hol_help): Likewise. [Coverity CID 226, 227] * string/argz-replace.c (__argz_replace): Unconditionally call free on SRC. [Coverity CID 225] * nis/nis_creategroup.c (nis_creategroup): No need to duplicate the return value of __nis_default_owner and __nis_default_group, it has been especially allocated. [Coverity CID 224] * nis/nis_defaults.c (searchXYX): New functions. Used by both searchgroup and searchowner. Significantly simplified. (__nis_default_owner): Remove duplication. Do not locally copy the string before duplicating it. (__nis_default_group): Likewise. * nis/nis_lookup.c (nis_lookup): After calling nis_free_directory, we must clear the variable before calling __nisfind_server. * nis/nis_lookup.c (nis_lookup): Always free memory allocated with nis_getnames. [Coverity CID 223] * locale/programs/locfile.c (locfile_read): Use alloca instead of xmalloc to allocate local repertoire name. [Coverity CID 222] * iconv/iconv_charmap.c (use_to_charmap): No need to dynamically allocate memory for the input to add_bytes. [Coverity CID 221] * posix/wordexp.c (w_addword): Free word if realloc fails and it was allocated here. [Coverity CID 219, 220] * posix/getconf.c (print_all): Free confstr data after printing. [Coverity CID 218] * sysdeps/posix/getaddrinfo.c (gaih_inet): Free canon string if list allocation fails. [Coverity CID 215] * nss/nsswitch.c (__nss_configure_lookup): Fix loop end condition. [Coverity CID 213] * argp/argp-help.c (hol_entry_cmp): Don't call canon_doc_option if string is NULL. [Coverity CID 212] * argp/Makefile: Add rules to build and run bug-argp1. * argp/bug-argp1.c: New file. * io/ftw.c (ftw_dir): Use __rawmemchr instead of strchr to find end of string. * stdlib/canonicalize.c (__realpath): Likewise. * locale/programs/ld-time.c (time_finish): Don't dereference NULL pointer. [Coverity CID 206] * elf/dl-dst.h (DL_DST_REQUIRED): Be prepared for missing link map in statically linked code. * elf/dl-load.c (_dl_dst_substitute): When replacing ORIGIN in statically built code, be prepared to have no link map. [Coverity CID 205] * argp/argp-help.c (fill_in_uparams): Handle STATE==NULL in dgettext calls. [Coverity CID 204] * argp/argp-help.c (struct uparams): Remove valid member. Change the one user. (uparam_names): Reduce size. Avoid relative relocations. Moved to read-only segment. (fill_in_uparams): Update for new layout. * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Parameter can be assumed to always be != NULL. [Coverity CID 202] * argp/argp-help.c (hol_entry_help): Remove some dead code [Coverity CID 200]. * nis/nss_nis/nis-service.c (_nss_nis_getservbyport_r): Optimize away a few more unconditional yperr2nss calls. (_nss_nis_getservbyname_r): Likewise. 2006-05-06 Ulrich Drepper * sysdeps/generic/ldsodefs.h: Remove support for non-core architectures. * sysdeps/unix/sysv/linux/check_pf.c (make_request): Make sure that unused memory passed to sendto is nevertheless initialized. [BZ #2499] * resolv/nss_dns/dns-canon.c (_nss_dns_getcanonname_r): Avoid possibly unaligned memory accesses. * include/arpa/nameser.h: Also optimize NS_PUT16 and NS_PUT32. * resolv/res_mkquery.c: Use NS_PUT16 and NS_PUT32 instead of __putshort and __putlong respectively. Correct buffer overflow check for NS_NOTIFY_OP. * resolv/res_send.c (send_vc): Use ns_put16 instead of putshort. * resolv/res_send.c (res_queriesmatch): Fix typo in comment. (send_dg): Rewrite error handling to be more compact and avoid double recomputation of timeouts. Pass MSG_NOSIGNAL to send. * include/arpa/nameser.h: Add optimizations for NS_GET16 and NS_GET32. * resolv/res_send.c (res_nameinquery): Use NS_GET16 directly instead of ns_get16. (res_queriesmatch): Likewise. Minor optimization. [BZ #2499] * resolv/res_query.c (__libc_res_nquery): If answerp != NULL, __libc_res_nsend might reallocate the buffer for the answer. In this case we have to reload the HP pointer. 2006-05-05 Ulrich Drepper * stdio-common/vfscanf.c (memory_error): Remove definition. Add some branch prediction hints. * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Define SPLICE_F_*. * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise. 2006-05-05 Martin Schwidefsky * sysdeps/s390/s390-32/elf/start.S: Replace pc relative relocation by a GOT relocation to make Scrt1.o position independent. * sysdeps/s390/s390-64/elf/start.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S: Add support for six system call parameters. * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: Likewise. 2006-05-05 Ulrich Drepper * sunrpc/svcauth_des.c (cache_init): Use calloc instead of malloc&bzero. * sunrpc/svc_udp.c (BZERO): Remove definition. (CALLOC): Define. (svc_enablecache): Use CALLOC instead of ALLOC&BZERO. * sunrpc/des_impl.c: Remove ALT_ECB support. We never used it. (des_SPtrans): Use uint32_t type. (des_skb): Likewise. * sunrpc/xdr_ref.c (xdr_reference): Use calloc instead of malloc&bzero. 2006-05-05 Jakub Jelinek [BZ #2509] * stdio-common/tst-printf.sh: Adjust for tst-printf.c change even on 32-bit arches. 2006-05-05 Ulrich Drepper * locale/programs/ld-address.c (address_finish): Fix one more place where the iso639 array might be accessed beyond the limits. 2006-05-04 Ulrich Drepper * nis/nis_table.c (nis_list): Avoid clearing res twice before filling it for the first time. * nis/nis_table.c (get_tablepath): Renamed from __get_tablepath. Adjust all callers. Free res object content before returning. * sunrpc/xdr_array.c (xdr_array): Use calloc instead of malloc&bzero. * sunrpc/key_call.c (__rpc_thread_key_cleanup): Also free client->cl_auth. * sunrpc/rpc_thread.c (__rpc_thread_destroy): Don't skip entire cleanup for initial thread, just the free call on TVP. * nscd/gai.c (__getline): Define. See ChangeLog.16 for earlier changes.