[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.
file on [!RTLD_STAT64].
* sysdeps/mach/hurd/fxstat64.c: Likewise.
* sysdeps/mach/hurd/tmpfile.c (tmpfile64): Define as alias of tmpfile.
(__fdopen): Use INTUSE.
* sysdeps/mach/hurd/tmpfile64.c: New file, empty placeholder.
* stdio-common/tmpfile64.c: File removed.
* sysdeps/generic/tmpfile64.c: New file.
* sysdeps/generic/tmpfile.c (GEN_THIS): New macro, define to __GT_FILE
if not already defined.
(tmpfile): Use it in place of __GT_FILE.
* include/unistd.h: Declare __chown_internal.
* sysdeps/mach/hurd/sendfile64.c (sendfile64): Do real work here.
* sysdeps/mach/hurd/sendfile.c (sendfile): Call that.
2002-06-09 Roland McGrath <roland@frob.com>
Update to new Hurd RPC interfaces supporting 64-bit file sizes.
* sysdeps/mach/hurd/configure.in: Check for <hurd/version.h> with
value of HURD_INTERFACE_VERSION >= 20020609.
* sysdeps/mach/hurd/configure: Regenerated.
* shlib-versions (.*-.*-gnu-gnu.*): Set libhurduser=0.3.
* sysdeps/mach/hurd/xstatconv.c (xstat64_conv): Rewritten to
convert a struct stat64 into a struct stat and return 0 or -1
with errno set to EOVERFLOW.
* sysdeps/mach/hurd/statfsconv.c (statfs64_conv): Likewise
for struct statfs64 to struct statfs.
* sysdeps/mach/hurd/xstat.c (__xstat): Use converter and call ...
* sysdeps/mach/hurd/xstat64.c (__xstat64): ... this, real work here.
* sysdeps/mach/hurd/fxstat.c (__fxstat): Likewise.
* sysdeps/mach/hurd/fxstat64.c (__fxstat64): Likewise.
* sysdeps/mach/hurd/lxstat.c (__lxstat): Likewise.
* sysdeps/mach/hurd/lxstat64.c (__lxstat64): Likewise.
* sysdeps/mach/hurd/statfs.c (__statfs): Likewise.
* sysdeps/mach/hurd/statfs64.c (__statfs64): Likewise.
* sysdeps/mach/hurd/fstatfs.c (__fstatfs): Likewise.
* sysdeps/mach/hurd/fstatfs64.c (__fstatfs64): Likewise.
* sysdeps/mach/hurd/pwrite64.c (__libc_pwrite64): Do real work here.
* sysdeps/mach/hurd/pwrite.c (__libc_pwrite): Call that.
* sysdeps/mach/hurd/pread64.c (__libc_pread64): Do real work here.
* sysdeps/mach/hurd/pread.c (__libc_pread): Call that.
* sysdeps/mach/hurd/lseek64.c (__libc_lseek64): Do real work here.
* sysdeps/mach/hurd/lseek.c (__libc_lseek): Call that.
* sysdeps/mach/hurd/readdir64.c (__readdir64): Do real work here.
* sysdeps/mach/hurd/readdir.c (__readdir): Call that.
* sysdeps/mach/hurd/readdir64_r.c (__readdir64_r): Do real work here.
* sysdeps/mach/hurd/readdir_r.c (__readdir64_r): Call that.
* hurd/lookup-retry.c (__hurd_file_name_lookup_retry):
Use struct stat64 for io_stat argument.
* sysdeps/mach/hurd/readlink.c (__readlink): Likewise.
* hurd/fopenport.c (seekio): Remove EOVERFLOW check, pass POS directly
to io_seek.
* hurd/fd-read.c (_hurd_fd_read): Use loff_t for OFFSET argument.
* hurd/fd-write.c (_hurd_fd_write): Likewise.
* hurd/hurd/fd.h: Update decls.
* sysdeps/mach/hurd/getcwd.c
(_hurd_canonicalize_directory_name_internal): Use ino64_t
and struct dirent64.
* sysdeps/mach/hurd/dl-sysdep.c (open_file): Use struct stat64.
(__xstat): Renamed to __xstat64, use struct stat64 for argument.
(__fxstat): Renamed to __fxstat64, use struct stat64 for argument.
(__lseek): Renamed to __libc_lseek64, use off64_t for argument.
2002-06-08 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/dirstream.h (struct __dirstream): Use size_t
instead of unsigned long int for __allocation and __size members.
2002-05-19 Ulrich Drepper <drepper@redhat.com>
2002-05-14 Ulrich Drepper <drepper@redhat.com>
* include/stdio.h: Remove references to old stdio implementation.
* libio/Makefile (bug-ungetwc2-ENV): Define.
* hurd/hurdchdir.c (_hurd_change_directory_port_from_name):
Allocate three, not two, more than LEN when appending '/.'.
* sysdeps/mach/hurd/chroot.c (chroot): Likewise. Don't check
if NAME ends with '/.' if it is shorter than 2 chars.
2002-04-24 Ulrich Drepper <drepper@redhat.com>
* elf/dl-load.c (open_verify): Correct __lseek parameters.
Patch by Simon Hildrew <simon@hildrew.net> [PR libc/3354].
2002-04-23 H.J. Lu <hjl@gnu.org>
* include/math.h (isfinite): Fix a typo.
2002-04-24 Ulrich Drepper <drepper@redhat.com>
* libio/bug-ungetwc2.c (test_locale): Use the de_DE.UTF-8 locale
which is created by the test suite.
2002-04-20 Bruno Haible <bruno@clisp.org>
* iconvdata/iso-2002-kr.c (MAX_NEEDED_FROM): Set to 4.
(BODY for FROM_LOOP): Fix comparisons between inptr and inend.
2002-04-20 Bruno Haible <bruno@clisp.org>
* iconvdata/johab.c (BODY for FROM_LOOP): Change type of i, m, f,
to avoid gcc warning.
2002-04-20 Bruno Haible <bruno@clisp.org>
* iconvdata/iso-2022-jp.c (EMIT_SHIFT_TO_INIT): Fix modification mask
of data->__statep->__count.
2002-04-20 Bruno Haible <bruno@clisp.org>
* iconvdata/euc-jisx0213.c (BODY for TO_LOOP): Really ignore Unicode
tag characters.
* iconvdata/shift_jisx0213.c (BODY for TO_LOOP): Likewise.
* sysdeps/unix/sysv/linux/x86_64/ldconfig.h: New file.
* sysdeps/unix/sysv/linux/x86_64/dl-cache.h: New file.
2002-04-11 Zack Weinberg <zack@codesourcery.com>
* include/rpc/rpc.h (struct rpc_thread_variables): Remove
authnone_private_s.
* sunrpc/auth_none.c: Include bits/libc-lock.h.
Delete #ifdef _RPC_THREAD_SAFE_ block.
(authnone_private): Make a struct, not a pointer to struct.
(authnone_private_guard): New once-control variable.
(authnone_create_once): New function, split out of
authnone_create. No need to allocate memory.
(authnone_create): Just call authnone_create_once via
__libc_once, then return &authnone_private->no_client.
(authnone_marshal): Access private data via CLIENT argument,
not authnone_private pointer.
Fix typo (MAX_MARSHEL_SIZE -> MAX_MARSHAL_SIZE).
* sunrpc/rpc_thread.c (__rpc_thread_destroy): No need to free
authnone_private_s.
2002-04-18 Ulrich Drepper <drepper@redhat.com>
* locale/programs/locfile.c (to_archive): New variable. To collect
data which has to be added to the locale archive.
(write_all_categories): Take new third parameter with locale name.
Unless no_archive flag set add new locale data to the archive
(write_locale_data): Unless no-archive flag set store generated data
in to_archive data structure instead of generation output file.
Add new parameter with locale category index.
* locale/programs/locfile.h: Add new parameters in declaractions of
write_all_categories and write_locale_data.
* locale/programs/localedef.c: Recognize --no-archive, --list-archive,
--add-to-archive, and --delete-from-archive options. Pass extra
parameter to write_all_categories.
* locale/programs/localedef.h: Add prototypes for functions in
locarchive.c.
* locale/locarchive.h: New file.
* locale/programs/locarchive.c: New file.
* locale/Makefile (distribute): Add programs/locarchive.c and
locarchive.h.
(localedef-modules): Add md5 and locarchive.
Add vpath to crypt subdir for md5.c.
* locale/programs/ld-address.c: Pass locale category ID as new second
parameter to write_locale_data.
* locale/programs/ld-collate.c: Likewise.
* locale/programs/ld-ctype.c: Likewise.
* locale/programs/ld-identification.c: Likewise.
* locale/programs/ld-measurement.c: Likewise.
* locale/programs/ld-messages.c: Likewise.
* locale/programs/ld-monetary.c: Likewise.
* locale/programs/ld-name.c: Likewise.
* locale/programs/ld-numeric.c: Likewise.
* locale/programs/ld-paper.c: Likewise.
* locale/programs/ld-telephone.c: Likewise.
* locale/programs/ld-time.c: Likewise.
* locale/simple-hash.c: Move compute_hashval function from here...
* locale/hashval.h: ...to here. New file.
* locale/simple-hash.h: Add prototype for compute_hashval.
* include/libintl.h: Minor cleanups.
* elf/reldep7.c: New file.
* elf/reldep7mod1.c: New file.
* elf/reldep7mod2.c: New file.
* elf/Makefile: Add rules to build and run reldep7.
* include/sys/socket.h: Declare __libc_sa_len_internal and define
SA_LEN macro to use it if not NOT_IN_libc.
* sysdeps/unix/sysv/linux/sa_len.c: Use INTDEF for __libc_sa_len.
* include/fcntl.h: Declare __open_internal and define __open and
__libc_open macros if not NOT_IN_libc.
* sysdeps/generic/open.c: Use INTDEF for __open.
* sysdeps/mach/hurd/open.c: Likewise.
* sysdeps/unix/sysv/aix/open.c: Likewise.
* sysdeps/unix/syscalls.list: Add __open_internal alias.
* sysdeps/generic/check_fds.c: Make sure newly opened file descriptor
has correct number.
* include/fcntl.h: Define __libc_fcntl macro if not NOT_IN_libc.
* sysdeps/mach/hurd/fcntl.c: Undefine __libc_fcntl as well.
* sysdeps/unix/sysv/aix/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* include/wctype.h: Declare __iswalpha_l_internal,
__iswdigit_l_internal, __iswspace_l_internal,
__iswxdigit_l_internal, and __iswctype_internal. Define
__iswalpha_l, __iswctype, __iswdigit_l, __iswspace_l, and
__iswxdigit_l macros if not NOT_IN_libc.
* wctype/iswctype.c: Use INTDEF for __iswctype.
* wctype/wcfuncs_l.c: Use INTDEF for all __iswXXX_l.
Declare __getpgid_internaland define __getpgid macro if not NOT_IN_libc.
Declare __getpagesize_internaland define __getpagesize macro if not
NOT_IN_libc.
* sysdeps/mach/hurd/chown.c: Use INTDEF for __chown.
* sysdeps/unix/sysv/aix/chown.c: Likewise.
* sysdeps/unix/grantpt.c: Use INTUSE for __chown calls.
* sysdeps/unix/sysv/linux/m68k/chown.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.
* sysdeps/unix/sysv/linux/i386/chown.c: Use INTDEF2 to define
__chown_internal.
* sysdeps/unix/sysv/linux/s390/s390-32//chown.c: Likewise.
* intl/dcngettext.c [_LIBC]: Use INTUSE for __dcngettext.
* intl/dngettext.c [_LIBC] (DCNGETTEXT): Use INTUSE.
* intl/ngettext.c: Likewise.
* include/sys/socket.h: Declare __connect_internal and define
__connect macro if not NOT_IN_libc.
* sysdeps/mach/hurd/connect.c: Use INTDEF for __connect.
* sysdeps/unix/sysv/aix/connect.c: Likewise.
* sysdeps/unix/sysv/linux/connect.S: Add __connect_internal alias.
* include/unistd.h: Declare __close_internal and define __close macro
if not NOT_IN_libc.
* libio/libioP.h (JUMO0, JUMP1, JUMP2, JUMP3, WJUMP0, WJUMP1, WJUMP2,
WJUMP3): Add extra parenthesis to avoid expanding element names with
macors like __close.
* sysdeps/unix/syscalls.list: Add __close_internal alias.
* include/unistd.h: Declare __dup2_internal and define __dup2 macro
if not NOT_IN_libc.
* sysdeps/mach/hurd/dup2.c: Use INTDEF for __dup2.
* sysdeps/posix/dup2.c: Use INTDEF for __dup2.
* sysdeps/unix/syscalls.list: Add __dup2_internal alias.
* include/unistd.h: Declare __fork_internal and define __fork macro
if not NOT_IN_libc.
* sysdeps/mach/hurd/fork.c: Use INTDEF for __fork.
* sysdeps/unix/sysv/aix/fork.c: Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add __fork_internal alias.
* include/stdio_ext.h: Declare __fsetlocking_internal and define
__fsetlocking macro to use it if not NOT_IN_libc.
* libio/__fsetlocking.c: Use INTDEF for __fsetlocking.
* libio/__fbufsize.c: Correct copyright.
* libio/__flbf.c: Likewise.
* libio/__fpending.c: Likewise.
* libio/__fpurge.c: Likewise.
* libio/__freadable.c: Likewise.
* libio/__freading.c: Likewise.
* libio/__fsetlocking.c: Likewise.
* libio/__fwritable.c: Likewise.
* libio/__fwriting.c: Likewise.
* include/stdio.h: Declare __asprintf_internal and define __asprintf
macro to use it if not NOT_IN_libc.
* stdio-common/asprintf.c: Use INTDEF for __asprintf.
* include/mntent.h: Declare __setmntent_internal,
__getmntent_r_internal, __endmntent_internal. Define __setmntent,
__getmntent_r, and __endmntent macros to use these functions if not
NOT_IN_libc.
* misc/mntent_r.c: Use INTDEF for __setmntent, __getmntent_r, and
__endmntent.
* include/math.h: Declare __finite_internal, __finitef_internal, and
__finitel_internal. Redefine isfinite macro if in libc or libm using
these functions.
* sysdeps/generic/s_ldexp.c: Use INTUSE for __finite calls.
* sysdeps/generic/s_ldexpf.c: Use INTUSE for __finitef calls.
* sysdeps/generic/s_ldexpl.c: Use INTUSE for __finitel calls.
* sysdeps/i386/fpu/s_finite.S: Define _internal alias.
* sysdeps/i386/fpu/s_finitef.S: Likewise.
* sysdeps/i386/fpu/s_finitel.S: Likewise.
* sysdeps/ieee754/dbl-64/s_finite.c: Likewise.
* sysdeps/ieee754/flt-32/s_finitef.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_finitel.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_finitel.c: Likewise.
* include/fcntl.h: Declare __fcntl_internal. Define __fcntl macro
to use this function if not NOT_IN_libc.
* libio/iofdopen.c (_IO_fcntl): Use INTUSE.
* sysdeps/generic/fcntl.c: Use INTDEF for __fcntl.
* sysdeps/mach/hurd/fcntl.c: Likewise.
* sysdeps/unix/sysv/aix/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* include/argz.h: Declare __argz_count_internal and
__argz_stringify_internal.
* intl/l10nflist.c [_LIBC]: Use INTUSE for __argz_count and
__argz_stringify.
* string/argz-count.c: Use INTDEF for __argz_count.
* string/argz-stringify.c: Use INTDEF for __argz_stringify.
* include/stdlib.h: Declare __cxa_atexit_internal and define
__cxa_atexit macro if not NOT_IN_libc.
* stdlib/cxa_atexit.c: Use INTDEF for __cxa_atexit.
* dlfcn/Makefile: Define NOT_IN_libc when compiling modcxaatexit.c.
* assert/assert.c: Use INTDEF for __assert_fail.
* assert/__assert.c: Use INTUSE for call to __assert_fail.
* include/assert.h: Declare __assert_fail_internal.
2002-04-08 Ulrich Drepper <drepper@redhat.com>
* cppflags-iterator.mk (cpp-srcs-left): Define NOT_IN_libc instead
of NOT_IN_LIBC.
* include/libintl.h: Test for NOT_IN_libc not NOT_IN_LIBC.
* include/stdlib.h: Likewise.
2002-04-08 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile (CFLAGS-.os): Define NOT_IN_libc and IS_IN_rtld
instead of _RTLD_LOCAL.
* elf/dl-dst.h: Use IS_IN_rtld instead of _RTLD_LOCAL.
* include/unistd.h: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* stdio-common/_itoa.h (_itoa_word): Only use internal digit arrays
if in libc or ld.so.
* include/stdlib.h: For libc itself replace MB_CUR_MAX definition
with one accessing the locale data structures directly.
* stdio-common/printf-prs.c: Include localeinfo.h for new
MB_CUR_MAX definition.
2002-04-08 Ulrich Drepper <drepper@redhat.com>
* Makeconfig (CPPFLAGS): Also add CPPFLAGS-<basename> where <basename>
is the name of the source file without extension.
* Makefile (distribute): Add cppflags-iterator.mk.
* cppflags-iterator.mk: New file.
* extra-lib.mk: For the sources of the library run
cppflags-iterator.mk.
* include/libintl.h: Declare __dcgettext_internal and
_libc_intl_domainname_internal. Define __dcgettext using these
two symbols if used in libc itself.
* argp/argp-help.c: Define dgettext using __dcgettext_internal and
_libc_intl_domainname_internal.
* argp/argp-parse.c: Likewise.
* intl/dcgettext.c (__dcgettext): Use INTDEF to define alias.
* intl/dgettext.c: Call __dcgettext_internal instead of __dcgettext.
* intl/gettext.c: Likewise.
* locale/SYS_libc.c (_libc_intl_domainname): Use INTDEF to define
alias.
* posix/regcomp.c (gettext): Use __dcgettext_internal instead of
__dcgettext.
* posix/regex_internal.c (gettext): Likewise.
2002-03-17 Andreas Jaeger <aj@suse.de>
* sysdeps/mips/fpu/fraiseexcpt.c (__feraiseexcept): Set cause bits.
* sysdeps/mips/fpu/fgetexcptflg.c (__fegetexceptflag): Add comment.
* sysdeps/mips/fpu/fclrexcpt.c (__feclearexcept): Clear also cause
bits.
* sysdeps/mips/fpu/fenv_libc.h (CAUSE_MASK): New.
(CAUSE_SHIFT): New.
Patch by Hartvig Ekner <hartvige@mips.com>.
* sysdeps/generic/unwind-dw2-fde-glibc.c: Add prototypes.
* sysdeps/generic/unwind-pe.h: Likewise.
* libio/iofdopen.c (_IO_new_fdopen): Pass parameter of correct
type to _IO_setb.
* libio/stdio.c (AL2): Define variant when visibility attribute is
not supported.
* include/libc-symbols.h (_INTVARDEF): Define variant when
visibility attribute is not supported.
2002-03-11 Ulrich Drepper <drepper@redhat.com>
* gmon/Makefile (elide-routines.os): Add bb_init_func and bb_exit_func.
They were never exported anyway.
* gmon/gmon.c (_gmonparam): Add attribute_hidden.
* gmon/sys/gmon.h: Remove declaration of _gmonparam. It wasn't
exported.
* include/sys/gmon.h: Declare _gmonparam.
* sysdeps/unix/sysv/linux/i386/getdents64.c: Don't define compatibility
symbols for getdents64. They were never exported.
2002-03-03 Andreas Jaeger <aj@suse.de>
* elf/nodlopenmod2.c: Provide prototype to avoid warning.
* elf/tst-tlsmod1.c: Likewise.
* posix/regcomp.c: Get regex.h from include dir for internal
prototypes.
* sysdeps/unix/sysv/linux/init-first.c: Move __init_misc prototype
to libc-internal.h and include it.
* include/libc-internal.h: Add __init_misc.
* misc/init-misc.c: Include libc-internal.h for prototypes.
* sysdeps/wordsize-32/divdi3.c: Add prototypes to avoid warnings.
* misc/error.c [_LIBC]: Include libioP.h for prototype of
_IO_putc_internal.
2002-02-12 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/dl-tls.c (TLS_DTV_UNALLOCATED): Renamed from
TLS_DTV_UNALLOCATE.
(oom): New function.
(_dl_next_tls_modid): Rewrite to handle dl_tls_dtv_slotinfo_list.
(_dl_determine_tlsoffset): Likewise.
(_dl_allocate_tls): Likewise.
(__TLS_GET_ADDR): Define if not already defined.
(_dl_tls_symaddr): New function.
(allocate_and_init): New function.
(__tls_get_addr): Actually implement handling of generation counter
and deferred allocation.
* sysdeps/generic/ldsodefs.h (_rtld_global): Remove _dl_initimage_list,
add _dl_tls_dtv_slotinfo_list, _dl_tls_static_nelem, and
_dl_tls_generation.
Define TLS_SLOTINFO_SURPLUS and DTV_SURPLUS.
Declare _dl_tls_symaddr.
* sysdeps/i386/dl-tls.h: Disable __tls_get_addr handling unless
SHARED.
* include/link.h (struct link_map): Remove l_tls_nextimage and
l_tls_previmage.
* elf/dl-sym.c (_dl_sym): After successful lookup call _dl_tls_symaddr
instead of DL_SYMBOL_ADDRESS for STT_TLS symbols.
(_dl_vsym): Likewise.
* elf/rtld.c (_dl_start_final): Adjust initdtv initialization for new
layout.
(dl_main): Allow PT_TLS be present for empty segment. Remove
nextimage list handling. Instead add all modules using TLS to
dl_tls_dtv_slotinfo_list.
* elf/dl-open.c (dl_open_worker): After successfully loading all
objects add those with TLS to the dl_tls_dtv_slotinfo_list list.
* elf/dl-load.c (_dl_map_object_from_fd): If PT_TLS entry is for an
empty segment don't do anything. Remove handling of initimage list.
* elf/Versions [ld] (GLIBC_2.0): Add __libc_memalign.
(GLIBC_PRIVATE): Add _dl_tls_symaddr.
* elf/dl-minimal.c: Define __libc_memalign.
* elf/dl-support.c: Remove _dl_initimage_list. Add
_dl_tls_dtv_slotinfo_list, _dl_tls_static_nelem, and
_dl_tls_generation.
* include/stdlib.h: Declare __libc_memalign.
* elf/Makefile: Add rules to build and run tst-tls4 and tst-tls5.
* elf/tst-tls4.c: New file.
* elf/tst-tls5.c: New file.
* elf/tst-tlsmod2.c: New file.
* elf/tls-macros.h: asms using ___tls_get_addr destroy %ecx and %edx.
* elf/tst-tlsmod1.c: Don't define variables unles USE_TLS.
* elf/tst-tls1.c: Use test-skeleton.c.
* elf/tst-tls2.c: Likewise.
* elf/tst-tls3.c: Likewise.
* elf/dl-conflict.c (RESOLVE_MAP): Return NULL not 0.
* sysdeps/mips/machine-gmon.h: Update MCOUNT for current GCC behavior.
2002-02-06 Ulrich Drepper <drepper@redhat.com>
* Versions.def [ld]: Add GLIBC_2.3.
* elf/Versions [ld]: Add __tls_get_addr to GLIBC_2.3.
* elf/Makefile (dl-routines): Add dl-tls.
(distribute): Add dl-tls.h.
* sysdeps/generic/ldsodefs.h (struct rtld_global): Remove
_dl_tls_module_cnt, add _dl_tls_max_dtv_idx and _dl_tls_dtv_gaps.
Add prototypes for _dl_next_tls_modid and _dl_determine_tlsoffset.
* elf/dl-load.c (_dl_map_object_from_fd): Store alignment requirement
along with the other info in the link map. Change queueing of init
images for double linked list. Use _dl_next_tls_modid to compute
l_tls_modid.
* elf/rtld.c (_dl_start_final): Store alignment requirement
along with the other info in rtld map and executable map.
(dl_main): Add ld.so to the init image list if necessary. Compute
final module ID with _dl_next_tls_modid.
* include/link.h (struct link_map): Add l_tls_previmage and
l_tls_align.
* eld/dl-support.c: Define _dl_tls_max_dtv_idx and _dl_tls_dtv_gaps.
* sysdeps/i386/elf/Versions: New file.
* sysdeps/generic/dl-tls.c: New file.
* sysdeps/generic/dl-tls.h: New file.
* sysdeps/i386/dl-tls.h: New file.
attribute((packed)) to counter stupid people misusing gcc options.
* elf/rtld.c (_dl_start): Fill TLS values in link map for rtld.
* include/link.h (struct link_map): Add various members for TLS
information.
* sysdeps/generic/ldsodefs.h (struct rtld_global): Remove
_rtld_tlsoffset, add _dl_initimage_list.
* sysdeps/i386/dl-lookupcfg.h: New file.
* sysdeps/i386/dl-machine.h (elf_machine_rel): Implement missing
TLS relocation. When using TLS we now use RESOLVE_MAP.
(elf_machine_rela): Use RESOLVE_MAP instead of RESOLVE_MAP if TLS
is used.
* sysdeps/generic/dl-cache.c (_dl_cache_libcmp): Mark as possibly
unused.
* elf/rtld.c (_dl_start_final): Allocate TLS and initialize
thread-pointer as soon as possible.
* sysdeps/generic/ldsodefs.h: Include <tls.h>. Define first TLS
elements in rtld_global.
* sysdeps/generic/tls.h: New file.
* elf/Makefile (distribute): Add tls.h.
* sysdeps/i386/dl-machine.h (elf_machine_rel): Add support for TLS
relocations. Not complete yet.
* resolv/resolv.h: Allow user to define __need_res_state and only
define __res_start structure then.
* include/resolv.h: Only declare functions if _RESOLV_H_ is defined.
2001-12-11 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile (dl-routines): Add conflict.
(rtld-ldscript-in, rtld-ldscript, rtld-parms): Remove.
(ld.so): Add _begin local symbol.
* elf/elf.h (DT_VALTAGIDX, DT_VALNUM, DT_ADDRTAGIDX, DT_ADDRNUM):
Define.
* elf/dl-deps.c (_dl_build_local_scope): New.
(_dl_map_object_deps): If LD_TRACE_PRELINKING, compute local scopes
of all libraries.
* elf/do-rel.h (VALIDX): Define.
(elf_dynamic_do_rel): If ELF_MACHINE_PLT_REL is defined, don't do
lazy binding for RELA. If DT_GNU_PRELINKED, DT_RELACOUNT relocations
can be skipped.
* elf/dl-conflict.c: New file.
* elf/dl-lookup.c (_dl_debug_bindings): New.
(_dl_lookup_symbol): Use _dl_debug_bindings. Reference_name is always
non-NULL.
(_dl_lookup_symbol_skip): Likewise.
(_dl_lookup_versioned_symbol): Likewise.
(_dl_lookup_versioned_symbol_skip): Likewise.
* elf/dl-runtime.c (PLTREL): If ELF_MACHINE_PLT_REL is defined,
define to ElfW(Rel).
* elf/dynamic-link.h (elf_get_dynamic_info): Record selected dynamic
tags in the DT_VALRNGLO..DT_VALRNGHI and DT_ADDRRNGLO..DT_ADDRRNGHI
ranges.
Don't adjust address dynamic tags if l_addr is 0.
* elf/rtld.c (_dl_trace_prelink, _dl_trace_prelink_map): New variables.
(_dl_start): Skip ELF_DYNAMIC_RELOCATE if ld.so is prelinked.
(VALIDX, ADDRIDX): Define.
(_dl_start_final): Initialize _dl_rtld_map's l_map_start and l_map_end.
(dl_main): Print library list for LD_TRACE_PRELINKING.
If prelinking information can be used, skip relocating libraries and
call _dl_resolve_conflicts instead.
(process_envvars): Handle LD_TRACE_PRELINKING envvar.
* elf/dl-load.c (_dl_map_object): Don't create fake libs
if LD_TRACE_PRELINKING.
* include/link.h (struct link_map) [l_info]: Add DT_VALNUM
+ DT_ADDRNUM.
* sysdeps/generic/ldsodefs.h (_dl_trace_prelink_map): New declaration.
(DL_DEBUG_PRELINK): Define.
(_dl_resolve_conflicts): Add prototype.
* sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Reinitialize
.plt for prelinked libraries where prelinking info cannot be used.
(elf_machine_rela): If relocating R_ALPHA_JMP_SLOT in .gnu.conflict
section, use RESOLVE_CONFLICT_FIND_MAP to find out reloc's link_map.
* sysdeps/arm/bits/link.h: New file.
* sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(ELF_MACHINE_NO_RELA): Only define if RTLD_BOOTSTRAP.
(ELF_MACHINE_PLT_REL): Define.
(elf_machine_rela, elf_machine_rela_relative): New.
(elf_machine_lazy_rel): Reinitialize R_ARM_JUMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/i386/bits/link.h: New file.
* sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(ELF_MACHINE_NO_RELA): Only define if RTLD_BOOTSTRAP.
(ELF_MACHINE_PLT_REL): Define.
(elf_machine_rela, elf_machine_rela_relative): New.
(elf_machine_lazy_rel): Reinitialize R_386_JUMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): If relocating
conflicts, skip finaladdr computation. Use RESOLVE_CONFLICT_FIND_MAP
to find out map for R_PPC_JMP_SLOT relocs.
* sysdeps/sparc/sparc32/dl-machine.h (VALIDX): Define.
(OPCODE_BA): Define.
(elf_machine_runtime_setup): Reinitialize .plt for prelinked
libraries where prelinking info cannot be used.
(sparc_fixup_plt): Renamed from elf_machine_fixup_plt.
(elf_machine_fixup_plt): Call sparc_fixup_plt.
(elf_machine_rela): Set value to 0 if relocating conflicts.
Call sparc_fixup_plt for R_SPARC_JMP_SLOT.
* sysdeps/sparc/sparc64/dl-machine.h (VALIDX): Define.
(sparc64_fixup_plt): Fix a typo.
(elf_machine_rela): Set value to 0 if relocating conflicts.
Handle R_SPARC_JMP_SLOT relocs when relocating conflicts.
(elf_machine_runtime_setup): Reinitialize .plt for prelinked
libraries where prelinking info cannot be used.
* sysdeps/sh/bits/link.h: New file.
* sysdeps/sh/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_SH_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/s390/s390-32/bits/link.h: New file.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_390_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/s390/s390-64/bits/link.h: New file.
* sysdeps/s390/s390-64/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_390_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/x86_64/bits/link.h: New file.
* sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_X86_64_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
compilers that support it.
* posix/sys/types.h: Use __GLIBC_HAVE_LONG_LONG.
* sysdeps/unix/sysv/linux/bits/types.h: Likewise.
* stdlib/stdlib.h: Likewise.
2001-10-31 Ulrich Drepper <drepper@redhat.com>
* elf/dl-load.c (_dl_map_object): Make code a bit more compact by
avoiding unnecessary duplication.
2001-10-31 Jakub Jelinek <jakub@redhat.com>
* elf/dl-load.c (_dl_map_object): If library was found using
LD_LIBRARY_PATH, don't try RUNPATH list.
2001-10-29 Kevin Ryde <user42@zip.com.au>
2001-09-20 H.J. Lu <hjl@gnu.org>
* include/dlfcn.h (__RTLD_SPROF): New definiton.
* elf/dl-open.c (dl_open_worker): Return immediately after loading
for __RTLD_SPROF.
* elf/sprof.c (main): Default to the filename if soname doesn't exist.
(load_shobj): Call dlopen with `RTLD_LAZY | __RTLD_SPROF.
2001-09-20 H.J. Lu <hjl@gnu.org>
* elf/dl-profile.c (_dl_mcount): Use old *narcsp value for newarc,
don't add 1.
2001-09-22 Ulrich Drepper <drepper@redhat.com>
* nss/getent.c: Accept -s parameter to overwrite rules in
nsswitch.conf. Patch by Nalin Dahyabhai <nalin@redhat.com>.
* nss/nss_files/files-network.c (LINE_PARSER): Pad addr string
with as many ".0" as necessary to form a complete address
inet_network understands.
* nss/getent.c: Various cleanups. Use simpler and fewer function
calls.
2001-09-20 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/s390/s390-32/bits/setjmp.h: Correct pointer comparison in
_JMPBUF_UNWINDS.
* sysdeps/s390/s390-64/bits/setjmp.h: Likewise.
2001-09-22 Ulrich Drepper <drepper@redhat.com>
* iconvdata/Makefile: Add rules to build and distribute IBM1160 and
IBM1161.
* iconvdata/gconv-modules: Add entries for IBM1160 and IBM1161.
* iconvdata/ibm1160.c: New file.
* iconvdata/ibm1160.h: New file.
* iconvdata/ibm1161.c: New file.
* iconvdata/ibm1161.h: New file.
2001-09-19 Jakub Jelinek <jakub@redhat.com>
* sysdeps/alpha/dl-machine.h (elf_machine_load_address): Compute the
difference between base address and first PT_LOAD's virtual address,
not the base address.
2001-09-11 Tom Rix <trix@redhat.com>
* sysdeps/unix/sysv/aix/init-first.c (init): Use USE_NONONPTION_FLAG
ifdef for __getopt_clean_environment.
* sysdeps/unix/sysv/aix/libc-start.c: Add real implementation.
* sysdeps/unix/sysv/linux/x86_64/Dist: New file.
* sysdeps/x86_64/Dist: New file.
* sysdeps/x86_64/soft-fp/Dist: New file.
2001-08-30 Ulrich Drepper <drepper@redhat.com>
* string/argz-stringify.c (__argz_stringify): Use __strnlen
instead of strnlen.
* include/string.h (strndupa): Redefine here to use __strnlen
instead of strnlen.
* string/strndup.c (__strndup): Use __strnlen not strnlen.
* misc/syslog.c (vsyslog): Fix typo in last change (connect ->
connected).
2001-06-07 David Mosberger <davidm@hpl.hp.com>
* sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Update call to
__ia64_make_fptr() for new interface.
(_dl_function_address): Remove.
* sysdeps/ia64/dl-machine.h (IA64_BOOT_FPTR_TABLE_LEN): Rename
from IA64_BOOT_FPTR_SIZE and reduce its value from 256 to 200.
(struct ia64_fdesc): Rename from struct ia64_fptr and drop "next"
pointer. Rename member "func" to "ip".
(struct ia64_fdesc_table): New type.
(__ia64_make_fptr): Change prototype.
(__ia64_init_bootstrap_fdesc_table): New function.
(ELF_MACHINE_BEFORE_RTLD_RELOC): New macro.
(__boot_ldso_fptr): Removed.
(__fptr_next): Removed.
(__fptr_root): Removed.
(__fptr_count): Removed.
(TRAMPOLINE_TEMPLATE): Fix typo in comment. Don't use multi-line
strings to avoid warning from gcc3.
(RTLD_START): Don't use multi-line strings.
(ELF_MACHINE_START_ADDRESS): Use DL_STATIC_FUNCTION_ADDRESS.
(elf_machine_fixup_plt): Update the code entry point in the
function descriptor through a "volatile" pointer to ensure proper
write ordering.
(elf_machine_rela): Simplify handling of FPTR relocs: always call
__ia64_make_fptr().
* sysdeps/ia64/dl-lookupcfg.h (DL_AUTO_FUNCTION_ADDRESS): New macro.
(DL_STATIC_FUNCTION_ADDRESS): Likewise.
(DL_DT_INIT_ADDRESS): Use DL_AUTO_FUNCTION_ADDRESS.
(DL_DT_FINI_ADDRESS): Likewise.
* sysdeps/ia64/dl-fptr.c: Rewrite for better scalability and to
avoid deadlocks.
* include/link.h: Add member machine specific "l_mach" member to
link_map.
* sysdeps/generic/bits/link.h: New file.
* sysdeps/ia64/bits/link.h: Likewise.
* elf/rtld.c (_dl_start): Fix typo in comment.
(_dl_start_final): Copy new "l_mach" member from temporary to
final bootstrap map.
* libio/stdio_ext.h: Moved to ...
* stdio-common/stdio_ext.h: ... here.
* libio/Makefile (headers): Move stdio_ext.h from here ...
* stdio-common/Makefile (headers): ... to here.
* include/stdio_ext.h: New file.
* stdio/Makefile (routines): Add the stdio_ext.h functions here.
* stdio/Versions (GLIBC_2.2.4): Export the stdio_ext.h functions.
* stdio/__flbf.c: New file.
* stdio/__fbufsize.c: New file.
* stdio/__fpending.c: New file.
* stdio/__fpurge.c: New file.
* stdio/__freadable.c: New file.
* stdio/__freading.c: New file.
* stdio/__fsetlocking.c: New file.
* stdio/__fwritable.c: New file.
* stdio/__fwriting.c: New file.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
2001-05-05 Jakub Jelinek <jakub@redhat.com>
* include/features.h (__USE_EXTERN_INLINES): Don't define if
__NO_INLINE__ is defined.
* ctype/ctype.h (tolower, toupper): Change the guard condition to
__USE_EXTERN_INLINES check only.
* stdlib/stdlib.h (strtod, ...): Likewise.
* wcsmbs/wchar.h (mbrlen): Likewise.
* string/string.h: Only include bits/string.h and bits/string2.h
if __NO_INLINE__ is not defined.
2001-03-29 Ulrich Drepper <drepper@redhat.com>
* math/bits/mathcalls.h: Remove infnan declaration.
2001-03-29 H.J. Lu <hjl@gnu.org>
* include/endian.h: Define BIG_ENDI, LITTLE_ENDI, HIGH_HALF,
and LOW_HALF only if _LIBC is defined and _ISOMAC is not defined.
* stdlib/isomac.c (fmt): Define _LIBC and _ISOMAC.
.
2001-03-29 Isamu Hasegawa <isamu@yamato.ibm.com>
* posix/regex.c: Fix typo and add a sentinel.
2001-03-29 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/shm_open.c: Open new file always with
O_NOFOLLOW. Suggested by Christoph Roland.
Add changes which were in this form in the original patch by
Eric Norum <eric.norum@usask.ca>.
* include/rpc/rpc.h: Remove svc_fdset, rpc_createerr, svc_pollfd, and
svc_max_pollfd.
* sunrpc/rpc/rpc.h: Declare __rpc_thread_svc_fdset,
__rpc_thread_createerr, __rpc_thread_svc_pollfd, and
__rpc_thread_svc_max_pollfd.
Define svc_fdset, get_rpc_createerr, svc_pollfd, and
svc_max_pollfd.
* sunrpc/rpc_thread.c: Handle first thread special, it uses the
global variables.
Define __rpc_thread_svc_fdset, __rpc_thread_createerr,
__rpc_thread_svc_pollfd, and __rpc_thread_svc_max_pollfd.
* sunrpc/Versions [libc] (GLIBC_2.2.3): Export __rpc_thread_svc_fdset,
__rpc_thread_createerr, __rpc_thread_svc_pollfd, and
__rpc_thread_svc_max_pollfd.
* sunrpc/clnt_gen.c: Replace use of rpc_createerr by call to
get_rpc_createerr.
* sunrpc/clnt_perr.c: Likewise.
* sunrpc/clnt_simp.c: Likewise.
* sunrpc/clnt_tcp.c: Likewise.
* sunrpc/clnt_udp.c: Likewise.
* sunrpc/clnt_unix.c: Likewise.
* sunrpc/pm_getport.c: Likewise.
* posix/tst-fnmatch.input: Add test case for FNM_PERIOD handling with
FNM_EXTMATCH.
* posix/fnmatch_loop.c: Optimize handling of ?() and @().
* posix/fnmatch.c: Define STRLEN and STRCAT appropriately.
* posix/Versions [libc] (GLIBC_2.2.3): Add fnmatch.
* posix/fnmatch.c: Define with new default version GLIBC_2.2.3 to
avoid running binaries with libc versions without FNM_EXTMATCH support.
* include/wchar.h: Add prototype for __wcscat.
* wcsmbs/wcscat.c: Define __wcscat and make wcscat weak alias.
2001-02-23 Andreas Jaeger <aj@suse.de>
* string/tester.c (test_strtok_r): Add testcase.
(test_strtok_r): Always initialize cp for proper checking.
* sysdeps/generic/strtok.c (strtok): Handle case of first strtok
returning NULL correctly.
Patch by Fumitoshi UKAI <ukai@debian.or.jp>.
* sysdeps/generic/strtok_r.c (__strtok_r): Likewise.
2001-02-23 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/aix/bits/types.h: Define __need_NULL before
including <stddef.h>.
* sysdeps/unix/sysv/aix/write.c: Define alias __libc_write.
* include/libc-symbols.h (weak_alias): Don't use .weak if
HAVE_ASM_GLOBAL_DOT_NAME is defined.
Patches by Michael Keezer <mkeezer@redhat.com>.
* sysdeps/generic/ftime.c: Don't include <sys/time.h> at all.
Patch by Michael Keezer <mkeezer@redhat.com>.
* sysdeps/unix/sysv/aix/Dist: Remove restf.S and savef.S.
* sysdeps/unix/sysv/aix/Makefile [$(subdir) == misc]
(sysdep_routines): Remove restf.S and savef.S.
* sysdeps/unix/sysv/aix/restf.S. Removed.
* sysdeps/unix/sysv/aix/savef.S. Removed.
* sysdeps/powerpc/fprrest.S: Use C_TEXT to define label. Also define
alternative names used on some platforms.
* sysdeps/powerpc/fprsave.S: Likewise.
* sysdeps/powerpc/gprrest0.S: Likewise.
* sysdeps/powerpc/gprrest1.S: Likewise.
* sysdeps/powerpc/gprsave0.S: Likewise.
* sysdeps/powerpc/gprsave1.S: Likewise.
Patch by Michael Keezer <mkeezer@redhat.com>.
* sysdeps/generic/getsysstat.c: Change return value of get_phys_pages
and get_avphys_page to long int.
* sysdeps/unix/sysv/linux/getsysstat.c: Likewise.
* include/sys/sysinfo.h: Likewise.
* sysdeps/generic/sys/sysinfo.h: Likewise.
* sysdeps/unix/sysv/linux/sys/sysinfo.h: Likewise.
2001-02-06 Andreas Jaeger <aj@suse.de>
* include/pthread.h: New file.
* wctype/wctype.h: Move internal interfaces from here to...
* include/wctype.h: ...here.
* wcsmbs/wchar.h: Move __wcslen from here to...
* include/wchar.h: ...here.
* posix/sys/wait.h: Move __wait from here to...
* include/sys/wait.h: ...here.
* string/string.h: Move __ffs and __strerror_r from here to...
* include/string.h: ...here.
* stdlib/stdlib.h: Move __on_exit from here to...
* include/stdlib.h: ...here.
* libio/stdio.h: Move __vsnprintf from here to...
* include/stdio.h: ...here.