about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
...
* | powerpc: Optimized strncmp for POWER8/PPC64Adhemerval Zanella2015-01-147-7/+387
| | | | | | | | | | | | | | | | | | | | This patch adds an optimized POWER8 strncmp. The implementation focus on speeding up unaligned cases follwing the ideas of power8 strcmp. The algorithm first check the initial 16 bytes, then align the first function source and uses unaligned loads on second argument only. Aditional checks for page boundaries are done for unaligned cases (where sources alignment are different).
* | powerpc: Optimize POWER7 strcmp trailing checksRajalakshmi Srinivasaraghavan2015-01-142-114/+89
| | | | | | | | | | | | This patch optimized the POWER7 trailing check by avoiding using byte read operations and instead use the doubleword already readed with bitwise operations.
* | powerpc: Optimized strcmp for POWER8/PPC64Adhemerval Zanella2015-01-147-4/+318
| | | | | | | | | | | | | | This patch adds an optimized POWER8 strcmp using unaligned accesses. The algorithm first check the initial 16 bytes, then align the first function source and uses unaligned loads on second argument only. Aditional checks for page boundaries are done for unaligned cases
* | powerpc: Optimized st{r,p}ncpy for POWER8/PPC64Adhemerval Zanella2015-01-1410-7/+559
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds an optimized POWER8 st{r,p}ncpy using unaligned accesses. It shows 10%-80% improvement over the optimized POWER7 one that uses only aligned accesses, specially on unaligned inputs. The algorithm first read and check 16 bytes (if inputs do not cross a 4K page size). The it realign source to 16-bytes and issue a 16 bytes read and compare loop to speedup null byte checks for large strings. Also, different from POWER7 optimization, the null pad is done inline in the implementation using possible unaligned accesses, instead of realying on a memset call. Special case is added for page cross reads.
* | powerpc: Optimized strncat for POWER7/PPC64Adhemerval Zanella2015-01-144-270/+35
| | | | | | | | | | | | | | | | | | | | | | With 3eb38795dbbbd816 (Simplify strncat) the generic algorithms uses strlen, strnlen, and memcpy. This is faster than POWER7 current implementation, especially for unaligned strings (where POWER7 code uses byte-byte operations). This patch removes the assembly implementation and uses a multiarch specialization based on default algorithm calling optimized POWER7 symbols.
* | powerpc: Optimized strcat for POWER8/PPC64Adhemerval Zanella2015-01-145-4/+49
| | | | | | | | | | With new optimized strcpy for POWER8, this patch adds an optimized strcat which uses it along with default implementation at strings/.
* | powerpc: Optimized st{r,p}cpy for POWER8/PPC64Adhemerval Zanella2015-01-149-3/+398
| | | | | | | | | | | | | | | | | | | | | | | | This patch adds an optimized POWER8 strcpy using unaligned accesses. For strings up to 16 bytes the implementation first calculate the string size, like strlen, and issues a memcpy. For larger strings, source is first aligned to 16 bytes and then tested over a loop that reads 16 bytes am combine the cmpb results for speedup. Special case is added for page cross reads. It shows 30%-60% improvement over the optimized POWER7 one that uses only aligned accesses.
* | powerpc: POWER7 strcpy optimization for unaligned stringsRajalakshmi Srinivasaraghavan2015-01-143-82/+268
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch optimizes strcpy for ppc64/power7 for unaligned source or destination address. The source or destination address is aligned to doubleword and data is shifted based on the alignment and added with the previous loaded data to be written as a doubleword. For each load, cmpb instruction is used for faster null check. The word aligned optimization is also removed, since the new unaligned code path shows better results handling word-aligned strings. More combination of unaligned inputs is also added in benchtest to measure the improvement.The new optimization shows 2 to 80% of performance improvement for longer string though it does not show big difference on string size less than 16 due to additional checks.
* | Avoid infinite loop in nss_dns getnetbyname [BZ #17630]Florian Weimer2015-01-143-3/+13
| |
* | CVE-2012-3406: Stack overflow in vfprintf [BZ #16617]Jeff Law2015-01-147-4/+203
| | | | | | | | | | | | A larger number of format specifiers coudld cause a stack overflow, potentially allowing to bypass _FORTIFY_SOURCE format string protection.
* | powerpc: Add powerpc64 strpbrk optimizationAdhemerval Zanella2015-01-147-148/+35
| | | | | | | | | | | | This patch makes the POWER7 optimized strpbrk generic by using default doubleword stores to zero the hash, instead of VSX instructions. Performance on POWER7/POWER8 does not change.
* | powerpc: Add powerpc64 strcspn optimizationAdhemerval Zanella2015-01-147-145/+32
| | | | | | | | | | | | This patch makes the POWER7 optimized strcspn generic by using default doubleword stores to zero the hash, instead of VSX instructions. Performance on POWER7/POWER8 does not change.
* | powerpc: Add powerpc64 strspn optimizationAdhemerval Zanella2015-01-147-160/+38
| | | | | | | | | | | | This patch makes the POWER7 optimized strspn generic by using default doubleword stores to zero the hash, instead of VSX instructions. Performance on POWER7/POWER8 machines does not changed.
* | powerpc: strtok{_r} optimization for powerpc64Rajalakshmi Srinivasaraghavan2015-01-143-0/+255
| | | | | | | | | | | | | | This patch optimizes strtok and strtok_r for POWERPC64. A table of 256 characters is created and marked based on the 'accept' argument and used to check for any occurance on the input string.Loop unrolling is also used to gain improvements.
* | powerpc: Fix missing barriers in atomic_exchange_and_add_{acq,rel}Adhemerval Zanella2015-01-145-0/+116
| | | | | | | | | | | | On powerpc, atomic_exchange_and_add is implemented without any barriers. This patchs adds the missing instruction and memory barrier for acquire and release semanthics.
* | powerpc: Fix __arch_compare_and_exchange_bool_64_relAnton Blanchard2015-01-142-1/+6
| | | | | | | | Fix a typo in the inline assembly.
* | CVE-2014-7817: wordexp fails to honour WRDE_NOCMD.Carlos O'Donell2015-01-144-13/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function wordexp() fails to properly handle the WRDE_NOCMD flag when processing arithmetic inputs in the form of "$((... ``))" where "..." can be anything valid. The backticks in the arithmetic epxression are evaluated by in a shell even if WRDE_NOCMD forbade command substitution. This allows an attacker to attempt to pass dangerous commands via constructs of the above form, and bypass the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD in exec_comm(), the only place that can execute a shell. All other checks for WRDE_NOCMD are superfluous and removed. We expand the testsuite and add 3 new regression tests of roughly the same form but with a couple of nested levels. On top of the 3 new tests we add fork validation to the WRDE_NOCMD testing. If any forks are detected during the execution of a wordexp() call with WRDE_NOCMD, the test is marked as failed. This is slightly heuristic since vfork might be used in the future, but it provides a higher level of assurance that no shells were executed as part of command substitution with WRDE_NOCMD in effect. In addition it doesn't require libpthread or libdl, instead we use the public implementation namespace function __register_atfork (already part of the public ABI for libpthread). Tested on x86_64 with no regressions.
* | powerpc: Simplify encoding of POWER8 instructionAdhemerval Zanella2015-01-137-35/+21
| |
* | powerpc: Fix encoding of POWER8 instructionAdhemerval Zanella2015-01-132-1/+13
| | | | | | | | | | This patch adds a binary encoding for 'mtvsrd' instruction to avoid build failures when assembler does not support POWER8.
* | powerpc: Change atomic_write_barrier to have release semantics.Torvald Riegel2015-01-134-1/+11
| |
* | PowerPC: memset optimization for POWER8/PPC64Adhemerval Zanella2014-09-308-9/+533
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | PowerPC: multiarch bzero cleanup for PPC64Adhemerval Zanella2014-09-3011-91/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | 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). Conflicts: ChangeLog This is backport of 3b473fecdf4c52989cd915b649bb6d26c042d048.
* | Partially revert commit 2663b74f8103a2a8a46b4896439b7a452480fc7cTulio Magno Quites Machado Filho2014-09-302-3/+2
| | | | | | | | | | This change is necessary in order to avoid the issue documented at http://sourceware.org/ml/libc-alpha/2013-05/msg00350.html.
* | Remove assert() if DT_RUNPATH and DT_RPATH flags are found in ld.so.Ryan S. Arnold2014-09-301-2/+2
|/
* Fix memory leak in error path of do_ftell_wide (BZ #17370)Siddhesh Poyarekar2014-09-162-1/+9
| | | | (cherry picked from commit 545583d664b64ff234b99aca0d85e99c8a55808f)
* Fix memory leak in libio/wfileops.c do_ftell_wide [BZ #17370]Tim Lammens2014-09-163-1/+7
| | | | | | | (cherry picked from commit 984c0ea97f649c869130a1ff099098e2b6f70aad) Conflicts: NEWS
* Revert to defining __extern_inline only for gcc-4.3+ (BZ #17266)Siddhesh Poyarekar2014-09-165-15/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Handle zero prefix length in getifaddrs (BZ #17371)Andreas Schwab2014-09-163-7/+16
| | | | | | | (cherry picked from commit a7b872687073decdcc7effc2289877d69058aca9) Conflicts: NEWS
* Add new Linux 3.16 constants to netinet/udp.h.Joseph Myers2014-09-132-0/+9
| | | | | | | | | | | | | | | 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. (cherry picked from commit 0bd72468030947254e7de183cac1014dac884475)
* Update Russian translationAllan McRae2014-09-132-5/+9
| | | | (cherry picked from commit d8f879ee3e4131542c2ac3d1d9db4cf12cb86729)
* Update version.h and include/features.h for 2.20 release glibc-2.20Allan McRae2014-09-073-3/+7
|
* Update contrib.texiAllan McRae2014-09-072-0/+9
| | | | Add entries for Wilco Dijkstra and Stefan Liebler.
* Update Korean translationAllan McRae2014-09-072-827/+889
|
* [BZ #17354] tile: Fix up corner cases with signed relocationsChris Metcalf2014-09-063-19/+30
| | | | | | | | | | | | | | | | | | 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.
* CVE-2014-6040: Crashes on invalid input in IBM gconv modules [BZ #17325]Florian Weimer2014-09-0311-10/+54
| | | | | These changes are based on the fix for BZ #14134 in commit 6e230d11837f3ae7b375ea69d7905f0d18eb79e5.
* Define __GI_fegetenv for e500 libmKhem Raj2014-09-022-0/+6
| | | | | | | | | | | 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.
* Update Esperanto translationAllan McRae2014-09-012-530/+548
|
* Update Catalan translationAllan McRae2014-09-012-478/+498
|
* Fix hang on forkSamuel Thibault2014-08-282-0/+9
| | | | | | | | | | 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>
* i386 TLS_INIT_TP might produce bogus asm changing stack pointer [BZ #17319]Mark Wielaard2014-08-283-30/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Simplify atomicity of socket creation in bind.Samuel Thibault2014-08-282-22/+25
|
* NEWS: Typo fix: s/wil /will /gCarlos O'Donell2014-08-271-1/+1
|
* Update x86 ULPsAllan McRae2014-08-272-4/+8
| | | | Using gcc-4.9, i7-2620M, i686 Linux.
* Fix typo in CVE IDFlorian Weimer2014-08-261-1/+1
|
* __gconv_translit_find: Disable function [BZ #17187]Florian Weimer2014-08-263-174/+19
| | | | | This functionality has never worked correctly, and the implementation contained a security vulnerability (CVE-2014-5119).
* Update Vietnamese translationAllan McRae2014-08-262-525/+554
|
* Update Ukrainian translationAllan McRae2014-08-262-478/+507
|
* Update French translationAllan McRae2014-08-262-526/+500
|
* Update Russian translationAllan McRae2014-08-262-479/+508
|
* Update Polish translationAllan McRae2014-08-262-479/+496
|