about summary refs log tree commit diff
path: root/sysdeps/arm
Commit message (Collapse)AuthorAgeFilesLines
...
* Require autoconf 2.69H.J. Lu2014-09-292-3/+3
| | | | | | | | | | | | | | | | | | | * aclocal.m4: Require autoconf 2.69. * configure: Regenerated. * sysdeps/aarch64/configure: Likewise. * sysdeps/alpha/configure: Likewise. * sysdeps/arm/armv7/configure: Likewise. * sysdeps/arm/configure: Likewise. * sysdeps/ia64/configure: Likewise. * sysdeps/mach/configure: Likewise. * sysdeps/mips/configure: Likewise. * sysdeps/s390/configure: Likewise. * sysdeps/unix/sysv/linux/mips/configure: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure: Likewise. * sysdeps/alpha/configure.ac: Avoid empty lines at the end of file. * sysdeps/ia64/configure.ac: Likewise.
* Remove unnecessary uses of NOT_IN_libcSiddhesh Poyarekar2014-08-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a IS_IN_* macro is defined, then NOT_IN_libc is always defined, except obviously for IS_IN_libc. There's no need to check for both. Verified on x86_64 and i686 that the source is unchanged. * include/libc-symbols.h: Remove unnecessary check for NOT_IN_libc. * nptl/pthreadP.h: Likewise. * sysdeps/aarch64/setjmp.S: Likewise. * sysdeps/alpha/setjmp.S: Likewise. * sysdeps/arm/sysdep.h: Likewise. * sysdeps/i386/setjmp.S: Likewise. * sysdeps/m68k/setjmp.c: Likewise. * sysdeps/posix/getcwd.c: Likewise. * sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise. * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise. * sysdeps/s390/s390-32/setjmp.S: Likewise. * sysdeps/s390/s390-64/setjmp.S: Likewise. * sysdeps/sh/sh3/setjmp.S: Likewise. * sysdeps/sh/sh4/setjmp.S: Likewise. * sysdeps/unix/alpha/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/aarch64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/tile/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. * sysdeps/x86_64/setjmp.S: Likewise.
* Fix performance issue in misaligned strcpy.Wilco2014-08-071-3/+3
|
* ARM: Move PTR_MANGLE et al out of Linux-specific file.Roland McGrath2014-08-011-0/+48
|
* [BZ #17078] ARM: R_ARM_TLS_DESC prelinker supportMaciej W. Rozycki2014-07-171-3/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a change to the dynamic linker to add prelinker support for the R_ARM_TLS_DESC relocation. Two cases can be considered here, the usual one where lazy binding is in use and the less frequent one, where immediate binding is requested via the use of the DF_BIND_NOW dynamic flag (e.g. by using the GNU linker's "-z now" option). This change only handles the first case. In this scenario the prelinker does what the dynamic linker would do, that is it preinitialises R_ARM_TLS_DESC relocations with a pointer to the lazy specialization as provided with the DT_TLSDESC_PLT dynamic tag. A conflict is additionally created and in the conflict resolution path the dynamic linker complements the work by initialising the object's pointer as indicated by the DT_TLSDESC_GOT dynamic tag to the linker's internal lazy specialization worker function and also providing the associated link map in the second entry of the GOT. This step is required, because if prelinking is successful at the run time, then the dynamic linker's elf_machine_runtime_setup() function isn't called that would normally do so. The second case remains unresolved, because support for that scenario has not been implemented in the prelinker. In this case the lazy specialization is unavailable and the DT_TLSDESC_PLT dynamic tag is not present. The prelinker could assume the common case of static specialization and resolve the relocation, but that would require the exposure of dynamic linker's specialization worker function. Furthermore the dynamic linker would have to handle the relocation in the conflict resolution path and see if the dynamic specialization should be used instead. This however would require access to data structures currently not made available to the conflict resolution path and therefore a redesign of this part of the dynamic linker. Alternatively the prelinker could defer all processing to the dynamic linker's conflict resolution path, but that would require similar access to the said data structures. Therefore the prelinker issues an error instead and the dynamic linker has assertions to check that DT_TLSDESC_PLT and DT_TLSDESC_GOT are in use in its conflict resolution path. This change resolves all TLS failures in the prelinker testsuite, as noted in the bug report, as well as the small test case provided there. Unfortunately we don't seem to have any hooks to factor in the prelinker (if present on a system) to testing, so at this time this fix has to rely on using the prelinker test suite and enabling TLS descriptors there for coverage. [BZ #17078] * sysdeps/arm/dl-machine.h (elf_machine_rela) [RESOLVE_CONFLICT_FIND_MAP]: Handle R_ARM_TLS_DESC relocation. (elf_machine_lazy_rel): Handle prelinked R_ARM_TLS_DESC entries.
* Move architecture shlib-versions files to Linux-specific directories.Joseph Myers2014-07-171-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Various architectures have files such as sysdeps/<arch>/shlib-versions whose contents are in fact entirely Linux-specific, relating only to the symbol / shared library versions for the port to Linux on that architecture, when any future port to a different OS on that architecture would use the symbol version of the glibc release it goes in, as standard for new ports. This patch moves such files under sysdeps/unix/sysv/linux/, merging in the contents of sysdeps/<arch>/nptl/shlib-versions in the process. The only bits not moved are those relating to libgcc_s versions, which don't appear OS-specific in the same way that glibc's symbol versions so. It deliberately does not change the regular expressions given for matching configurations in each file; some match only Linux although not Linux-specific, or match other OSes although Linux-specific. It is with a view to at least the following further cleanups: * Move architecture-specific content from the toplevel shlib-versions and nptl/shlib-versions into sysdeps shlib-versions files, so eliminating another difference between ex-ports and non-ex-ports architectures. * Likewise, for OS-specific content in shlib-versions files. * At that point, the first field in shlib-versions files (the regular expression matching a configuration triplet) should be redundant, so eliminate that field and leave shlib-versions selection working purely on a sysdeps basis (with limited use of %ifdef in shlib-versions files when needed) rather than having its own separate mechanism to select what configuration information is relevant. * Move the build of gnu/lib-names.h to a similar mechanism to that used for gnu/stubs.h (each library build installing a version of the header specifically for that build), so we can eliminate the duplication of soname information in the makefiles and get it purely from shlib-versions files again. There may be other cleanups possible as well (in particular, I'm not sure that all cases where the same "Earliest symbol set" information is repeated for many different libraries actually should need to repeat it rather than specifying it just once for DEFAULT for the given configuration, and separately specifying any non-default choices of soname). Tested x86_64 that the installed shared libraries are unchanged by this patch. * sysdeps/aarch64/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/aarch64/shlib-versions: ... here. * sysdeps/alpha/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/alpha/shlib-versions: ... here. * sysdeps/arm/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/arm/shlib-versions: ... here. * sysdeps/hppa/shlib-versions: Move all contents except for libgcc_s entry to ... * sysdeps/unix/sysv/linux/hppa/shlib-versions: ... here. Merge in entry from ... * sysdeps/hppa/nptl/shlib-versions: ... here. Remove file. * sysdeps/ia64/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/ia64/shlib-versions: ... here. Merge in entry from ... * sysdeps/ia64/nptl/shlib-versions: ... here. Remove file. * sysdeps/m68k/coldfire/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions: ... here. * sysdeps/microblaze/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/microblaze/shlib-versions: ... here. * sysdeps/mips/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/mips/shlib-versions: ... here. Merge in entry from ... * sysdeps/mips/nptl/shlib-versions: ... here. Remove file. * sysdeps/tile/shlib-versions: Move to ... * sysdeps/unix/sysv/linux/tile/shlib-versions: ... here. * sysdeps/unix/sysv/linux/x86_64/64/shlib-versions: Merge in entry from ... * sysdeps/x86_64/64/shlib-versions: ... here. Remove file. * sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions: Merge in entry from ... * sysdeps/x86_64/x32/shlib-versions: ... here. Remove file.
* ARM: Fix compiler warnings from atomic.hWill Newton2014-07-171-3/+3
| | | | | | | | | | | | | | | | __arch_compare_and_exchange_bool_*_int return a boolean so in the dummy implementations for 8, 16 and 64 bits return zero rather than oldval. Zero is used rather than TRUE or FALSE to avoid needing to including any headers for these dummy functions. ChangeLog: 2014-07-17 Will Newton <will.newton@linaro.org> * sysdeps/arm/bits/atomic.h (__arch_compare_and_exchange_bool_8_int): Evaluate to zero. (__arch_compare_and_exchange_bool_16_int): Likewise. (__arch_compare_and_exchange_bool_64_int): Likewise.
* ARM: Clean up EABI-related configuryRoland McGrath2014-07-164-32/+62
|
* Fix -Wundef warnings for SHAREDWill Newton2014-07-091-1/+1
| | | | | | | | | | | | | | | | | The definition of SHARED is tested with #ifdef pretty much everywhere apart from these few places. The tlsdesc.c code seems to be copy and pasted to a few architectures and there is one instance in the hppa startup code. ChangeLog: 2014-07-09 Will Newton <will.newton@linaro.org> * sysdeps/aarch64/tlsdesc.c (_dl_unmap): Test SHARED with #ifdef. * sysdeps/arm/tlsdesc.c (_dl_unmap): Likewise. * sysdeps/i386/tlsdesc.c (_dl_unmap): Likewise. * sysdeps/x86_64/tlsdesc.c (_dl_unmap): Likewise. * sysdeps/hppa/start.S (_start): Likewise.
* ARM: Define ELF_MACHINE_NO_RELWill Newton2014-07-041-0/+1
| | | | | | | | | | Fix a -Wundef warning on ARM. ChangeLog: 2014-07-04 Will Newton <will.newton@linaro.org> * sysdeps/arm/dl-machine.h (ELF_MACHINE_NO_REL): Define.
* Regenerate ARM libm-test-ulps.Joseph Myers2014-06-301-56/+905
| | | | | | | | | | | This patch regenerates libm-test-ulps for ARM. As before it may be useful for someone building for a configuration with VFMA enabled to do a followup regeneration for any additional ulps in that configuration. Committed. * sysdeps/arm/libm-test-ulps: Regenerated.
* ARM: Split Linuxism out of sysdeps/arm/nptl/tls.hRoland McGrath2014-06-301-15/+2
|
* Remove relro configure test.Joseph Myers2014-06-272-16/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes the configure test for working -z relro. The use of -z relro in Makeconfig became unconditional with commit 2e6ab1df44c412bb9d30b26a4d8a679150a7e375 Author: Ulrich Drepper <drepper@redhat.com> Date: Sat Oct 28 06:44:04 2006 +0000 Remove conditional code which now is unnecessary. (commit reference from git://repo.or.cz/glibc/history), so since then the configure test has not controlled anything about how glibc is built - simply about whether configure succeeds and allows a build to be attempted. The test for whether the option did something useful (as opposed to whether it exists - which we can certainly just assume by now) was originally added in <https://sourceware.org/ml/libc-hacker/2004-09/msg00069.html> to disable the option in a case when it did nothing useful on ia64 (as a result of something deliberate in the linker on ia64). Since 2006 that disabling has been of no effect, and given that the current test does not set libc_relro_required for ia64, it does nothing whatever useful for the original motivating case. Also at around the same time in 2006 the test was made to give an error for missing or broken -z relro support on various architectures. So effectively all the test does now is verify that, on certain architectures, the linker has not been changed deliberately to make the option ineffective. I see no apparent reason why such a change should be expected, or why the build should be stopped if it were to be made (any more than we disallow build on ia64); I think we can trust binutils patch review to point out the consequences of any change to COMMONPAGESIZE setting. The only thing that might now make sense would be disabling the -z relro use on an architecture-specific basis if there were an architecture-specific reason to consider that to make sense; it would be for the ia64 maintainer to decide if that makes sense for ia64 at present, but I think that could be done through sysdeps Makefiles - no special configure tests needed. Tested for x86_64 that this patch makes no change to the installed shared libraries. Together with <https://sourceware.org/ml/libc-alpha/2014-06/msg00788.html> (pending review) this substantially eliminates architecture-specific cases from architecture-independent configure.ac files. There remains an i386 case in sysdeps/mach/hurd/configure.ac that should properly move to the i386 subdirectory. (There are also OS-specific cases outside OS-specific directories; in principle I think should should also move.) * configure.ac (libc_commonpagesize): Remove variable. (libc_relro_required): Likewise. (libc_cv_z_relro): Remove configure test. * configure: Regenerated. * sysdeps/aarch64/preconfigure (libc_commonpagesize): Do not set variable. (libc_relro_required): Likewise. * sysdeps/alpha/preconfigure (libc_commonpagesize): Likewise. (libc_relro_required): Likewise. * sysdeps/arm/preconfigure.ac (libc_commonpagesize): Likewise. (libc_relro_required): Likewise. * sysdeps/arm/preconfigure: Regenerated. * sysdeps/ia64/preconfigure: Remove file. * sysdeps/tile/preconfigure (libc_commonpagesize): Do not set variable. (libc_relro_required): Likewise.
* ARM: Move more aeabi routine magic out of Linux-specific directoriesRoland McGrath2014-06-265-3/+31
|
* Add missing #include <fpu_control.h> to ARM fesetenv/feupdateenv.Roland McGrath2014-06-262-0/+2
|
* Remove configure tests for assembler CFI support.Joseph Myers2014-06-262-47/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes configure tests for assembler CFI support (and thereby eliminates an architecture-specific case in the main configure.ac), instead assuming that support is present unconditionally. The main test was added in 2003 around the time CFI support was added to the assembler. cfi_personality and cfi_lsda support were added to the assembler in 2006. cfi_sections support was added in 2009, a few weeks before binutils 2.20 was released; it's in 2.20, the minimum supported version, so even that configure test is obsolete. Tested x86_64 that the installed shared libraries are unchanged by this patch. * configure.ac (libc_cv_asm_cfi_directives): Remove configure test. * configure: Regenerated. * config.h.in (HAVE_ASM_CFI_DIRECTIVES): Remove macro undefine. * sysdeps/arm/configure.ac (libc_cv_asm_cfi_directive_sections): Remove configure test. * sysdeps/arm/configure: Regenerated. * sysdeps/nptl/configure.ac: Do not check libc_cv_asm_cfi_directives. * sysdeps/nptl/configure: Regenerated. * sysdeps/x86_64/nptl/configure.ac: Remove file. * sysdeps/x86_64/nptl/configure: Remove generated file. * b/sysdeps/generic/sysdep.h [HAVE_ASM_CFI_DIRECTIVES]: Make code unconditional. [!HAVE_ASM_CFI_DIRECTIVES]: Remove conditional code.
* Optimize fesetenvWilco2014-06-241-15/+20
| | | | | | | | | Improve fesetenv to use an optimized implementation similar to feupdateenv. 2014-06-24 Wilco <wdijkstr@arm.com> * sysdeps/arm/fesetenv.c (fesetenv): Optimize implementation.
* Add _FPU_MASK_RM and use it instead of FE_TOWARDZERO.Wilco2014-06-244-13/+12
| | | | | | | | | | | | | 2014-06-24 Wilco <wdijkstr@arm.com> * sysdeps/arm/fpu_control.h (_FPU_MASK_RM): Define. * sysdeps/arm/fenv_private.h (libc_fesetround_vfp) (libc_feholdexcept_setround_vfp) (libc_feholdsetround_vfp) (libc_feresetround_vfp) (libc_feholdsetround_vfp_ctx) (libc_feresetround_vfp_ctx): Use _FPU_MASK_RM. * sysdeps/arm/fesetround.c (fesetround): Use _FPU_MASK_RM. * sysdeps/arm/get-rounding-mode.h (get_rounding_mode): Use _FPU_MASK_RM.
* Remove an unused include.Wilco2014-06-241-1/+0
| | | | | | 2014-06-24 Wilco <wdijkstr@arm.com> * sysdeps/arm/fsetexcptflg.c (fesetexceptflag): Remove unused include.
* Cleanup fenv implementationWilco2014-06-244-4/+0
| | | | | | | | | | | Remove some spaces before libm_hidden_def. 2014-06-24 Wilco <wdijkstr@arm.com> * sysdeps/arm/feholdexcpt.c (feholdexcept): Remove space. * sysdeps/arm/fesetenv.c (fesetenv): Remove space. * sysdeps/arm/fesetround.c (fesetround): Remove space. * sysdeps/arm/fraiseexcpt.c (feraiseexcept): Remove space.
* Rewrite feupdateenvWilco2014-06-241-6/+38
| | | | | | | | | | | | This patch rewrites feupdateenv to improve performance by avoiding unnecessary FPSCR reads/writes. It fixes bug 16918 by passing the correct return value. 2014-06-24 Wilco <wdijkstr@arm.com> [BZ #16918] * sysdeps/arm/feupdateenv.c (feupdateenv): Rewrite to reduce FPSCR accesses and fix return value.
* Speed up the ARM fenv implementation by avoiding unnecessary FPSCRWilco2014-06-245-23/+29
| | | | | | | | | | | | | writes if the FPSCR remains unchanged. 2014-06-24 Wilco <wdijkstr@arm.com> * sysdeps/arm/fclrexcpt.c (feclearexcept): Optimize to avoid unnecessary FPSCR writes. * sysdeps/arm/fedisblxcpt.c (fedisableexcept): Likewise. * sysdeps/arm/feenablxcpt.c (feenableexcept): Likewise. * sysdeps/arm/fsetexcptflg.c (fesetexceptflag): Likewise. * sysdeps/arm/setfpucw.c (__setfpucw): Likewise.
* Use libc calls defined by fenv_private.h to implement several fenv functionsWilco2014-06-246-102/+64
| | | | | | | | | | | | | | | | rather than duplicating functionality. To make this work for softfp builds, ensure functions in fenv_private are not conditionally compiled. 2014-06-24 Wilco <wdijkstr@arm.com> * sysdeps/arm/fegetround.c (fegetround): Call get_rounding_mode. * sysdeps/arm/feholdexcpt.c (feholdexcept): Call libc_feholdexcept_vfp. * sysdeps/arm/fesetround.c (fesetround): Call libc_fesetround_vfp. * sysdeps/arm/fgetexcptflg.c (fegetexceptflag): Call libc_fetestexcept_vfp. * sysdeps/arm/ftestexcept.c (fetestexcept): Call libc_fetestexcept_vfp. * sysdeps/arm/fenv_private.h: Move libc_*_vfp functions outside of __SOFTFP__ ifdef so that they can be built for softfp.
* [BZ #17075] ARM: Fix immediate calculation of R_ARM_TLS_DESCMaciej W. Rozycki2014-06-2010-1/+149
| | | | | | This fixes the calculation of R_ARM_TLS_DESC relocations for lazy global symbol references, i.e. created with `-z lazy' in effect with the static linker, where immediate resolution is requested with LD_BIND_NOW.
* Add adaptive elision to rwlocksAndi Kleen2014-06-131-0/+2
| | | | | | | | | | | | | | | | | | | This patch relies on the C version of the rwlocks posted earlier. With C rwlocks it is very straight forward to do adaptive elision using TSX. It is based on the infrastructure added earlier for mutexes, but uses its own elision macros. The macros are fairly general purpose and could be used for other elision purposes too. This version is much cleaner than the earlier assembler based version, and in particular implements adaptation which makes it safer. I changed the behavior slightly to not require any changes in the test suite and fully conform to all expected behaviors (generally at the cost of not eliding in various situations). In particular this means the timedlock variants are not elided. Nested trylock aborts.
* ARM: Define TLS_DEFINE_INIT_TPRoland McGrath2014-06-091-0/+2
|
* Remove second argument from TLS_INIT_TP macroAndreas Schwab2014-05-271-1/+1
|
* ARM: Fix handling of concurrent TLS descriptor resolutionWill Newton2014-05-271-19/+12
| | | | | | | | | | | | | | | | | | | | The current code for handling concurrent resolution says that the ABI for _dl_tlsdesc_resolve_hold is the same as that of _dl_tlsdesc_lazy_resolver. However _dl_tlsdesc_resolve_hold is called from the trampoline directly rather than the lazy resolver stub so, for example, r2 has not been pushed so does not needed to be restored. This fixes an intermittent failure in nptl/tst-tls3 when building glibc for arm-linux-gnueabihf with -mtls-dialect=gnu2. ChangeLog: 2014-05-27 Will Newton <will.newton@linaro.org> [BZ #16990] * sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_resolve_hold): Save and restore r2 rather than just restoring.
* Consistently use $(elf-objpfx).Joseph Myers2014-05-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As previously noted <https://sourceware.org/ml/libc-alpha/2013-05/msg00696.html>, $(elf-objpfx) and $(elfobjdir) are redundant and should be consolidated. This patch consolidates on $(elf-objpfx) (for consistency with $(csu-objpfx)), also changing direct uses of $(common-objpfx)elf/ to use $(elf-objpfx). Tested x86_64, including that installed shared libraries are unchanged by the patch. * Makeconfig [$(build-hardcoded-path-in-tests) = yes] (rtld-tests-LDFLAGS): Use $(elf-objpfx) instead of $(common-objpfx)elf/. (link-libc-before-gnulib): Likewise. (elfobjdir): Remove variable. * Makefile (install): Use $(elf-objpfx) instead of $(common-objpfx)elf/. * Makerules (link-libc-args): Use $(elf-objpfx) instead of $(elfobjdir)/. (link-libc-deps): Likewise. ($(common-objpfx)libc.so): Likewise. ($(common-objpfx)linkobj/libc.so): Likewise. [$(cross-compiling) = no] (symbolic-link-prog): Use $(elf-objpfx) instead of $(common-objpfx)elf/. (symbolic-link-list): Likewise. * iconvdata/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Likewise. * sysdeps/arm/Makefile (gnulib-arch): Use $(elf-objpfx) instead of $(elfobjdir)/. (static-gnulib-arch): Likewise. * sysdeps/s390/s390-64/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Use $(elf-objpfx) instead of $(common-objpfx)elf/. localedata/ChangeLog: * Makefile (LOCALEDEF): Use $(elf-objpfx) instead of $(common-objpfx)elf/.
* Revert "ARM: Improve fenv implementation"Marcus Shawcroft2014-05-1912-75/+99
| | | | This reverts commit c0c08d02c82275353f5c556f935a1a01714d9d7f.
* ARM: soft-fp NaN representation correctionMaciej W. Rozycki2014-05-161-3/+3
| | | | | | | | | | | | | | | | Commit 7d92b78723848ae616709eb8f0191ea067025b18 [Fix ARM NAN fraction bits.] removed all the bits set from NANFRAC macros and, when propagated to libgcc, regressed gcc.dg/torture/builtin-math-7.c on soft-fp arm-eabi targets, currently ARMv6-M (`-march=armv6-m -mthumb') only. This is because when used to construct a NaN in the semi-raw mode, they now build an infinity instead. Consequently operations such as (Inf - Inf) now produce Inf rather than NaN. The change worked for the original test case, posted with PR libgcc/60166, because division is made in the canonical mode, where the quiet bit is set separately, from the fp class. This change brings the quiet bit back to these macros, making semi-raw mode calculations produce the expected results again.
* ARM: Improve fenv implementationWilco2014-05-1512-99/+75
|
* ARM: Improve fenv implementationWilco2014-05-1516-233/+171
|
* Clean up ARM old-ABI symbol versioning relics.Joseph Myers2014-05-146-51/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch cleans up some symbol versioning code in the ARM port that exists only as relics of the old-ABI port, which was removed some time ago. The minimum symbol version in the ARM port is GLIBC_2.4 (the version where the EABI port was introduced). Thus, any SHLIB_COMPAT conditionals where the later version is 2.4 or later are obsolete and can be removed. In addition, there is no need to set symbol versions before 2.4 explicitly if the symbols would have a version of 2.4 by default anyway. This includes most of the entries in sysdeps/unix/sysv/linux/arm/Versions: those for GLIBC_2.0 are for libgcc unwind functions that aren't actually in ARM EABI glibc at all, while those for GLIBC_2.2 and GLIBC_2.3.3 are for functions which for the old-ABI port may have had versions different from the architecture-independent default, but where for EABI the default suffices (both the default and the version in that file map to 2.4, so the entries in that file do nothing). The GLIBC_2.1 entries are needed (architecture-specific functions), but it seems less confusing for those to say GLIBC_2.4, as the actual version those symbols in fact have. Various cases in the <fenv.h> functions where a function is defined as __fe* with an fe* versioned alias are cleaned up just to define fe* directly, as done e.g. on AArch64. If in future we actually need an __fe* name for use from C90 functions in libm as discussed recently, of course we can add one on all architectures and make the fe* name into a weak alias for that particular function, but for now the __fe* names aren't needed. In the case of posix_fadvise64, the __posix_fadvise64_l64 name and posix_fadvise64 alias are kept as __posix_fadvise64_l64 is used in posix_fadvise. (For that to be a namespace-clean use, posix_fadvise64 needs to be a *weak* alias not a strong one as at present, but that's an independent preexisting bug.) (There remain references to GLIBC_2_2 in sysdeps/unix/sysv/linux/arm/{msgctl.c,semctl.c,shmctl.c}. As those files are used by alpha which has a genuine 2.2 version for those functions, I think those references need to stay as-is.) Tested that the disassembly of installed shared libraries is unchanged by this patch (though function names shown in disassembly change to no longer have @@GLIBC_2.4, now those functions get versioned only by the version map and not redundantly at assembler time) and that the ABI tests pass. * sysdeps/arm/fclrexcpt.c (__feclearexcept): Rename to feclearexcept. Remove symbol versioning code. * sysdeps/arm/fegetenv.c (__fegetenv): Rename to fegetenv. Remove symbol versioning code. * sysdeps/arm/fesetenv.c (__fesetenv): Rename to fesetenv. Remove symbol versioning code. * sysdeps/arm/feupdateenv.c (__feupdateenv): Rename to feupdateenv. Remove symbol versioning code. * sysdeps/arm/fgetexcptflg.c (__fegetexceptflag): Rename to fegetexceptflag. Remove symbol versioning code. * sysdeps/arm/fsetexcptflg.c (__fesetexceptflag): Rename to fesetexceptflag. Remove symbol versioning code. * sysdeps/unix/sysv/linux/arm/Versions (libc): Remove GLIBC_2.0, GLIBC_2.2 and GLIBC_2.3.3 entries. Change GLIBC_2.1 to GLIBC_2.4. * sysdeps/unix/sysv/linux/arm/posix_fadvise64.c (__posix_fadvise64_l32): Remove prototype. [SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)]: Remove conditional code.
* Move NPTL public ABI headers for ARM to sysdeps/arm/nptl/.Roland McGrath2014-05-132-0/+221
|
* Clean up __exit_thread.Roland McGrath2014-05-131-5/+0
|
* Make armv7 strcmp assembly compatible with ARM mode and SFI.Roland McGrath2014-05-091-45/+103
|
* ARM: Allow auto-detection of linker relro featureWill Newton2014-05-092-0/+16
| | | | | | | | | | | | | | Set values for libc_commonpagesize and libc_relro_required for the ARM port to enable relro by default and suppress a warning at configure time. ChangeLog: 2014-05-09 Will Newton <will.newton@linaro.org> * sysdeps/arm/preconfigure.ac: Set libc_commonpagesize and libc_relro_required for ARM. * sysdeps/arm/preconfigure: Regenerate.
* ARM: Add optimized ARMv7 strcmp implementationWill Newton2014-05-091-0/+492
| | | | | | | | | | | | | | | | | | | Add an optimized implementation of strcmp for ARMv7-A cores. This implementation is significantly faster than the current generic C implementation, particularly for strings of 16 bytes and longer. Tested with the glibc string tests for arm-linux-gnueabihf and armeb-linux-gnueabihf. The code was written by ARM, who have agreed to assign the copyright to the FSF for integration into glibc. ChangeLog: 2014-05-09 Will Newton <will.newton@linaro.org> * sysdeps/arm/armv7/strcmp.S: New file. * NEWS: Mention addition of ARMv7 optimized strcmp.
* Move ARM internal unwind.h header to the right sysdeps directory.Roland McGrath2014-05-061-0/+278
|
* ARM: Fix R_ARM_IRELATIVE RELA relocations.Julian Brown2014-04-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This patch fixes what I believe to be a bug in the handling of R_ARM_IRELATIVE RELA relocations. At present, these are handled the same as REL relocations: i.e. the addend is loaded from the relocation address. Most of the time this isn't a problem because RELA relocations aren't used on ARM (GNU/Linux at least) anyway, but it causes problems with prelink, which uses RELA on all targets for its conflict table. (Support for ifunc prelinking requires a prelink patch, not yet posted.) Anyway, this patch works, though I'm not 100% sure if it is correct: I notice that this code path received attention last year: https://sourceware.org/ml/libc-ports/2013-07/msg00000.html I'm not sure under what circumstances that patch would have had an effect, nor if my patch conflicts with that case. No regressions using Mentor's usual glibc cross-testing infrastructure. [BZ #16888] * sysdeps/arm/dl-machine.h (elf_machine_rela): Fix R_ARM_IRELATIVE handling.
* [ARM] Add support for fenv_private on ARM.Wilco Dijkstra2014-04-283-1/+261
|
* Add fenv test support for targets which don't have FP traps.Wilco2014-04-171-0/+3
|
* Factor mmap/munmap of PT_LOAD segments out of _dl_map_object_from_fd et al.Roland McGrath2014-04-031-2/+2
|
* Fix -Wundef warnins for __FP_FAST_FMA*Siddhesh Poyarekar2014-03-211-3/+3
| | | | | The macros are defined by the compiler, so we can only verify whether they are defined or not.
* Compile with -Wundef.Roland McGrath2014-03-141-0/+1
|
* ARM: Fix up setjmp/longjmp changes sfi_* macro use.Roland McGrath2014-03-112-9/+18
|
* Don't include individual test ulps in libm-test-ulps.Joseph Myers2014-03-051-7716/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As recently discussed <https://sourceware.org/ml/libc-alpha/2014-02/msg00670.html>, it doesn't seem particularly useful for libm-test-ulps files to contain huge amounts of data on ulps for individual tests; just the global maximum observed ulps for each function, together with the verification of exceptions, errno and special results such as infinities and NaNs for each test, suffices to verify that a function's behavior on the given test inputs is within the expected accuracy. Removing this data reduces source tree churn caused by updates to these files when libm tests are added, and reduces the frequency with which testsuite additions actually need libm-test-ulps changes at all. Accordingly, this patch removes that data, so that individual tests get checked against the global bounds for the given function and only generate an error if those are exceeded. Tested x86_64 (including verifying that if an ulps value is artificially reduced, the tests do indeed fail as they should and "make regen-ulps" generates the expected changes). * math/libm-test.inc (struct ulp_data): Don't refer to ulps for individual tests in comment. (libm-test-ulps.h): Don't refer to test_ulps in #include comment. (prev_max_error): New variable. (prev_real_max_error): Likewise. (prev_imag_max_error): Likewise. (compare_ulp_data): Don't refer to test names in comment. (find_test_ulps): Remove function. (find_function_ulps): Likewise. (find_complex_function_ulps): Likewise. (init_max_error): Take function name as argument. Look up ulps for that function. (print_ulps): Remove function. (print_max_error): Use prev_max_error instead of calling find_function_ulps. (print_complex_max_error): Use prev_real_max_error and prev_imag_max_error instead of calling find_complex_function_ulps. (check_float_internal): Take max_ulp parameter instead of calling find_test_ulps. Don't call print_ulps. (check_float): Update call to check_float_internal. (check_complex): Update calls to check_float_internal. (START): Pass argument to init_max_error. * math/gen-libm-test.pl (%results): Don't include "kind" information. (parse_ulps): Don't handle ulps of individual tests. (print_ulps_file): Likewise. (output_ulps): Likewise. * math/README.libm-test: Update. * manual/libm-err-tab.pl (parse_ulps): Don't handle ulps of individual tests. * sysdeps/aarch64/libm-test-ulps: Remove individual test ulps. * sysdeps/alpha/fpu/libm-test-ulps: Likewise. * sysdeps/arm/libm-test-ulps: Likewise. * sysdeps/i386/fpu/libm-test-ulps: Likewise. * sysdeps/ia64/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/coldfire/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Likewise. * sysdeps/microblaze/libm-test-ulps: Likewise. * sysdeps/mips/mips32/libm-test-ulps: Likewise. * sysdeps/mips/mips64/libm-test-ulps: Likewise. * sysdeps/powerpc/fpu/libm-test-ulps: Likewise. * sysdeps/powerpc/nofpu/libm-test-ulps: Likewise. * sysdeps/s390/fpu/libm-test-ulps: Likewise. * sysdeps/sh/libm-test-ulps: Likewise. * sysdeps/sparc/fpu/libm-test-ulps: Likewise. * sysdeps/tile/libm-test-ulps: Likewise. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise. * sysdeps/hppa/fpu/libm-test-ulps: Remove individual test ulps.
* Fix ARM NAN fraction bits.Joey Ye2014-02-271-3/+3
| | | | | | | | | | | | | | | | | | Current ARM soft-float implementation is violating the RTABI (http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043d/IHI0043D_rtabi.pdf) Section 4.1.1.1: When not otherwise specified by IEEE 754, the result on an invalid operation should be the quiet NaN bit pattern with only the most significant bit of the significand set, and all other significand bits zero. This patch fixes it by setting _FP_NANFRAC_* to zero. Ran make check test with -mfloat-abi=soft. No regression. * sysdeps/arm/soft-fp/sfp-machine.h (_FP_NANFRAC_S, _FP_NANFRAC_D) (_FP_NANFRAC_Q): Set to zero.
* ARM: Add SystemTap probes to longjmp and setjmp.Will Newton2014-02-254-31/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now the ARM port implements pointer encryption for jmpbufs, gdb needs a SystemTap probe point in longjmp to determine the target PC of a call to longjmp. This patch implements the probe point in longjmp and a similar probe point in setjmp. In order to have all the appropriate registers available to pass to the probe this reorders the layout of jmpbuf, putting the sp and lr registers at the start rather than the end, allowing them to be read and written sequentially. Tested on armv7, no new failures in the glibc testsuite and confirmed that this fixes the gdb.base/longjmp.exp failures in the gdb testsuite. ChangeLog: 2014-02-25 Will Newton <will.newton@linaro.org> * sysdeps/arm/__longjmp.S: Include stap-probe.h. (__longjmp): Restore sp and lr before restoring callee saved registers. Add longjmp and longjmp_target SystemTap probe point. * sysdeps/arm/bits/setjmp.h (__jmp_buf): Update comment. * sysdeps/arm/include/bits/setjmp.h (__JMP_BUF_SP): Define to zero to match jmpbuf layout. * sysdeps/arm/setjmp.S: Include stap-probe.h. (__sigsetjmp): Save sp and lr before saving callee saved registers. Add setjmp SystemTap probe point.