This patch add optimized __mpn_addmul, __mpn_addsub, __mpn_lshift, and
__mpn_mul_1 implementations for PowerPC64. They are originally from GMP
with adjustments for GLIBC.
This patch add static probes for setjmp/longjmp in the way gdb expects,fixing
the gdb.base/longjmp.exp gdb testcases.
It changes the symbol_name and use macros to to avoid change the probe names
and ending up adding more logic on GDB (since with the expected name
GDB work seamlessly).
The ELFv2 ABI changes the calling convention by passing and returning
structures in registers in more cases than the old ABI:
http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01145.htmlhttp://gcc.gnu.org/ml/gcc-patches/2013-11/msg01147.html
For the most part, this does not affect glibc, since glibc assembler
files do not use structure parameters / return values. However, one
place is affected: the LD_AUDIT interface provides a structure to
the audit routine that contains all registers holding function
argument and return values for the intercepted PLT call.
Since the new ABI now sometimes uses registers to return values
that were never used for this purpose in the old ABI, this structure
has to be extended. To force audit routines to be modified for the
new ABI if necessary, the patch defines v2 variants of the la_ppc64
types and routines.
In addition, the patch contains two unrelated changes to the
PLT trampoline routines: it fixes a bug where FPR return values
were stored in the wrong place, and it removes the unnecessary
save/restore of CR.
This updates glibc for the changes in the ELFv2 relating to the
stack frame layout. These are described in more detail here:
http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01149.htmlhttp://gcc.gnu.org/ml/gcc-patches/2013-11/msg01146.html
Specifically, the "compiler and linker doublewords" were removed,
which has the effect that the save slot for the TOC register is
now at offset 24 rather than 40 to the stack pointer.
In addition, a function may now no longer necessarily assume that
its caller has set up a 64-byte register save area its use.
To address the first change, the patch goes through all assembler
files and replaces immediate offsets in instructions accessing the
ABI-defined stack slots by symbolic offsets. Those already were
defined in ucontext_i.sym and used in some of the context routines,
but that doesn't really seem like the right place for those defines.
The patch instead defines those symbolic offsets in sysdeps.h,
in two variants for the old and new ABI, and uses them systematically
in all assembler files, not just the context routines.
The second change only affected a few assembler files that used
the save area to temporarily store some registers. In those
cases where this happens within a leaf function, this patch
changes the code to store those registers to the "red zone"
below the stack pointer. Otherwise, the functions already allocate
a stack frame, and the patch changes them to add extra space in
these frames as temporary space for the ELFv2 ABI.
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 ...
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.
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.
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.
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>
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.
* sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela):
Use stdint types in rather than __attribute__((mode())).
* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00105.html
Like strnlen, memchr and memrchr had a number of defects fixed by this
patch as well as adding little-endian support. The first one I
noticed was that the entry to the main loop needlessly checked for
"are we done yet?" when we know the size is large enough that we can't
be done. The second defect I noticed was that the main loop count was
wrong, which in turn meant that the small loop needed to handle an
extra word. Thirdly, there is nothing to say that the string can't
wrap around zero, except of course that we'd normally hit a segfault
on trying to read from address zero. Fixing that simplified a number
of places:
- /* Are we done already? */
- addi r9,r8,8
- cmpld r9,r7
- bge L(null)
becomes
+ cmpld r8,r7
+ beqlr
However, the exit gets an extra test because I test for being on the
last word then if so whether the byte offset is less than the end.
Overall, the change is a win.
Lastly, memrchr used the wrong cache hint.
* sysdeps/powerpc/powerpc64/power7/memchr.S: Replace rlwimi with
insrdi. Make better use of reg selection to speed exit slightly.
Schedule entry path a little better. Remove useless "are we done"
checks on entry to main loop. Handle wrapping around zero address.
Correct main loop count. Handle single left-over word from main
loop inline rather than by using loop_small. Remove extra word
case in loop_small caused by wrong loop count. Add little-endian
support.
* sysdeps/powerpc/powerpc32/power7/memchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memrchr.S: Likewise. Use proper
cache hint.
* sysdeps/powerpc/powerpc32/power7/memrchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/rawmemchr.S: Add little-endian
support. Avoid rlwimi.
* sysdeps/powerpc/powerpc32/power7/rawmemchr.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00104.html
One of the things I noticed when looking at power7 timing is that rlwimi
is cracked and the two resulting insns have a register dependency.
That makes it a little slower than the equivalent rldimi.
* sysdeps/powerpc/powerpc64/memset.S: Replace rlwimi with
insrdi. Formatting.
* sysdeps/powerpc/powerpc64/power4/memset.S: Likewise.
* sysdeps/powerpc/powerpc64/power6/memset.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memset.S: Likewise.
* sysdeps/powerpc/powerpc32/power4/memset.S: Likewise.
* sysdeps/powerpc/powerpc32/power6/memset.S: Likewise.
* sysdeps/powerpc/powerpc32/power7/memset.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00103.html
LIttle-endian support for memcpy. I spent some time cleaning up the
64-bit power7 memcpy, in order to avoid the extra alignment traps
power7 takes for little-endian. It probably would have been better
to copy the linux kernel version of memcpy.
* sysdeps/powerpc/powerpc32/power4/memcpy.S: Add little endian support.
* sysdeps/powerpc/powerpc32/power6/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc32/power7/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc32/power7/mempcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power4/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power6/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/mempcpy.S: Likewise. Make better
use of regs. Use power7 mtocrf. Tidy function tails.
http://sourceware.org/ml/libc-alpha/2013-08/msg00102.html
This is a rather large patch due to formatting and renaming. The
formatting changes were to make it possible to compare power7 and
power4 versions of memcmp. Using different register defines came
about while I was wrestling with the code, trying to find spare
registers at one stage. I found it much simpler if we refer to a reg
by the same name throughout a function, so it's better if short-term
multiple use regs like rTMP are referred to using their register
number. I made the cr field usage changes when attempting to reload
rWORDn regs in the exit path to byte swap before comparing when
little-endian. That proved a bad idea due to the pipelining involved
in the main loop; Offsets to reload the regs were different first
time around the loop.. Anyway, I left the cr field usage changes in
place for consistency.
Aside from these more-or-less cosmetic changes, I fixed a number of
places where an early exit path restores regs unnecessarily, removed
some dead code, and optimised one or two exits.
* sysdeps/powerpc/powerpc64/power7/memcmp.S: Add little-endian support.
Formatting. Consistently use rXXX register defines or rN defines.
Use early exit labels that avoid restoring unused non-volatile regs.
Make cr field use more consistent with rWORDn compares. Rename
regs used as shift registers for unaligned loop, using rN defines
for short lifetime/multiple use regs.
* sysdeps/powerpc/powerpc64/power4/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc32/power7/memcmp.S: Likewise. Exit with
addi 1,1,64 to pop stack frame. Simplify return value code.
* sysdeps/powerpc/powerpc32/power4/memcmp.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00101.html
Adds little-endian support to optimised strchr assembly. I've also
tweaked the big-endian code a little. In power7/strchr.S there's a
check in the tail of the function that we didn't match 0 before
finding a c match, done by comparing leading zero counts. It's just
as valid, and quicker, to compare the raw output from cmpb.
Another little tweak is to use rldimi/insrdi in place of rlwimi for
the power7 strchr functions. Since rlwimi is cracked, it is a few
cycles slower. rldimi can be used on the 32-bit power7 functions
too.
* sysdeps/powerpc/powerpc64/power7/strchr.S (strchr): Add little-endian
support. Correct typos, formatting. Optimize tail. Use insrdi
rather than rlwimi.
* sysdeps/powerpc/powerpc32/power7/strchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strchrnul.S (__strchrnul): Add
little-endian support. Correct typos.
* sysdeps/powerpc/powerpc32/power7/strchrnul.S: Likewise. Use insrdi
rather than rlwimi.
* sysdeps/powerpc/powerpc64/strchr.S (rTMP4, rTMP5): Define. Use
in loop and entry code to keep "and." results.
(strchr): Add little-endian support. Comment. Move cntlzd
earlier in tail.
* sysdeps/powerpc/powerpc32/strchr.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00100.html
The strcpy changes for little-endian are quite straight-forward, just
a matter of rotating the last word differently.
I'll note that the powerpc64 version of stpcpy is just begging to be
converted to use 64-bit loads and stores..
* sysdeps/powerpc/powerpc64/strcpy.S: Add little-endian support:
* sysdeps/powerpc/powerpc32/strcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/stpcpy.S: Likewise.
* sysdeps/powerpc/powerpc32/stpcpy.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00099.html
More little-endian support. I leave the main strcmp loops unchanged,
(well, except for renumbering rTMP to something other than r0 since
it's needed in an addi insn) and modify the tail for little-endian.
I noticed some of the big-endian tail code was a little untidy so have
cleaned that up too.
* sysdeps/powerpc/powerpc64/strcmp.S (rTMP2): Define as r0.
(rTMP): Define as r11.
(strcmp): Add little-endian support. Optimise tail.
* sysdeps/powerpc/powerpc32/strcmp.S: Similarly.
* sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc32/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc32/power4/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc32/power7/strncmp.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00098.html
The existing strnlen code has a number of defects, so this patch is more
than just adding little-endian support. The changes here are similar to
those for memchr.
* sysdeps/powerpc/powerpc64/power7/strnlen.S (strnlen): Add
little-endian support. Remove unnecessary "are we done" tests.
Handle "s" wrapping around zero and extremely large "size".
Correct main loop count. Handle single left-over word from main
loop inline rather than by using small_loop. Correct comments.
Delete "zero" tail, use "end_max" instead.
* sysdeps/powerpc/powerpc32/power7/strnlen.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00097.html
This is the first of nine patches adding little-endian support to the
existing optimised string and memory functions. I did spend some
time with a power7 simulator looking at cycle by cycle behaviour for
memchr, but most of these patches have not been run on cpu simulators
to check that we are going as fast as possible. I'm sure PowerPC can
do better. However, the little-endian support mostly leaves main
loops unchanged, so I'm banking on previous authors having done a
good job on big-endian.. As with most code you stare at long enough,
I found some improvements for big-endian too.
Little-endian support for strlen. Like most of the string functions,
I leave the main word or multiple-word loops substantially unchanged,
just needing to modify the tail.
Removing the branch in the power7 functions is just a tidy. .align
produces a branch anyway. Modifying regs in the non-power7 functions
is to suit the new little-endian tail.
* sysdeps/powerpc/powerpc64/power7/strlen.S (strlen): Add little-endian
support. Don't branch over align.
* sysdeps/powerpc/powerpc32/power7/strlen.S: Likewise.
* sysdeps/powerpc/powerpc64/strlen.S (strlen): Add little-endian support.
Rearrange tmp reg use to suit. Comment.
* sysdeps/powerpc/powerpc32/strlen.S: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00090.html
This patch fixes symbol versioning in setjmp/longjmp. The existing
code uses raw versions, which results in wrong symbol versioning when
you want to build glibc with a base version of 2.19 for LE.
Note that the merging the 64-bit and 32-bit versions in novmx-lonjmp.c
and pt-longjmp.c doesn't result in GLIBC_2.0 versions for 64-bit, due
to the base in shlib_versions.
* sysdeps/powerpc/longjmp.c: Use proper symbol versioning macros.
* sysdeps/powerpc/novmx-longjmp.c: Likewise.
* sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Likewise.
* sysdeps/powerpc/powerpc32/bsd-setjmp.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/setjmp.S: Likewise.
* sysdeps/powerpc/powerpc32/mcount.c: Likewise.
* sysdeps/powerpc/powerpc32/setjmp.S: Likewise.
* sysdeps/powerpc/powerpc64/setjmp.S: Likewise.
* nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: Likewise.
http://sourceware.org/ml/libc-alpha/2013-08/msg00089.html
Little-endian fixes for setjmp/longjmp. When writing these I noticed
the setjmp code corrupts the non volatile VMX registers when using an
unaligned buffer. Anton fixed this, and also simplified it quite a
bit.
The current code uses boilerplate for the case where we want to store
16 bytes to an unaligned address. For that we have to do a
read/modify/write of two aligned 16 byte quantities. In our case we
are storing a bunch of back to back data (consective VMX registers),
and only the start and end of the region need the read/modify/write.
[BZ #15723]
* sysdeps/powerpc/jmpbuf-offsets.h: Comment fix.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Correct
_dl_hwcap access for little-endian.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise. Don't
destroy vmx regs when saving unaligned.
* sysdeps/powerpc/powerpc64/__longjmp-common.S: Correct CR load.
* sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise CR save. Don't
destroy vmx regs when saving unaligned.
The pointer guard used for pointer mangling was not initialized for
static applications resulting in the security feature being disabled.
The pointer guard is now correctly initialized to a random value for
static applications. Existing static applications need to be
recompiled to take advantage of the fix.
The test tst-ptrguard1-static and tst-ptrguard1 add regression
coverage to ensure the pointer guards are sufficiently random
and initialized to a default value.
This patch fixes backtrace for PPC32 and PPC64 to correctly handle
signal trampolines. The 'debug/tst-backtrace6.c' also check for
SA_SIGINFO handling, where is triggers another vDSO symbols for PPC32.
Resolves: #15465
The program name may be unavailable if the user application tampers
with argc and argv[]. Some parts of the dynamic linker caters for
this while others don't, so this patch consolidates the check and
fallback into a single macro and updates all users.
This patch fix the 3c0265394d commits
by correctly setting minimum architecture for modf PPC optimization
to power5+ instead of power5 (since only on power5+ round/ceil will
be inline to inline assembly).
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.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_ceil.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_finite.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_floor.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_frexp.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_isinf.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_isnan.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_llround.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_logb.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_lround.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_modf.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_nearbyint.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_remquo.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_rint.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_round.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_scalbln.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_scalbn.c: New file.
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_trunc.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/Implies: Add
ieee754/ldbl-opt/wordsize-64.
* sysdeps/powerpc/powerpc64/Implies: Add
ieee754/dbl-64/wordsize-64.
Initially based on the versions found in wcsmbs/* ; these files have
been changed by hand unrolling, and adding some additional variables
to allow some read-ahead to occur, which then relieves some of the
wait-for-increment/wait-for-load/wait-for-compare-results pressure
that was slowing down every iteration through the while-loop.
For 64-bit Power7, These changes give an approx 20% throughput boost
for the wcschr and wcsrchr functions; and approx 40% boost for the
wcscpy function. 32-bit improvements appear to be slightly better
with ~ %30 and ~ %45 respectively. Results for Power6 closely match
those for power7.
Assorted tweaking, twisting and tuning to squeeze a few additional cycles
out of the memchr code. Changes include bypassing the shift pairs
(sld,srd) when they are not required, and unrolling the small_loop that
handles short and trailing strings.
Per scrollpipe data measuring aligned strings for 64-bit, these changes
save between five and eight cycles (9-13% overall) for short strings (<32),
Longer aligned strings see slight improvement of 1-3% due to bypassing the
shifts and the instruction rearranging.
In the past the "-ftree-loop-linear" switch provided a measurable
improvement in performance for certain functions. At some point it
was assigned as the responsibility of Graphite in GCC. It has been
found that even with Graphite enabled these flags no longer perform
any appreciable improvement over the baseline.
Graphite now has some open bugs which need to be fixed in order for it
to provide measurable performance improvements but it lacks active
development. As a result some compiler distributors may disable
Graphite. If Graphite is disabled then building GLIBC will fail if
the "-ftree-loop-linear" switch is used.
This patch removes the use of "-ftree-loop-linear" as unnecessary.
This patch provides optimized logb (1.2x on PPC32 and 2.5x on PPC64),
logbf (1.1x on PPC32 and 2.2x on PPC64), and logbl (1.3x on PPC32 and
50% on PPC64) for the POWER7 processor.
* sysdeps/powerpc/powerpc32/crti.S: New file.
* sysdeps/powerpc/powerpc32/crtn.S: New file.
* sysdeps/powerpc/powerpc64/crti.S: New file.
* sysdeps/powerpc/powerpc64/crtn.S: New file.
This patch tries to organize the implies files for ppc, since there are
a number of processors and most of them are compatible with each other
(backwards compatible).
Having in mind that we start the search for processor-specific files in
the sysdeps/unix/sysv/linux tree
(sysdeps/unix/sysv/linux/powerpc/powerpc[32|64]/[processor]/fpu to be
exact), we would like to grab any linux-specific code from that tree
prior to going through the other tree (sysdeps/powerpc/...).
For that, i removed the Implies files that were originally inside the
fpu directories and placed then in the non-fpu directories (still inside
the unix/sysv/linux tree). If no processor-specific/linux-specific files
could be found, we "imply" the other tree's (sysdeps/powerpc/...) fpu
directory for that specific processor AND also the non-fpu directory for
that same tree.
If, again, no processor-specific code is found, we read another Implies
file that will point to the most compatible processor that we should
grab code from, and so on, until we reach the power4 processor.
So, in summary, the Implies files will live inside these directories
now:
* sysdeps/unix/sysv/linux/powerpc/powerpc[32|64]/[processor]
* sysdeps/powerpc/powerpc[32|64]/[processor]
Practical example of the order we will use to pick power6-specific code
with the new structure.
sysdeps/unix/sysv/linux/powerpc/powerpc[32|64]/power6/fpu ->
sysdeps/unix/sysv/linux/powerpc/powerpc[32|64]/power6 ->
sysdeps/powerpc/powerpc[32|64]/power6/fpu ->
sysdeps/powerpc/powerpc[32|64]/power6 ->
sysdeps/powerpc/powerpc[32|64]/power5+/fpu ->
sysdeps/powerpc/powerpc[32|64]/power5+ ->
sysdeps/powerpc/powerpc[32|64]/power5/fpu ->
sysdeps/powerpc/powerpc[32|64]/power5 ->
sysdeps/powerpc/powerpc[32|64]/power4/fpu ->
sysdeps/powerpc/powerpc[32|64]/power4 (from here, it'll go to the
generic path as usual)
I've just committed STT_GNU_IFUNC ppc/ppc64 support into prelink,
and this patch is needed on the glibc side. Without it ld.so segfaults,
as in dl-conflict.c sym_map is always NULL. While dl-machine.h could use
RESOLVE_CONFLICT_FIND_MAP macro to compute it, it doesn't make sense,
because with prelink we know it is already properly relocated (all relative
relocations are applied by prelink).
* sysdeps/powerpc/powerpc32/fpu/s_lround.S (__lround): Fixed erroneous
result when x is +/-nextafter(+/-0.5,-/+1) i.e. all 1's in the
mantissa.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S (__llround):
Likewise. Also account for when x is an odd number between 2^52
and 2^53-1.
* sysdeps/powerpc/powerpc64/fpu/s_llround.S (__llround): Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S (__llroundf): Likewise.
* math/libm-test.inc (lround_test, llround_test): Added test cases to
detect aforementioned erroneous conditions.
2008-01-24 Steven Munroe <sjmunroe@us.ibm.com>
[BZ #5741]
* sysdeps/powerpc/powerpc64/dl-machine.h (PPC_DCBT, PPC_DCBF):
Define additonal Data Cache Block instruction macros.
(elf_machine_fixup_plt): Add dcbt for opd and plt entries.
Replace dcbst with dcbf and sync with sync/isync.
* sysdeps/powerpc/powerpc32/power4/hp-timing.h: New file.
* sysdeps/powerpc/powerpc64/hp-timing.h [_ARCH_PWR4] (HP_TIMING_NOW):
For ISA 2.01 and later replace mftb with mfspr 268.
* sysdeps/i386/i686/memcpy.S: Optimize copying of equally aligned
buffers.
* sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S: New file.
* sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S: New file.
* sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S: New file.
* sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S: New file.
* sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S: New file.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S: New file.
* sysdeps/powerpc/powerpc32/power5/fpu/Implies: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/Implies: New file.
* sysdeps/powerpc/powerpc32/power6/fpu/Implies: New file.
* sysdeps/powerpc/powerpc32/power6x/fpu/Implies: New file.
* sysdeps/powerpc/powerpc64/970/fpu/Implies: New file.
* sysdeps/powerpc/powerpc64/power5/fpu/Implies: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/Implies: New file.
* sysdeps/powerpc/powerpc64/power6/fpu/Implies: New file.
* sysdeps/powerpc/powerpc64/power6x/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/970/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/970/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/Implies:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/fpu/Implies:
New file.
2007-05-31 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S: Move.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S: To here.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrintf.S: Move.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S: To here.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llround.S: Move.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S: To here.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llroundf.S: Move.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S: To here.
2007-05-22 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
(LONG_DOUBLE_COMPAT): Specify correct version, GLIBC_2_1.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
(LONG_DOUBLE_COMPAT): Specify correct version, GLIBC_2_1.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S
(LONG_DOUBLE_COMPAT): Specify correct version, GLIBC_2_1.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S
(LONG_DOUBLE_COMPAT): Specify correct version, GLIBC_2_1.
2007-05-21 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power4/fpu/slowexp.c: New file.
* sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.c: New file.
* sysdeps/powerpc/powerpc64/power4/fpu/slowexp.c: New file.
* sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c: New file.
2007-03-15 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S
[LONG_DOUBLE_COMPAT]: Add compat_symbol for llrintl@@GLIBC_2_1.
2006-02-13 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S: New File
* sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S: New File
* sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S: New File
* sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S: New File
2006-10-20 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power4/fpu/slowpow.c: New file.
* sysdeps/powerpc/powerpc64/power4/fpu/slowpow.c: New file.
2006-10-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llround.S: New file.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llroundf.S: New file.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/Makefile: Moved.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/mpa.c: Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/Makefile: To here.
* sysdeps/powerpc/powerpc32/power4/fpu/mpa.c: Likewise.
2006-09-29 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S: New file.
* sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S: New file.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S: New file.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S: New file.
2006-09-28 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S: New file.
* sysdeps/powerpc/powerpc32/power6x/fpu/Implies: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S: New file.
* sysdeps/powerpc/powerpc64/power6x/fpu/Implies: New file.
2006-08-31 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/powerpc64/fpu/Makefile: New file.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/mpa.c: New file.
* sysdeps/powerpc/powerpc64/power4/fpu/Makefile: New file.
* sysdeps/powerpc/powerpc64/power4/fpu/mpa.c: New file.
2006-06-15 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S: New file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S: New file.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S: New file.
2006-03-20 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S: New file.
* sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrintf.S: New file.
2007-06-01 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power6/memset.S: New file.
* sysdeps/powerpc/powerpc64/power6/memset.S: New file.
2007-05-31 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/970/Implies: New file.
* sysdeps/powerpc/powerpc32/power5/Implies: New file.
* sysdeps/powerpc/powerpc32/power5+/Implies: New file.
* sysdeps/powerpc/powerpc32/power6/Implies: New file.
* sysdeps/powerpc/powerpc32/power6x/Implies: New file.
* sysdeps/powerpc/powerpc64/970/Implies: New file.
* sysdeps/powerpc/powerpc64/power5/Implies: New file.
* sysdeps/powerpc/powerpc64/power5+/Implies: New file.
* sysdeps/powerpc/powerpc64/power6/Implies: New file.
* sysdeps/powerpc/powerpc64/power6x/Implies: New file.
2007-05-21 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power4/memset.S: New file
2007-03-13 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/memcpy.S: Improve aligned loop to minimize
branch miss-predicts. Ensure that cache line crossing does not impact
dispatch grouping.
2006-12-13 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/power4/memcopy.h: Replace with include
"../../powerpc32/power4/memcopy.h".
* sysdeps/powerpc/powerpc64/power4/wordcopy.c: Replace with include
"../../powerpc32/power4/wordcopy.c".
2006-10-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/powerpc64/Makefile: Moved.
* sysdeps/powerpc/powerpc32/powerpc64/memcopy.h: Likewise.
* sysdeps/powerpc/powerpc32/powerpc64/wordcopy.c: Likewise.
* sysdeps/powerpc/powerpc32/power4/Makefile: To here.
* sysdeps/powerpc/powerpc32/power4/memcopy.h: Likewise.
* sysdeps/powerpc/powerpc32/power4/wordcopy.c: Likewise.
2006-09-10 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power6/memcpy.S: New file.
2006-08-31 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power6/wordcopy.c: New file.
* sysdeps/powerpc/powerpc32/powerpc64/Makefile: New file.
* sysdeps/powerpc/powerpc32/powerpc64/memcopy.h: New file.
* sysdeps/powerpc/powerpc32/powerpc64/wordcopy.c: New file.
* sysdeps/powerpc/powerpc64/power4/Makefile: New file.
* sysdeps/powerpc/powerpc64/power4/memcopy.h: New file.
* sysdeps/powerpc/powerpc64/power4/wordcopy.c: New file.
* sysdeps/powerpc/powerpc64/power6/wordcopy.c: New file.
2006-07-06 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/power6/memcpy.S: New file.
2006-03-20 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc32/power4/memcmp.S: New file.
* sysdeps/powerpc/powerpc32/power4/memcpy.S: New file.
* sysdeps/powerpc/powerpc32/power4/memset.S: New file.
* sysdeps/powerpc/powerpc32/power4/strncmp.S: New file.
* sysdeps/powerpc/powerpc64/power4/memcmp.S: New file.
* sysdeps/powerpc/powerpc64/power4/memcpy.S: New file.
* sysdeps/powerpc/powerpc64/power4/strncmp.S: New file.
* math/gen-libm-test.pl (parse_args): Take function name for pretty
output as an argument.
(generate_testfile): Pass it the name given in the START macro.
[BZ #2466]
* math/libm-test.inc (llrint_test, llround_test): Fix last change to
protect large-precision cases with [LDBL_MANT_DIG > 100].
(llrint_test_tonearest, llrint_test_towardzero): Likewise.
(llrint_test_downward, llrint_test_upward): Likewise.
2006-03-15 Steven Munroe <sjmunroe@us.ibm.com>
Alan Modra <amodra@bigpond.net.au>
[BZ #2466]
* math/libm-test.inc (llrint_test, llround_test) [TEST_LDOUBLE]:
Add new test values.
(llrint_test_tonearest, llrint_test_towardzero, llrint_test_downward,
llrint_test_upward): New functions.
(main): Call them.
* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c (__llrintl): Handle
rounding that spans doubles in IBM long double format.
* sysdeps/ieee754/ldbl-128ibm/s_llroundl.c (__llroundl): Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_llrintl.S: Removed.
* sysdeps/powerpc/powerpc64/fpu/s_llroundl.S: Removed.
* sysdeps/powerpc/powerpc64/fpu/s_lrintl.S: Removed.
* sysdeps/powerpc/powerpc64/fpu/s_lroundl.S: Removed.
2006-03-16 Roland McGrath <roland@redhat.com>
of non-volatile floating-point registers to the stack (fp14-fp31).
* sysdeps/powerpc/powerpc32/gprsave0.S: Add cfi_offset for spilling of
non-volatile general-purpose registers to the stack (gpr13-gpr31).
* sysdeps/powerpc/powerpc64/dl-trampoline.S: Add cfi_offset
for non-volatiles gpr30 - grp31 spilled to the stack.
* sysdeps/powerpc/powerpc64/memcpy.S: Add cfi_offset for non-volatile
gpr31 spill to the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
Add cfi_offset for non-volatile gpr31 spill to the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Add cfi_offset
for non-volatiles gpr28 - grp31 spilled to the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Add
cfi_adjust_cfa_offset when a frame is stacked.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S:
(__novec_setcontext) : Add cfi_offset for non-volatile gpr31 spill
add LR saved to the stack. Add cfi_adjust_cfa_offset when frame is
stacked.
(__setcontext) : Add cfi_offset for non-volatile gpr31 spill to
the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S:
(__novec_swapcontext) : Add cfi_offset for non-volatile gpr31 spill
add LR saved to the stack.
(__swapcontext) : Add cfi_offset for non-volatile gpr31 spill add LR
saved to the stack. Add cfi_adjust_cfa_offset when frame is stacked.
Jakub Jelinek <jakub@redhat.com>
Roland McGrath <roland@redhat.com>
Steven Munroe <sjmunroe@us.ibm.com>
Alan Modra <amodra@bigpond.net.au>
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Comment fix.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
* math/libm-test.inc (check_float_internal): Allow ulp <= 0.5.
(erfc_test): Don't run erfcl (27.0L) test if erfcl (27.0L) is
denormal.
[TEST_LDOUBLE] (ceil_test, floor_test, llrint_test, llround_test,
rint_test, round_test, trunc_test): Add new tests.
* sysdeps/powerpc/powerpc32/fpu/s_copysignl.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fabs.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fabsl.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fdim.c: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fmax.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fmin.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_isnan.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_ceill.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_copysignl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fabs.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fabsl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fdim.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_floorl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fmax.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fmin.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_isnan.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llrintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llroundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lrintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lroundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_nearbyintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_rintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_roundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_truncl.S: New file.
* sysdeps/unix/sysv/linux/powerpc/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/configure.in: New file.
* sysdeps/unix/sysv/linux/powerpc/configure: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
(__LONG_DOUBLE_MATH_OPTIONAL): Define.
(__NO_LONG_DOUBLE_MATH): Define.
* sysdeps/unix/sysv/linux/powerpc/nldbl-abi.h: New file.
* sysdeps/powerpc/fpu/s_isnan.c: Include math_ldbl_opt.h.
* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (ceill): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (copysignl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (floorl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llrintl, lrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_llround.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llroundl, lroundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_rint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (rintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_round.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (roundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (truncl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (ceill): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (copysignl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (floorl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (lrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_llrint.c: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (lroundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (rintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (roundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (truncl): Add compatibility symbols.
* misc/qefgcvt_r.c [LDBL_MIN_10_EXP == -291] (FLOAT_MIN_10_NORM): New.
* sysdeps/powerpc/fpu/bits/mathdef.h (__NO_LONG_DOUBLE_MATH): Remove.
* sysdeps/powerpc/Implies: Add ieee754/ldbl-128ibm.
* sysdeps/powerpc/powerpc32/Implies: Remove powerpc/soft-fp.
* sysdeps/ieee754/ldbl-128ibm/Makefile: New file.
* sysdeps/ieee754/ldbl-128ibm/e_acoshl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_acosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_asinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_atan2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_coshl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_expl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_j0l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_j1l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_jnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_log10l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_log2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_logl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_powl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/ieee754.h: New file.
* sysdeps/ieee754/ldbl-128ibm/k_cosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_sinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_tanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c: New file.
* sysdeps/ieee754/ldbl-128ibm/math_ldbl.h: New file.
* sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/printf_fphex.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_atanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_cosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_erfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_fabsl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_finitel.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_frexpl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_isinfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_isnanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_logbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_modfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_remquol.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_rintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_signbitl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_sinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_tanhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_tanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_truncl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/strtold_l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/t_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/w_expl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_copysignl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_floorl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_llroundl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_roundl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_ceill.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_lroundl.c: New file.
* sysdeps/ieee754/ldbl-128/e_powl.c: Fix old comment.
* sysdeps/powerpc/powerpc64/fpu/e_sqrtf.c: New file.
* sysdeps/powerpc/fpu/bits/mathinline.h (__CPU_HAS_FSQRT): New macro.
(__ieee754_sqrt, __ieee754_sqrtf): Use it.
directive to ENTRY macros.
(END): Add cfi_endproc directive to END macro.
* sysdeps/powerpc/powerpc64/sysdep.h (ENTRY, EALIGN): Add cfi_startproc
directive to ENTRY macros.
(END, END_GEN_TB): Add cfi_endproc directive to END macros.
* sysdeps/powerpc/powerpc32/dl-start.S: Remove ENTRY()s for
_dl_start_user and _dl_main_dispatch.
* sysdeps/powerpc/powerpc32/fpu/fprrest.S: Use END macro.
* sysdeps/powerpc/powerpc32/fpu/fprsave.S: Use Likewise.
* sysdeps/powerpc/powerpc32/gprrest0.S: Likewise.
* sysdeps/powerpc/powerpc32/gprrest1.S: Likewise.
* sysdeps/powerpc/powerpc32/gprsave0.S: Likewise.
* sysdeps/powerpc/powerpc32/gprsave1.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S: Remove redundant
cfi_startproc and cfi_endproc.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Likewise.
2006-01-04 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/aio_misc.h (struct waitlist): Add result member.
* sysdeps/pthread/aio_notify.c (__aio_notify): For synchronous waiters,
failed I/O, and a result pointer, set value to -1.
* sysdeps/pthread/aio_suspend.c: Initialize result pointer to NULL.
* sysdeps/pthread/lio_listio.c: For LIO_WAIT, point result pointer in
wait list to local variable result. If nonzero afterwards, set errno
to EIO. For LIO_NOWAIT set result to NULL.
* rt/Makefile (tests): Add tst-aio8.
* rt/tst-aio8.c: New file.
value doesn't survive in a registers when the function returns.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
* sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise.
2005-12-30 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Define
PTR_MANGLE2.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Define
PTR_MANGLE2 and PTR_DEMANGLE2.
* sysdeps/powerpc/powerpc64/__longjmp-common.S: Use PTR_DEMANGLE2.
* sysdeps/powerpc/powerpc64/setjmp-common.S: Use PTR_MANGLE2.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
* sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise.
2005-12-30 Ulrich Drepper <drepper@redhat.com>
(La_ppc64_retval): Correct size of lrc_fp.
* sysdeps/powerpc/powerpc64/dl-trampoline.S (_dl_profile_resolve):
Fix up ABI problems and complete function.
* intl/dcigettext.c (_nl_find_msg): Add a cast.
* nis/nis_clone_dir.c (nis_clone_directory): Use char * for ADDR.
* nis/nis_clone_obj.c (nis_clone_object): Likewise.
* nis/nis_clone_res.c (nis_clone_result): Likewise.
* resolv/nss_dns/dns-network.c (getanswer_r): Use const unsigned char *
for END_OF_MESSAGE and CP.
* resolv/res_send.c (send_dg): Add else branch for case impossible
unless `poll' is buggy.
* crypt/crypt_util.c (__setkey_r): Add a cast.
* locale/programs/linereader.c (get_toplvl_escape): Use size_t for
NBYTES, and unsigned char * for BYTES.
* locale/programs/charmap.c (charmap_new_char): Use size_t and
unsighed char * for NBYTES, BYTES parameters.
* sysdeps/generic/dl-hash.h (_dl_elf_hash): Take const char * argument
and cast it.
* sysdeps/i386/i686/dl-hash.h (_dl_elf_hash): Likewise.
* sunrpc/create_xid.c (_create_xid): Don't use unsigned long for RES.
* sunrpc/svcauth_des.c (_svcauth_des): Fix cast type.
* sunrpc/auth_des.c (authdes_create): Don't use u_char for PKEY_DATA.
(authdes_marshal): Don't use unsigned int for LEN.
* sunrpc/xdr.c (xdr_hyper): Don't use unsigned long for T2.
(xdr_u_hyper): Likewise.
(xdr_u_short): Don't use u_long for L.
* sunrpc/xdr_intXX_t.c (xdr_int64_t): Don't use uint32_t for T2.
* inet/rexec.c (rexec_af): Use socklen_t.
* sunrpc/key_call.c (getkeyserv_handle): Likewise.
* sunrpc/rtime.c (rtime): Likewise.
* resolv/res_send.c (send_vc, send_dg): Likewise.
* nis/nis_callback.c (__nis_create_callback): Likewise.
* sysdeps/generic/libc-start.c: Use unsigned int for nthreads ptr.
* sysdeps/posix/getaddrinfo.c (gaih_inet): Fix type of ADDR local.
* libio/libio.h (_IO_BE): Add parenthesis around EXPR.
* intl/dcigettext.c (INTVARDEF, INTUSE): Macros removed.
(_nl_default_dirname): Use libc_hidden_data_def instead of INTVARDEF.
(libc_freeres_fn, DCIGETTEXT): Don't use INTUSE.
* intl/bindtextdom.c (INTUSE): Macro removed.
(_nl_default_dirname): Use libc_hidden_proto.
(set_binding_values): Don't use INTUSE.
* include/libintl.h (_libc_intl_domainname_internal): Decl removed.
(_libc_intl_domainname): Use libc_hidden_proto.
* posix/regex_internal.h (gettext): Remove INTUSE on it.
* locale/SYS_libc.c (_libc_intl_domainname): Use libc_hidden_data_def
rather than INTDEF.
* include/libintl.h (_): Don't use *_internal name.
* ctype/ctype-extn.c (__ctype_tolower, __ctype_toupper): Use int32_t,
not uint32_t.
* locale/lc-ctype.c (_nl_postload_ctype): Likewise for assignments.
* iconv/gconv_open.c (__gconv_open): Remove useless cast.
[BZ #721]
* sysdeps/i386/dl-machine.h (ELF_MACHINE_NO_RELA): Define this outside
of [RESOLVE_MAP].
* sysdeps/sh/dl-machine.h (ELF_MACHINE_NO_REL): Likewise.
* sysdeps/powerpc/powerpc32/dl-machine.h
(elf_machine_rel, elf_machine_rel_relative): Removed.
* sysdeps/powerpc/powerpc64/dl-machine.h
(elf_machine_rel, elf_machine_rel_relative): Removed.
2005-02-03 Alexandre Oliva <aoliva@redhat.com>
[BZ #721]
* elf/dynamic-link.h: Don't declare nested auto functions that are
not going to be defined.
2004-07-23 Jakub Jelinek <jakub@redhat.com>
[BZ #284]
* include/features.h (_POSIX_SOURCE, _POSIX_C_SOURCE): Define
if _XOPEN_SOURCE >= 500 even if __STRICT_ANSI__ is defined.
2005-02-16 Roland McGrath <roland@redhat.com>
* sysdeps/powerpc/powerpc64/dl-machine.h
(elf_machine_runtime_setup): If profile != 0 does not anymore mean
GLRO(dl_profile) != NULL.
* sysdeps/powerpc/powerpc64/bits/link.h (struct la_ppc64_regs): Add
padding.
* sysdeps/powerpc/powerpc64/dl-trampoline.S: (_dl_profile_resolve):
Extend _dl_prof_resolve to add pass extra parameters to
_dl_profile_fixup and set up structure with register content.
* sysdeps/powerpc/powerpc32/dl-machine.c (__elf_machine_runtime_setup):
If profile != 0 does not anymore mean GLRO(dl_profile) != NULL.
* sysdeps/powerpc/powerpc32/bits/link.h: Fix types of some fields in
the register and result structures.
* sysdeps/powerpc/powerpc64/bits/link.h: Fix types of some fields
in the 32-bit register and result structures.
* sysdeps/powerpc/powerpc32/dl-trampoline.S (_dl_prof_resolve):
Extend _dl_prof_resolve to add pass extra parameters to
_dl_profile_fixup and set up structure with register content.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Make no_vmx symbol
local.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Make no_vmx symbol
local.
* sysdeps/powerpc/powerpc64/__longjmp-common.S: Make no_vmx symbol
local.
* sysdeps/powerpc/powerpc64/setjmp-common.S: Make no_vmx and
aligned_save_vmx symbol local.
* sysdeps/powerpc/powerpc64/bits/atomic.h
(__arch_compare_and_exchange_bool_32_acq): Fix case where oldval
is negative.
(__arch_compare_and_exchange_bool_32_rel): Likewise.
Update.
2004-07-16 Steven Munroe <sjmunroe@us.ibm.com>
[BZ #269]
* setjmp/Makefile (tests): Add bug269-setjmp.
* setjmp/bug269-setjmp.c: New file.
* sysdeps/powerpc/powerpc64/__longjmp-common.S [SHARED && !IS_IN_rtld]:
Store R2 from jmpbuf in callers TOC save area.
* sysdeps/powerpc/powerpc64/bsd-_setjmp.S [SHARED && !IS_IN_rtld]:
Store R2 in TOC save area.
* sysdeps/powerpc/powerpc64/setjmp-common.S [SHARED && !IS_IN_rtld]:
Copy TOC save area from previous frame as R2 (TOC) in jmpbuf.
2004-07-05 Ulrich Drepper <drepper@redhat.com>
* elf/dl-init.c: Don't define and use _dl_starting_up if
HAVE_INLINED_SYSCALLS is defined and the variable is not used.
* elf/dl-support.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly
if HAVE_INLINED_SYSCALLS is defined.
* sysdeps/powerpc/powerpc64/dl-machine.h: Don't rest _dl_starting_up
here.
* sysdeps/powerpc/powerpc32/dl-start.S: Likewise.
* sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS.
* config.h.in: Add entry for HAVE_INLINED_SYSCALLS.
* sysdeps/posix/profil.c: If compiled for ld.so, omit code which
is needed to stop profiling.
* elf/dl-open.c (dl_open_worker): If a newly opened object is to be
profile make sure it cannot be unloaded.
* sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall.
* sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation
support, make sure the helper function is inlined.
* sysdeps/unix/sysv/linux/pread.c: Likewise.
* sysdeps/unix/sysv/linux/pwrite.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.
2004-07-05 Jakub Jelinek <jakub@redhat.com>
* sysdeps/powerpc/novmx-longjmp.c (__libc_longjmp,
__libc_siglongjmp): Remove symbol_version.
* sysdeps/powerpc/longjmp.c (__libc_longjmp, __libc_siglongjmp):
Export @@GLIBC_PRIVATE, not @@GLIBC_2.3.4.
* sysdeps/powerpc/sigjmp.c (__sigjmp_save): Use strong_alias
unconditionally.
* sysdeps/powerpc/novmx-sigjmp.c (__sigjmp_save): Remove.
* sysdeps/powerpc/powerpc32/__longjmp.S (__longjmp): Use
strong_alias instead of default_symbol_version, remove
symbol_version.
* sysdeps/powerpc/powerpc64/__longjmp.S (__longjmp): Likewise.
* sysdeps/powerpc/powerpc32/bsd-setjmp.S (__novmx__setjmp): Change
into strong_alias to __novmxsetjmp.
(__vmx__setjmp): Similarly with __vmxsetjmp.
(__setjmp): Make it strong_alias to __vmx__setjmp, remove
default_symbol_version and symbol_version.
* sysdeps/powerpc/powerpc64/bsd-setjmp.S (__novmx__setjmp): Change
into strong_alias to __novmxsetjmp.
(__vmx__setjmp): Similarly with __vmxsetjmp.
(__setjmp): Make it strong_alias to __vmx__setjmp, remove
default_symbol_version and symbol_version.
* nscd/nscd_getgr_r.c: Include stdio-common/_itoa.h.
2004-06-17 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/pthread_cond_timedwait.c
(__pthread_cond_timedwait): Also check for negativ nanoseconds.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
(__pthread_cond_timedwait): Check for invalid nanosecond in
timeout value.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
* tst-cond19.c: New file.
* Makefile: Add rules to build and run tst-cond19.
* sysdeps/powerpc/powerpc32/__longjmp.S (JB_SIZE): Undefine before
including __longjmp-common.S again.
* sysdeps/powerpc/powerpc64/__longjmp.S (JB_SIZE): Likewise.
* sysdeps/powerpc/powerpc32/setjmp.S (JB_SIZE): Undefine before
including setjmp-common.S again.
* sysdeps/powerpc/powerpc64/setjmp.S (JB_SIZE): Likewise.
* sysdeps/powerpc/novmxsetjmp.h (__novmx__longjmp): Fix type of
first argument in the prototype.
* sysdeps/powerpc/longjmp.c (__vmx__longjmp, __vmx__libc_longjmp):
Remove bogus semicolons.
2004-02-19 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/generic/libc-start.c [LIBC_START_DISABLE_INLINE] (STATIC):
Define as static.
* sysdeps/powerpc/elf/libc-start.c: Define LIBC_START_DISABLE_INLINE
because gcc does not allow inline of functions that call setjmp.
2004-02-19 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/Makefile: Use -finline-limit.
2004-02-19 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (_dl_argv): If DL_ARGV_NOT_RELRO defined, don't
use attribute_relro for _dl_argv.
* sysdeps/alpha/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
* sysdeps/ia64/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
* sysdeps/sparc/sparc32/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
* sysdeps/sparc/sparc64/dl-machine.h (DL_ARGV_NOT_RELRO): Define.
vfork instead of fork.
2004-02-13 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/__longjmp-common.S: New file.
* sysdeps/powerpc/powerpc64/__longjmp.S [NOT_IN_libc](__longjmp):
Non-versioned __longjmp for rtld-__longjmp.
[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
default version of __longjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmx__longjmp): Original version of __longjmp.
* sysdeps/powerpc/powerpc64/bsd-_setjmp.S [NOT_IN_libc](_setjmp):
Non-versioned _setjmp for rtld-_setjmp.
[!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
as default version of _setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmx_setjmp): Original version of _setjmp.
* sysdeps/powerpc/powerpc64/bsd-setjmp.S (__vmxsetjmp): Branch to
__vmx__sigsetjmp and define as default version of setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmxsetjmp): Original version of setjmp.
* sysdeps/powerpc/powerpc64/setjmp-common.S: New file.
* sysdeps/powerpc/powerpc64/setjmp.S [NOT_IN_libc](__setjmp):
Non-versioned __sigsetjmp for rtld-setjmp.
[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
as default version of __sigsetjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmx__sigsetjmp): Original version of __sigsetjmp.
* sysdeps/powerpc/powerpc32/__longjmp-common.S: New File
* sysdeps/powerpc/powerpc32/__longjmp.S [NOT_IN_libc](__longjmp):
Non-versioned __longjmp for rtld-__longjmp.
[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
default version of __longjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__longjmp): Original version of __longjmp.
* sysdeps/powerpc/powerpc32/bsd-_setjmp.S [NOT_IN_libc](_setjmp):
Non-versioned _setjmp for rtld-_setjmp.
[!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
as default version of _setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx_setjmp): Original version of _setjmp.
* sysdeps/powerpc/powerpc32/bsd-setjmp.S (__vmxsetjmp): Branch to
__vmx__sigsetjmp and define as default version of setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmxsetjmp): Original version of setjmp.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: New file.
* sysdeps/powerpc/powerpc32/fpu/__longjmp.S [NOT_IN_libc](__longjmp):
Non-versioned __longjmp for rtld-__longjmp.
[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
default version of __longjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__longjmp): Original version of __longjmp.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: New file.
* sysdeps/powerpc/powerpc32/fpu/setjmp.S [NOT_IN_libc](__setjmp):
Non-versioned __sigsetjmp for rtld-setjmp.
[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
as default version of __sigsetjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__sigsetjmp): Original version of __sigsetjmp.
* sysdeps/powerpc/powerpc32/setjmp-common.S: New file.
* sysdeps/powerpc/powerpc32/setjmp.S [NOT_IN_libc](__setjmp):
Non-versioned __sigsetjmp for rtld-setjmp.
[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
as default version of __sigsetjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__sigsetjmp): Original version of __sigsetjmp.
* sysdeps/powerpc/Dist: New File.
* sysdeps/powerpc/Makefile (sysdep_routines): Add novmx-longjmp.c
and novmx-sigjmp.c
* sysdeps/powerpc/Versions (libc): To GLIBC_2.3_4 add _longjmp,
__sigsetjmp, _setjmp, longjmp, and setjmp. To GLIBC_PRIVATE add
__novmx__libc_longjmp, __novmx__libc_siglongjmp, __vmx__libc_longjmp,
and __vmx__libc_siglongjmp.
* sysdeps/powerpc/bits/setjmp.h: Define JB_VRSAVE, JB_VRS, and adjust
JB_SIZE to add VMX regs to __jmp_buf.
* sysdeps/powerpc/longjmp.c: New file.
* sysdeps/powerpc/novmxsetjmp.h: New file.
* sysdeps/powerpc/novmx-longjmp.c: New file.
* sysdeps/powerpc/novmx-sigjmp.c: New file.
* sysdeps/powerpc/sigjmp.c: New file.
2003-07-04 Jakub Jelinek <jakub@redhat.com>
* sysdeps/s390/s390-32/elf/start.S: Emit position independent code
if PIC.
* sysdeps/s390/s390-64/elf/start.S: Likewise.
2003-07-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address)
into .data.rel.ro.local section if PIC to avoid DT_TEXTREL.
* sysdeps/posix/getaddrinfo.c (gaih_inet): Set no_inet6_date alse
if only PF_INET address is needed.
* nss/getXXbyYY_r.c: Make sure we always return a nonzero value in
case of an error.
2003-04-16 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile (distribute): Add tst-tlsmod{[7-9],1[0-2]}.c and
tst-tls10.h.
(tests): Add tst-tls1[0-2].
(modules-names): Add tst-tlsmod{[7-8],1[0-2]}.
($(objpfx)tst-tlsmod8.so): Depend on tst-tlsmod7.so.
($(objpfx)tst-tlsmod10.so): Depend on tst-tlsmod9.so.
($(objpfx)tst-tlsmod12.so): Depend on tst-tlsmod11.so.
($(objpfx)tst-tls10): Depend on tst-tlsmod8.so.
($(objpfx)tst-tls11): Depend on tst-tlsmod10.so.
($(objpfx)tst-tls12): Depend on tst-tlsmod12.so.
* elf/tst-tls10.c: New test.
* elf/tst-tls11.c: New test.
* elf/tst-tls12.c: New test.
* elf/tst-tls10.h: New file.
* elf/tst-tlsmod7.c: New file.
* elf/tst-tlsmod8.c: New file.
* elf/tst-tlsmod9.c: New file.
* elf/tst-tlsmod10.c: New file.
* elf/tst-tlsmod11.c: New file.
* elf/tst-tlsmod12.c: New file.
2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/bits/atomic.h: Moved ppc32/64 specific code to ...
* sysdeps/powerpc/powerpc32/bits/atomic.h: New file.
* sysdeps/powerpc/powerpc64/bits/atomic.h: New file.
* posix/regex.h: Include <sys/types.h>.
2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/strcmp.S: Convert to full 64-bit.
* sysdeps/powerpc/powerpc64/strcpy.S: Likewise.
has been promoted to wordsize if the ABI requires caller to do so.
* string/test-strncmp.c (do_random_tests): Likewise.
* string/test-memcmp.c (do_random_tests): Likewise.
* sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Sign extend rRTN
before returning.
(LIBC_START_MAIN, LIBC_START_MAIN_AUXVEC_ARG, MAIN_AUXVEC_ARG)
(INIT_MAIN_ARGS): Define, and #include <sysdeps/generic/libc-start.c>.
(__libc_start_main): Just call the generic one for most of the work.
* sysdeps/generic/libc-start.c [LIBC_START_MAIN]: If defined, define a
static function by that name instead of BP_SYM (__libc_start_main).
[LIBC_START_MAIN_AUXVEC_ARG]: Take AUXVEC as argument.
[MAIN_AUXVEC_ARG]: Pass 4th argument to MAIN.
[INIT_MAIN_ARGS]: Give INIT the same args as MAIN.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [DL_PLATFORM_AUXV]:
Use this macro for extra AT_* cases.
* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_PLATFORM_AUXV):
New macro, guts from ...
(__aux_init_cache): ... here, function removed.
(DL_PLATFORM_INIT): Don't define this.
* sysdeps/powerpc/powerpc32/memset.S: Put __cache_line_size in bss.
* sysdeps/powerpc/powerpc64/memset.S: Likewise.
* Versions.def (libthread_db): Add GLICB_2.3.3 set.
* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela):
Check SYM_MAP rather than SYM as definedness check.
Handle R_PPC64_ADDR32, R_PPC64_ADDR30, and R_PPC64_REL64 relocs.
Don't handle R_PPC64_REL24 reloc.
Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
* sysdeps/powerpc/powerpc64/dl-machine.h
[USE_TLS] (elf_machine_type_class): Match all the TLS relocs in a
block, so we cover all the TPREL16* flavors without 6 ||s.
[USE_TLS] (elf_machine_tprel): New function.
(elf_machine_rela) [USE_TLS]: Use elf_machine_tprel for TPREL64 reloc,
and handle TPREL16 relocs too. Return rather than break for DTPREL64.
Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
(elf_machine_rela): Always use RESOLVE_MAP, needed for
R_PPC64_JMP_SLOT as well as TLS cases.
(BIT_INSERT): Move parenthesis where it ought to have been.
Reported by Steven Munroe <sjmunroe@us.ibm.com>.
Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED].
(elf_machine_rela): Clean up.
* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up.
PowerPC TLS support contributed by Paul Mackerras <paulus@samba.org>.
* sysdeps/powerpc/powerpc32/elf/configure.in: New file.
* sysdeps/powerpc/powerpc32/elf/configure: New generated file.
* elf/tls-macros.h [__powerpc__ && !__powerpc64__]
(TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them.
* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support
new relocs for TLS.
* sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these
macros out of [SHARED].
(TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros.
* elf/elf.h: Define R_PPC_* relocs for TLS support.
Clean up R_PPC64_* macro definition comments.
special case for dl_rtld_map in R_PPC64_RELATIVE; it's harmless to
repeat it and avoids the test for the common case.
Clean up and fix calculations for TLS relocs.
* sysdeps/powerpc/powerpc64/dl-tls.h: Moved to ...
* sysdeps/powerpc/dl-tls.h: ... here.
(TLS_TP_OFFSET): New macro.
* sunrpc/svc_udp.c (svcudp_recv): Add a cast to last change.
2003-02-25 Roland McGrath <roland@redhat.com>
* sysdeps/powerpc/powerpc64/dl-machine.h: Support new TLS relocs.
* sysdeps/powerpc/powerpc64/dl-tls.h: New file.
2003-01-11 Jim Meyering <jim@meyering.net>
* io/ftw.c [HAVE_CONFIG_H]: Include <config.h>.
[HAVE_SYS_PARAM_H || _LIBC]: Guard inclusion of <sys/param.h>.
Include <sys/stat.h>, not <include/sys/stat.h>, if !_LIBC.
[!_LIBC] (__chdir, __closedir, __fchdir, __getcwd, __opendir): Define.
[!_LIBC] (__readdir64, __tdestroy, __tfind, __tsearch): Define.
[!_LIBC] (internal_function, dirent64, MAX): Define.
(__set_errno): Define if not already defined.
(open_dir_stream): When FTW_CHDIR is enabled, invoke opendir on
the basename, not the entire file name.
(process_entry): When FTW_CHDIR is enabled, invoke XSTAT or LXSTAT on
the basename, not the entire file name.
2003-01-12 Ulrich Drepper <drepper@redhat.com>
* string/tester.c (test_strcpy): Disable last added strcpy until
it is fixed.
2003-01-11 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/arm/socket.S: Add cancellation support.
2003-01-11 Andreas Schwab <schwab@suse.de>
* Makerules: Add vpath for %.dynsym and %.so so that the
implicit rule chaining for check-abi works.
2003-01-11 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sysdep.h (SYSCALL_ERROR_HANDLER):
Add non-PIC case.
2003-01-11 Jakub Jelinek <jakub@redhat.com>
* elf/tls-macros.h [__ia64__] (__TLS_CALL_CLOBBERS): Define.
[__ia64__] (TLS_LE, TLS_IE): Fix typos. Add ;; at start of asm if
gp is used early.
[__ia64__] (TLS_LD, TLS_GD): Likewise. Use __TLS_CALL_CLOBBERS.
* elf/Makefile ($(objpfx)tst-tlsmod5.so, $(objpfx)tst-tlsmod6.so):
Ensure libc.so in DT_NEEDED.
* sysdeps/alpha/dl-machine.h (elf_machine_rela): Move
CHECK_STATIC_TLS before l_tls_offset use.
* sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela):
Likewise.
* sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise.
* sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage) [TLS_DTV_AT_TP]:
Allocate TLS_PRE_TCB_SIZE bytes below result.
(_dl_deallocate_tls) [TLS_DTV_AT_TP]: Adjust before freeing.
* sysdeps/generic/libc-tls.c (__libc_setup_tls): If
TLS_INIT_TP_EXPENSIVE is not defined, allocate even if no PT_TLS
segment has been found. If TLS_DTV_AT_TP, allocate TLS_PRE_TCB_SIZE
bytes below result and add tcb_offset to memsz.
* sysdeps/ia64/dl-tls.h (__tls_get_addr): New prototype.
* sysdeps/ia64/dl-machine.h: Include tls.h.
(elf_machine_type_class): Return ELF_RTYPE_CLASS_PLT for TLS relocs
too.
(elf_machine_rela): Assume if sym_map != NULL sym is non-NULL too.
Handle R_IA64_DTPMOD*, R_IA64_DTPREL* and R_IA64_TPREL* relocations.
* sysdeps/ia64/libc-tls.c: New file.
2003-01-10 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_RET): Add branch hit.
* sysdeps/unix/sysv/linux/powerpc/bits/stat.h (STAT_VER_LINUX):
Fix type. Move definition out of #if.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/ftruncate64.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Add cancellation
support.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Remove
ftruncate64, pread64, pwrite64, truncate64 entries.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
(INLINE_SYSCALL): New version that supports function call like
syscalls. Add __builtin_expect.
(LOADARGS_n): Add argument size safety checks.
(INTERNAL_SYSCALL): New Macro.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/truncate64.c: New file.
* sysdeps/unix/sysv/linux/powerpc/sys/procfs.h [__PPC_ELF_H]: Avoid
redefinition of elf_fpreg_t and elf_fpregset_t.
2003-01-12 Ulrich Drepper <drepper@redhat.com>
* elf/dl-close.c (_dl_close): Add several asserts. Correct and
simplify test for unloading. If loader of a DSO is unloaded do not
use its scope anymore. Fall back to own scope and adjust opencounts.
Fix several comments.
* elf/dl-deps.c (_dl_map_object_deps): Always allocate memory for
the l_searchlist, not only for l_initfini.
* elf/dl-lookup.c (add_dependencies): Avoid creating relocation
dependencies if objects cannot be removed. Remove object with the
definition as not unloadable if necessary.
* elf/reldep6.c: Create relocation dependency before closing the first
module.
2003-01-10 Guido Günther <agx@sigxcpu.org>
* elf/Makefile: Add rules to build and run reldep9 test.
* elf/reldep9.c: New file.
* elf/reldep9mod1.c: New file.
* elf/reldep9mod2.c: New file.
* elf/reldep9mod3.c: New file.
2003-01-09 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile: Add rules to build and run nodelete2 test.
* elf/nodelete2.c: New file.
* elf/nodel2mod1.c: New file.
* elf/nodel2mod2.c: New file.
* elf/nodel2mod3.c: New file.
2003-01-09 Jakub Jelinek <jakub@redhat.com>
* sysdeps/powerpc/powerpc32/sysdep.h: New file. Define powerpc32
specific macros copied from sysdeps/powerpc/sysdep.h.
* sysdeps/powerpc/powerpc64/sysdep.h: New file. Define powerpc64
specific macros.
* sysdeps/unix/powerpc/sysdep.h: Include <bits/wordsize.h>.
[__WORDSIZE==64]: Include sysdeps/powerpc/powerpc64/sysdep.h.
[!__WORDSIZE==64]: Include sysdeps/powerpc/powerpc32/sysdep.h.
Ported to PowerPC64 running Linux.
* sysdeps/powerpc/powerpc64/Dist: New file.
* sysdeps/powerpc/powerpc64/Implies: New file.
* sysdeps/powerpc/powerpc64/Makefile: New file.
* sysdeps/powerpc/powerpc64/__longjmp.S: New file.
* sysdeps/powerpc/powerpc64/atomicity.h: New file.
* sysdeps/powerpc/powerpc64/backtrace.c: New file.
* sysdeps/powerpc/powerpc64/bp-asm.h: New file.
* sysdeps/powerpc/powerpc64/bsd-_setjmp.S: New file.
* sysdeps/powerpc/powerpc64/bsd-setjmp.S: New file.
* sysdeps/powerpc/powerpc64/dl-dtprocnum.h: New file.
* sysdeps/powerpc/powerpc64/dl-lookupcfg.h: New file.
* sysdeps/powerpc/powerpc64/dl-machine.c: New file.
* sysdeps/powerpc/powerpc64/dl-machine.h: New file.
* sysdeps/powerpc/powerpc64/memset.S: New file.
* sysdeps/powerpc/powerpc64/ppc-mcount.S: New file.
* sysdeps/powerpc/powerpc64/register-dump.h: New file.
* sysdeps/powerpc/powerpc64/setjmp.S: New file.
* sysdeps/powerpc/powerpc64/stpcpy.S: New file.
* sysdeps/powerpc/powerpc64/strchr.S: New file.
* sysdeps/powerpc/powerpc64/strcmp.S: New file.
* sysdeps/powerpc/powerpc64/strcpy.S: New file.
* sysdeps/powerpc/powerpc64/strlen.S: New file.
* sysdeps/powerpc/powerpc64/elf/bzero.S: New file.
* sysdeps/powerpc/powerpc64/elf/start.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_copysignf.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: New File.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/glob64.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: New file.
* csu/gmon-start.c [!TEXT_START]: Define TEXT_START if not already
defined in entry.h.
(__gmon_start__) [!ENTRY_POINT_DECL]: Use TEXT_START macro to obtain
lowest address for profiling in __monstartup call.
* sysdeps/powerpc/powerpc64/elf/entry.h: New file.