aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-08-01Deprecate the use of regexp.hZack Weinberg4-18/+39
<regexp.h> (not to be confused with <regex.h>) is an obsolete and frankly horrible regular expression-matching API. It was part of SVID but was withdrawn in Issue 5 (for reference, we're on Issue 7 now). It doesn't do anything you can't do with <regex.h>, and using it involves defining a bunch of macros before including the header. Moreover, the code in regexp.h that uses those macros has been buggy since its creation (in 1996) and no one has noticed, which indicates to me that there are no users. (Specifically, RETURN() is used in a whole bunch of cases where it should have been ERROR().) The header is given a warning and marked deprecated for 2.22. See: https://sourceware.org/ml/libc-alpha/2015-07/msg00862.html and https://sourceware.org/ml/libc-alpha/2015-07/msg00871.html.
2015-07-31Regenerate libc.pot for 2.22 release.Carlos O'Donell2-296/+356
2015-07-30Prevent runtime fail of SSE vector math tests on non SSE4.1 machine.Andrew Senkevich3-4/+8
[BZ #18740] * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags, float-vlen4-arch-ext-cflags): Removed. * math/Makefile (CFLAGS-test-double-vlen2-wrappers.c, CFLAGS-test-float-vlen4-wrappers.c): Likewise.
2015-07-30hppa: add bz entry for pthreadtypes.h fixMike Frysinger2-19/+20
2015-07-30hppa: fix pthreadtypes.h namespace failuresMike Frysinger2-3/+9
The conform tests flag the "aligned" symbol used inside the attributes, so rename it to __aligned__ like other headers.
2015-07-30hppa: Remove custom lowlevellock.h.Torvald Riegel2-334/+4
This untested patch removes the custom lowlevellock.h on hppa. It seems to contain an implementation equivalent to the generic lowlevellock.h.
2015-07-29hppa: sigaction.h: change sa_flags to an intMike Frysinger2-1/+22
This fixes the conform test for the sigaction.h header and makes it match all the other arches.
2015-07-29hppa: fix sysdep.h header setupMike Frysinger3-5/+9
The semi-recent SYSCALL_CANCEL inclusion broke hppa due to the sysdep.h headers not including the unix/sysdep.h headers. Rework the includes so we match the other ports: * hppa/sysdep.h: - Do not include sys/syscall.h as the unix sysdep.h headers do it. - Do not include config.h as libc-symbols.h does it, and it has no #ifdef multiple-include protection, and it breaks when some files do things like #undef __OPTIMIZE__. * sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h: - Drop the generic/sysdep.h as the unix sysdep.h headers include it. * sysdeps/unix/sysv/linux/hppa/sysdep.h: - Change to the unix & core hppa sysdep header stacks. - Undef a few defines that the core headers already set up for us.
2015-07-29hppa: rewrite INLINE_SYSCALLMike Frysinger2-22/+12
The semi-recent SYSCALL_CANCEL macro imposes a slight nuance on the implementation of INLINE_SYSCALL: the nr argument cannot be expanded directly but must be passed on to another macro which may expand it. Most arches don't notice because INLINE_SYSCALL is defined in terms of INTERNAL_SYSCALL which has the additional layer of expansion, but on hppa, it was attempting to expand it directly. That causes build errors like so: ../sysdeps/unix/sysv/linux/sigsuspend.c: In function '__sigsuspend': ../sysdeps/unix/sysv/linux/sigsuspend.c:31:62: error: implicit declaration of function 'LOAD_ARGS___SYSCALL_NARGS' ../sysdeps/unix/sysv/linux/sigsuspend.c:31:304: error: called object 'LOAD_ARGS___SYSCALL_NARGS(set, 8)' is not a function So rewrite hppa's INLINE_SYSCALL to use INTERNAL_SYSCALL like other arches do. This is also a nice clean up as the two macros had quite a bit of duplicated logic.
2015-07-29Extend local PLT reference checkH.J. Lu6-19/+127
On x86, linker in binutils 2.26 and newer consolidates R_*_JUMP_SLOT with R_*_GLOB_DAT relocation against the same symbol. This patch extends local PLT reference check to support alternate relocations. [BZ #18078] * scripts/check-localplt.awk: Support alternate relocations. * scripts/localplt.awk: Also check relocations in DT_RELA/DT_REL sections. * sysdeps/unix/sysv/linux/i386/localplt.data: Mark free and malloc entries with + REL R_386_GLOB_DAT. * sysdeps/x86_64/localplt.data: New file.
2015-07-29Added runtime check for AVX vector math tests.Andrew Senkevich4-1/+34
[BZ #18731] * sysdeps/x86_64/fpu/math-tests-arch.h: Added AVX runtime check. * sysdeps/x86_64/fpu/test-double-vlen4.c: Likewise. * sysdeps/x86_64/fpu/test-float-vlen8.c: Likewise.
2015-07-28ia64: drop __tls_get_addr from expected ld.so plt usageMike Frysinger2-4/+7
This file was updated with an educated guess as to the symbols needed, but on ia64, we don't have __tls_get_addr calls, so drop it from the list.
2015-07-28ia64: atomic.h: fix atomic_exchange_and_add 64bit handlingMike Frysinger2-3/+6
Way back in 2005 the atomic_exchange_and_add function was cleaned up to avoid the explicit size checking and instead let gcc handle things itself. Unfortunately that change ended up leaving beyond a cast to int, even when the incoming value was a long. This has flown under the radar for a long time due to the function not being heavily used in the tree (especially as a full 64bit field), but a recent change to semaphores made some nptl tests fail reliably. This is due to the code packing two 32bit values into one 64bit variable (where the high 32bits contained the number of waiters), and then the whole variable being atomically updated between threads. On ia64, that meant we never atomically updated the count, so sometimes the sem_post would not wake up the waiters.
2015-07-28ia64: clean up old kernel headers cruftMike Frysinger2-4/+5
This define made more sense in the pre-sanitized kernel headers days, but since we require kernel versions that are sanitized, we don't need this hack anymore.
2015-07-27pwd.h: revert __nonnull markings on putpwent [BZ #18641]Mike Frysinger2-1/+6
This function actually checks for NULL arguments and the API has been tenatively documented as using EINVAL in that case. We can debate leaving it this way, but it should be done after the pending release.
2015-07-27Mark bug 2981 (elf/tst-audit* fail on MIPS) as fixed.Joseph Myers2-19/+22
Changes in support of -fno-plt also cause the elf/tst-audit* tests to start passing on MIPS. This patch duly marks the relevant bug as fixed in ChangeLog and NEWS.
2015-07-27Fix spurious conform test failuresAndreas Schwab2-2/+6
2015-07-26Fixes extern protected data handling testcases elf/tst-protected1aChung-Lin Tang3-1/+10
and elf/tst-protected1b for Nios II.
2015-07-26Add #include <string.h> to nptl/tst-join7mod.c to silence GCC warnings.Chung-Lin Tang2-0/+5
2015-07-25Update Nios II ulps file.Chung-Lin Tang2-41/+102
2015-07-24Fix order of arguments to rt_sigprocmask syscall when setting the signal maskChung-Lin Tang3-6/+13
in setcontext/swapcontext.
2015-07-24NaCl: Remove bogus O_SHLOCK, O_EXLOCK definitions.Roland McGrath2-4/+4
2015-07-24Use IE model for static variables in libc.so, libpthread.so and rtldSiddhesh Poyarekar6-9/+136
The recently introduced TLS variables in the thread-local destructor implementation (__cxa_thread_atexit_impl) used the default GD access model, resulting in a call to __tls_get_addr. This causes a deadlock with recent changes to the way TLS is initialized because DTV allocations are delayed and hence despite knowing the offset to the variable inside its TLS block, the thread has to take the global rtld lock to safely update the TLS offset. This causes deadlocks when a thread is instantiated and joined inside a destructor of a dlopen'd DSO. The correct long term fix is to somehow not take the lock, but that will need a lot deeper change set to alter the way in which the big rtld lock is used. Instead, this patch just eliminates the call to __tls_get_addr for the thread-local variables inside libc.so, libpthread.so and rtld by building all of their units with -mtls-model=initial-exec. There were concerns that the static storage for TLS is limited and hence we should not be using it. Additionally, dynamically loaded modules may result in libc.so looking for this static storage pretty late in static binaries. Both concerns are valid when using TLSDESC since that is where one may attempt to allocate a TLS block from static storage for even those variables that are not IE. They're not very strong arguments for the traditional TLS model though, since it assumes that the static storage would be used sparingly and definitely not by default. Hence, for now this would only theoretically affect ARM architectures. The impact is hence limited to statically linked binaries that dlopen modules that in turn load libc.so, all that on arm hardware. It seems like a small enough impact to justify fixing the larger problem that currently affects everything everywhere. This still does not solve the original problem completely. That is, it is still possible to deadlock on the big rtld lock with a small tweak to the test case attached to this patch. That problem is however not a regression in 2.22 and hence could be tackled as a separate project. The test case is picked up as is from Alex's patch. This change has been tested to verify that it does not cause any issues on x86_64. ChangeLog: [BZ #18457] * nptl/Makefile (tests): New test case tst-join7. (modules-names): New test case module tst-join7mod. * nptl/tst-join7.c: New file. * nptl/tst-join7mod.c: New file. * Makeconfig (tls-model): Pass -ftls-model=initial-exec for all translation units in libc.so, libpthread.so and rtld.
2015-07-24Update powerpc-fpu libm-test-ulps.Adhemerval Zanella2-56/+156
2015-07-24Fixed several libmvec bugs found during testing on KNL hardware.Andrew Senkevich16-223/+220
AVX512 IFUNC implementations, implementations of wrappers to AVX2 versions and KNL expf implementation fixed. * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: Fixed AVX512 IFUNC. * sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_log8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core.S: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core.S: Likewise. * sysdeps/x86_64/fpu/svml_d_wrapper_impl.h: Fixed wrappers to AVX2. * sysdeps/x86_64/fpu/svml_s_wrapper_impl.h: Likewise. * sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core_avx512.S: Fixed KNL implementation.
2015-07-24[ARM][BZ #17711] Fix extern protected data handlingSzabolcs Nagy3-3/+12
Fixes elf/tst-protected1a and elf/tst-protected1b tests. Depends on a gcc patch that makes protected visibility data non-local: https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01871.html and on a binutils patch so R_*_GLOB_DAT relocs are used for it: https://sourceware.org/ml/binutils/2015-07/msg00247.html
2015-07-24[AArch64][BZ #17711] Fix extern protected data handlingSzabolcs Nagy3-1/+11
Fixes elf/tst-protected1a and elf/tst-protected1b tests. Depends on a gcc patch that makes protected visibility data non-local: https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01871.html and on a binutils patch so R_*_GLOB_DAT relocs are used for it: https://sourceware.org/ml/binutils/2015-07/msg00246.html
2015-07-24Mention dl_load_lock by name in the commentsSiddhesh Poyarekar2-9/+15
Mention dl_load_lock by name instead of just 'load lock' in the comments. This makes it unambigious which lock we're talking about.
2015-07-23Make sysdeps/posix bring in login subdir.Roland McGrath7-25/+54
2015-07-23Add SIGWINCH to generic <bits/signum.h>.Roland McGrath2-4/+15
2015-07-23NaCl: Fix missing getdtablesize symbol.Roland McGrath3-0/+7
2015-07-23conform/linknamespace: whitelist matherrf/matherrlMike Frysinger2-2/+8
glibc supports the deprecated matherr hook for math error reporting. The conform tests take this into consideration and whitelist this symbol when running linknamespace tests. The ia64 libm code has long provided two additional hooks in this space: matherrf (for floats) matherrl (for long doubles) Which causes the conform tests to fail with chains that all look like: [initial] __atan2 -> [libm.a(e_atan2.o)] __libm_error_support -> [libm.a(libm_error.o)] matherrf We can't (losslessly) redirect existing usage of these funcs to matherr because the structure passed in is different -- matherr uses a struct with doubles while matherrf/matherrl use floats and long doubles respectively. Plus, this has been part of the exported ABI since glibc-2.2.3, so it doesn't feel right to change it so late. Until we get around to obsoleting matherr entirely, whitelist these two additional ia64 symbols.
2015-07-23ia64: sigaction.h: fix sa_flags orderingMike Frysinger2-1/+6
Since ia64 is little endian, sa_flags has to come before the padding when splitting it from 64bits to 32bits. Reported-by: Joseph Myers <joseph@codesourcery.com>
2015-07-23Also use l_tls_dtor_count to decide on object unload (BZ #18657)Siddhesh Poyarekar8-36/+176
When an TLS destructor is registered, we set the DF_1_NODELETE flag to signal that the object should not be destroyed. We then clear the DF_1_NODELETE flag when all destructors are called, which is wrong - the flag could have been set by other means too. This patch replaces this use of the flag by using l_tls_dtor_count directly to determine whether it is safe to unload the object. This change has the added advantage of eliminating the lock taking when calling the destructors, which could result in a deadlock. The patch also fixes the test case tst-tls-atexit - it was making an invalid dlclose call, which would just return an error silently. I have also added a detailed note on concurrency which also aims to justify why I chose the semantics I chose for accesses to l_tls_dtor_count. Thanks to Torvald for his help in getting me started on this and (literally) teaching my how to approach the problem. Change verified on x86_64; the test suite does not show any regressions due to the patch. ChangeLog: [BZ #18657] * elf/dl-close.c (_dl_close_worker): Don't unload DSO if there are pending TLS destructor calls. * include/link.h (struct link_map): Add concurrency note for L_TLS_DTOR_COUNT. * stdlib/cxa_thread_atexit_impl.c (__cxa_thread_atexit_impl): Don't touch the link map flag. Atomically increment l_tls_dtor_count. (__call_tls_dtors): Atomically decrement l_tls_dtor_count. Avoid taking the load lock and don't touch the link map flag. * stdlib/tst-tls-atexit-nodelete.c: New test case. * stdlib/Makefile (tests): Use it. * stdlib/tst-tls-atexit.c (do_test): dlopen tst-tls-atexit-lib.so again before dlclose. Add conditionals to allow tst-tls-atexit-nodelete test case to use it.
2015-07-21ia64: msg.h: fix msg_qnum/msg_qbytes typesMike Frysinger2-4/+18
These two fields have dedicated types, so change the ia64 header to match all the other arches. This fixes the conform test for msg.h.
2015-07-21ia64: stat.h: rename pad0 to __glibc_reserved0Mike Frysinger2-2/+8
This fixes the conform test for the stat.h header and makes it match all the other arches.
2015-07-21ia64: sifaction.h: change sa_flags to an intMike Frysinger2-1/+8
This fixes the conform test for the sigaction.h header and makes it match all the other arches.
2015-07-21ia64: siginfo.h: delete siginfo nameMike Frysinger2-1/+6
This fixes the conform test for the siginfo.h header and makes it match all the other arches.
2015-07-21NaCl: Use only nacl_irt_dev_filename, never nacl_irt_filename.Roland McGrath4-4/+7
2015-07-21Add abilist files and NEWS item for arm-nacl port.Roland McGrath12-0/+2538
2015-07-21tile: Fix BZ #18508 (makecontext yield infinite backtrace)Chris Metcalf3-4/+13
It turns out tile suffered from the same problem as S390. However, disabling CFI information for the __startcontext on tile was not sufficient to fix the problem; I think the backtracer will just blindly try to follow the link register (lr) in that case. Instead, the change adds a cfi_undefined directive for "lr" and then arranges to call __startcontext directly when the new context starts, rather than just synthesizing a return to it. In addition to being a bit easier now to understand the control flow, this also allows the cfi_undefined directive to be placed in a way that causes it to be in force at the address that the "lr" from the called function points to.
2015-07-21locale: Remove obsolete repertoire map referencesMarko Myllynen84-96/+87
repertoire maps and character mnemonics were used early in the glibc i18n/l10n effort but were quickly deprecated in favor of Unicode code points. According to ChangeLog, the in-tree repertoire maps were removed 2000-07-07 but some stray references remain even today. The patch below removes them.
2015-07-21locale: Do not define lang_ab for tcy_IN and bhb_INKhem Raj3-2/+8
After renaming localedef now complains and build fails LC_ADDRESS: field `lang_ab' must not be defined earlier the names were similar to lang_ab definitions 'tu' or 'bh' but after rename they are not.
2015-07-20Reflect renaming of bh_IN and tu_IN in SUPPORTED file [BZ #17475]Khem Raj4-6/+17
2015-07-20sparc: fix sigaction for 32bit builds [BZ #18694]Mike Frysinger3-1/+16
Commit a059d359d86130b5fa74e04a978c8523a0293f77 changed the sigaction struct to pass conform tests, but it ended up also changing the ABI for 32 bit builds. For 64 bit builds, changing the long to two ints works, but for 32 bit builds, it inserts 4 extra bytes. This leads to many packages randomly failing like bash that spews things like: configure: line 471: wait_for: No record of process 0 Bracket the new member by a wordsize check to fix the ABI for 32bit.
2015-07-21Remove Linuxism from tst-tls-atexitSiddhesh Poyarekar3-43/+64
The tst-tls-atexit test case searches for its module in /proc/PID/maps to verify that it is unloaded, which is a Linux-specific test. This patch makes the test generic by looking for the library in the link map list in the _r_debug structure. Verified that the test continues to succeed on x86_64. There is a bug in the test case where it calls dlclose once again, which is actually incorrect but still manages to unload the DSO thanks to an existing bug in __tls_call_dtors. This will be fixed in a later patch which also fixes up the __cxa_thread_atexit_impl implementation. I have added a FIXME comment to that call momentarily, which I will remove when I fix the problem. * stdlib/tst-tls-atexit-lib.c (do_foo): Rename to reg_dtor. * stdlib/tst-tls-atexit.c: (is_loaded): New function. (spawn_thread): New function. (load): Rename to reg_dtor_and_close. Move dlopen to... (do_test): ... here. Use IS_LOADED to test for its availability.
2015-07-21m68k: update libm test ULPsAndreas Schwab2-133/+315
2015-07-20tst-leaks: raise timeout to 5 secondsChris Metcalf2-0/+5
This test takes about 2.3 seconds on my tilegx system, and so times out. Bump it up to 5 seconds instead.
2015-07-20Add si_addr_bnd to _sigfault in x86 struct siginfoH.J. Lu3-1/+16
X86 struct siginfo in kernel 3.19 has been changed by commit ee1b58d36aa1b5a79eaba11f5c3633c88231da83 Author: Qiaowei Ren <qiaowei.ren@intel.com> Date: Fri Nov 14 07:18:19 2014 -0800 mpx: Extend siginfo structure to include bound violation information This patch adds new fields about bound violation into siginfo structure. si_lower and si_upper are respectively lower bound and upper bound when bound violation is caused. This patch updates x86 struct siginfo to enable GDB with MPX support. [BZ #18696] * sysdeps/unix/sysv/linux/x86/bits/siginfo.h (_sigfault): Add si_addr_bnd. (si_lower): New. (si_upper): Likewise.
2015-07-16Regenerate SPARC ULPs.David S. Miller2-239/+393
* sysdeps/sparc/fpu/libm-test-ulps: Regenerated.