PowerPC: use _dl_static_init to set GLRO(gl_pagesize)
This patch fixes dlfcn/tststatic5 for PowerPC where pagesize
variable was not properly initialized in certain cases. This patch
is based on other architecture code.
(cherry picked from commit 7b1f8b581f9387230788e4d8a67cdbcf464dac85)
Check wheter the compiler has the option -fno-tree-loop-distribute-patterns
to inhibit loop transformation to library calls and uses it on memset
and memmove default implementation to avoid recursive calls.
(backported from commit 85c2e6110c9a01ec817c30f1b7e20549d7229987)
This backport excluded the benchmark tests from the original commit.
This patch reserves four pointer to be used in future Event-Based
Branch framework for PowerPC.
(cherry picked from commit e55a9b256d53c7fc5145e3e4d338d3741b23e232)
GCC 4.8 enables -ftree-loop-distribute-patterns at -O3 by default and
this optimization may transform loops into memset/memmove calls. Without
proper handling this may generate unexpected PLT calls on GLIBC.
This patch fixes by create memset/memmove alias to internal GLIBC
__GI_memset/__GI_memmove symbols.
(cherry picked from commit 6a97b62a5b4f18aea849d6f4d8de58d1469d2521)
Update bits/siginfo.h with Linux hwpoison SIGBUS changes
Adds new SIGBUS error codes for hardware poison signals, syncing with
the current kernel headers (v3.9). It also adds si_trapno field for
alpha.
(cherry picked from commit 85118d4de37e76a1596a75bae75f75f69c33225c)
PowerPC kernel now provides a vDSO implementation for time syscall
(commit fcb41a2030abe0eb716ef0798035ef9562097f42). This patch changes
time syscall wrapper to use the vDSO when available. It also changes
the default non vDSO time on PowerPC to use sysdeps/posix/time.c
(since gettimeofday is a vDSO call).
(cherry picked from commit 83e7640f6bf68708ecf0b09d83c670203167271e)
This patch implements modf/modff optimization for POWER by focus
on FP operations instead of relying in integer ones.
(backported from commit 3c0265394d9ffedff2b0de508602dc52e077ce5c)
This backport does not include the benchmark tests from the original
commit.
PowerPC: remove branch prediction from rint implementation
The branch prediction hints is actually hurts performance in this case.
The assembly implementation make two assumptions: 1. 'fabs (x) < 2^52'
is unlikely and 2. 'x > 0.0' is unlike (if 1. is true). Since it a
general floating point function, expected input is not bounded and then
it is better to let the hardware handle the branches.
This patch removes redudant definition from PowerPC specific
math_ldbl, using the definitions from ieee754 math_ldbl.h.
(backported from commit edf66e57fc2bac083ecc9756a5fe47f9041ed3bb)
Retain a single copy of the mp code in power4 instead of the two
identical copies in powerpc32 and powerpc64.
(backported from commit 6d9145d817e570cd986bb088cf2af0bf51ac7dde)
Anton Blanchard [Tue, 15 Jan 2013 18:50:46 +0000 (12:50 -0600)]
PowerPC: Rename __kernel_vdso_get_tbfreq to __kernel_get_tbfreq.
In order for the __kernel_get_tbfreq vDSO call to work the
INTERNAL_VSYSCALL_NCS macro needed to be updated to prevent it from
assuming an integer return type (since the timebase frequency is a 64-bit
value) by specifying the type of the return type as a macro parameter. The
macro then specifically declares the return value as a 'register' (or
implied pair) of the denoted type. The compiler is then informed that this
register (or implied pair) is to be used for the return value.
(cherry picked from commit 471a1672d4d55124de4db8273829f96cc14d424a)
Chris Metcalf [Wed, 12 Jun 2013 20:48:33 +0000 (16:48 -0400)]
tile: default to little-endian in bits/endian.h
This turns out to be helpful when doing a from-scratch cross-compile of
gcc and glibc, since you can then do "make install-headers" in glibc
even before you have a functioning tile gcc.
Chris Metcalf [Fri, 24 May 2013 18:02:31 +0000 (14:02 -0400)]
tile: improve detection for missing -mcmodel=large support
The existing test avoided passing -mcmodel=large if the compiler didn't
support it. However, we need to test not just the compiler support, but
also the toolchain (as and ld) support, so make the test more complete.
In addition, we have to avoid using the hwN_plt() assembly operators if
that support is missing, so guard the uses with #ifdef NO_PLT_PCREL.
This allows us to properly build glibc with the current community
binutils, which doesn't yet have the PC-relative PLT operator support.
The -mcmodel=large support is in gcc 4.8, but the toolchain support
won't be present in the community until binutils 2.24.
Wilhelm Eger [Wed, 22 May 2013 20:33:03 +0000 (16:33 -0400)]
Backport fixes for BZ #15006 from master.
Resolved backport request BZ #15122.
Assume all unmarked objects are compatible with all ABI variants.
Such objects may have been generated in a transitional period when
ABI tags were not added to all objects.
Andreas Jaeger [Fri, 11 Jan 2013 10:53:13 +0000 (11:53 +0100)]
Add MSG_FASTOPEN
[BZ #15003]
* sysdeps/unix/sysv/linux/bits/socket.h (MSG_FASTOPEN): New
value. Sync with Linux 3.7.
(cherry picked from commit c6fe55cf6089fc5cf1cea15fc7e1c9a8b90d9fda)
Chris Metcalf [Fri, 14 Dec 2012 15:46:54 +0000 (10:46 -0500)]
tile: fix DWARF bug in clone() for created thread
Previously, we would see a bad frame in the gdb backtrace output, e.g.:
(gdb) bt
#0 foo () at foo.c:5
#1 0x000000aaaab68ee8 in start_thread () from /lib/libpthread.so.0
#2 0x000000aaaad01c88 in clone () from /lib/libc.so.6
#3 0x0000000000000000 in ?? ()
With this change the bogus frame #3 is gone and we have the
same output as x86 does for the same program.
soft-fp: Fix used without set warning in _FP_MUL and _FP_DIV
Seen in, e.g. ports/sysdeps/alpha/soft-fp/ots_mul.c.
The problem here is we have a switch on the class of X*Y, followed by
a switch on the class of R. The exponent field of R really is not set
by the first switch for NaN outputs, because we know it's not going to
be used. The compiler is not smart enough to see through this.
By pulling the exponent computation out of the NORMAL*NORMAL path, we
will not be pessimizing the most common case, while still providing an
arbitrary value to satisfy the compiler.
In bdd7898a58bd76ac3b411a4931ff3f9e77eabe6a we added self-definitions
of __isnan and friends in order to indicate specialized architecture
support, and avoid redefinitions within various generic math_private.h.
There is no generic math_private.h that concerns ldbl-128, and while
we provide __isnanl in the alpha math_private.h there's no need to
protect the function against redefinition.
In bdd7898a58bd76ac3b411a4931ff3f9e77eabe6a we added self-definitions
of __isnan and friends in order to indicate specialized architecture
support, and avoid redefinitions within various generic math_private.h.
There is no generic math_private.h that concerns ldbl-128, and while
we provide __isnanl in the alpha math_private.h there's no need to
protect the function against redefinition.