Allan McRae [Fri, 25 Oct 2013 04:25:38 +0000 (14:25 +1000)]
Fix incorrect getaddrinfo assertion trigger
[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.
Chris Leonard [Thu, 24 Oct 2013 15:43:38 +0000 (11:43 -0400)]
Adjust language-code fields of LC_ADDRESS.
Ondřej Bílka [Mon, 21 Oct 2013 07:58:03 +0000 (09:58 +0200)]
Document rpcgen -5. Fixes bug 15825
Michael Stahl [Sun, 20 Oct 2013 08:34:09 +0000 (10:34 +0200)]
Print the reason why preloading failed in do_preload()
Ondřej Bílka [Sun, 20 Oct 2013 08:00:31 +0000 (10:00 +0200)]
When glob pattern contains a trailing slash match only directories. Fixes bug 10278.
Ondřej Bílka [Sun, 20 Oct 2013 06:25:25 +0000 (08:25 +0200)]
Replace alloca in __tzfile_read by malloc. Fixes bug 15670
Carlos O'Donell [Sat, 19 Oct 2013 04:11:31 +0000 (00:11 -0400)]
Mention FIPS 140-2 compliance and Sun RPC.
The Secure RPC implementation in glibc uses DES encryption
during authentication of the user. This use of DES means
that anyone using Sun RPC will likely not be compliant
with FIPS 140-2 which forbids the use of DES.
One solution to the compliance issue is to disable AUTH_DES
and AUTH_KERB, both use DES, when in FIPS compliance mode.
This is not a good idea because it disables all of the even
mildly secure methods of authentication allowing only plain
text methods.
Instead we leave AUTH_DES and AUTH_KERB enabled in FIPS
compliance mode and document the compliance issue in the
manual. FIPS allows this, that is to say that if you can't
fix it you must document the non-compliance.
This commit adds documentation to that effect in the
"DES encryption and password handling" section of the
manual.
Carlos O'Donell [Sat, 19 Oct 2013 03:41:30 +0000 (23:41 -0400)]
Enhance localedef --list-archive option.
The localedef --list-archive option claims that it can
accept a [file] argument and list the contents of that
archive. The support was never implemented. This patch
adds that support and allows --list-archive to work as
expected. You can now use localedef to list the contents
of arbitrary locale archives by using:
./localedef --list-archive file
Joseph Myers [Fri, 18 Oct 2013 21:28:57 +0000 (21:28 +0000)]
Move entries to correct port ChangeLog files.
Joseph Myers [Fri, 18 Oct 2013 21:03:40 +0000 (21:03 +0000)]
Add e500 port.
Joseph Myers [Fri, 18 Oct 2013 21:00:20 +0000 (21:00 +0000)]
Remove duplicate bug numbers from NEWS.
Richard Sandiford [Fri, 18 Oct 2013 20:58:31 +0000 (20:58 +0000)]
Fix localedef collation handling of <U0000> (bug 15948).
Siddhesh Poyarekar [Fri, 18 Oct 2013 14:15:36 +0000 (19:45 +0530)]
Don't include tls.h in test cases
Remove tls.h includes where they are not needed.
Ondřej Bílka [Fri, 18 Oct 2013 07:32:35 +0000 (09:32 +0200)]
Remove assert in malloc statistic. Fixes bug 12486.
Ondřej Bílka [Thu, 17 Oct 2013 16:33:58 +0000 (18:33 +0200)]
Fix inet_network("1 bar"). Fixes bug 15277.
Andreas Schwab [Tue, 15 Oct 2013 08:21:13 +0000 (10:21 +0200)]
Don't use gethostbyaddr to determine canonical name
Ondřej Bílka [Thu, 17 Oct 2013 14:03:24 +0000 (16:03 +0200)]
Format floating routines.
Joseph Myers [Thu, 17 Oct 2013 12:36:02 +0000 (12:36 +0000)]
soft-fp: make extensions quiet signaling NaNs (bug 16041).
Joseph Myers [Wed, 16 Oct 2013 01:22:21 +0000 (01:22 +0000)]
soft-fp: fix horizontal whitespace.
Joseph Myers [Tue, 15 Oct 2013 23:33:37 +0000 (23:33 +0000)]
soft-fp: remove unused macros.
Ondřej Bílka [Tue, 15 Oct 2013 07:45:37 +0000 (09:45 +0200)]
Clear initfini list after freeing. Fixes bug 15308.
Joseph Myers [Tue, 15 Oct 2013 00:17:35 +0000 (00:17 +0000)]
soft-fp: fix vertical whitespace and indentation.
Ondřej Bílka [Mon, 14 Oct 2013 15:15:08 +0000 (17:15 +0200)]
Fix error_tail overflow in allocation calculation.
Ondřej Bílka [Sun, 13 Oct 2013 21:03:28 +0000 (23:03 +0200)]
Correctly copy resolver address. Fixes bug #13028.
Patrick 'P. J.' McDermott [Thu, 12 Sep 2013 03:13:36 +0000 (23:13 -0400)]
ldd: make try_trace more robust and portable
It was noted in 2005 (BZ #832), 2006 (BZ #3266), and 2007 [1] that ldd
fails on shells other than Bash >= 3.0 because of the pipefail option
around try_trace (added on 2004-12-08). EGLIBC was patched in 2008 [2]
(r6912) to make the pipefail check run only on shells that support it,
but RTLD output would still be lost on other shells with certain SELinux
policies.
This patch rewrites try_trace to work on any POSIX-conformant shell in
such a way as to also work with such SELinux policies. It also obviates
one difference between glibc and EGLIBC.
URL: https://sourceware.org/ml/libc-alpha/2007-01/msg00041.html
URL: http://www.eglibc.org/archives/patches/msg00526.html
2013-09-11 P. J. McDermott <pj@pehjota.net>
[BZ #832]
* elf/ldd.bash.in (try_trace): More robustly and portably work around
SELinux terminal write permissions by using a command substitution
instead of a pipeline and pipefail option.
Chris Leonard [Sun, 13 Oct 2013 12:37:42 +0000 (08:37 -0400)]
Adjust language-code fields of LC_ADDRESS.
Joseph Myers [Sat, 12 Oct 2013 14:15:30 +0000 (14:15 +0000)]
soft-fp: fix preprocessor indentation.
Yuri Chornoivan [Sat, 12 Oct 2013 12:21:55 +0000 (14:21 +0200)]
Fix typos.
Reuben Thomas [Sat, 12 Oct 2013 12:07:25 +0000 (14:07 +0200)]
Fix typo in setlocale.c. Fixes BZ #15764
Joseph Myers [Sat, 12 Oct 2013 12:23:28 +0000 (12:23 +0000)]
soft-fp: make __unord* raise "invalid" for signaling NaNs (bug 16036).
Joseph Myers [Sat, 12 Oct 2013 12:22:14 +0000 (12:22 +0000)]
soft-fp: make ordered comparisons raise "invalid" for quiet NaNs (bug 14910).
Joseph Myers [Sat, 12 Oct 2013 12:21:04 +0000 (12:21 +0000)]
soft-fp: add missing FP_INIT_EXCEPTIONS and FP_INIT_ROUNDMODE calls.
Joseph Myers [Sat, 12 Oct 2013 12:20:12 +0000 (12:20 +0000)]
soft-fp: add macro FP_NO_EXCEPTIONS.
Joseph Myers [Sat, 12 Oct 2013 12:18:55 +0000 (12:18 +0000)]
soft-fp: fix _FP_DIV_MEAT_* returning results with wrong exponent (bug 16032).
Joseph Myers [Sat, 12 Oct 2013 12:17:16 +0000 (12:17 +0000)]
soft-fp: fix floating-point to integer unsigned saturation.
Siddhesh Poyarekar [Fri, 11 Oct 2013 17:07:53 +0000 (22:37 +0530)]
Add systemtap markers to math function slow paths
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.
Eric Biggers [Fri, 11 Oct 2013 16:59:38 +0000 (22:29 +0530)]
Fix fwrite() reading beyond end of buffer in error path
Partially revert commits
2b766585f9b4ffabeef2f36200c275976b93f2c7 and
de2fd463b1c0310d75084b6d774fb974075a4ad9, which were intended to fix BZ#11741
but caused another, likely worse bug, namely that fwrite() and fputs() could,
in an error path, read data beyond the end of the specified buffer, and
potentially even write this data to the file.
Fix BZ#11741 properly by checking the return value from _IO_padn() in
stdio-common/vfprintf.c.
David S. Miller [Fri, 11 Oct 2013 05:32:36 +0000 (22:32 -0700)]
Fix readdir regressions on sparc 32-bit.
* sysdeps/posix/dirstream.h (struct __dirstream): Fix alignment of
directory block.
Joseph Myers [Thu, 10 Oct 2013 23:58:13 +0000 (23:58 +0000)]
Update copyright and license notices in soft-fp files from libgcc.
Joseph Myers [Thu, 10 Oct 2013 23:57:22 +0000 (23:57 +0000)]
Add soft-fp files from libgcc.
David S. Miller [Wed, 9 Oct 2013 22:25:52 +0000 (15:25 -0700)]
Update sparc ULPs.
* sysdeps/sparc/fpu/libm-test-ulps: Update.
Joseph Myers [Thu, 10 Oct 2013 19:12:09 +0000 (19:12 +0000)]
Extend powerpc-nofpu -fno-builtin-fabsl workaround to more files.
Joseph Myers [Thu, 10 Oct 2013 19:11:30 +0000 (19:11 +0000)]
Avoid ordered comparisons of NaNs in ldbl-128ibm acosl and asinl.
Will Newton [Wed, 9 Oct 2013 13:41:57 +0000 (14:41 +0100)]
malloc/hooks.c: Correct check for overflow in memalign_check.
A large value of bytes passed to memalign_check can cause an integer
overflow in _int_memalign and heap corruption. This issue can be
exposed by running tst-memalign with MALLOC_CHECK_=3.
ChangeLog:
2013-10-10 Will Newton <will.newton@linaro.org>
* malloc/hooks.c (memalign_check): Ensure the value of bytes
passed to _int_memalign does not overflow.
Torvald Riegel [Tue, 8 Oct 2013 11:04:10 +0000 (14:04 +0300)]
benchtests: Add include-sources directive.
This adds the "include-sources" directive to scripts/bench.pl. This
allows for including source code (vs including headers, which might get
a different search path) after the inclusion of any headers.
Joseph Myers [Thu, 10 Oct 2013 11:40:25 +0000 (11:40 +0000)]
soft-fp: split FP_INIT_EXCEPTIONS from FP_INIT_ROUNDMODE.
Joseph Myers [Thu, 10 Oct 2013 11:38:56 +0000 (11:38 +0000)]
soft-fp: fix negation NaN handling (bug 16034).
Joseph Myers [Wed, 9 Oct 2013 19:23:05 +0000 (19:23 +0000)]
soft-fp: Remove trailing semicolon from _FP_FRAC_DISASSEMBLE_4.
Adam Buchbinder [Wed, 9 Oct 2013 19:20:48 +0000 (19:20 +0000)]
soft-fp: fix typo in comment.
Yogesh Chaudhari [Tue, 8 Oct 2013 19:42:42 +0000 (21:42 +0200)]
Update gethostbyname2_r documentation. Fixes bug #156.
Andreas Schwab [Tue, 8 Oct 2013 19:24:56 +0000 (21:24 +0200)]
Fix typo in last change
Andreas Schwab [Tue, 8 Oct 2013 18:59:47 +0000 (20:59 +0200)]
m68k: use PIC for Scrt1.o
Ondřej Bílka [Tue, 8 Oct 2013 13:46:48 +0000 (15:46 +0200)]
Use p2align instead ALIGN
Chris Leonard [Tue, 8 Oct 2013 11:34:10 +0000 (07:34 -0400)]
correct LC_TELEPHONE for pap locales
Siddhesh Poyarekar [Tue, 8 Oct 2013 10:53:16 +0000 (16:23 +0530)]
Format e_pow.c
Siddhesh Poyarekar [Tue, 8 Oct 2013 10:52:28 +0000 (16:22 +0530)]
Format e_exp.c
Siddhesh Poyarekar [Tue, 8 Oct 2013 06:20:17 +0000 (11:50 +0530)]
Consolidate multiple precision sin/cos functions
Joseph Myers [Tue, 8 Oct 2013 00:14:08 +0000 (00:14 +0000)]
Clean up locale file alignment handling.
Chris Leonard [Mon, 7 Oct 2013 22:30:37 +0000 (18:30 -0400)]
Fixes to Changelog for locale splits
Roland McGrath [Mon, 7 Oct 2013 22:14:36 +0000 (15:14 -0700)]
Fix up ChangeLog formatting.
Chris Leonard [Mon, 7 Oct 2013 21:23:18 +0000 (17:23 -0400)]
remove localdata path from Changelog entries
Chris Leonard [Mon, 7 Oct 2013 20:50:12 +0000 (16:50 -0400)]
Fix ar_SS in SUPPORTED
Siddhesh Poyarekar [Mon, 7 Oct 2013 06:22:44 +0000 (11:52 +0530)]
Fix ChangeLog formatting
Siddhesh Poyarekar [Mon, 7 Oct 2013 06:21:24 +0000 (11:51 +0530)]
Add more directives to benchmark input files
This patch adds some more directives to the benchmark inputs file,
moving functionality from the Makefile and making the code generation
script a bit cleaner. The function argument and return types that
were earlier added as variables in the makefile and passed to the
script via command line arguments are now the 'args' and 'ret'
directive respectively. 'args' should be a colon separated list of
argument types (skipped if the function doesn't accept any arguments)
and 'ret' should be the return type.
Additionally, an 'includes' directive may have a comma separated list
of headers to include in the source. For example, the pow input file
now looks like this:
42.0, 42.0
1.
0000000000000020, 1.5
I did this to unclutter the benchtests Makefile a bit and eventually
eliminate dependency of the tests on the Makefile and have tests
depend on their respective include files only.
Alan Modra [Sun, 6 Oct 2013 23:23:41 +0000 (09:53 +1030)]
Fix careless merge.
Chris Leonard [Sun, 6 Oct 2013 00:38:38 +0000 (20:38 -0400)]
Adjust language-code fields of LC_ADDRESS.
Alan Modra [Sat, 5 Oct 2013 07:02:10 +0000 (16:32 +0930)]
Mention powerpc64le support in NEWS and README, plus bugs fixed.
* NEWS: Mention powerpc64le support and bugs fixed.
* README: Both big-endian and little-endian powerpc64 supported.
Maciej W. Rozycki [Fri, 4 Oct 2013 23:00:32 +0000 (00:00 +0100)]
nptl: tst-mutex8.c: Handle ENOTSUP PI mutex failure
Chris Leonard [Fri, 4 Oct 2013 22:51:42 +0000 (18:51 -0400)]
Fix typos in 3166.def.
Samuel Thibault [Tue, 24 Sep 2013 21:08:15 +0000 (23:08 +0200)]
Add fork hooks for pthread_atfork
pthread_atfork needs application callbacks to be called outside any locking.
Ryan S. Arnold [Fri, 4 Oct 2013 17:07:04 +0000 (12:07 -0500)]
Update generic swapon definition to match prototype.
Joseph Myers [Fri, 4 Oct 2013 16:02:33 +0000 (16:02 +0000)]
Move powerpc ports pieces to libc.
Joseph Myers [Fri, 4 Oct 2013 15:57:50 +0000 (15:57 +0000)]
e500 port: adjust sysdeps/unix/sysv/linux/configure.in case.
Joseph Myers [Fri, 4 Oct 2013 15:56:48 +0000 (15:56 +0000)]
e500 port: fix fpu_control.h constant values.
Joseph Myers [Fri, 4 Oct 2013 15:55:15 +0000 (15:55 +0000)]
e500 port: getcontext / setcontext / swapcontext.
Chris Leonard [Fri, 4 Oct 2013 13:48:45 +0000 (09:48 -0400)]
Correct error in iso-3166.def
Chris Leonard [Fri, 4 Oct 2013 12:54:27 +0000 (08:54 -0400)]
Copy / modify pap_AN into pap_AW and pap_CW.
Chris Leonard [Fri, 4 Oct 2013 12:44:04 +0000 (08:44 -0400)]
Split ar_SD into ar_SD and ar_SS
Chris Leonard [Fri, 4 Oct 2013 12:35:44 +0000 (08:35 -0400)]
Update iso-1366.def and related occurrences
Siddhesh Poyarekar [Fri, 4 Oct 2013 11:49:11 +0000 (17:19 +0530)]
Fix typo in manual
Will Newton [Wed, 25 Sep 2013 09:17:28 +0000 (10:17 +0100)]
ARM: Allow building __sigsetjmp as Thumb.
Convert __sigsetjmp code to allow building as Thumb.
ports/ChangeLog.arm:
2013-10-04 Will Newton <will.newton@linaro.org>
* sysdeps/arm/setjmp.S (NO_THUMB): Remove define.
(__sigsetjmp): Use Thumb supported instructions.
Will Newton [Wed, 25 Sep 2013 09:14:20 +0000 (10:14 +0100)]
ARM: Allow building __longjmp as Thumb.
Convert __longjmp code to allow building as Thumb.
ports/ChangeLog.arm:
2013-10-04 Will Newton <will.newton@linaro.org>
* sysdeps/arm/__longjmp.S (NO_THUMB): Remove define.
(__longjmp): Use Thumb supported instructions.
* sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (NO_THUMB):
Remove define.
Will Newton [Thu, 3 Oct 2013 10:26:34 +0000 (11:26 +0100)]
malloc/tst-valloc.c: Tidy up code.
Add some comments and call free on all potentially allocated pointers.
Also remove duplicate check for NULL pointer.
ChangeLog:
2013-10-04 Will Newton <will.newton@linaro.org>
* malloc/tst-valloc.c: Add comments.
(do_test): Add comments and call free on all potentially
allocated pointers. Remove duplicate check for NULL pointer.
Add space after cast.
Will Newton [Thu, 3 Oct 2013 10:24:38 +0000 (11:24 +0100)]
malloc/tst-pvalloc.c: Tidy up code.
Add some comments and call free on all potentially allocated pointers.
Also remove duplicate check for NULL pointer.
ChangeLog:
2013-10-04 Will Newton <will.newton@linaro.org>
* malloc/tst-pvalloc.c: Add comments.
(do_test): Add comments and call free on all potentially
allocated pointers. Remove duplicate check for NULL pointer.
Add space after cast.
Will Newton [Thu, 3 Oct 2013 10:21:15 +0000 (11:21 +0100)]
malloc/tst-posix_memalign.c: Tidy up code.
Add some comments and call free on all potentially allocated pointers.
ChangeLog:
2013-10-04 Will Newton <will.newton@linaro.org>
* malloc/tst-posix_memalign.c: Add comments.
(do_test): Add comments and call free on all potentially
allocated pointers. Add space after cast.
Will Newton [Fri, 16 Aug 2013 16:06:10 +0000 (17:06 +0100)]
malloc: Add memalign test.
ChangeLog:
2013-10-04 Will Newton <will.newton@linaro.org>
* malloc/Makefile: Add tst-memalign.
* malloc/tst-memalign.c: New file.
Alan Modra [Fri, 4 Oct 2013 03:18:51 +0000 (12:48 +0930)]
Use stdint.h types in union unaligned.
* 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.
Alan Modra [Thu, 3 Oct 2013 04:21:52 +0000 (13:51 +0930)]
Correct little-endian relocation of UADDR64,32,16.
* sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela):
Correct handling of unaligned relocs for little-endian.
* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
Alan Modra [Fri, 4 Oct 2013 01:27:05 +0000 (10:57 +0930)]
fix changelog date
Alan Modra [Thu, 3 Oct 2013 04:33:03 +0000 (14:03 +0930)]
PowerPC LE configury
http://sourceware.org/ml/libc-alpha/2013-08/msg00096.html
This adds the basic configury bits for powerpc64le and powerpcle.
* configure.in: Map powerpc64le and powerpcle to base_machine/machine.
* configure: Regenerate.
* nptl/shlib-versions: Powerpc*le starts at 2.18.
* shlib-versions: Likewise.
Alan Modra [Sat, 17 Aug 2013 09:08:26 +0000 (18:38 +0930)]
string/tester memrchr test
http://sourceware.org/ml/libc-alpha/2013-08/msg00095.html
I found this useful at one stage when I was seeing a huge number of
memrchr failures all of test number 10.
* string/tester.c (test_memrchr): Increment reported test cycle.
Alan Modra [Sat, 17 Aug 2013 09:07:58 +0000 (18:37 +0930)]
string/test-memcpy error reporting
http://sourceware.org/ml/libc-alpha/2013-08/msg00094.html
Using plain %s here runs the risk of segfaulting when displaying the
string. src and dst aren't zero terminated strings.
* string/test-memcpy.c (do_one_test): When reporting errors, print
string address and don't overrun end of string.
Alan Modra [Sat, 17 Aug 2013 09:18:36 +0000 (18:48 +0930)]
PowerPC LE memchr and memrchr
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.
Alan Modra [Sat, 17 Aug 2013 09:17:59 +0000 (18:47 +0930)]
PowerPC LE memset
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.
Alan Modra [Sat, 17 Aug 2013 09:17:22 +0000 (18:47 +0930)]
PowerPC LE memcpy
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.
Alan Modra [Sat, 17 Aug 2013 09:16:47 +0000 (18:46 +0930)]
PowerPC LE memcmp
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.
Alan Modra [Sat, 17 Aug 2013 09:16:05 +0000 (18:46 +0930)]
PowerPC LE strchr
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.
Alan Modra [Sat, 17 Aug 2013 09:15:31 +0000 (18:45 +0930)]
PowerPC LE strcpy
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.
Alan Modra [Sat, 17 Aug 2013 09:11:17 +0000 (18:41 +0930)]
PowerPC LE strcmp and strncmp
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.
Alan Modra [Sat, 17 Aug 2013 09:10:48 +0000 (18:40 +0930)]
PowerPC LE strnlen
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.