about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* S390: Extend structs La_s390_regs / La_s390_retval with vector-registers.Stefan Liebler2016-04-043-65/+124
| | | | | | | | | | | | | | | | | | | | | | | | Starting with z13, vector registers can also occur as argument registers. Thus the passed input/output register structs for la_s390_[32|64]_gnu_plt[enter|exit] functions should reflect those new registers. This patch extends these structs La_s390_regs and La_s390_retval and adjusts _dl_runtime_profile() to handle those fields in case of running on a z13 machine. ChangeLog: * sysdeps/s390/bits/link.h: (La_s390_vr) New typedef. (La_s390_32_regs): Append vector register lr_v24-lr_v31. (La_s390_64_regs): Likewise. (La_s390_32_retval): Append vector register lrv_v24. (La_s390_64_retval): Likeweise. * sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_profile): Handle extended structs La_s390_32_regs and La_s390_32_retval. * sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_profile): Handle extended structs La_s390_64_regs and La_s390_64_retval. (cherry picked from commit 5cdd1989d1d2f135d02e66250f37ba8e767f9772) (cherry picked from commit a07df04187284a7993d890d5164a4433cebfd930)
* S390: Save and restore fprs/vrs while resolving symbols.Stefan Liebler2016-04-046-248/+496
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On s390, no fpr/vrs were saved while resolving a symbol via _dl_runtime_resolve/_dl_runtime_profile. According to the abi, the fpr-arguments are defined as call clobbered. In leaf-functions, gcc 4.9 and newer can use fprs for saving/restoring gprs instead of saving them to the stack. If gcc do this in one of the resolver-functions, then the floating point arguments of a library-function are invalid for the first library-function-call. Thus, this patch saves/restores the fprs around the resolving code. The same could occur for vector registers. Furthermore an ifunc-resolver could also clobber the vector/floating point argument registers. Thus this patch provides the further variants _dl_runtime_resolve_vx/ _dl_runtime_profile_vx, which are used if the kernel claims, that we run on a machine with vector registers. Furthermore, if _dl_runtime_profile calls _dl_call_pltexit, the pointers to inregs-/outregs-structs were setup invalid. Now they point to the correct location in the stack-frame. Before branching back to the caller, the return values are now restored instead of containing the return values of the _dl_call_pltexit() call. On s390-32, an endless loop occurs if _dl_call_pltexit() should be called. Now, this code-path branches to this function instead of just after the preceding basr-instruction. ChangeLog: * sysdeps/s390/s390-32/dl-trampoline.S: Include dl-trampoline.h twice to create a non-vector/vector version for _dl_runtime_resolve and _dl_runtime_profile. Move implementation to ... * sysdeps/s390/s390-32/dl-trampoline.h: ... here. (_dl_runtime_resolve) Save and restore fpr/vrs. (_dl_runtime_profile) Save and restore vrs and fix some issues if _dl_call_pltexit is called. * sysdeps/s390/s390-32/dl-machine.h (elf_machine_runtime_setup): Choose the correct resolver function if running on a machine with vx. * sysdeps/s390/s390-64/dl-trampoline.S: Include dl-trampoline.h twice to create a non-vector/vector version for _dl_runtime_resolve and _dl_runtime_profile. Move implementation to ... * sysdeps/s390/s390-64/dl-trampoline.h: ... here. (_dl_runtime_resolve) Save and restore fpr/vrs. (_dl_runtime_profile) Save and restore vrs and fix some issues * sysdeps/s390/s390-64/dl-machine.h: (elf_machine_runtime_setup): Choose the correct resolver function if running on a machine with vx. (cherry picked from commit 4603c51ef7989d7eb800cdd6f42aab206f891077 and commit d8a012c5c9e4bfc1b8db2bc6deacb85b44a2e1eb) (cherry picked from commit 740e642e32f600afd95d1bddcfd3a961e46a9472)
* S390: configure check for vector instruction support in assembler.Stefan Liebler2016-04-043-0/+73
| | | | | | | | | | | | | | | | | | | | | | | | | The S390 specific test checks if the assembler has support for the new z13 vector instructions by compiling a vector instruction. The .machine and .machinemode directives are needed to compile the vector instruction without -march=z13 option on 31/64 bit. On success the macro HAVE_S390_VX_ASM_SUPPORT is defined. This macro is used to determine if the optimized functions can be build without compile errors. If the used assembler lacks vector support, then a warning is dumped while configuring and only the common code functions are build. The z13 instruction support was introduced in "[Committed] S/390: Add support for IBM z13." (https://sourceware.org/ml/binutils/2015-01/msg00197.html) ChangeLog: * config.h.in (HAVE_S390_VX_ASM_SUPPORT): New macro undefine. * sysdeps/s390/configure.ac: Add test for S390 vector instruction assembler support. * sysdeps/s390/configure: Regenerated. (cherry picked from commit 4f0a1cea34c05fb2acc16f1a2d291f53230eb4fb) (cherry picked from commit 5fc92dc17d6a2eb6420cef33d8d6bd3a84bb968c)
* S390: Add new s390 platform.Stefan Liebler2016-04-042-3/+3
| | | | | | | | | | | | | | | The new IBM z13 is added to platform string array. The macro _DL_PLATFORMS_COUNT is incremented to 8, because it was not incremented by commit "S/390: Sync AUXV capabilities and archs with kernel". ChangeLog: * sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add z13. * sysdeps/s390/dl-procinfo.h (_DL_PLATFORMS_COUNT): Increased. (cherry picked from commit a1b0488fc9df3d895a2e5eefbcd348d3f7fe0e52) (cherry picked from commit 942c502aca15983fde794e4465adbcf42b51c379)
* S390: Add hwcaps value for vector facility.Stefan Liebler2016-04-043-3/+5
| | | | | | | | | | | | | | | | | | The HWCAP_S390_VX flag in hwcap field of auxiliary vector indicates if the vector facility is available and the kernel is aware of it. This can be tested with LD_SHOW_AUXV=1 <prog>. Currently it does not show te, because it was not incremented by commit "S/390: Add hwcap value for transactional execution.". Thus _DL_HWCAP_COUNT is incremented by two. ChangeLog: * sysdeps/s390/dl-procinfo.c (_dl_s390_platforms): Add vector flag. * sysdeps/s390/dl-procinfo.h: Add vector capability. * sysdeps/unix/sysv/linux/s390/bits/hwcap.h (HWCAP_S390_VX): Define. (cherry picked from commit 4e28fa80886c71e6aaf85016b82ce981c0f12e6d) (cherry picked from commit d87bf6412b4cb0a5cd174d746eb596158075a5bb)
* CVE-2016-3075: Stack overflow in _nss_dns_getnetbyname_r [BZ #19879]Florian Weimer2016-04-041-4/+1
| | | | | | | | The defensive copy is not needed because the name may not alias the output buffer. (cherry picked from commit 317b199b4aff8cfa27f2302ab404d2bb5032b9a4) (cherry picked from commit 883dceebc8f11921a9890211a4e202e5be17562f)
* resolv: Always set *resplen2 out parameter in send_dg [BZ #19791]Florian Weimer2016-03-301-23/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 44d20bca52ace85850012b0ead37b360e3ecd96e (Implement second fallback mode for DNS requests), there is a code path which returns early, before *resplen2 is initialized. This happens if the name server address is immediately recognized as invalid (because of lack of protocol support, or if it is a broadcast address such 255.255.255.255, or another invalid address). If this happens and *resplen2 was non-zero (which is the case if a previous query resulted in a failure), __libc_res_nquery would reuse an existing second answer buffer. This answer has been previously identified as unusable (for example, it could be an NXDOMAIN response). Due to the presence of a second answer, no name server switching will occur. The result is a name resolution failure, although a successful resolution would have been possible if name servers have been switched and queries had proceeded along the search path. The above paragraph still simplifies the situation. Before glibc 2.23, if the second answer needed malloc, the stub resolver would still attempt to reuse the second answer, but this is not possible because __libc_res_nsearch has freed it, after the unsuccessful call to __libc_res_nquerydomain, and set the buffer pointer to NULL. This eventually leads to an assertion failure in __libc_res_nquery: /* Make sure both hp and hp2 are defined */ assert((hp != NULL) && (hp2 != NULL)); If assertions are disabled, the consequence is a NULL pointer dereference on the next line. Starting with glibc 2.23, as a result of commit e9db92d3acfe1822d56d11abcea5bfc4c41cf6ca (CVE-2015-7547: getaddrinfo() stack-based buffer overflow (Bug 18665)), the second answer is always allocated with malloc. This means that the assertion failure happens with small responses as well because there is no buffer to reuse, as soon as there is a name resolution failure which triggers a search for an answer along the search path. This commit addresses the issue by ensuring that *resplen2 is initialized before the send_dg function returns. This commit also addresses a bug where an invalid second reply is incorrectly returned as a valid to the caller. (cherry picked from commit b66d837bb5398795c6b0f651bd5a5d66091d8577) (cherry picked from commit 5a1a5f0dd2744044801c91bf2588444c29cda533)
* Fix resource leak in resolver (bug 19257)Andreas Schwab2016-03-301-1/+1
| | | | | | | | | The number of currently defined nameservers is stored in ->nscount, whereas ->_u._ext.nscount is set by __libc_res_nsend only after local initializations. (cherry picked from commit 5e7fdabd7df1fc6c56d104e61390bf5a6b526c38) (cherry picked from commit e5d560e0e7f621b5cde4bcbbac424f8b2742395a)
* Use PIC relocation in ALIAS_IMPLAndrew Senkevich2016-03-301-2/+1
| | | | | | | | | | | | Since libmvec_nonshared.a may be linked into shared objects, ALIAS_IMPL should use PIC relocation. [BZ #19590] * sysdeps/x86_64/fpu/svml_finite_alias.S (ALIAS_IMPL): Use PIC relocation. (cherry picked from commit a5df3210a641c175138052037fcdad34298bfa4d) (cherry picked from commit 2b8ab5c3f618e4d9e0a9147c24f8cf6bbf35a1d8)
* Fix x86_64 fma4 pow inappropriate contraction (bug 19003).Joseph Myers2016-03-301-1/+1
| | | | | | | | | | | | | | | | | | | The x86_64 fma4 version of pow fails to disable contraction of operations other than those explicitly intended to use fma instructions, so resulting in large ulps errors on processors with fma4 instructions, as in bug 18104 (165ulp for the test added for that bug; error originally reported by "blaaa" on #glibc). This patch adds $(config-cflags-nofma) for e_pow-fma4.c, corresponding to the use for e_pow.c in sysdeps/ieee754/dbl-64/Makefile. Tested for x86_64 on a processor with fma4. [BZ #19003] * sysdeps/x86_64/fpu/multiarch/Makefile (CFLAGS-e_pow-fma4.c): Add $(config-cflags-nofma). (cherry picked from commit 51df2605064a2bfd44fa0655ef9815812347de80) (cherry picked from commit c95a56e2a8b16eeb911eed5c1bdc8fd26f337f4d)
* sln: use stat64Hongjiu Zhang2016-03-072-2/+7
| | | | | | | | | | | | | | | When using sln on some filesystems which return 64-bit inodes, the stat call might fail during install like so: .../elf/sln .../elf/symlink.list /lib32/libc.so.6: invalid destination: Value too large for defined data type /lib32/ld-linux.so.2: invalid destination: Value too large for defined data type Makefile:104: recipe for target 'install-symbolic-link' failed Switch to using stat64 all the time to avoid this. URL: https://bugs.gentoo.org/576396 (cherry picked from commit f5e753c8c3a18a1e3c715dd11bf4dc341b5c481f) (cherry picked from commit d6778fc4b0039b2116f88218212618ca357fee2f)
* S390: Do not use direct socket syscalls if build on kernels >= 4.3. [BZ #19682]Stefan Liebler2016-03-071-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Beginning with Linux 4.3, the kernel headers contain direct system call numbers __NR_socket etc. on s390x. On older kernels, the socket-multiplexer syscall __NR_socketcall was used. To enable these new syscalls, the patch "S390: Call direct system calls for socket operations." (https://sourceware.org/git/?p=glibc.git;a=commit;h=016495b818cb61df7d0d10e6db54074271b3e3a5) was applied upstream. If glibc 2.23 is configured with --enable-kernel=4.3 and newer, the direct socket syscalls are used. For older kernels, the socket-multiplexer syscall is used instead. In glibc 2.22 and earlier, this patch is not applied. If you build glibc on a kernel < 4.3, the socket-multiplexer syscall is used. But if you build glibc on kernel >= 4.3, the direct socket-syscalls are used. If you install this glibc on a kernel < 4.3, all socket operations will fail. See "Bug 19682 - s390x: Incorrect syscall definitions cause breakage with Linux 4.3 headers" (https://sourceware.org/bugzilla/show_bug.cgi?id=19682) The configure switch --enable-kernel does not influence this behaviour on older glibc-releases. The solution is to remove the direct socket-syscalls in sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (this patch) on older glibc-releases as it was done by the upstream patch, too. These entries were never used on s390x, but the c-files in sysdeps/unix/sysv/linux/. After this removal, the behaviour of the socket functions are not changed compared to the original glibc release version and the socket-multiplexer-syscall is always used. (cherry picked from commit 425c48c217ef93c2c4f81f9f3bb2fdba096877a2)
* powerpc: Fix macro usage of htm builtinsPaul E. Murphy2016-03-071-3/+3
| | | | | | | | | Some extraneous semicolons were included in a recent patch which causes a build failure with newer compilers. (cherry picked from commit af8ea0f449af7d3847351a4a5bafcd435a22ac31) (cherry picked from commit a33d347c181cfa0d84c37e9961ebf030495ed248)
* powerpc: Enforce compiler barriers on hardware transactionsTulio Magno Quites Machado Filho2016-03-076-15/+46
| | | | | | | | | | | | | | Work around a GCC behavior with hardware transactional memory built-ins. GCC doesn't treat the PowerPC transactional built-ins as compiler barriers, moving instructions past the transaction boundaries and altering their atomicity. (cherry picked from commit 42bf1c897170ff951c7fd0ee9da25f97ff787396) Conflicts: sysdeps/unix/sysv/linux/powerpc/elision-trylock.c (cherry picked from commit 3803874b4a368eb8245fbf091651b6c8edd90b23)
* CVE-2015-7547: getaddrinfo() stack-based buffer overflow (Bug 18665).Carlos O'Donell2016-02-163-69/+309
| | | | | | | | | | | | | | | | | | | | | | | * A stack-based buffer overflow was found in libresolv when invoked from libnss_dns, allowing specially crafted DNS responses to seize control of execution flow in the DNS client. The buffer overflow occurs in the functions send_dg (send datagram) and send_vc (send TCP) for the NSS module libnss_dns.so.2 when calling getaddrinfo with AF_UNSPEC family. The use of AF_UNSPEC triggers the low-level resolver code to send out two parallel queries for A and AAAA. A mismanagement of the buffers used for those queries could result in the response of a query writing beyond the alloca allocated buffer created by _nss_dns_gethostbyname4_r. Buffer management is simplified to remove the overflow. Thanks to the Google Security Team and Red Hat for reporting the security impact of this issue, and Robert Holiday of Ciena for reporting the related bug 18665. (CVE-2015-7547) See also: https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html https://sourceware.org/ml/libc-alpha/2016-02/msg00418.html (cherry picked from commit e9db92d3acfe1822d56d11abcea5bfc4c41cf6ca) (cherry picked from commit b995d95a5943785be3ab862b2d3276f3b4a22481)
* Improve check against integer wraparound in hcreate_r [BZ #18240]Florian Weimer2016-02-163-19/+93
| | | | | (cherry picked from commit bae7c7c764413b23e61cb099ce33be4c4ee259bb) (cherry picked from commit 287de30e170cb765ed326d23d22791a81aab6e0f)
* Handle overflow in __hcreate_rOndřej Bílka2016-02-161-1/+8
| | | | | | | | | | | | | Hi, As in bugzilla entry there is overflow in hsearch when looking for prime number as SIZE_MAX - 1 is divisible by 5. We fix that by rejecting large inputs before looking for prime. * misc/hsearch_r.c (__hcreate_r): Handle overflow. (cherry picked from commit 2f5c1750558fe64bac361f52d6827ab1bcfe52bc) (cherry picked from commit 43f189b0032fbce67fc0c0f4e122e917cd232670)
* Gracefully handle incompatible locale dataLudovic Courtès2016-02-161-3/+4
| | | | | | | | * locale/loadlocale.c (_nl_intern_locale_data): Change assertion on CNT to a conditional jump to 'puntdata'. (cherry picked from commit 0062ace2292effc4135c15ea99b1931fea5e0203) (cherry picked from commit 84f80d5ea11fb3b6325c18c31ba0a6a99d5f68bb)
* Fix BZ #18985 -- out of range data to strftime() causes a segfaultPaul Pluzhnikov2016-02-162-8/+64
| | | | | (cherry picked from commit d36c75fc0d44deec29635dd239b0fbd206ca49b7) (cherry picked from commit 7a5d3129638db8a832e2c3090d263bbc1b1b919b)
* Fix BZ #17905Paul Pluzhnikov2016-02-164-17/+65
| | | | | (cherry picked from commit 0f58539030e436449f79189b6edab17d7479796e) (cherry picked from commit 0c5f5b233964aa97d1aa470488a1731c022ff615)
* alpha/hppa: fix libc.abilist sorting wrt fmemopenAurelien Jarno2016-01-242-6/+6
| | | | | | | | | | | | | | | Commit fdb7d390 introduced the fmemopen symbol at the wrong location in alpha/libc.abilist and hppa/libc.abilist. The file needs to keep sorted, fix that. Note: this is for 2.22 only, for master the format has been changed in commit 8c77b6ad. * sysdeps/unix/sysv/linux/alpha/libc.abilist [GLIBC_2.22]: Move to keep the file sorted. * sysdeps/unix/sysv/linux/hppa/libc.abilist [GLIBC_2.22]: Likewise. (cherry picked from commit 3b54d911809643fb6a293807333b7f2cf15a3b50)
* powerpc: Fix usage of elision transient failure adapt paramPaul Murphy2016-01-242-12/+9
| | | | | | | | | | | | | | | | | | | | | The skip_lock_out_of_tbegin_retries adaptive parameter was not being used correctly, nor as described. This prevents a fallback for all users of the lock if a transient abort occurs within the accepted number of retries. [BZ #19174] * sysdeps/powerpc/nptl/elide.h (__elide_lock): Fix usage of .skip_lock_out_of_tbegin_retries. * sysdeps/unix/sysv/linux/powerpc/elision-lock.c (__lll_lock_elision): Likewise, and respect a value of try_tbegin <= 0. (cherry picked from commit 72f1463df85a522bfd1568e47bd81371522ee358) Conflicts: NEWS (cherry picked from commit cd51b1424477652cccdb83e7a95644d198fd4513)
* Corrected path to installed libmvec_nonshared.aAndrew Senkevich2016-01-241-1/+1
| | | | | | | * math/Makefile ($(inst_libdir)/libm.so): Corrected path to libmvec_nonshared.a (cherry picked from commit 13ff0739fdca293adab02b9f4fe78395de251086)
* Better workaround for aliases of *_finite symbols in vector math library.Andrew Senkevich2016-01-244-31/+64
| | | | | | | | | | | | | | | | Old workaround based on assembly aliases can lead to link fail (bug 19058). This patch makes workaround in another way to avoid it. [BZ #19058] * math/Makefile ($(inst_libdir)/libm.so): Added libmvec_nonshared.a to AS_NEEDED. * sysdeps/x86/fpu/bits/math-vector.h: Removed code with old workaround. * sysdeps/x86_64/fpu/Makefile (libmvec-support, libmvec-static-only-routines): Added new file. * sysdeps/x86_64/fpu/svml_finite_alias.S: New file. * NEWS: Mention this fix. (cherry picked from commit 060f8dbd0ca6eb17d20442dc4df72c2a707bdf86)
* Keep only ELF_RTYPE_CLASS_{PLT|COPY} bits for prelinkH.J. Lu2016-01-241-2/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | prelink runs ld.so with the environment variable LD_TRACE_PRELINKING set to dump the relocation type class from _dl_debug_bindings. prelink has the following relocation type classes: #define RTYPE_CLASS_VALID 8 #define RTYPE_CLASS_PLT (8|1) #define RTYPE_CLASS_COPY (8|2) #define RTYPE_CLASS_TLS (8|4) where ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA has a conflict with RTYPE_CLASS_TLS. Since prelink only uses ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits, we should clear the other bits when the DL_DEBUG_PRELINK bit is set. [BZ #19178] * elf/dl-lookup.c (RTYPE_CLASS_VALID): New. (RTYPE_CLASS_PLT): Likewise. (RTYPE_CLASS_COPY): Likewise. (RTYPE_CLASS_TLS): Likewise. (_dl_debug_bindings): Use RTYPE_CLASS_TLS and RTYPE_CLASS_VALID to set relocation type class for DL_DEBUG_PRELINK. Keep only ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits for DL_DEBUG_PRELINK. (cherry picked from commit f3d18efb8a720121066dc3401e822043beb98cde) (cherry picked from commit 387011e0b6f9cbefd26691f0df8ce76bb7ddfa03)
* PowerPC: Fix a race condition when eliding a lockTulio Magno Quites Machado Filho2016-01-241-52/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous code used to evaluate the preprocessor token is_lock_free to a variable before starting a transaction. This behavior can cause an error if another thread got the lock (without using a transaction) between the evaluation of the token and the beginning of the transaction. This bug can be triggered with the following order of events: 1. The lock accessed by is_lock_free is free. 2. Thread T1 evaluates is_lock_free and stores into register R1 that the lock is free. 3. Thread T2 acquires the same lock used in is_lock_free. 4. T1 begins the transaction, creating a memory barrier where is_lock_free is false, but R1 is true. 5. T1 reads R1 and doesn't abort the transaction. 6. T1 calls ELIDE_UNLOCK, which reads false from is_lock_free and decides to unlock a lock acquired by T2, leading to undefined behavior. This patch delays the evaluation of is_lock_free to inside a transaction by moving this part of the code to the macro ELIDE_LOCK. [BZ #18743] * sysdeps/powerpc/nptl/elide.h (__elide_lock): Move most of this code to... (ELIDE_LOCK): ...here. (__get_new_count): New function with part of the code from __elide_lock that updates the value of adapt_count after a transaction abort. (__elided_trylock): Moved this code to... (ELIDE_TRYLOCK): ...here. (cherry picked from commit 6ec52bf634b7650b57ff67b5f5053bce8992d549) (cherry picked from commit 5b319ce2949cf6fb97862ff81558944f76c704f1)
* Harden tls_dtor_list with pointer mangling [BZ #19018]Florian Weimer2016-01-241-1/+9
| | | | | (cherry picked from commit f586e1328681b400078c995a0bb6ad301ef73549) (cherry picked from commit 5fb7924cb6cf606ce865122e5bbac9df934db14e)
* strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589).Carlos O'Donell2016-01-248-60/+95
| | | | | | | | | | | | | | | | | | | | | | | | | The optimization introduced in commit f13c2a8dff2329c6692a80176262ceaaf8a6f74e, causes regressions in sorting for languages that have digraphs that change sort order, like cs_CZ which sorts ch between h and i. My analysis shows the fast-forwarding optimization in STRCOLL advances through a digraph while possibly stopping in the middle which results in a subsequent skipping of the digraph and incorrect sorting. The optimization is incorrect as implemented and because of that I'm removing it for 2.23, and I will also commit this fix for 2.22 where it was originally introduced. This patch reverts the optimization, introduces a new bug-strcoll2.c regression test that tests both cs_CZ.UTF-8 and da_DK.ISO-8859-1 and ensures they sort one digraph each correctly. The optimization can't be applied without regressing this test. Checked on x86_64, bug-strcoll2.c fails without this patch and passes after. This will also get a fix on 2.22 which has the same bug. (cherry picked from commit 87701a58e291bd7ac3b407d10a829dac52c9c16e) (cherry picked from commit 6c84109cfa26f35c3dfed3acb97d347361bd5849)
* [BZ #18796]Andrew Senkevich2016-01-241-1/+12
| | | | | | | | * scripts/test-installation.pl: Don't add -lmvec to build options if libmvec wasn't built. * NEWS: Mention this fix. (cherry picked from commit 9031106ea063f0476bdabf3f5ec22758cdcf987b)
* Always enable pointer guard [BZ #18928]Florian Weimer2015-10-172-14/+4
| | | | | | | | | | | | | | | | | Honoring the LD_POINTER_GUARD environment variable in AT_SECURE mode has security implications. This commit enables pointer guard unconditionally, and the environment variable is now ignored. [BZ #18928] * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove _dl_pointer_guard member. * elf/rtld.c (_rtld_global_ro): Remove _dl_pointer_guard initializer. (security_init): Always set up pointer guard. (process_envvars): Do not process LD_POINTER_GUARD. (cherry picked from commit a014cecd82b71b70a6a843e250e06b541ad524f7) (cherry picked from commit dc22a1ec157d02529a0b17986679d3f1c122985e)
* Use HOST_NAME_MAX for MAXHOSTNAMELEN in <sys/param.h>.Roland McGrath2015-10-101-0/+3
| | | | | (cherry picked from commit 51f24be7ba5d15313ae94f8fb4500ce07cb98c84) (cherry picked from commit 666bb4dc55f5a93538d020024c34abad641f50ae)
* BZ#18921: Fix opendir inverted o_directory_works test.Roland McGrath2015-10-101-1/+1
| | | | | (cherry picked from commit bd9e69abb887d78d0d6708fc089cc9f3eabf106d) (cherry picked from commit 5c8c3123652045191474a4ca85fbb6e8d9e7d2bc)
* Fix non-v9 32-bit sparc build.Brett Neumeier2015-10-101-0/+1
| | | | | | | [BZ #18870] * sysdeps/sparc/sparc32/sem_open.c: Add missing #include (cherry picked from commit 36c6e27a26b0afe0187f8790990cf880abdbf244)
* [BZ #17250] Fix static dlopen default library search pathMaciej W. Rozycki2015-09-261-1/+0
| | | | | | | | | | | | Fix a regression introduced with commit 0d23a5c1 [Static dlopen correction fallout fixes] that caused the default library search path to be ignored for modules loaded with dlopen from static executables. [BZ #17250] * elf/dl-support.c (_dl_main_map): Don't initialize l_flags_1 member. (cherry picked from commit 93bad7c97c7047ecaf7664859e2b49c0fe995443)
* getmntent: fix memory corruption w/blank lines [BZ #18887]Mike Frysinger2015-08-295-22/+103
| | | | | | | | | | | | | | | | | | | | The fix for BZ #17273 introduced a single byte of memory corruption when the line is entirely blank. It would walk back past the start of the buffer if the heap happened to be 0x20 or 0x09 and then write a NUL byte. buffer = '\n'; end_ptr = buffer; while (end_ptr[-1] == ' ' || end_ptr[-1] == '\t') end_ptr--; *end_ptr = '\0'; Fix that and rework the tests. Adding the testcase for BZ #17273 to the existing \040 parser does not really make sense as it's unrelated, and leads to confusing behavior: it implicitly relies on the new entry being longer than the previous entry (since it just rewinds the FILE*). Split it out into its own dedicated testcase instead. (cherry picked from commit b0e805fa0d6fea33745952df7b7f5442ca4c374f) (cherry picked from commit 3007f797a1a596e954f44879a5a7267966186ba4)
* manual: skip build when perl is unavailableMike Frysinger2015-08-211-0/+3
| | | | | | | | | Do not try to generate the manual when perl is unavailable. This matches the behavior when makeinfo is unavailable. Otherwise the install step fails when trying to generate the libm section since it runs a perl script. (cherry picked from commit 1695cdae065fa3693e7b18169a100f53444eac69)
* hppa: start.S: rework references to fix PIE TEXTRELs [BZ #18421]Alan Modra2015-08-181-2/+14
| | | | | The startup code was not using PIC friendly references leading to TEXTRELs in every PIE ELF.
* Clear DF_1_NODELETE flag only for failed to load library.Maxim Ostapenko2015-08-124-10/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | https://sourceware.org/bugzilla/show_bug.cgi?id=18778 If dlopen fails to load an object that has triggered loading libpthread it causes ld.so to unload libpthread because its DF_1_NODELETE flags has been forcefully cleared. The next call to __rtdl_unlock_lock_recursive will crash since pthread_mutex_unlock no longer exists. This patch moves l->l_flags_1 &= ~DF_1_NODELETE out of loop through all loaded libraries and performs the action only on inconsistent one. [BZ #18778] * elf/Makefile (tests): Add Add tst-nodelete2. (modules-names): Add tst-nodelete2mod. (tst-nodelete2mod.so-no-z-defs): New. ($(objpfx)tst-nodelete2): Likewise. ($(objpfx)tst-nodelete2.out): Likewise. (LDFLAGS-tst-nodelete2): Likewise. * elf/dl-close.c (_dl_close_worker): Move DF_1_NODELETE clearing out of loop through all loaded libraries. * elf/tst-nodelete2.c: New file. * elf/tst-nodelete2mod.c: Likewise. (cherry picked from commit f25238ffe0455013174438376b3ee88df496f9d1) (cherry picked from commit a34d1c6afc86521d6ad17662a3b5362d8481514c)
* Readd O_LARGEFILE flag for openat64 (bug 18781)Andreas Schwab2015-08-122-1/+25
| | | | | (cherry picked from commit eb32b0d40308166c4d8f6330cc2958cb1e545075) (cherry picked from commit 561a9f11a974a447acb3dd03550a05df701a900e)
* hppa: Fix miscompilation of sched_setaffinity() [BZ #18480]John David Anglin2015-08-082-22/+42
| | | | | | | | | | | The attached change fixes the miscompilation of sched_setaffinity() on hppa. This is an old problem that was fixed on other architectures using a similar approach to the attached change. See: https://sourceware.org/ml/libc-hacker/2004-04/msg00016.html Build tested on trunk. Patch has been applied to debian glibc for some time. (cherry picked from commit 04ece7d2dec91fe870c5f1a38032875915f44633)
* microblaze: include unix/sysdep.hMike Frysinger2015-08-071-1/+6
| | | | | | | | The semi-recent SYSCALL_CANCEL inclusion broke microblaze due to the sysdep.h header not including the unix/sysdep.h header. Include it here like all other ports. (cherry picked from commit 5d5de49c3ccd69f65b801f1ca490a0112d1cbd7d)
* hppa: _dl_symbol_address: add missing hidden defMike Frysinger2015-08-071-0/+1
| | | | | | | | | Commit 2a6ad8142d14c998e6c5eb51418aac1f598b621e updated the headers and the common dl-symaddr.c, but missed that hppa has its own dedicated source file for this func. Update that too to fix build errors due to missing exports of the symbol. (cherry picked from commit be144ba68c918a5d7bc964be06fbeb51a0df84fc)
* nptl: fix set-but-unused warning w/_STACK_GROWS_UPMike Frysinger2015-08-052-7/+16
| | | | | | On arches that set _STACK_GROWS_UP, the stacktop variable is declared and set, but never actually used. Refactor the code a bit so that the variable is only declared/set under _STACK_GROWS_DOWN settings.
* disable PIE when checking for PIC defaultKevin F. Quinn2015-08-052-2/+2
| | | | | | | | | | | | | | When the compiler builds PIEs by default, the configure PIC check is confused into thinking PIC code is default. The end result is that we end up with only PIC being produced. Run the configure check with -fno-PIE so that we produce PIC & non-PIC (PIE) objects like normal. 2014-09-09 Kevin F. Quinn <kevquinn@gentoo.org> * configure.ac (libc_cv_pic_default): Pass -fno-PIE. * configure: Regenerated.
* hppa: fix pthread spinlockJohn David Anglin2015-08-052-8/+8
|
* hppa: fix build problems with atomic codeJohn David Anglin2015-08-051-28/+32
| | | | | | Specifically: ../sysdeps/unix/sysv/linux/hppa/bits/atomic.h:68:6: error: can't find a register in class 'R1_REGS' while reloading 'asm'
* arm: fix PIC vs SHARED typosDavid Lamparter2015-08-052-2/+2
| | | | | | | | | | | | | | the logic in setjmp/__longjmp incorrectly tie to "PIC" to figure out whether the code is going into a shared library when it should be using "SHARED". otherwise, building static PIC code goes wrong. https://bugs.gentoo.org/336914 http://sourceware.org/ml/libc-ports/2011-09/msg00018.html 2011-09-19 David Lamparter <equinox-gentoo@diac24.net> * sysdeps/arm/setjmp.S: Change PIC to SHARED. * sysdeps/arm/__longjmp.S: Likewise
* gentoo: disable building in timezone subdirMike Frysinger2015-08-051-1/+1
| | | | We've split this out into the package sys-libs/timezone-data
* gentoo: support running tests under sandboxStephanie J. Lockwood-Childs2015-08-053-3/+3
| | | | | | | | | | | | | | | | | when glibc runs its tests, it does so by invoking the local library loader. in Gentoo, we build/run inside of our "sandbox" which itself is linked against libdl (so that it can load libraries and pull out symbols). the trouble is that when you upgrade from an older glibc to the new one, often times internal symbols change name or abi. this is normally OK as you cannot use libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so we always say "keep all of the glibc libraries from the same build". but when glibc runs its tests, it uses dynamic paths to point to its new local copies of libraries. if the test doesnt use libdl, then glibc doesnt add its path, and when sandbox triggers the loading of libdl, glibc does so from the host system system. this gets us into the case of all libraries are from the locally compiled version of glibc except for libdl.so. http://bugs.gentoo.org/56898
* rtld: do not ignore arch-specific CFLAGSGuy Martin2015-08-051-1/+1
| | | | | | https://bugs.gentoo.org/452184 http://sourceware.org/bugzilla/show_bug.cgi?id=15005 http://sourceware.org/ml/libc-alpha/2013-01/msg00247.html