Age | Commit message (Collapse) | Author | Files | Lines |
|
There is no longer a need for string2.h, so remove it and all mention of it.
Move the redirect for __stpcpy to include/string.h since it is still required
until all internal uses have been renamed.
This fixes several linknamespace/localplt failures when building with -Os.
[BZ #15105]
[BZ #19463]
* include/string.h: Add internal redirect for __stpcpy.
* string/Makefile: Remove bits/string2.h.
* string/string.h: Update comment.
* string/string-inlines.c: Remove bits/string2.h include and comment.
* string/bits/string2.h: Remove file.
|
|
calls with constant strings shows a small (~10%) performance gain, strdup is
typically used in error reporting code, so not performance critical.
Remove the now unused __need_malloc_and_calloc related defines from stdlib.h.
Rename existing uses of str(n)dup to __str(n)dup so it no longer needs to be
redirected to a builtin. Also building GLIBC with -Os now no longer shows
localplt or linkname space failures (partial fix for BZ #15105 and BZ #19463).
[BZ #15105]
[BZ #19463]
* elf/dl-cache.c (_dl_load_cache_lookup): Use __strdup.
* inet/rcmd.c (rcmd_af): Likewise.
* inet/rexec.c (rexec_af): Likewise.
* intl/dcigettext.c (_LIBC): Likewise.
* intl/finddomain.c (_nl_find_domain): Use strdup expansion.
* locale/loadarchive.c (_nl_load_locale_from_archive): Use __strdup.
* locale/setlocale.c (setlocale): Likewise.
* posix/spawn_faction_addopen.c
(posix_spawn_file_actions_addopen): Likewise.
* stdlib/putenv.c (putenv): Use __strndup.
* sunrpc/svc_simple.c (__registerrpc): Use __strdup.
* sysdeps/posix/getaddrinfo.c (gaih_inet): Use __strdup/__strndup.
* include/stdlib.h (__need_malloc_and_calloc): Remove uses.
(__Need_M_And_C) Remove define/undef.
* stdlib/stdlib.h (__need_malloc_and_calloc): Remove uses.
(__malloc_and_calloc_defined): Remove define.
* string/bits/string2.h (__strdup): Remove define.
(strdup): Likewise.
(__strndup): Likewise.
(strndup): Likewise.
|
|
optimization seems unlikely to ever be useful, but if it occurs in
real code it should be added to GCC. Expanding strcmp of small strings
does appear useful (benchmarking shows it is 2-3x faster), so this would
be useful to implement in GCC (PR 78809).
* string/bits/string2.h (strcmp): Remove define.
(__strcmp_cg): Likewise.
(strncmp): Likewise.
|
|
This is transformed into rawmemchr by the bits/string2.h header.
However this is generally slower than strlen on most targets, even when
an optimized rawmemchr implementation exists. Since GCC7 optimizes
strchr (s, '\0') to strlen (s) + s, the GLIBC headers should not
transform this to rawmemchr. As GCC recognizes strchr as a builtin,
defining strchr as the builtin is not useful.
* string/bits/string2.h (strchr): Remove define.
|
|
|
|
Currently strsep calls strpbrk is is now a veneer to strcspn. Calling
strcspn directly is faster. Since it handles a delimiter string of size
1 as a special case, this is not needed in strsep itself. Although this
means there is a slightly higher overhead if the delimiter size is 1,
all other cases are slightly faster. The overall performance gain is 5-10%
on AArch64.
The string/bits/string2.h header contains optimizations for constant
delimiters of size 1-3. Benchmarking these showed similar performance for
size 1 (since in all cases strchr/strchrnul is used), while size 2 and 3
can give up to 2x speedup for small input strings. However if these cases
are common it seems much better to add this optimization to strcspn.
So move these header optimizations to string-inlines.c.
Improve the strsep benchmark so that it actually benchmarks something.
The current version contains a delimiter character at every position in the
input string, so there is very little work to do, and the extremely inefficent
simple_strsep implementation appears fastest in every case. The new version
has either no match in the input for the fail case and a match halfway in the
input for the success case. The input is then restored so that each iteration
does exactly the same amount of work. Reduce the number of testcases since
simple_strsep takes a lot of time now.
* benchtests/bench-strsep.c (oldstrsep): Add old implementation.
(do_one_test) Restore original string so iteration works.
* string/string-inlines.c (do_test): Create better input strings.
(test_main) Reduce number of testruns.
* string/string-inlines.c (__old_strsep_1c): New function.
(__old_strsep_2c): Likewise.
(__old_strsep_3c): Likewise.
* string/strsep.c (__strsep): Remove case of small delim string.
Call strcspn directly rather than strpbrk.
* string/bits/string2.h (__strsep): Remove define.
(__strsep_1c): Remove.
(__strsep_2c): Remove.
(__strsep_3c): Remove.
(strsep): Remove.
* sysdeps/unix/sysv/linux/internal_statvfs.c
(__statvfs_getflags): Rename to __strsep.
|
|
calls strcspn, call strcspn directly so we get the end of the token without
an extra call to rawmemchr. Also avoid an unnecessary call to strcspn after
the last token by adding an early exit for an empty string. Change strtok
to tailcall strtok_r to avoid unnecessary code duplication.
Remove the special header optimization for strtok_r of a 1-character
constant string - both strspn and strcspn contain optimizations for this
case. Benchmarking this showed similar performance in the worst case,
but up to 5.5x better performance in the "found" case for large inputs.
* benchtests/bench-strtok.c (oldstrtok): Add old implementation.
* string/strtok.c (strtok): Change to tailcall __strtok_r.
* string/strtok_r.c (__strtok_r): Optimize for performance.
* string/string-inlines.c (__old_strtok_r_1c): New function.
* string/bits/string2.h (__strtok_r): Move to string-inlines.c.
|
|
The comment above the bzero() macro in this file appears to have been
copied verbatim from the comment above the memset() prototype in
string.h proper. bzero() has no 'c' argument and can only set memory
contents to 0. (The comment above the prototype of bzero() in
string.h proper does not make the same mistake.)
* string/bits/string2.h: Fix typo in comment.
|
|
compatibility
symbols as they are no longer used. Fix compat symbols for __strpbrk inlines.
[BZ #18712]
* string/string-inlines.c (__STRING2_COPY_TYPE): Add, moved from string2.h.
(__old_mempcpy_small): Likewise.
(__old_strcpy_small): Likewise.
(__old_stpcpy_small): Likewise.
(__old_strpbrk_c2): Fix compat symbol name.
(__old_strpbrk_c3): Likewise.
* string/bits/string2.h (__STRING2_COPY_TYPE): Remove.
(__mempcpy_small): Remove.
(__strcpy_small): Remove.
(__stpcpy_small): Remove.
|
|
* string/string.h: Use __GNUC_PREREQ(3,4) for bits/string2.h.
* string/bits/string2.h (__STRING2_SMALL_GET16): Remove.
(__STRING2_SMALL_GET32): Remove.
(memset): Remove.
(__memset_1): Remove.
(__memset_gc): Remove.
(__mempcpy): Remove.
(mempcpy): Remove.
(__mempcpy_args): Remove.
(strchr): Remove.
(strcpy): Remove.
(strcpy_args): Remove.
(__stpcpy_args): Remove.
(__strcmp_cc): Remove.
(__strcmp_gc): Remove.
(strstr): Remove.
|
|
With now a faster strcspn implementation, it is faster to just use
it with some return tests than reimplementing strpbrk itself.
As for strcspn optimization, it is generally at least 10 times faster
than the existing implementation on bench-strspn on a few AArch64
implementations.
Also the string/bits/string2.h inlines make no longer sense, as current
implementation will already implement most of the optimizations.
Tested on x86_64, i386, and aarch64.
* string/strpbrk.c (strpbrk): Rewrite function.
* string/bits/string2.h (strpbrk): Use __builtin_strpbrk.
(__strpbrk_c2): Likewise.
(__strpbrk_c3): Likewise.
* string/string-inlines.c
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strpbrk_c2):
Likewise.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strpbrk_c3):
Likewise.
|
|
As for strcspn, this patch improves strspn performance using a much
faster algorithm. It first constructs a 256-entry table based on
the accept string and then uses it as a lookup table for the
input string. As for strcspn optimization, it is generally at least
10 times faster than the existing implementation on bench-strspn
on a few AArch64 implementations.
Also the string/bits/string2.h inlines make no longer sense, as current
implementation will already implement most of the optimizations.
Tested on x86_64, i686, and aarch64.
* string/strspn.c (strcspn): Rewrite function.
* string/bits/string2.h (strspn): Use __builtin_strcspn.
(__strspn_c1): Remove inline function.
(__strspn_c2): Likewise.
(__strspn_c3): Likewise.
* string/string-inlines.c
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c1): Add
compatibility symbol.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c2):
Likewise.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c3):
Likewise.
|
|
Improve strcspn performance using a much faster algorithm. It is kept simple
so it works well on most targets. It is generally at least 10 times faster
than the existing implementation on bench-strcspn on a few AArch64
implementations, and for some tests 100 times as fast (repeatedly calling
strchr on a small string is extremely slow...).
In fact the string/bits/string2.h inlines make no longer sense, as GCC
already uses strlen if reject is an empty string, strchrnul is 5 times as
fast as __strcspn_c1, while __strcspn_c2 and __strcspn_c3 are slower than
the strcspn main loop for large strings (though reject length 2-4 could be
special cased in the future to gain even more performance).
Tested on x86_64, i686, and aarch64.
* string/Version (libc): Add GLIBC_2.24.
* string/strcspn.c (strcspn): Rewrite function.
* string/bits/string2.h (strcspn): Use __builtin_strcspn.
(__strcspn_c1): Remove inline function.
(__strcspn_c2): Likewise.
(__strcspn_c3): Likewise.
* string/string-inline.c
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strcspn_c1): Add
compatibility symbol.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strcspn_c2):
Likewise.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strcspn_c3):
Likewise.
* sysdeps/i386/string-inlines.c: Include generic string-inlines.c.
|
|
As discussed in
https://sourceware.org/ml/libc-alpha/2015-10/msg00403.html
the setting of _STRING_ARCH_unaligned currently controls the external
GLIBC ABI as well as selecting the use of unaligned accesses withing
GLIBC.
Since _STRING_ARCH_unaligned was recently changed for AArch64, this
would potentially break the ABI in GLIBC 2.23, so split the uses and add
_STRING_INLINE_unaligned to select the string ABI. This setting must be
fixed for each target, while _STRING_ARCH_unaligned may be changed from
release to release. _STRING_ARCH_unaligned is used unconditionally in
glibc. But <bits/string.h>, which defines _STRING_ARCH_unaligned, isn't
included with -Os. Since _STRING_ARCH_unaligned is internal to glibc and
may change between glibc releases, it should be made private to glibc.
_STRING_ARCH_unaligned should defined in the new string_private.h heade
file which is included unconditionally from internal <string.h> for glibc
build.
[BZ #19462]
* bits/string.h (_STRING_ARCH_unaligned): Renamed to ...
(_STRING_INLINE_unaligned): This.
* include/string.h: Include <string_private.h>.
* string/bits/string2.h: Replace _STRING_ARCH_unaligned with
_STRING_INLINE_unaligned.
* sysdeps/aarch64/bits/string.h (_STRING_ARCH_unaligned): Removed.
(_STRING_INLINE_unaligned): New.
* sysdeps/aarch64/string_private.h: New file.
* sysdeps/generic/string_private.h: Likewise.
* sysdeps/m68k/m680x0/m68020/string_private.h: Likewise.
* sysdeps/s390/string_private.h: Likewise.
* sysdeps/x86/string_private.h: Likewise.
* sysdeps/m68k/m680x0/m68020/bits/string.h
(_STRING_ARCH_unaligned): Renamed to ...
(_STRING_INLINE_unaligned): This.
* sysdeps/s390/bits/string.h (_STRING_ARCH_unaligned): Renamed
to ...
(_STRING_INLINE_unaligned): This.
* sysdeps/sparc/bits/string.h (_STRING_ARCH_unaligned): Renamed
to ...
(_STRING_INLINE_unaligned): This.
* sysdeps/x86/bits/string.h (_STRING_ARCH_unaligned): Renamed
to ...
(_STRING_INLINE_unaligned): This.
|
|
|
|
|
|
|
|
This patch completes the headers cleanup consequent on removal of
_BSD_SOURCE and _SVID_SOURCE (apart from any subsequent deprecations):
* #endif conditionals that referred to BSD or SVID are updated.
* Redundant __USE_* tests in cases involving __USE_MISC are removed.
This includes cases such as __USE_MISC || __USE_ISOC99, where
__USE_MISC is redundant (because __USE_MISC is only ever defined in
the default / _DEFAULT_SOURCE / _GNU_SOURCE case, when __USE_ISOC99
is also defined; the same applies to the non-XSI-extended POSIX
versions), and cases involving __USE_GNU, where __USE_GNU is
redundant (because if __USE_GNU is defined, so are the other __USE_*
macros). There may well be other cases of __USE_FOO || __USE_BAR
tests that could be simplified because one macro implies the other;
this patch only addresses cases involving __USE_MISC.
Tested x86_64.
* bits/fcntl.h [__USE_MISC]: Remove redundant conditionals.
* bits/sigaction.h [__USE_MISC]: Likewise.
* bits/waitstatus.h: Update #endif comments.
* ctype/ctype.h: Likewise.
* dirent/dirent.h: Likewise.
[__USE_MISC]: Remove redundant conditionals.
* grp/grp.h: Update #endif comments.
[__USE_GNU]: Remove redundant conditionals.
[__USE_MISC]: Likewise.
* inet/netinet/in.h [__USE_GNU]: Likewise.
* io/sys/stat.h [__USE_MISC]: Likewise.
* libio/bits/stdio-ldbl.h [__USE_MISC]: Likewise.
* libio/bits/stdio.h: Update #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* libio/bits/stdio2.h [__USE_MISC]: Likewise.
* libio/stdio.h: Update #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* math/bits/math-finite.h [__USE_MISC]: Likewise.
* math/bits/mathcalls.h [__USE_MISC]: Likewise.
* math/math.h: Update #else and #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* misc/sys/uio.h: Update #endif comments.
* posix/bits/unistd.h [__USE_MISC]: Remove redundant conditionals.
* posix/glob.h [__USE_MISC]: Likewise.
* posix/sys/types.h: Update #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* posix/sys/wait.h: Update #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* posix/unistd.h: Update #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* pwd/pwd.h [__USE_GNU]: Likewise.
[__USE_MISC]: Likewise.
* resolv/netdb.h [__USE_GNU]: Likewise.
* signal/signal.h: Update #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* stdlib/stdlib.h: Update #else and #endif comments.
[__USE_MISC]: Remove redundant conditionals.
[__USE_GNU]: Likewise.
* string/bits/string2.h [__USE_MISC]: Likewise.
* string/string.h: Update #endif comments.
[__USE_MISC]: Remove redundant conditionals.
* sysdeps/m68k/m680x0/fpu/bits/mathinline.h [__USE_MISC]:
Likewise.
* sysdeps/mach/hurd/bits/fcntl.h [__USE_MISC]: Likewise.
* sysdeps/mach/hurd/bits/stat.h [__USE_MISC]: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/stat.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl-linux.h: Update #endif
comments.
[__USE_MISC]: Remove redundant conditionals.
* sysdeps/unix/sysv/linux/bits/in.h [__USE_GNU]: Likewise.
* sysdeps/unix/sysv/linux/bits/sigaction.h [__USE_MISC]: Likewise.
* sysdeps/unix/sysv/linux/bits/socket.h [__USE_GNU]: Likewise.
* sysdeps/unix/sysv/linux/bits/stat.h [__USE_MISC]: Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/sigaction.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/m68k/bits/stat.h [__USE_MISC]: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/sigaction.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/mips/bits/stat.h [__USE_MISC]: Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/stat.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/s390/bits/sigaction.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/s390/bits/stat.h [__USE_MISC]: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/stat.h [__USE_MISC]:
Likewise.
* sysdeps/unix/sysv/linux/x86/bits/stat.h [__USE_MISC]: Likewise.
* sysdeps/x86/bits/string.h: Update #endif comments.
* sysdeps/x86/fpu/bits/mathinline.h [__USE_MISC]: Remove redundant
conditionals.
* time/sys/time.h: Update #endif comments.
* time/time.h: Likewise.
[__USE_MISC]: Remove redundant conditionals.
|
|
This patch cleans up cases of __USE_MISC that are trivially redundant
after the recent substitution of __USE_MISC for __USE_BSD and
__USE_SVID: either in constructs such as "defined __USE_MISC ||
defined __USE_MISC", or else (in the bits/mman.h case) a conditional
on __USE_MISC nested inside another __USE_MISC conditional. (The
cleanups remaining after this patch are still quite large, but it
seems a reasonable piece to separate out.)
Tested x86_64.
* bits/mman.h [__USE_MISC]: Remove redundant conditionals.
* ctype/ctype.h [__USE_MISC]: Likewise.
* dirent/dirent.h [__USE_MISC]: Likewise.
* grp/grp.h [__USE_MISC]: Likewise.
* io/fcntl.h [__USE_MISC]: Likewise.
* io/sys/stat.h [__USE_MISC]: Likewise.
* libio/stdio.h [__USE_MISC]: Likewise.
* posix/unistd.h [__USE_MISC]: Likewise.
* pwd/pwd.h [__USE_MISC]: Likewise.
* stdlib.h [__USE_MISC]: Likewise.
* string/bits/string2.h [__USE_MISC]: Likewise.
* string/string.h [__USE_MISC]: Likewise.
* time/time.h [__USE_MISC]: Likewise.
|
|
This patch cleans up following the obsoletion of _BSD_SOURCE and
_SVID_SOURCE by combining __USE_BSD and __USE_SVID into __USE_MISC.
The only non-mechanical part of this patch is the changes to
features.h; everything else is simple substitution of __USE_MISC for
the old macros. Thus, this patch leaves obviously redundant
conditionals such as "defined __USE_MISC || defined __USE_MISC", and
does not update #endif comments where they referred to BSD or SVID in
words instead of the literal macro name. This is intended to
facilitate patch review by separating the less mechanical changes from
these purely mechanical changes into a separate patch. (I do intend
to integrate all the changes from
<https://sourceware.org/ml/libc-alpha/2013-12/msg00226.html>, which I
believe includes all the trailing comment updates, in subsequent
patches.)
Tested x86_64.
* include/features.h (__USE_BSD): Remove macro definitions.
(__USE_SVID): Likewise.
(_BSD_SOURCE): Likewise.
(_SVID_SOURCE): Likewise.
[!defined _BSD_SOURCE && !defined _SVID_SOURCE]: Remove condition
from definition of _DEFAULT_SOURCE.
[_BSD_SOURCE || _SVID_SOURCE]: Change condition to
[_DEFAULT_SOURCE].
* bits/fcntl.h [__USE_BSD]: Change condition to [__USE_MISC].
* bits/mman.h [__USE_BSD]: Likewise.
* bits/termios.h [__USE_BSD]: Likewise.
* bits/waitstatus.h [__USE_BSD]: Likewise.
* ctype/ctype.h [__USE_SVID]: Likewise.
* dirent/dirent.h [__USE_BSD]: Likewise.
* grp/grp.h [__USE_SVID]: Likewise.
[__USE_BSD]: Likewise.
* inet/netinet/igmp.h [__USE_BSD]: Likewise.
* io/fcntl.h [__USE_BSD]: Likewise.
* io/ftw.h [__USE_BSD]: Likewise.
* io/sys/stat.h [__USE_BSD]: Likewise.
* libio/bits/stdio-ldbl.h [__USE_BSD]: Likewise.
* libio/bits/stdio2.h [__USE_BSD]: Likewise.
* libio/stdio.h [__USE_SVID]: Likewise.
[__USE_BSD]: Likewise.
* math/math.h [__USE_SVID]: Likewise.
[__USE_BSD]: Likewise.
* misc/bits/syslog-ldbl.h [__USE_BSD]: Likewise.
* misc/bits/syslog.h [__USE_BSD]: Likewise.
* misc/search.h [__USE_SVID]: Likewise.
* misc/sys/mman.h [__USE_BSD]: Likewise.
* misc/sys/syslog.h [__USE_BSD]: Likewise.
* misc/sys/uio.h [__USE_BSD]: Likewise.
* posix/bits/unistd.h [__USE_BSD]: Likewise.
* posix/glob.h [__USE_BSD]: Likewise.
* posix/regex.h [__USE_BSD]: Likewise.
* posix/sys/types.h [__USE_BSD]: Likewise.
[__USE_SVID]: Likewise.
* posix/sys/utsname.h [__USE_SVID]: Likewise.
* posix/sys/wait.h [__USE_BSD]: Likewise.
[__USE_SVID]: Likewise.
* posix/unistd.h [__USE_BSD]: Likewise.
[__USE_SVID]: Likewise.
* pwd/pwd.h [__USE_SVID]: Likewise.
* resolv/netdb.h [__USE_BSD]: Likewise.
* setjmp/setjmp.h [__USE_BSD]: Likewise.
* signal/signal.h [__USE_BSD]: Likewise.
[__USE_SVID]: Likewise.
* socket/sys/socket.h [__USE_BSD]: Likewise.
* stdlib/fmtmsg.h [__USE_SVID]: Likewise.
* stdlib/stdlib.h [__USE_BSD]: Likewise.
[__USE_SVID]: Likewise.
* string/bits/string2.h [__USE_BSD]: Likewise.
[__USE_SVID]: Likewise.
* string/bits/string3.h [__USE_BSD]: Likewise.
* string/endian.h [__USE_BSD]: Likewise.
* string/string.h [__USE_SVID]: Likewise.
[__USE_BSD]: Likewise.
* string/strings.h [__USE_BSD]: Likewise.
* sysdeps/generic/netinet/ip.h [__USE_BSD]: Likewise.
* sysdeps/gnu/netinet/ip_icmp.h [__USE_BSD]: Likewise.
* sysdeps/mach/hurd/bits/fcntl.h [__USE_BSD]: Likewise.
* sysdeps/mach/hurd/bits/stat.h [__USE_BSD]: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h [__USE_BSD]: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/termios.h [__USE_BSD]:
Likewise.
* sysdeps/unix/sysv/linux/bits/fcntl-linux.h [__USE_BSD]:
Likewise.
* sysdeps/unix/sysv/linux/bits/mman-linux.h [__USE_BSD]: Likewise.
* sysdeps/unix/sysv/linux/bits/sys_errlist.h [__USE_BSD]:
Likewise.
* sysdeps/unix/sysv/linux/bits/termios.h [__USE_BSD]: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/termios.h [__USE_BSD]:
Likewise.
* sysdeps/unix/sysv/linux/netinet/if_ether.h [__USE_BSD]:
Likewise.
* sysdeps/unix/sysv/linux/netinet/if_fddi.h [__USE_BSD]: Likewise.
* sysdeps/unix/sysv/linux/netinet/if_tr.h [__USE_BSD]: Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/termios.h [__USE_BSD]:
Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/termios.h [__USE_BSD]:
Likewise.
* sysdeps/x86/bits/string.h [__USE_BSD]: Likewise.
* sysvipc/sys/ipc.h [__USE_SVID]: Likewise.
* termios/termios.h [__USE_BSD]: Likewise.
* time/sys/time.h [__USE_BSD]: Likewise.
* time/time.h [__USE_BSD]: Likewise.
[__USE_SVID]: Likewise.
* sysdeps/unix/sysv/linux/hppa/bits/mman.h [__USE_BSD]: Change
condition to [__USE_MISC].
|
|
|
|
|
|
The __strcmp_cg code was duplicate of of __strcmp_gc. This patch unifies
these two cases into one.
|
|
|
|
|
|
[BZ #14083]
Fix warning when using strspn with -Wconversion:
$ gcc -Wconversion -O t.c
t.c: In function ‘main’:
t.c:8:7: warning: conversion to ‘long unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion]
|
|
|
|
No more __const.
|
|
2008-01-15 Ulrich Drepper <drepper@redhat.com>
[BZ #5614]
* string/bits/string2.h (__strtok_r_1c): Always update *__NEXTP.
(__strtok_r): Simplify.
* string/tester.c (test_strtok_r): Add test case for futile search
with single-character seach string.
|
|
* string/bits/string2.h (__strdup): Cast parameters to calloc to
avoid warning with -Wconversion.
(__strndup): Likewise.
Patch to 50% by Christian Iseli <christian.iseli@licr.org>.
|
|
* config.make.in (gnu89-inline-CFLAGS): New variable.
* Makeconfig (CFLAGS): Use $(gnu89-inline-CFLAGS) together with
-std=gnu99.
* misc/sys/cdefs.h (__extern_inline, __extern_always_inline): Define.
* argp/argp.h: Use it.
* bits/mathinline.h: Likewise.
* bits/sigset.h: Likewise.
* bits/string.h: Likewise.
* ctype/ctype.h: Likewise.
* hurd/hurd.h: Likewise.
* hurd/hurd/fd.h: Likewise.
* hurd/hurd/port.h: Likewise.
* hurd/hurd/signal.h: Likewise.
* hurd/hurd/threadvar.h: Likewise.
* hurd/hurd/userlink.h: Likewise.
* io/sys/stat.h: Likewise.
* libio/bits/stdio.h: Likewise.
* libio/bits/stdio2.h: Likewise.
* mach/lock-intern.h: Likewise.
* mach/mach/mig_support.h: Likewise.
* math/bits/cmathcalls.h: Likewise.
* posix/bits/unistd.h: Likewise.
* socket/bits/socket2.h: Likewise.
* stdlib/bits/stdlib.h: Likewise.
* stdlib/stdlib.h: Likewise.
* string/argz.h: Likewise.
* string/bits/string2.h: Likewise.
* string/bits/string3.h: Likewise.
* sysdeps/alpha/fpu/bits/mathinline.h: Likewise.
* sysdeps/generic/inttypes.h: Likewise.
* sysdeps/generic/machine-lock.h: Likewise.
* sysdeps/generic/machine-sp.h: Likewise.
* sysdeps/i386/fpu/bits/mathinline.h: Likewise.
* sysdeps/i386/i486/bits/string.h: Likewise.
* sysdeps/ia64/fpu/bits/mathinline.h: Likewise.
* sysdeps/mach/alpha/machine-lock.h: Likewise.
* sysdeps/mach/alpha/machine-sp.h: Likewise.
* sysdeps/mach/i386/machine-lock.h: Likewise.
* sysdeps/mach/powerpc/machine-lock.h: Likewise.
* sysdeps/mach/powerpc/machine-sp.h: Likewise.
* sysdeps/powerpc/fpu/bits/mathinline.h: Likewise.
* sysdeps/s390/bits/string.h: Likewise.
* sysdeps/s390/fpu/bits/mathinline.h: Likewise.
* sysdeps/sparc/fpu/bits/mathinline.h: Likewise.
* sysdeps/unix/bsd/bsd4.4/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/bits/sigset.h: Likewise.
* sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Likewise.
* sysdeps/x86_64/fpu/bits/mathinline.h: Likewise.
* wcsmbs/bits/wchar2.h: Likewise.
* wcsmbs/wchar.h: Likewise.
* stdlib/gmp.h: Likewise. Include <features.h> to get
__extern_inline definition.
* locale/programs/ld-ctype.c (find_translit): Return NULL if ctype is
NULL.
|
|
2004-05-27 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Define using
__builtin_expm1l for GCC 3.5+.
(__expl): Define using __builtin_expl for GCC 3.4+.
(exp, expf, expl): Don't define for GCC 3.4+.
(tan, tanf, tanl): Don't define for GCC 3.5+.
(__atan2l): Define using __builtin_atan2l for GCC 3.4+.
(atan2, atan2f, atan2l): Don't define for GCC 3.4+ or !__FAST_MATH__.
(fmod, fmodf, fmodl): Don't define for GCC 3.5+ or !__FAST_MATH__.
(fabsf, fabsl): Only provide if __USE_MISC or __USE_ISOC99.
(sin, sinf, sinl, cos, cosf, cosl, log, logf, logl): Don't define
for GCC 3.4+.
(log10, log10f, log10l, asin, asinf, asinl, acos, acosf, acosl):
Don't define for GCC 3.5+.
(atan, atanf, atanl): Don't define for GCC 3.4+ or !__FAST_MATH__.
(log1p, log1pf, log1pl, logb, logbf, logbl, log2, log2f, log2l): Don't
define for GCC 3.5+.
(drem, dremf, dreml): Don't define for GCC 3.5+ or !__FAST_MATH__.
* sysdeps/sparc/fpu/bits/mathinline.h (sqrt, sqrtf, sqrtl): Don't
define for GCC 3.2+.
2004-05-27 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h (__bzero): Define even for GCC 3.0+.
* sysdeps/alpha/stpcpy.S (stpcpy): Add libc_hidden_builtin_def.
* sysdeps/alpha/alphaev67/stpcpy.S (stpcpy): Likewise.
* sysdeps/powerpc/powerpc32/stpcpy.S (stpcpy): Likewise.
* sysdeps/powerpc/powerpc64/stpcpy.S (stpcpy): Likewise.
* sysdeps/sparc/sparc32/stpcpy.S (stpcpy): Likewise.
* sysdeps/sparc/sparc64/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/i586/stpcpy.S (stpcpy): Likewise.
* sysdeps/generic/stpcpy.c (stpcpy): Likewise.
* sysdeps/x86_64/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/i586/memcpy.S (memcpy): Remove
libc_hidden_builtin_def if MEMPCPY_P.
* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i686/mempcpy.S (mempcpy): Add libc_hidden_builtin_def.
* sysdeps/i386/i586/mempcpy.S (mempcpy): Likewise.
* sysdeps/generic/mempcpy.c (mempcpy): Likewise.
* sysdeps/x86_64/mempcpy.S (mempcpy): Likewise.
|
|
2004-05-26 Jakub Jelinek <jakub@redhat.com>
* include/string.h (mempcpy, stpcpy): Add libc_hidden_builtin_proto.
* string/bits/string2.h (memset): Disable macro for GCC 3.0+.
(__mempcpy): Use __builtin_mempcpy for GCC 3.4+.
(strchr): For GCC 3.2+, only use __rawmemchr if second argument is
constant '\0' and first argument is not constant.
(__stpcpy): Use __builtin_stpcpy for GCC 3.4+.
(strncpy): Remove #ifdef _USE_STRING_ARCH_mempcpy variant.
For GCC 3.2+ use __builtin_strncpy.
(strncat): For GCC 3.2+ use __builtin_strncat.
(strcmp): For GCC 3.2+ use __builtin_strcmp if both arguments are
constant.
(strcspn, strspn, strpbrk): For GCC 3.2+, use builtin function
if both arguments are constant.
2004-05-26 Ulrich Drepper <drepper@redhat.com>
* nss/nss_files/files-hosts.c: Fix condition for looking up IPv4
mapped addresses in gethostbyaddr.
|
|
2004-04-28 Carlos O'Donell <carlos@baldric.uwo.ca>
* sysdeps/unix/sysv/linux/mq_getattr.c: Include <stddef.h>.
* sysdeps/unix/sysv/linux/mq_notify.c: Likewise.
* sysdeps/unix/sysv/linux/mq_open.c: Likewise.
* sysdeps/unix/sysv/linux/mq_receive.c: Likewise.
* sysdeps/unix/sysv/linux/mq_send.c: Likewise.
* manual/resource.texi (sched_setaffinity, sched_getaffinity): Fix
prototypes and description [BZ #131].
* string/bits/string2.h (strpbrk): Cast NULL to char * [BZ #130].
Patch by Ed Catmur <ed@catmur.co.uk>.
* string/tst-inlcall.c (main): Add test for strpbrk.
|
|
* string/bits/string2.h (__STRING2_COPY_TYPE): Add attribute to
the type, not to name.
|
|
2002-05-27 Alexandre Oliva <aoliva@redhat.com>
* configure.in (DO_STATIC_NSS): Define if --disable-shared.
2002-05-26 Bruno Haible <bruno@clisp.org>
* iconvdata/iso-2022-jp.c (BODY for TO_LOOP): Avoid running off the
end of the ISO-8859-7 from idx table.
2002-05-27 Ulrich Drepper <drepper@redhat.com>
* manual/lang.texi: Fix FLT_EPSILON description [PR libc/3649].
2002-05-24 David S. Miller <davem@redhat.com>
* string/bits/string2.h (memset): Do not try to optimize when
not _STRING_ARCH_unaligned if GCC will do the right thing.
|
|
2002-01-29 Ben Collins <bcollins@debian.org>
* string/bits/string2.h (__mempcpy): Protect size arg for
addition when using __builtin_memcpy.
|
|
2002-01-28 Ulrich Drepper <drepper@redhat.com>
* timezone/asia: Update from tzdata2002b.
* timezone/australasia: Likewise.
* timezone/backward: Likewise.
* timezone/europe: Likewise.
* timezone/leapseconds: Likewise.
* timezone/iso3166.tab: Likewise.
* timezone/zone.tab: Likewise.
|
|
2002-01-23 Richard Henderson <rth@redhat.com>
* sysdeps/alpha/Makefile (pic-ccflag): New variable.
2002-01-28 Ulrich Drepper <drepper@redhat.com>
* string/strxfrm.c: Allocate one more byte for rulearr and clear
this element [PR libc/2855].
* string/strcoll.c: Handle zero-length arguments specially
[PR libc/2856].
2002-01-23 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h (__mempcpy): For gcc 3.0+, don't use
__mempcpy_small but instead use __builtin_memcpy ( , , n) + n for
short lengths and constant src.
(strcpy): Don't optimize for gcc 3.0+.
(__stpcpy): For gcc 3.0+, don't use
__stpcpy_small but instead use __builtin_strcpy (, src) + strlen (src)
for short string literal src.
2002-01-23 Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
* sysdeps/unix/sysv/linux/configure.in (libc_cv_gcc_unwind_find_fde):
Set for arm, too.
2001-01-22 Paul Eggert <eggert@twinsun.com>
* manual/llio.texi (Linked Channels, Cleaning Streams):
Make it clearer that a just-opened input stream might need cleaning.
2002-01-21 H.J. Lu <hjl@gnu.org>
* sysdeps/mips/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
Don't use label at end of compound statement.
|
|
2001-11-02 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h (__strndup): If n is smaller than len, set
len to n + 1.
* string/tester.c (test_strndup): New function.
(main): Call it.
* sunrpc/rpc_main.c: Optimize variable definitions a bit.
|
|
2001-10-04 Ben Collins <bcollins@debian.org>
* sysdeps/generic/inttypes.h: Fix typo (define, not defined) in
decleration of __need_wchar_t.
2001-10-03 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h (__strsep_g): Add prototype.
(__strsep): Use it.
* string/Versions (__strsep): Remove.
* sysdeps/generic/strsep.c (__strsep_g): Add alias to __strsep.
2001-10-07 Ulrich Drepper <drepper@redhat.com>
* manua/llio.texi: Clarify file references added by mmap.
Patch by Marcus Brinkmann <Marcus.Brinkmann@ruhr-uni-bochum.de>.
|
|
* sysdeps/unix/sysv/linux/ulimit.c (__ulimit): Handle overflow in
UL_SETFSIZE computations better.
* string/Versions: Export __strsep for GLIBC_2.2.5.
* string/bits/string2.h: Define all __STRING_INLINE functions if
_FORCE_INLINES is defined.
Use int instead of char of parameter types.
(__strsep): Don't use __strsep_g. Don't define it.
(__strsep_1c, __strsep_2c, __strsep_3c): Optimize.
* sysdeps/i386/i486/string.h (__strcpy_a_small): Renamed from
__strcpy_small.
(__stpcpy_a_small): Renamed from __stpcpy_small.
(__strcspn_c1): Don't define if _FORCE_INLINES.
(__strspn_c1): Likewise.
2001-09-22 Ben Collins <bcollins@debian.org>
* sysdeps/sparc/bits/sigaction.h: Define SA_RESTART and friends when
_UNIX98_SOURCE is defined too. Matches generic/bits/sigaction.h.
* sysdeps/ia64/bits/sigaction.h: Likewise.
* sysdeps/s390/s390-64/bits/sigaction.h: Likewise.
2001-09-24 Andrew Haley <aph@cambridge.redhat.com>
* sysdeps/unix/sysv/linux/sh/Makefile (sysdep_headers): Add sys/io.h.
2001-09-24 Jakub Jelinek <jakub@redhat.com>
* elf/dl-open.c (dl_open_worker): Update l_scope_max.
2001-09-24 Ulrich Drepper <drepper@redhat.com>
|
|
* string/bits/string2.h (__strtok_r_1c): Optimize a bit.
|
|
* string/bits/string2.h: Remove strnlen optimization here.
* sysdeps/i386/i486/bits/string.h: Add it here.
2001-08-21 Wolfram Gloger <wg@malloc.de>
* malloc/malloc.c: Make access to ..._hook pointers thread-safe.
2001-08-21 Ulrich Drepper <drepper@redhat.com>
|
|
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
|
|
2001-01-29 Ben Collins <bcollins@debian.org>
* sysdeps/sparc/fpu/fraiseexcpt.c: Include <float.h>.
* sysdeps/hppa/fpu/fraiseexcpt.c: Likewise.
* sysdeps/m68k/fpu/fraiseexcpt.c: Likewise.
* sysdeps/s390/fpu/fraiseexcpt.c: Likewise.
* locale/programs/ld-measurement.c (measurement_finish): Fix a typo.
Patch by Marko Myllynen <myllynen@lut.fi>.
* string/bits/string2.h (__strpbrk_c2): Correct parameter types
(int instead of char).
(__strpbrk_c3): Likewise.
Reported by GOTO Masanori <gotom@debian.or.jp>.
Reported by Arkadiusz Miskiewicz <misiek@pld.ORG.PL>.
|
|
2000-11-20 Ulrich Drepper <drepper@redhat.com>
* csu/gmon-start.c: Always have prototype for __gmon_start.
* csu/version.c: Add prototypes for __libc_print_version and
__libc_main.
* iconv/gconv.c: Include gconv_int.h and gconv.h.
* iconv/gconv.h (struct __gconv_step): Remove const from __from_name
and __to_name.
* iconv/gconv_builtin.h: Add ASCII module definitions.
* iconv/gconv_conf.c (__gconv_path_elem): Remove const.
(add_module): Add cast to avoid warning. Rework construction of
strings for new module.
* iconv/gconv_db.c (__gconv_alias_compare): Make s1 and s2 const.
(derivation_compare): Likewise.
* iconv/gconv_dl.c (do_release_shlib): Remove const from nodep.
(__gconv_release_shlib): Cast do_release_shlib as parameter for twalk.
* iconv/gconv_int.h (__gconv_path_elem): Remove const.
(struct gconv_alias): Remove const from fromname and toname.
* iconv/gconv_simple.c: Include gconv_builtin.h to get prototypes
for loop functions.
(internal_ucs4_loop): Use correct const-ness.
(ucs4_internal_loop): Likewise.
(internal_ucs4le_loop): Likewise.
(ucs4le_internal_loop_single): Likewise.
* iconv/gconv_trans.c (__gconv_transliterate): Make from_idx, from_tbl,
to_idx, to_tbl, winbuf, winbufend const. Change casts in
assignments appropriately.
(struct known_trans): Remove const from fname.
(trans_compare): Make s1 and s2 const.
* iconv/loop.c (LOOPFC): Make outend parameter const. Add cast to
avoid warning.
* iconv/skeleton.c: Remove cast in calls of loop functions.
* iconvdata/gconv-modules: Remove US-ASCII definitions.
* iconvdata/iso646.c: Remove US_ASCII support.
* include/set-hooks.h (DEFINE_HOOK): Also generate prototype.
* include/unistd.h: Add __libc_check_standard_fds prototype.
* string/bits/string2.h (__mempcpy_args): Add const to casts.
* sysdeps/generic/initfini.c: Add prototypes for dummy, _init, and
_fini.
* sysdeps/generic/libc-start.c: Add prototype for __libc_start_main.
* sysdeps/i386/i486/bits/string.h (strcmp): Add const to casts.
* sysdeps/unix/sysv/linux/dl-osinfo.h (dl_fatal): Add cast to avoid
warning.
* sysdeps/unix/sysv/linux/init-first.c: Add prototypes for
__libc_init_first and _dl_start.
* sysdeps/unix/sysv/linux/mips/clone.S: Fix comments.
|
|
* catgets/gencat.c (main): Don't use exit() to avoid warnings with
broken compilers.
* include/features.h (__STDC_ISO_10646__): Correct value to be
200009L. Patch by Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk>.
2000-11-08 H.J. Lu <hjl@gnu.org>
* pwd/Versions (GLIBC_2.1.2): Add getpwnam_r.
2000-11-08 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h: Check if _USE_STRING_ARCH_ macros are
defined, not _HAVE_STRING_ARCH_.
* sysdeps/i386/bits/string.h (_USE_STRING_ARCH_memset,
_USE_STRING_ARCH_strchr): Define.
* sysdeps/i386/i486/bits/string.h (_USE_STRING_ARCH_memset,
_USE_STRING_ARCH_strchr): Define.
* sysdeps/sparc/bits/string.h: New file.
2000-11-08 Bruno Haible <haible@clisp.cons.org>
* locale/C-translit.h.in: Tweak <U2014> result.
* locale/C-translit.h: Regenerated.
2000-11-08 Ulrich Drepper <drepper@redhat.com>
* posix/unistd.h: Add attribute((const)) to sysconf prototype.
|
|
* string/bits/string2.h: Disable strstr optimizations for newer
gcc versions. Patch by Joseph S. Myers <jsm28@cam.ac.uk>.
|
|
* string/bits/string2.h (strspn): Evaluate first argument if
second is "".
(strpbrk): Likewise.
* sysdeps/i386/i486/bits/string.h: Likewise.
* string/Makefile (tests): Add bug-strspn1 and bug-strpbrk1.
* string/bug-strspn1.c: New file.
* string/bug-strpbrk1.c: New file.
Test cases by Joseph S. Myers <jsm28@cam.ac.uk>.
* string/bits/string2.h (strncat): Terminate string correctly.
* sysdeps/i386/i486/bits/string.h (strncat): Likewise.
* string/Makefile (tests): Add bug-strncat1.
* string/bug-strncat1.c: New file.
Test case by Joseph S. Myers <jsm28@cam.ac.uk>.
2000-10-27 Ben Collins <bcollins@debian.org>
* sysdeps/generic/lockf.c (lockf): Set l_type to F_RDLCK before
calling for F_GETLK.
2000-10-29 Ulrich Drepper <drepper@redhat.com>
|