[! _LIBC_REENTRANT] (_res): Move this conditional decl to ...
* include/resolv.h: ... here.
[USE_TLS && HAVE___THREAD] (_res): #undef it and declare
as a __thread variable.
* resolv/res_libc.c [USE_TLS && HAVE___THREAD] (_res): Define it as
a __thread variable instead of a global.
* resolv/res_data.c [_LIBC]: Don't #undef _res.
* include/errno.h: Include <tls.h> to make sure USE_TLS defined by the
time we test it.
* intl/loadmsgcat.c [__GNUC__]: #undef alloca before defining it.
* malloc/malloc.c [_LIBC]: Include <string.h> instead of using local
decls of memset and memcpy.
* sysdeps/generic/sysdep.h (END): Conditionalize on [__ASSEMBLER__].
* sysdeps/unix/sysv/linux/i386/sysdep.h (L): Likewise.
* elf/dl-load.c (_dl_map_object_from_fd): Comment fix.
* sysdeps/generic/bits/libc-tsd.h [USE_TLS && HAVE___THREAD]
(__libc_tsd_define): Define using __thread.
* sunrpc/rpc_thread.c: Use __libc_tsd_define.
(__rpc_thread_variables): Use __libc_tsd_get.
(__rpc_thread_destroy): Use __libc_tsd_get instead of calling
__rpc_thread_variables, which might allocate what we're about to free.
* inet/herrno.c [USE_TLS && HAVE___THREAD] (h_errno): Define as a
thread-local variable.
* resolv/netdb.h (h_errno): Define macro unconditionally.
[_LIBC] (__set_h_errno): Macro moved to ...
* include/netdb.h: ... here.
[USE_TLS && HAVE___THREAD] (h_errno): Declare __thread variable.
[USE_TLS && HAVE___THREAD] (__set_h_errno): Define using that.
[! _LIBC_REENTRANT]: #undef h_errno here.
* include/errno.h: Protect from multiple inclusion.
* misc/sys/select.h (__NFDBITS, __FDELT, __FDMASK): #undef these
before defining them, since Linux's <linux/posix_types.h> might have
defined them.
2002-08-01 Roland McGrath <roland@redhat.com>
2002-07-31 Roland McGrath <roland@redhat.com>
2002-07-31 Roland McGrath <roland@redhat.com>
[USE_TLS && HAVE___THREAD]: Just include the sysdeps/generic file,
which does the right thing when __thread support is available.
* descr.h (struct _pthread_descr_struct) [USE_TLS && HAVE___THREAD]:
Omit `p_libc_specific', `p_errnop', `p_errno', `p_h_errnop',
`p_h_errno', `p_resp', and `p_res' members.
* pthread.c (__pthread_initialize_minimal) [USE_TLS && HAVE___THREAD]:
Don't initialize `p_errnop' and `p_h_errnop' members.
(__pthread_reset_main_thread): Likewise.
(__pthread_initialize_manager): Likewise.
* manager.c (__pthread_manager, pthread_handle_create): Likewise.
* pthread.c (pthread_initialize) [USE_TLS && HAVE___THREAD]:
Don't initialize `p_resp' member.
(__pthread_reset_main_thread): Likewise.
* manager.c (pthread_handle_create): Likewise.
* specific.c (libc_internal_tsd_set, libc_internal_tsd_get):
Conditionalize these on [!(USE_TLS && HAVE___THREAD)].
* errno.c [USE_TLS && HAVE___THREAD]
(__h_errno_location, __res_state): Don't define these at all.
* sysdeps/i386/tls.h (INSTALL_DTV): Add parens around arguments!
(INSTALL_NEW_DTV, GET_DTV): Likewise.
* sysdeps/sh/tls.h (INSTALL_DTV, INSTALL_NEW_DTV, GET_DTV): Likewise.
* weaks.c: Don't include <errno.h> here.
2002-08-01 Roland McGrath <roland@redhat.com>
* sysdeps/i386/tls.h (TLS_DO_MODIFY_LDT): New macro, broken out of
TLS_INIT_TP.
(TLS_DO_SET_THREAD_AREA): New macro, uses thread_set_area syscall.
(TLS_SETUP_GS_SEGMENT): New macro, try one or the other or both.
(TLS_INIT_TP): Use that.
* sysdeps/i386/tls.h (TLS_DO_MODIFY_LDT): New macro, broken out of
TLS_INIT_TP.
(TLS_DO_SET_THREAD_AREA): New macro, uses thread_set_area syscall.
(TLS_SETUP_GS_SEGMENT): New macro, try one or the other or both.
(TLS_INIT_TP): Use that.
2002-08-02 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (public_cALLOc): Check for overflow on
multiplication.
* sunrpc/xdr_array.c (xdr_array): Likewise.
* sunrpc/rpc/types.h (mem_free): Add comment.
Patch by Solar Designer <solar@openwall.com>.
2002-08-02 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_SET_THREAD_AREA_SYSCALL): Define.
* libio/stdio.h (sys_errlist, sys_nerr, _sys_errlist, _sys_nerr):
* libio/Makefile (headers): Add bits/sys_errlist.h to the list.
* sysdeps/generic/bits/sys_errlist.h: New file. This does *not*
declare sys_errlist and sys_nerr.
* sysdeps/unix/sysv/linux/bits/sys_errlist.h: New file. Does
(_IO_file_jumps_mmap): Use it.
(_IO_file_underflow_mmap): Rewritten. If after EOF or fflush,
repeat the stat check and resize the mapped buffer as necessary.
2002-07-31 Roland McGrath <roland@frob.com>
* libio/fileops.c (decide_maybe_mmap): New static function.
Code taken from libio/iofopen.c:__fopen_maybe_mmap to try to
mmap the file contents. Then switch the jump tables to the mmap
tables if it worked, or the vanilla file tables if not.
(_IO_file_underflow_maybe_mmap): New function.
(_IO_file_seekoff_maybe_mmap): New function.
(_IO_file_xsgetn_maybe_mmap): New function.
(_IO_file_jumps_maybe_mmap): New variable, jump table using those.
* libio/libioP.h: Declare those.
* libio/wfileops.c (_IO_wfile_underflow_maybe_mmap): New function.
(_IO_wfile_jumps_maybe_mmap): New variable, jump table using that.
* libio/iofopen.c (__fopen_maybe_mmap): Don't try to mmap here.
If the stream is read-only, set its jump tables to those new ones.
* libio/iofdopen.c (_IO_new_fdopen) [_G_HAVE_MMAP]: Set the initial
jump tables to the maybe_mmap ones, and don't call __fopen_maybe_mmap.
We need the tables set before _IO_file_attach.
* libio/tst-mmap-eofsync.c: New file.
* libio/tst-mmap-fflushsync.c: New file.
* libio/bug-mmap-fflush.c: New file.
* libio/tst-mmap2-eofsync.c: New file.
* libio/Makefile (tests): Add them.
* libio/wfileops.c (_IO_wfile_underflow_mmap): Don't set EOF bit when
_IO_file_underflow_mmap fails, it already set the appropriate bit.
* libio/fileops.c (decide_maybe_mmap): New static function.
Code taken from libio/iofopen.c:__fopen_maybe_mmap to try to
mmap the file contents. Then switch the jump tables to the mmap
tables if it worked, or the vanilla file tables if not.
(_IO_file_underflow_maybe_mmap): New function.
(_IO_file_seekoff_maybe_mmap): New function.
(_IO_file_xsgetn_maybe_mmap): New function.
(_IO_file_jumps_maybe_mmap): New variable, jump table using those.
* libio/libioP.h: Declare those.
* libio/wfileops.c (_IO_wfile_underflow_maybe_mmap): New function.
(_IO_wfile_jumps_maybe_mmap): New variable, jump table using that.
* libio/iofopen.c (__fopen_maybe_mmap): Don't try to mmap here.
If the stream is read-only, set its jump tables to those new ones.
* libio/iofdopen.c (_IO_new_fdopen) [_G_HAVE_MMAP]: Set the initial
jump tables to the maybe_mmap ones, and don't call __fopen_maybe_mmap.
We need the tables set before _IO_file_attach.
* libio/stdio.h (sys_errlist, sys_nerr, _sys_errlist, _sys_nerr):
Declarations moved to <bits/sys_errlist.h>. Include that file.
* libio/Makefile (headers): Add bits/sys_errlist.h to the list.
* sysdeps/generic/bits/sys_errlist.h: New file. This does *not*
declare sys_errlist and sys_nerr.
* sysdeps/unix/sysv/linux/bits/sys_errlist.h: New file. Does
provide declarations.
2002-07-15 Alexandre Oliva <aoliva@redhat.com>
* configure.in (static_nss): Set to `yes' if --disable-shared.
2002-07-23 Bruno Haible <bruno@clisp.org>
* intl/loadmsgcat.c (PRI*): Redefine the macros if PRI_MACROS_BROKEN
is set.
2002-07-25 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h: New file.
* sysdeps/unix/sysv/linux/ia64/profil-counter.h: Fix profil_counter
arguments.
2002-07-25 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/alpha/adjtime.c (__adjtimex_internal): Add
alias.
2002-07-21 Bruno Haible <bruno@clisp.org>
* intl/libintl.h (__GNU_GETTEXT_SUPPORTED_REVISION): New macro.
* intl/gettext.h (struct mo_file_header): New fields n_sysdep_segments,
sysdep_segments_offset, n_sysdep_strings, orig_sysdep_tab_offset,
trans_sysdep_tab_offset.
(struct sysdep_segment): New type.
(struct sysdep_string): New type.
(SEGMENTS_END): New macro.
* intl/gettextP.h (struct sysdep_string_desc): New type.
(struct loaded_domain): New fields malloced, n_sysdep_strings,
orig_sysdep_tab, trans_sysdep_tab, must_swap_hash_tab. Make fields
orig_tab, trans_tab, hash_tab to const pointers because they point
into read-only memory.
* intl/loadmsgcat.c: Include stdint.h, inttypes.h, hash-string.h.
(PRI*): Define fallback values.
(get_sysdep_segment_value): New function.
(_nl_load_domain): Distinguish major and minor revision parts. Add
support for minor revision 1 with system dependent strings.
(_nl_unload_domain): Also free the 'malloced' field.
* intl/dcigettext.c (_nl_find_msg): Remove test for domain->hash_size,
now done in loadmsgcat.c. Add support for system dependent strings.
2002-07-27 Ulrich Drepper <drepper@redhat.com>
* iconvdata/Makefile (CPPFLAGS): Add NOT_IN_libc.
* iconv/iconv_prog.c (main): Improve error message for the cases
where -t and/or -f parameter are missing.
2002-07-10 Stepan Kasal <kasal@math.cas.cz>
* posix/regexec.c (re_match): Reorganize to remove duplicate code.
(re_search): Likewise.
(re_match_2): Likewise.
(re_search_2): Likewise.
(re_search_stub): New function.
(re_search_2_stub): New function.
* regcomp.c (re_compile_pattern): Typo in a comment fixed.
2002-07-10 Isamu Hasegawa <isamu@yamato.ibm.com>
* posix/regex_internal.h: Add new member STOP to struct re_string_t.
(re_string_eoi): Use STOP instead of LEN.
* posix/regex_internal.c (re_string_allocate): Initialize pstr->len.
(re_string_construct): Likewise.
(re_string_reconstruct): Adjust pstr->stop like pstr->len.
* posix/regexec.c (re_search_internal): Add a new argument STOP
so that it can handle the argument STOP of re_search_2 and re_match_2
correctly.
(regexec): Adapt to new I/F of re_search_internal.
(re_search_stub): Likewise.
This implementation supports only IPv4.
* inet/ifaddrs.h: New file.
* sysdeps/generic/ifaddrs.c: New file.
* sysdeps/gnu/ifaddrs.c: New file.
* inet/test-ifaddrs.c: New file.
* inet/Makefile (routines): Add ifaddrs.
(headers): Add ifaddrs.h here.
(tests): Add test-ifaddrs.
* inet/Versions (GLIBC_2.3): New set, add getifaddrs and freeifaddrs.
* resolv/res_hconf.c (_res_hconf_reorder_addrs): Use an explicit
socket call to get an AF_INET socket, instead of using __opensock.
The SIOCGIFNETMASK ioctl will work only with a PF_INET socket.
* sysdeps/generic/ifreq.h (__ifreq): Take third argument SOCKFD,
if not -1 use it instead of calling __opensock.
* sysdeps/unix/sysv/linux/ifreq.h (__ifreq): Likewise.
* sysdeps/mach/hurd/ifreq.h (__ifreq): Take new argument and ignore it.
* resolv/res_hconf.c (_res_hconf_reorder_addrs): Pass new argument.
* sysdeps/mach/hurd/ifreq.h: New file.
* sysdeps/generic/ifreq.h (__if_freereq): Take second argument NUM_IFS.
* sysdeps/unix/sysv/linux/ifreq.h (__if_freereq): Likewise.
* resolv/res_hconf.c (_res_hconf_reorder_addrs): Update caller.
2002-07-24 Philip Blundell <philb@gnu.org>
* sysdeps/unix/arm/brk.S: Improve schedule.
* sysdeps/unix/sysv/linux/arm/socket.S (PUSHARGS_1): Use more
efficient instruction.
(__socket): Optimize return sequence.
* locale/hashval.h: Make more self-contained by defining LONG_BITS.
2002-07-22 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/arm/errlist.c: Remove extra weak alias
definiton of _old_sys_nerr. Define _old_sys_errlist as strong
alias.