* elf/tls-macros.h: Add Sparc64 defines.
* sysdeps/sparc/sparc64/dl-machine.h (sparc64_fixup_plt): Mark as
always_inline.
(elf_machine_fixup_plt): Likewise.
(elf_machine_rela): Handle TLS relocations.
(elf_machine_type_cleaa): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
(SYSCALL_ERROR_HANDLER_ENTRY): Use sethi/or for GOT reloc.
It does not always fit in R_SPARC_GOT13 when building -fPIC.
Also, add TLS handling.
* sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel):
Increase it to 2.4.21 for sparc64.
* sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: NULL terminate
backtrace by zero'ing out %fp. Store away flags, func_ptr,
and func_arg in global registers not local registers.
* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Handle PTID, TLS,
and CTID arguments properly. Add RESET_PID handling.
* sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Rework so that we
do not invoke __sigprocmask(). We can always assume rt signals
are present on sparc64, so just do an inline syscall.
2005-04-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/sparc/sparc64/dl-machine.h: Add dl_machine_h multiple
inclusion guard for the first half of the header.
(elf_machine_type_class, ELF_MACHINE_JMP_SLOT, ELF_MACHINE_NO_REL,
ELF_MACHINE_PLTREL_OVERLAP, elf_machine_runtime_setup,
elf_machine_relplt, DL_STACK_END, RTLD_START): Move into the
#ifndef dl_machine_h guarded part of the header.
[(NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO) && SHARED]: Scan
GLRO(dl_sysinfo_map) for PT_NOTE giving Linux kernel version,
we can skip the uname call if it's there.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't use
DL_SYSDEP_OSCHECK here.
* elf/rtld.c (dl_main) [DL_SYSDEP_OSCHECK]: Do it here instead.
* sysdeps/generic/ldsodefs.h (struct rtld_global_ro):
Add _dl_sysinfo_map.
* elf/rtld.c (dl_main): Don't call _dl_init_paths early in the
rtld_is_main case. Call it unconditionally later.
Move GLRO(dl_sysinfo_dso) handling earlier, before _dl_init_paths call.
Initialize GLRO(dl_sysinfo_map).
* elf/dl-load.c (open_path): Bail out if _dl_init_paths wasn't called.
* sysdeps/generic/dl-sysdep.c (_DL_FIRST_EXTRA): New macro.
(_dl_important_hwcaps)
[(NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO) && SHARED]: Scan
GLRO(dl_sysinfo_map) for PT_NOTE giving synthetic hwcap names
and bit values.
* elf/ldconfig.c (_DL_FIRST_EXTRA): New macro.
(hwcap_extra): New static variable.
(is_hwcap_platform): Check hwcap_extra for a matching name.
Remove tls special case.
(path_hwcap): Likewise.
(parse_conf): Parse "hwcap" directive to define synthetic hwcap bits
and their names, stored in hwcap_extra.
(main) [USE_TLS]: Initialize final synthetic hwcap bit as "tls".
* sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Use uint64_t for
_dl_hwcap and _dl_hwcap_mask.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Cast a_val for
AT_HWCAP to unsigned long int.
* elf/dl-support.c (_dl_aux_init): Likewise.
(_dl_hwcap): Update defn.
* elf/cache.c (print_entry): Pad hwcap value with 0s in diagnostic.
* elf/ldconfig.c (search_dir): Likewise.
* intl/tst-gettext3.sh: New file.
* intl/Makefile (distribute): Add tst-gettext3.sh.
(test-srcs): Add tst-gettext3.
(tests): Depend on tst-gettext3.out.
(tst-gettext3.out): New rule.
(CFLAGS-tst-gettext3.c): New variable.
Fix bug exposed by tst-gettext3.
* intl/gettextP.h (struct converted_domain): New type.
(struct loaded_domain): Remove the conv, conv_tab fields. Add
conversions, nconversions fields.
(_nl_init_domain_conv): Remove declaration.
(_nl_free_domain_conv): Remove declaration.
(_nl_find_msg): Add convert argument.
* intl/dcigettext.c (DCIGETTEXT): Call _nl_find_msg with convert=1.
(_nl_find_msg): Add convert argument. When a conversion to a different
charset is needed, create a new converted_domain element, instead of
throwing away the old converted translations.
(get_output_charset): New function.
* intl/loadmsgcat.c (_nl_init_domain_conv): Remove function.
(_nl_free_domain_conv): Remove function.
(_nl_load_domain): Initialize the conversions array to empty. Use
_nl_find_msg instead of _nl_init_domain_conv to retrieve the header
entry.
(_nl_unload_domain): Free the conversions array and its contents.
Roland McGrath [Wed, 30 Mar 2005 02:05:33 +0000 (02:05 +0000)]
* sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_discover_osversion): New
function, inline broken out of ...
(DL_SYSDEP_OSCHECK): ... here. Use that.
Do the discovery and set GLRO(dl_osversion) if successful,
if __LINUX_KERNEL_VERSION <= 0.
Roland McGrath [Tue, 29 Mar 2005 23:41:03 +0000 (23:41 +0000)]
[BZ #661]
2005-03-19 Bruno Haible <bruno@clisp.org>
* intl/dcigettext.c (struct known_translation_t): Change type of
domainname field to 'const char *'.
(DCIGETTEXT): Remove const-cast.
[BZ #661]
* grp/initgroups.c (internal_getgrouplist): Check if we have
enough space before adding the primary group to the list.
Roland McGrath [Mon, 28 Mar 2005 19:22:10 +0000 (19:22 +0000)]
* locale/langinfo.h (_NL_LOCALE_NAME): New macro.
[__USE_GNU] (NL_LOCALE_NAME): New macro.
* locale/nl_langinfo.c: Grok special item value for _NL_LOCALE_NAME,
return locale name string for the category.
Roland McGrath [Mon, 28 Mar 2005 19:22:05 +0000 (19:22 +0000)]
2005-03-28 Roland McGrath <roland@redhat.com>
* locale/langinfo.h (_NL_LOCALE_NAME): New macro.
[__USE_GNU] (NL_LOCALE_NAME): New macro.
* locale/nl_langinfo.c: Grok special item value for _NL_LOCALE_NAME,
return locale name string for the category.
Ulrich Drepper [Sun, 20 Mar 2005 22:25:59 +0000 (22:25 +0000)]
[BZ #786]
2005-03-15 Jakub Jelinek <jakub@redhat.com>
[BZ #786]
* sysdeps/generic/dl-tls.c (_dl_next_tls_modid): Handle
GL(dl_tls_static_nelem) == GL(dl_tls_max_dtv_idx).
* elf/Makefile: Add rules to build and run tst-tls15.
* elf/tst-tls15.c: New test.
* elf/tst-tlsmod15a.c: New file.
* elf/tst-tlsmod15b.c: New file.
2005-03-20 Ulrich Drepper <drepper@redhat.com>
* elf/rtld.c (dl_main): Always call init_tls if we have audit modules.
Ulrich Drepper [Sun, 20 Mar 2005 16:51:05 +0000 (16:51 +0000)]
* posix/bits/unistd.h (pread) [__USE_FILE_OFFSET64]: Use __off64_t
instead of __off_t for last argument.
* debug/Makefile (tests): Add tst-lfschk{1,2,3}.
* debug/tst-lfschk1.c: New test.
* debug/tst-lfschk2.c: New test.
* debug/tst-lfschk3.c: New test.
2005-02-09 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/bits/termios.h (CMSPAR): Define.
* sysdeps/unix/sysv/linux/sparc/bits/termios.h: Add __USE_MISC
and __USE_XOPEN guards to match linux/bits/termios.h.
* sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise.
(CMSPAR): Define.
* sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise.
Ulrich Drepper [Sat, 19 Mar 2005 07:22:23 +0000 (07:22 +0000)]
* elf/dl-fini.c (_dl_fini): Split sorting of the maps in separate
function _dl_sort_fini.
(_dl_sort_fini): New function.
* sysdeps/generic/ldsodefs.h: Declare _dl_sort_fini.
* elf/dl-close.c (_dl_close): Call _dl_sort_fini before running
destructors to call them in the right order.
(La_ppc64_retval): Correct size of lrc_fp.
* sysdeps/powerpc/powerpc64/dl-trampoline.S (_dl_profile_resolve):
Fix up ABI problems and complete function.
Ulrich Drepper [Sat, 19 Mar 2005 00:28:51 +0000 (00:28 +0000)]
[BZ #779]
2005-03-10 Jakub Jelinek <jakub@redhat.com>
* math/test-misc.c (main): Add some more tests.
2005-03-17 Jakub Jelinek <jakub@redhat.com>
* posix/regcomp.c (re_compile_fastmap_iter): Fix check for failed
__wcrtomb. Check return values of other __wcrtomb calls.
* posix/regex_internal.c (build_wcs_buffer, re_string_skip_chars):
Change mbclen type to size_t.
(build_wcs_upper_buffer): Change mbclen and mbcdlen type to size_t.
Handle mb chars whose upper case doesn't have multibyte representation
in locale's charset.
* debug/tst-chk1.c: Include sys/socket.h and sys/un.h.
(do_test): Add new tests for recv, recvfrom, getcwd, getwd and
readlink. Add some more tests for read, pread, pread64, fgets and
fgets_unlocked.
* posix/bits/unistd.h (read, pread, pread64, readlink,
getcwd, getwd): Change macros into extern inline functions.
(__read_alias, __pread_alias, __pread64_alias, __readlink_alias,
__getcwd_alias, __getwd_alias): New prototypes.
* socket/bits/socket2.h (recv, recvfrom): Change macros into
extern inline functions.
(__recv_alias, __recvfrom_alias): New prototypes.
* libio/bits/stdio2.h (gets, fgets, fgets_unlocked): Change macros
into extern inline functions.
(__gets_alias, __fgets_alias, __fgets_unlocked_alias): New prototypes.
* debug/pread_chk.c (__pread_chk): Fix order of arguments passed
to __pread.
* debug/pread64_chk.c (__pread64_chk): Fix order of arguments passed
to __pread64.
Change type of l_idx to int.
* elf/dl-close.c: Basically rewrite. Do not use l_opencount to
determine whether a DSO has to be unloaded. Instead compute this
in this function.
* elf/dl-deps.c: No need to manipulate l_opencount anymore.
* elf/dl-lookup.c: Likewise.
* elf/rtld.c: Likewise
* elf/dl-open.c: Likewise. Use l_init_called to determine whether
object was just loaded.
* elf/dl-fini.c: Bump l_direct_opencount instead of l_opencount.
* elf/dl-load.c (_dl_map_object_from_fd): Do not recognize DSO which
is about to be unloaded as a match.
(_dl_map_object): Likewise.
* elf/do-lookup.h (do_lookup_x): Do not look into DSO which is about
to be unloaded.
* elf/circleload1.c: Don't use l_opencount anymore.
* elf/neededtest.c: Likewise.
* elf/neededtest2.c: Likewise.
* elf/neededtest3.c: Likewise.
* elf/neededtest4.c: Likewise.
* elf/unload.c: Likewise.
* elf/unload2.c: Likewise.
* elf/loadtest.c: Likewise.
* elf/rtld.c: Preloading errors are now never fatal.
2005-03-08 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile: Add rules to build and run unload5 test.
* elf/unload5.c: New file.
2005-03-08 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile: Add rules to build and run unload4 test.
* elf/unload4.c: New file.
* elf/unload4mod1.c: New file.
* elf/unload4mod2.c: New file.
* elf/unload4mod3.c: New file.
* elf/unload4mod4.c: New file.
of internal.
(__hidden_def1, __hidden_dot_def1): Remove.
(__hidden_def2, __hidden_def3): Remove.
(__hidden_ver1): New.
(hidden_ver, hidden_def, hidden_weak): Use it.
(hidden_data_ver, hidden_data_ver, hidden_data_weak): Use non-data
version of the macro.
* include/wchar.h (__wcscoll): Remove.
* wcsmbs/wcscoll.c: Define wcscoll directly instead of via __wcscoll.
* string/strcoll.c: Don't issue libc_hidden_def STRCOLL redefined.
Ulrich Drepper [Tue, 8 Mar 2005 00:50:21 +0000 (00:50 +0000)]
* malloc/arena.c (ptmalloc_init): Recognize MALLOC_PERTURB_ and call
mallopt appropriately.
* malloc/malloc.h: Define M_PERTURB.
* malloc/malloc.c (perturb_byte): New variable.
(alloc_perturb, free_perturb): New macros.
(_int_malloc): Before returning, overwrite the memory if this is
requested.
(_int_free): Overwrite freed memory if requested.
(mALLOPt): Handle M_PERTURB.
* test-skeleton.c: Add call to mallopt with M_PERTURB command.