aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-09-16Include .interp section only for libc.soSiddhesh Poyarekar
Barring libc.so and libdl.so, none of the libraries have any entry points, so it is pointless to add a .interp section for them. The libdl.so entry point (in dlfcn/eval.c) is also defunct, so remove that file as well. Build tested for x86_64, ppc64 and s390x. I have not moved CFLAGS-interp.c to CPPFLAGS-interp.c isnce I'll be removing it completely in a follow-up patch. Siddhesh * Makerules (lib%.so): Don't include $(+interp) in prerequisites. * elf/Makefile (CFLAGS-interp.c): Don't define NOT_IN_libc. * dlfcn/eval.c: Remove file.
2014-09-16Assume that all _[PS]C_* and _CS_* macros are always definedSiddhesh Poyarekar
The macros in question are always defined in confname.h for all variants and there seems to be no reason to allow such variants to exist anyway.
2014-09-16Make __extern_always_inline usable on clang++ againSiddhesh Poyarekar
The fix for BZ #17266 (884ddc5081278f488ef8cd49951f41cfdbb480ce) removed changes that had gone into cdefs.h to make __extern_always_inline usable with clang++. This patch adds back support for clang to detect if GNU inlining semantics are available, this time without breaking the gcc use case. The check put here is based on the earlier patch and assertion[1] that checking if __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE__ is defined is sufficient to determine that clang++ suports GNU inlining semantics. Tested with a simple program that builds with __extern_always_inline with the patch and fails compilation without it. #include <stdio.h> #include <sys/cdefs.h> extern void foo_alias (void) __asm ("foo"); __extern_always_inline void foo (void) { puts ("hi oh world!"); return foo_alias (); } void foo_alias (void) { puts ("hell oh world"); } int main () { foo (); } [1] https://sourceware.org/ml/libc-alpha/2012-12/msg00306.html [BZ #17266] * misc/sys/cdefs.h: Define __extern_always_inline for clang 4.2 and newer.
2014-09-16Fix memory leak in error path of do_ftell_wide (BZ #17370)Siddhesh Poyarekar
2014-09-16Add NEWS entry for previous commitSiddhesh Poyarekar
2014-09-16Revert to defining __extern_inline only for gcc-4.3+ (BZ #17266)Siddhesh Poyarekar
The check for only __GNUC_STDC_INLINE__ and __GNUC_GNU_INLINE__ may not be sufficient since those flags were added during initial support for C99 inlining semantics. There is also a problem with always defining __extern_inline and __extern_always_inline, since it enables inline wrapper functions even when GNU inlining semantics are not guaranteed. This, along with the possibility of such wrappers using redirection (btowc for example) could result in compiler generating an infinitely recusrive call to the function. In fact it was such a recursion that led to this code being written the way it was; see: https://bugzilla.redhat.com/show_bug.cgi?id=186410 The initial change was to fix bugs 14530 and 13741, but they can be resolved by checking if __fortify_function and/or __extern_always_inline are defined, as it has been done in this patch. In addition, I have audited uses of __extern_always_inline to make sure that none of the uses result in compilation errors. There is however a regression in this patch for llvm, since it reverts the llvm expectation that __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE__ definition imply proper extern inline semantics. 2014-09-16 Siddhesh Poyarekar <siddhesh@redhat.com> Jakub Jelinek <jakub@redhat.com> [BZ #17266] * libio/stdio.h: Check definition of __fortify_function instead of __extern_always_inline to include bits/stdio2.h. * math/bits/math-finite.h [__USE_XOPEN || __USE_ISOC99]: Also check if __extern_always_inline is defined. [__USE_MISC || __USE_XOPEN]: Likewise. [__USE_ISOC99] Likewise. * misc/sys/cdefs.h (__fortify_function): Define only if __extern_always_inline is defined. [!__cplusplus || __GNUC_PREREQ (4,3)]: Revert to defining __extern_always_inline and __extern_inline only for g++-4.3 and newer or a compatible gcc.
2014-09-15Handle zero prefix length in getifaddrs (BZ #17371)Andreas Schwab
2014-09-15Remove _POSIX_REGEX_VERSIONSiddhesh Poyarekar
There is no _POSIX_REGEX_VERSION, so don't check for it. _REGEX_VERSION has been removed as well[1], so only keep the -1 return for backward compatibility. I found this when trying to make the getconf environment variables typo-proof. * sysdeps/posix/sysconf.c (__sysconf): Return -1 for _SC_REGEX_VERSION. [1] http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
2014-09-15Add correct variable names for _POSIX_IPV6 and _POSIX_RAW_SOCKETSSiddhesh Poyarekar
getconf only recognizes IPV6 and RAW_SOCKETS, when the standard requires it to recognize the actual configuration variable name[1]. I have not removed the earlier names for compatibility. * posix/getconf.c (vars): Add _POSIX_IPV6 and _POSIX_RAW_SOCKETS. [1] http://pubs.opengroup.org/onlinepubs/007904875/functions/sysconf.html
2014-09-13Update Russian translationAllan McRae
2014-09-12Minor cleanup in locale.cRoland McGrath
2014-09-12Minor cleanup in ld-ctype.cRoland McGrath
2014-09-12Don't use a nested function in rpmatch.Roland McGrath
2014-09-12Remove configuration name patterns from shlib-versions.Joseph Myers
This patch removes the first column (patterns matching configuration names) from shlib-versions, leaving shlib-versions entry selection based purely on sysdeps directories. An implication of this removal is that the default for any non-Linux ports using NPTL will be the same SONAMEs for NPTL libraries as for Linux (as those defaults, previously limited to .*-.*-linux.*, are left in nptl/shlib-versions and nptl_db/shlib-versions). Special host_os handling in configure.ac that was purely for shlib-versions is removed. (The host_os setting is still used for libc-abis - see <https://sourceware.org/ml/libc-alpha/2014-01/msg00375.html> regarding that - but no entries there are affected by this change.) Tested on x86_64 and x86 that the installed shared libraries are unchanged by this patch. * scripts/soversions.awk: Do not handle configuration names. * Makeconfig ($(common-objpfx)soversions.i): Do not pass cpu, vendor and os variables to soversions.awk. * configure.ac: Do not modify gnu-* host_os. * configure: Regenerated * shlib-versions: Remove first column with configuration names. * nptl/shlib-versions: Likewise. * nptl_db/shlib-versions: Likewise. * sysdeps/hppa/shlib-versions: Likewise. * sysdeps/m68k/shlib-versions: Likewise. * sysdeps/mach/hurd/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/aarch64/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/alpha/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/arm/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/hppa/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/ia64/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/microblaze/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/mips/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/sh/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/tile/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions: Likewise. libidn/ChangeLog: * shlib-versions: Remove first column with configuration names.
2014-09-12Use %ifdef in sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions.Joseph Myers
This patch makes sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions use %ifdef conditionals around the different symbol version definitions for big and little endian. (It doesn't actually change the host patterns used for those definitions; the point is to make it possible to remove the first column from shlib-versions by eliminating the last case where it would be harmful for it to be treated as .*-.*-.*.) The conditional is based on the ELFv1/ELFv2 distinction rather than BE/LE, since that's what's already tested in configure and used for the ld.so soname in the Makefiles. (Of course if BE ELFv2 were supported in future, it would get new symbol versions and so need new conditionals.) * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac (HAVE_ELFV2_ABI): AC_DEFINE in ELFv2 case. * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure: Regenerated. * config.h.in (HAVE_ELFV2_ABI): New macro undefine. * sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions: Condition symbol version definitions on [HAVE_ELFV2_ABI].
2014-09-12Move OS-specific shlib-versions entries to sysdeps files.Joseph Myers
This patch moves OS-specific entries in the top-level shlib-versions file to appropriate sysdeps directories. I left the entries in nptl/shlib-versions and nptl_db/shlib-versions unchanged; I think it can be for those doing non-Linux NPTL-using ports to figure out whether those entries should actually be OS-independent or should move to sysdeps. Given these two patches, I think the only further change needed before the first column of shlib-versions can be eliminated will be changing sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions to use %ifdef to distinguish BE and LE configurations, instead of relying on the powerpc64-.*-linux.* and powerpc.*le-.*-linux.* patterns. Tested on x86_64 that the installed shared libraries are unchanged by this patch. * shlib-versions: Remove OS-specific entries. Moved to files in sysdeps. * sysdeps/mach/hurd/shlib-versions: New file. * sysdeps/unix/sysv/linux/shlib-versions: Likewise.
2014-09-12Move architecture-specific shlib-versions entries to sysdeps files.Joseph Myers
This patch eliminates another way in which ex-ports and non-ex-ports architectures differ, by moving architecture-specific entries from the top-level shlib-versions file and that in nptl/ to appropriate sysdeps directories. As with my previous patch <https://sourceware.org/ml/libc-alpha/2014-06/msg00949.html>, I do not change the regular expressions used; even where the present expressions seem more general, I believe they are in fact specific to the chosen sysdeps directory, because any port that matches the expression but not the sysdeps directory does not currently exist, and so would use different symbol versions if added in future (and an intended goal of these changes is to eliminate the first column in shlib-versions completely rather than having two different mechanisms in use for system-specific configuration). Tested on x86_64 that this does not change the installed shared libraries. (x86_64 of course does not provide much test coverage for this patch - what should be architecture-specific contents in shlib-versions for x86_64 is currently abi-*-ld-soname Makefile settings, until gnu/lib-names.h is generated more like gnu/stubs.h so those can move back to shlib-versions.) * nptl/shlib-versions: Remove architecture-specific entries. Moved to files in sysdeps. * shlib-versions: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions: New file. * sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/sh/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions: Likewise.
2014-09-12Add new Linux 3.16 constants to netinet/udp.h.Joseph Myers
This patch adds the new constants UDP_NO_CHECK6_TX and UDP_NO_CHECK6_RX from Linux 3.16 to sysdeps/gnu/netinet/udp.h. (I believe the existing constants there are already Linux-specific, possibly with the intention that other OSes should adopt the same values if possible if adopting the features in question.) Tested on x86_64. * sysdeps/gnu/netinet/udp.h (UDP_NO_CHECK6_TX): New macro. (UDP_NO_CHECK6_RX): Likewise.
2014-09-12Fix typo in macro names in sysconf.cSiddhesh Poyarekar
Spell _POSIX_DEVICE_SPECIFIC and _POSIX_DEVICE_SPECIFIC_R correctly. Found when trying to make the getconf environment variables typo-proof. * sysdeps/posix/sysconf.c (__sysconf): Spell _POSIX_DEVICE_SPECIFIC and _POSIX_DEVICE_SPECIFIC_R correctly.
2014-09-12Complete the removal of __gconv_translit_findFlorian Weimer
Prior to the 2.20 release, the function was just changed to fail unconditionally, in commit a1a6a401ab0a3c9f15fb7eaebbdcee24192254e8. This commit removes the function completely, including gconv bits which depend on it. This changes the gconv ABI, which is not a public interface.
2014-09-12Enhance tst-xmmymm.sh to detect zmm register usage in ld.so (BZ #16194)Siddhesh Poyarekar
2d63a517e4084ec80403cd9f278690fa8b676cc4 added support to save and restore zmm register in the dynamic linker, but did not enhance test-xmmymm.sh to detect accidental usage of these registers. The patch below adds that check. The script has also been renamed to tst-ld-sse-use.sh. To see the minimal changes, run `git show -M`. [BZ #16194] * sysdeps/x86/tst-xmmymm.sh: Rename file to... * sysdeps/x86/tst-ld-sse-use.sh: ... this. Check for zmm register usage. * sysdeps/x86/Makefile: Adjust.
2014-09-11Move findidx nested functions to top-level.Roland McGrath
2014-09-11malloc: additional unlink hardening for non-small bins [BZ #17344]Florian Weimer
Turn two asserts into a conditional call to malloc_printerr. The memory locations are accessed later anyway, so the performance impact is minor.
2014-09-11Fix memory leak in libio/wfileops.c do_ftell_wide [BZ #17370]Tim Lammens
2014-09-10tile: remove linux lowlevellock.hChris Metcalf
2014-09-10Return failure in getnetgrent only when all netgroups have been searched ↵Siddhesh Poyarekar
(#17363) The netgroups lookup code fails when one of the groups in the search tree is empty. In such a case it only returns the leaves of the tree after the blank netgroup. This is because the line parser returns a NOTFOUND status when the netgroup exists but is empty. The __getnetgrent_internal implementation needs to be fixed to try remaining groups if the current group is entry. This patch implements this fix. Tested on x86_64. [BZ #17363] * inet/getnetgrent_r.c (__internal_getnetgrent_r): Try next group if the current group is empty.
2014-09-10PowerPC: memset optimization for POWER8/PPC64Adhemerval Zanella
This patch adds an optimized memset implementation for POWER8. For sizes from 0 to 255 bytes, a word/doubleword algorithm similar to POWER7 optimized one is used. For size higher than 255 two strategies are used: 1. If the constant is different than 0, the memory is written with altivec vector instruction; 2. If constant is 0, dbcz instructions are used. The loop is unrolled to clear 512 byte at time. Using vector instructions increases throughput considerable, with a double performance for sizes larger than 1024. The dcbz loops unrolls also shows performance improvement, by doubling throughput for sizes larger than 8192 bytes.
2014-09-10PowerPC: multiarch bzero cleanup for PPC64Adhemerval Zanella
This patch cleanups the multiarch bzero for powerpc64 by remove the multiarch objects and use instead the the memset embedded implementation presented in each multiarch optimization. The code generate is essentially the same, but the TB_TOCLESS (which is not essential).
2014-09-10Turn on -Werror=implicit-function-declarationFlorian Weimer
GCC 4.4, the minimum compiler version, supports this option. Unlike other warnings, -Wimplicit-function-declaration warnings should be independent of compiler versions, so this change should not cause compiler-specific build failures.
2014-09-09Put mips preconfigure code inside mips* case statement.Steve Ellcey
Fix capitalization of error message.
2014-09-09Modify ABI tests in MIPS preconfigure.Steve Ellcey
2014-09-07HPPA: Add c++-types.data.Carlos O'Donell
Added c++-types.data to baseline for HPPA. At this point `make check` completes without error, and the full testing results are summarized.
2014-09-07HPPA: Transition to new non-addon NPTL.Carlos O'Donell
Merge roland/nptl-hppa to master, update and test for hppa-linux-gnu. This commit squashes and commits the work done by Roland McGrath on roland/nptl-hppa to migrate hppa to the new non-addon NPTL. Some additional tweaks were required for tcb-offsets.sym to work correctly along with clone.S (unique to hppa).
2014-09-08Open development for 2.21glibc-2.20.90Allan McRae
2014-09-07Update version.h and include/features.h for 2.20 releaseglibc-2.20Allan McRae
2014-09-07Update contrib.texiAllan McRae
Add entries for Wilco Dijkstra and Stefan Liebler.
2014-09-07Update Korean translationAllan McRae
2014-09-06[BZ #17354] tile: Fix up corner cases with signed relocationsChris Metcalf
Some types of relocations technically need to be signed rather than unsigned: in particular ones that are used with moveli or movei, or for jump and branch. This is almost never a problem. Jump and branch opcodes are pretty much uniformly resolved by the static linker (unless you omit -fpic for a shared library, which is not recommended). The moveli and movei opcodes that need to be sign-extended generally are for positive displacements, like the construction of the address of main() from _start(). However, tst-pie1 ends up with main below _start (in a different module) and the test failed due to signedness issues in relocation handling. This commit treats the value as signed when shifting (to preserve the high bit) and also sign-extends the value generated from the updated bundle when comparing with the desired bundle, which we do to make sure no overflow occurred. As a result, the tst-pie1 test now passes.
2014-09-03CVE-2014-6040: Crashes on invalid input in IBM gconv modules [BZ #17325]Florian Weimer
These changes are based on the fix for BZ #14134 in commit 6e230d11837f3ae7b375ea69d7905f0d18eb79e5.
2014-09-02Define __GI_fegetenv for e500 libmKhem Raj
generic HAVE_RM_CTX implementation which is used for ppc/e500 as well has introduced calls to fegetenv which should be resolved internally with in libm Signed-off-by: Khem Raj <raj.khem@gmail.com> * sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c (fegetenv): Add libm_hidden_ver.
2014-09-01Update Esperanto translationAllan McRae
2014-09-01Update Catalan translationAllan McRae
2014-08-28Fix hang on forkSamuel Thibault
If e.g. a signal is being received while we are running fork(), the signal thread may be having our SS lock when we make the space copy, and thus in the child we can not take the SS lock any more. * sysdeps/mach/hurd/fork.c (__fork): Lock SS->lock around __proc_dostop call. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2014-08-28i386 TLS_INIT_TP might produce bogus asm changing stack pointer [BZ #17319]Mark Wielaard
TLS_INIT_TP in sysdeps/i386/nptl/tls.h uses some hand written asm to generate a set_thread_area that might result in exchanging ebx and esp around the syscall causing introspection tools like valgrind to loose track of the user stack. Just use INTERNAL_SYSCALL which makes sure esp isn't changed arbitrarily. Before the patch the code would generate: mov $0xf3,%eax movl $0xfffff,0x8(%esp) movl $0x51,0xc(%esp) xchg %esp,%ebx int $0x80 xchg %esp,%ebx Using INTERNAL_SYSCALL instead will generate: movl $0xfffff,0x8(%esp) movl $0x51,0xc(%esp) xchg %ecx,%ebx mov $0xf3,%eax int $0x80 xchg %ecx,%ebx Thanks to Florian Weimer for analysing why the original code generated the bogus esp usage: _segdescr.desc happens to be at the top of the stack, so its address is in %esp. The asm statement says that %3 is an input, so its value will not change, and GCC can use %esp as the input register for the expression &_segdescr.desc. But the constraints do not fully describe the asm statement because the %3 register is actually modified, albeit only temporarily. [BZ #17319] * sysdeps/i386/nptl/tls.h (TLS_INIT_TP): Use INTERNAL_SYSCALL to call set_thread_area instead of hand written asm. (__NR_set_thread_area): Removed define. (TLS_FLAG_WRITABLE): Likewise. (__ASSUME_SET_THREAD_AREA): Remove check. (TLS_EBX_ARG): Remove define. (TLS_LOAD_EBX): Likewise.
2014-08-28Simplify atomicity of socket creation in bind.Samuel Thibault
2014-08-27NEWS: Typo fix: s/wil /will /gCarlos O'Donell
2014-08-27Update x86 ULPsAllan McRae
Using gcc-4.9, i7-2620M, i686 Linux.
2014-08-26Fix typo in CVE IDFlorian Weimer
2014-08-26__gconv_translit_find: Disable function [BZ #17187]Florian Weimer
This functionality has never worked correctly, and the implementation contained a security vulnerability (CVE-2014-5119).
2014-08-26Update Vietnamese translationAllan McRae