about summary refs log tree commit diff
path: root/sysdeps
Commit message (Collapse)AuthorAgeFilesLines
* PowerPC64 ELFv2 ABI 3/6: PLT local entry point optimizationUlrich Weigand2013-12-042-2/+50
| | | | | | | | | | | | | | | | | | | | | | | | | This is a follow-on to the previous patch to support the ELFv2 ABI in the dynamic loader, split off into its own patch since it is just an optional optimization. In the ELFv2 ABI, most functions define both a global and a local entry point; the local entry requires r2 to be already set up by the caller to point to the callee's TOC; while the global entry does not require the caller to know about the callee's TOC, but it needs to set up r12 to the callee's entry point address. Now, when setting up a PLT slot, the dynamic linker will usually need to enter the target function's global entry point. However, if the linker can prove that the target function is in the same DSO as the PLT slot itself, and the whole DSO only uses a single TOC (which the linker will let ld.so know via a DT_PPC64_OPT entry), then it is possible to actually enter the local entry point address into the PLT slot, for a slight improvement in performance. Note that this uncovered a problem on the first call via _dl_runtime_resolve, because that routine neglected to restore the caller's TOC before calling the target function for the first time, since it assumed that function would always reload its own TOC anyway ...
* PowerPC64 ELFv2 ABI 2/6: Remove function descriptorsUlrich Weigand2013-12-048-30/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for the ELFv2 ABI feature to remove function descriptors. See this GCC patch for in-depth discussion: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01141.html This mostly involves two types of changes: updating assembler source files to the new logic, and updating the dynamic loader. After the refactoring in the previous patch, most of the assembler source changes can be handled simply by providing ELFv2 versions of the macros in sysdep.h. One somewhat non-obvious change is in __GI__setjmp: this used to "fall through" to the immediately following __setjmp ENTRY point. This is no longer safe in the ELFv2 since ENTRY defines both a global and a local entry point, and you cannot simply fall through to a global entry point as it requires r12 to be set up. Also, makecontext needs to be updated to set up registers according to the new ABI for calling into the context's start routine. The dynamic linker changes mostly consist of removing special code to handle function descriptors. We also need to support the new PLT and glink format used by the the ELFv2 linker, see: https://sourceware.org/ml/binutils/2013-10/msg00376.html In addition, the dynamic linker now verifies that the dynamic libraries it loads match its own ABI. The hack in VDSO_IFUNC_RET to "synthesize" a function descriptor for vDSO routines is also no longer necessary for ELFv2.
* PowerPC64 ELFv2 ABI 1/6: Code refactoringUlrich Weigand2013-12-045-62/+39
| | | | | | | | | | | | | | This is the first patch to support the new ELFv2 ABI in glibc. As preparation, this patch simply refactors some of the powerpc64 assembler code to move all code related to creating function descriptors (.opd section) or using function descriptors (function pointer call) into a central place in sysdep.h. Note that most locations creating .opd entries were already using macros in sysdep.h, this patch simply extends this to the remaining places. No relevant change in generated code expected.
* PowerPC64: Report overflow on @h and @ha relocationsAlan Modra2013-12-041-2/+22
| | | | | | | | | | | | | | | | | This patch updates glibc in accordance with the binutils patch checked in here: https://sourceware.org/ml/binutils/2013-10/msg00372.html This changes the various R_PPC64_..._HI and _HA relocations to report 32-bit overflows. The motivation is that existing uses of @h / @ha are to build up 32-bit offsets (for the "medium model" TOC access that GCC now defaults to), and we'd really like to see failures at link / load time rather than silent truncations. For those rare cases where a modifier is needed to build up a 64-bit constant, new relocations _HIGH / _HIGHA are supported. The patch also fixes a bug in overflow checking for the R_PPC64_ADDR30 and R_PPC64_ADDR32 relocations.
* PowerPC64: Fix incorrect CFI in *context routinesUlrich Weigand2013-12-042-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | The context established by "makecontext" has a link register pointing back to an error path within the makecontext routine. This is currently covered by the CFI FDE for makecontext itself, which is simply wrong for the stack frame *inside* the context. When trying to unwind (e.g. doing a backtrace) in a routine inside a context created by makecontext, this can lead to uninitialized stack slots being accessed, causing the unwinder to crash in the worst case. Similarly, during parts of the "setcontext" routine, when the stack pointer has already been switched to point to the new context, the address range is still covered by the CFI FDE for setcontext. When trying to unwind in that situation (e.g. backtrace from an async signal handler for profiling), it is again possible that the unwinder crashes. Theses are all problems in existing code, but the changes in stack frame layout appear to make the "worst case" much more likely in the ELFv2 ABI context. This causes regressions e.g. in the libgo testsuite on ELFv2. This patch fixes this by ending the makecontext/setcontext FDEs before those problematic parts of the assembler, similar to what is already done on other platforms. This fixes the libgo regression on ELFv2.
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-041-2/+260
|
* Fix exp missing underflows (bug 15268, bug 15425).Joseph Myers2013-12-033-3/+98
|
* Properly handle shm_open validation. Fixes bug 16274.Ondřej Bílka2013-12-031-2/+2
|
* Fix erfc errno setting on underflow (bug 6786).Joseph Myers2013-12-037-10/+71
|
* Move TEST_f_f tests for [e-j]* functions from libm-test.inc to ↵Joseph Myers2013-12-032-0/+402
| | | | auto-libm-test-in.
* Remove redundant GAIH_OKIFUNSPEC and GAIH_EAI.Pavel Simerda2013-12-021-17/+14
| | | | | | | | | | | Only gaih_inet() and gaih_inet_serv() use a special bit flag denoted by the GAIH_OKIFUNSPEC macro. Only the return value of gaih_inet_serv() is actively checked for the bit flag which is redundant because it just copies the nonzero property of the value otherwise returned. The return value of gaih_inet() is only checked for being zero and then the bit flag is filtered out. As the bit flag is set only for otherwise nonzero return values, it doesn't affect the zero comparison. GAIH_EAI just an alias to ~GAIH_OKIFUNSPEC.
* getaddrinfo: remove dead codePavel Simerda2013-12-021-12/+0
|
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-021-34/+1199
|
* Move TEST_f_f tests for [a-c]* functions from libm-test.inc to ↵Joseph Myers2013-11-302-0/+1202
| | | | auto-libm-test-in.
* Fix x86 sqrt rounding (bug 14032).Joseph Myers2013-11-292-0/+18
|
* [BZ #16214] S/390: Fix TLS GOT pointer setup.Andreas Krebbel2013-11-294-18/+47
|
* Remove unused ldbl-96 functions (bug 15004).Joseph Myers2013-11-2816-1046/+0
|
* Add powerpc-nofpu/e500 support functions for atomic compound assignment and ↵Joseph Myers2013-11-2813-4/+346
| | | | FLT_ROUNDS.
* Fix dbl-64 e_sqrt.c for non-default rounding modes (bug 16271).Joseph Myers2013-11-289-4/+42
|
* PowerPC: Fix __fe_nomask_env missing symbolAdhemerval Zanella2013-11-268-14/+13
| | | | | This patch fix the missing symbol __fe_nomask_env from commit 41e8926aa4b7f17bc95984737ee82a254ad0911c for GLIBC_2.1.
* Fix typo in _dl_tlsdesc_resolve_hold.Ondřej Bílka2013-11-261-1/+1
|
* Use __glibc_reserved instead __unused.Ondřej Bílka2013-11-2644-177/+177
|
* Fix typo in sys/ptrace.h.Carlos O'Donell2013-11-251-1/+1
| | | | | | | The event code is PTRACE_EVENT_SECCOMP, not PTRAVE_EVENT_SECCOMP. This patch fixes the V->C typo. There are no ABI issues since the number remains the same for the code. Code using the old wrong name will need to be updated.
* Fix powerpc-nofpu build.Joseph Myers2013-11-252-0/+6
|
* PowerPC: Set/restore rounding mode only when neededAdhemerval Zanella2013-11-257-25/+293
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch helps some math functions performance by adding the libc_fexxx variant of inline functions to handle both FPU round and exception set/restore and by using them on the libc_fexxx_ctx functions. It is based on already coded fexxx family functions for PPC with fpu. Here is the summary of performance improvements due this patch (measured on a POWER7 machine): Before: cos(): ITERS:9.5895e+07: TOTAL:5116.03Mcy, MAX:77.6cy, MIN:49.792cy, 18744 calls/Mcy exp(): ITERS:2.827e+07: TOTAL:5187.15Mcy, MAX:494.018cy, MIN:38.422cy, 5450.01 calls/Mcy pow(): ITERS:6.1705e+07: TOTAL:5144.26Mcy, MAX:171.95cy, MIN:29.935cy, 11994.9 calls/Mcy sin(): ITERS:8.6898e+07: TOTAL:5117.06Mcy, MAX:83.841cy, MIN:46.582cy, 16982 calls/Mcy tan(): ITERS:2.9473e+07: TOTAL:5115.39Mcy, MAX:191.017cy, MIN:172.352cy, 5761.63 calls/Mcy After: cos(): ITERS:2.05265e+08: TOTAL:5111.37Mcy, MAX:78.754cy, MIN:24.196cy, 40158.5 calls/Mcy exp(): ITERS:3.341e+07: TOTAL:5170.84Mcy, MAX:476.317cy, MIN:15.574cy, 6461.23 calls/Mcy pow(): ITERS:7.6153e+07: TOTAL:5129.1Mcy, MAX:147.5cy, MIN:30.916cy, 14847.2 calls/Mcy sin(): ITERS:1.58816e+08: TOTAL:5115.11Mcy, MAX:1490.39cy, MIN:22.341cy, 31048.4 calls/Mcy tan(): ITERS:3.4964e+07: TOTAL:5114.18Mcy, MAX:177.422cy, MIN:146.115cy, 6836.68 calls/Mcy
* Adjust generic swapon prototype to match Linux version.Roland McGrath2013-11-211-1/+1
|
* Don't use broken DL_AUTO_FUNCTION_ADDRESS()Guy Martin2013-11-211-2/+3
| | | | | | | | | | | | On hppa and ia64, the macro DL_AUTO_FUNCTION_ADDRESS() uses the variable fptr[2] in it's own scope. The content of fptr[] is thus undefined right after the macro exits. Newer gcc's (>= 4.7) reuse the stack space of this variable triggering a segmentation fault in dl-init.c:69. To fix this we rewrite the macros to make the call directly to init and fini without needing to pass back a constructed function pointer.
* Add systemtap probe markers for sin, cos, asin and acosSiddhesh Poyarekar2013-11-201-0/+5
|
* Make powerpc-nofpu floating-point state thread-local (bug 15483).Joseph Myers2013-11-1918-67/+104
|
* Fix spurious "inexact" exceptions from x86 pow with NaN argument (bug 16167).Joseph Myers2013-11-164-1/+25
|
* PowerPC: Fix __fe_mask_env exportAdhemerval Zanella2013-11-132-2/+2
| | | | Change SHLIB_COMPAT calls to GLIBC_2_19 for __fe_nomask_env symbol.
* Set arch_minimum_kernel to 3.4.0 for x32H.J. Lu2013-11-132-0/+6
| | | | x32 ABI support was added in Linux kernel 3.4.0.
* PowerPC: Fix __fe_mask_env exportAdhemerval Zanella2013-11-135-13/+13
| | | | | This patch does not export __fe_mask_env anymore, only providing a compatibility symbol. It fixes BZ#14143.
* Fix sparc 64-bit GMP ifunc resolution in static builds.David S. Miller2013-11-125-5/+5
| | | | | | | | | | [BZ #16150] * sysdeps/sparc/sparc64/multiarch/add_n.S: Resolve to the correct generic symbol in the non-vis3 case in static builds. * sysdeps/sparc/sparc64/multiarch/addmul_1.S: Likewise. * sysdeps/sparc/sparc64/multiarch/mul_1.S: Likewise. * sysdeps/sparc/sparc64/multiarch/sub_n.S: Likewise. * sysdeps/sparc/sparc64/multiarch/submul_1.S: Likewise.
* PowerPC: Fix vDSO missing ODP entriesAdhemerval Zanella2013-11-083-5/+28
| | | | | | | This patch fixes the vDSO symbol used directed in IFUNC resolver where they do not have an associated ODP entry leading to undefined behavior in some cases. It adds an artificial OPD static entry to such cases and set its TOC to non 0 to avoid triggering lazy resolutions.
* Fix build on pre-v9 32-bit Sparc.David S. Miller2013-11-061-1/+2
| | | | | | | | | We cannot use fnegd in this code, as fnegd was added in v9. Only fnegs exists in v8 and earlier. [BZ #15985] * sysdeps/sparc/sparc32/fpu/s_fdim.S (__fdim): Do not use fnegd on pre-v9 cpus, use a fnegs+fmovs sequence instead.
* Restrict shm_open and shm_unlink to SHMDIR. Fixes bugs 14752 and 15763.Ondřej Bílka2013-10-311-6/+8
|
* rename configure.in to configure.acMike Frysinger2013-10-3032-16/+16
| | | | | | | Autoconf has been deprecating configure.in for quite a long time. Rename all our configure.in and preconfigure.in files to .ac. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Consolidate conditionals in mp sin/cos functionsSiddhesh Poyarekar2013-10-281-8/+6
| | | | | Consolidate conditionals in multiple precision sin and cos functions to prepare the code for addition of probe points.
* PowerPC: strcpy/stpcpy optimization for PPC64/POWER7Adhemerval Zanella2013-10-254-134/+407
| | | | | | | | | | This patch intends to unify both strcpy and stpcpy implementationsi for PPC64 and PPC64/POWER7. The idead default powerpc64 implementation is to provide both doubleword and word aligned memory access. For PPC64/POWER7 is also provide doubleword and word memory access, remove the branch hints, use the cmpb instruction for compare doubleword/words, and add an optimization for inputs of same alignment.
* Fix stack overflow due to large AF_INET6 requestsSiddhesh Poyarekar2013-10-251-2/+18
| | | | | | | | Resolves #16072 (CVE-2013-4458). This patch fixes another stack overflow in getaddrinfo when it is called with AF_INET6. The AF_UNSPEC case was fixed as CVE-2013-1914, but the AF_INET6 case went undetected back then.
* Fix incorrect getaddrinfo assertion triggerAllan McRae2013-10-251-3/+10
| | | | | | | | | | | | | | | | | | | [BZ #9954] With the following /etc/hosts: 127.0.0.1 www.my-domain.es 127.0.1.1 www.my-domain.es 192.168.0.1 www.my-domain.es Using getaddrinfo() on www.my-domain.es, trigger the following assertion: ../sysdeps/posix/getaddrinfo.c:1473: rfc3484_sort: Assertion `src->results[i].native == -1 || src->results[i].native == a1_native' failed. This is due to two different bugs: - In rfc3484_sort() rule 7, src->results[i].native is assigned even if src->results[i].index is -1, meaning that no interface is associated. - In getaddrinfo() the source IP address used with the lo interface needs a special case, as it can be any IP within 127.X.Y.Z.
* Add e500 port.Joseph Myers2013-10-1831-11/+1169
|
* Don't use gethostbyaddr to determine canonical nameAndreas Schwab2013-10-171-78/+11
|
* Format floating routines.Ondřej Bílka2013-10-1758-2175/+2769
|
* Add systemtap markers to math function slow pathsSiddhesh Poyarekar2013-10-116-5/+45
| | | | | | | Add systemtap probes to various slow paths in libm so that application developers may use systemtap to find out if their applications are hitting these slow paths. We have added probes for pow, exp, log, tan, atan and atan2.
* Fix readdir regressions on sparc 32-bit.David S. Miller2013-10-101-2/+7
| | | | | * sysdeps/posix/dirstream.h (struct __dirstream): Fix alignment of directory block.
* Update sparc ULPs.David S. Miller2013-10-101-0/+125
| | | | * sysdeps/sparc/fpu/libm-test-ulps: Update.
* Extend powerpc-nofpu -fno-builtin-fabsl workaround to more files.Joseph Myers2013-10-101-0/+6
|
* Avoid ordered comparisons of NaNs in ldbl-128ibm acosl and asinl.Joseph Myers2013-10-102-0/+4
|