]> git.ipfire.org Git - thirdparty/glibc.git/log
thirdparty/glibc.git
6 years agoposix: Use enum for __glob_pattern_type result
Adhemerval Zanella [Tue, 5 Sep 2017 14:02:24 +0000 (11:02 -0300)] 
posix: Use enum for __glob_pattern_type result

This patch replaces the internal integer constant from
__glob_pattern_type return with a proper enum.

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

* posix/glob_internal.h (glob_pattern_type_t): New enumeration.
(__glob_pattern_type): Use __glob_pat_types.
* posix/glob_pattern_p.c (__glob_pattern_p): Likewise.
* posix/glob.c (glob): Likewise.
(glob_in_dir): Likewise.

6 years agoposix: Consolidate Linux glob implementation
Adhemerval Zanella [Mon, 4 Sep 2017 21:07:03 +0000 (18:07 -0300)] 
posix: Consolidate Linux glob implementation

This patch consolidates the glob implementation.  The main changes are:

  * On Linux all implementation now uses the default one at
    sysdeps/unix/sysv/linux/glob{free}{64}.c with the exception
    of alpha (which requires specific versioning) and s390-32 (which
    different than other 32 bits ports it does not add a compat one
    symbol for 2.1 version).

  * The default implementation uses XSTAT_IS_XSTAT64 to define whether
    both glob{free} and glob{free}64 should be different implementations.
    For archictures that define XSTAT_IS_XSTAT64, glob{free} is an alias
    to glob{free}64.

  * Move i386 olddirent.h header to Linux default directory, since it is
    the only header with this name and it is shared among different
    architectures (and used on compat glob symbol as well).

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

* sysdeps/unix/sysv/linux/arm/glob64.c: Remove file.
* sysdeps/unix/sysv/linux/i386/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/globfree64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/globfree64.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/glob.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/globfree.c: Likewise.
* sysdeps/wordsize-64/glob.c: Likewise.
* sysdeps/wordsize-64/glob64.c: Likewise.
* sysdeps/wordsize-64/globfree64.c: Likewise.
* sysdeps/unix/sysv/linux/glob.c: New file.
* sysdeps/unix/sysv/linux/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/globfree.c: Likewise.
* sysdeps/unix/sysv/linux/globfree64.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/glob64.c: Likewise.
* sysdeps/unix/sysv/linux/oldglob.c [SHLIB_COMPAT]: Also
adds !GLOB_NO_OLD_VERSION as an extra condition.
* sysdeps/unix/sysv/linux/i386/alphasort64.c: Include olddirent.h
using relative path instead of absolute one.
* sysdeps/unix/sysv/linux/i386/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/readdir64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/olddirent.h: Move to ...
* sysdeps/unix/sysv/linux//olddirent.h: ... here.

6 years agoposix: fix glob bugs with long login names
Adhemerval Zanella [Mon, 4 Sep 2017 20:07:16 +0000 (17:07 -0300)] 
posix: fix glob bugs with long login names

Current glob implementation allows unlimited user name for home
directory construction on GLOB_TILDE case.  To accomplish it glob
either construct a name on stack if size are small enough (based
on current alloca_used) or in heap otherwise.

This patch simplifies storage allocation by using the same scratch
buffer for both get_rlogin_r and getpwnam_r.

This also syncs with gnulib commit 064df0b (glob: fix bugs with long
login names).

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

* posix/glob.c (GET_LOGIN_NAME_MAX): Remove.
(glob): Use the same scratch buffer for both getlogin_r and
getpwnam_r.  Don’t require preallocation of the login name.  This
simplifies storage allocation, and corrects the handling of
long login names.

6 years agoposix: Fix getpwnam_r usage (BZ #1062)
Adhemerval Zanella [Mon, 4 Sep 2017 20:00:03 +0000 (17:00 -0300)] 
posix: Fix getpwnam_r usage (BZ #1062)

This patch fixes longstanding misuse of errno after getpwnam_r,
which returns an error number rather than setting errno.  This is
sync with gnulib commit 5db9301.

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

[BZ #1062]
* posix/glob.c (glob): Port recent patches to platforms
lacking getpwnam_r.
(glob): Fix longstanding misuse of errno after getpwnam_r, which
returns an error number rather than setting errno.

6 years agoSync scratch_buffer with gnulib
Adhemerval Zanella [Mon, 4 Sep 2017 19:44:12 +0000 (16:44 -0300)] 
Sync scratch_buffer with gnulib

This patch syncs the scratch_buffer grom gnulib commit 3866ef6 with
GLIBC code.

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

* include/scratch_buffer.h (scratch_buffer): Use a C99 align method
instead of GCC extension.
* malloc/scratch_buffer_grow.c [!_LIBC]: Include libc-config.h.
* malloc/scratch_buffer_grow_preserve.c [!_LIBC]: Likewise.
* malloc/scratch_buffer_set_array_size.c [!_LIBC]: Likewise.

6 years agoposix: Allow glob to match dangling symlinks [BZ #866]
Adhemerval Zanella [Mon, 4 Sep 2017 19:22:28 +0000 (16:22 -0300)] 
posix: Allow glob to match dangling symlinks [BZ #866]

This patch makes glob match dangling symlinks.  Compared to other glob
implementation (*BSD, bash, musl, and other shells as well), GLIBC seems
the be the only one that does not match dangling symlinks.  As for
comment #5 in BZ #866, POSIX does not have any strict specification for
dangling symlinks match and it is reasonable that trying to glob everything
in a path should return all types of files (such as for a 'rm *').  Also,
comment #7 shows even more example where GLIBC current behavior is
unexepected.

I avoided adding another GNU specific flag to set this behavior and
instead make it the default.  Although this change the semanthic from
previous implementation, I think adding another compat symbol to be
really unecessary as from aforementioned reasons (current behavior not
defined in any standard, general idea of different implementation is
to list dangling symbols).

This also sync glob with gnulib commit fd1daf4 (glob: match dangling
symlinks).

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

[BZ #866]
[BZ #1062]
* posix/Makefile (tests): Remove bug-glob1 and tst-glob_symlinks.
* posix/bug-glob1.c: Remove file.
* posix/tst-glob_symlinks.c: New file.
* posix/glob.c (__lstat64): New macro.
(is_dir): New function.
(glob, glob_in_dir): Match symlinks even if they are dangling.
(link_stat, link_exists_p): Remove.  All uses removed.

6 years agoposix: accept inode 0 is a valid inode number (BZ #19971)
Adhemerval Zanella [Mon, 4 Sep 2017 17:55:25 +0000 (14:55 -0300)] 
posix: accept inode 0 is a valid inode number (BZ #19971)

According to this kernel commit 2adc376c55194, d_ino 0 is a regular inode
number on Linux (which also matches POSIX, as it does not treat the value
as special).  This patch makes glob accept is a valid inode number.

This is also a sync with gnulib commit c8e57c1.

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

[BZ #1062]
[BZ #19971]
* posix/glob.c (struct readdir_result): Remove skip_entry member.
(readdir_result_skip_entry, D_INO_TO_RESULT): Remove.
All uses removed.

6 years agoposix: Sync glob with gnulib [BZ #1062]
Adhemerval Zanella [Mon, 4 Sep 2017 17:53:38 +0000 (14:53 -0300)] 
posix: Sync glob with gnulib [BZ #1062]

This patch syncs posix/glob.c implementation with gnulib version
b5ec983 (glob: simplify symlink detection).  The only difference
to gnulib code is

  * DT_UNKNOWN, DT_DIR, and DT_LNK definition in the case there
    were not already defined.  Gnulib code which uses
    HAVE_STRUCT_DIRENT_D_TYPE will redefine them wrongly because
    GLIBC does not define HAVE_STRUCT_DIRENT_D_TYPE.  Instead
    the patch check for each definition instead.

Also, the patch requires additional globfree and globfree64 files
for compatibility version on some architectures.  Also the code
simplification leads to not macro simplification (not need for
NO_GLOB_PATTERN_P anymore).

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

[BZ #1062]
* posix/Makefile (routines): Add globfree, globfree64, and
glob_pattern_p.
* posix/flexmember.h: New file.
* posix/glob_internal.h: Likewise.
* posix/glob_pattern_p.c: Likewise.
* posix/globfree.c: Likewise.
* posix/globfree64.c: Likewise.
* sysdeps/gnu/globfree64.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/globfree.c: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/globfree64.c: Likewise.
* sysdeps/unix/sysv/linux/oldglob.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/globfree64.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/globfree.c: Likewise.
* sysdeps/wordsize-64/globfree.c: Likewise.
* sysdeps/wordsize-64/globfree64.c: Likewise.
* posix/glob.c (HAVE_CONFIG_H): Use !_LIBC instead.
[NDEBUG): Remove comments.
(GLOB_ONLY_P, _AMIGA, VMS): Remove define.
(dirent_type): New type.  Use uint_fast8_t not
uint8_t, as C99 does not require uint8_t.
(DT_UNKNOWN, DT_DIR, DT_LNK): New macros.
(struct readdir_result): Use dirent_type.  Do not define skip_entry
unless it is needed; this saves a byte on platforms lacking d_ino.
(readdir_result_type, readdir_result_skip_entry):
New functions, replacing ...
(readdir_result_might_be_symlink, readdir_result_might_be_dir):
 these functions, which were removed.  This makes the callers
easier to read.  All callers changed.
(D_INO_TO_RESULT): Now empty if there is no d_ino.
(size_add_wrapv, glob_use_alloca): New static functions.
(glob, glob_in_dir): Check for size_t overflow in several places,
and fix some size_t checks that were not quite right.
Remove old code using SHELL since Bash no longer
uses this.
(glob, prefix_array): Separate MS code better.
(glob_in_dir): Remove old Amiga and VMS code.
(globfree, __glob_pattern_type, __glob_pattern_p): Move to
separate files.
(glob_in_dir): Do not rely on undefined behavior in accessing
struct members beyond their bounds.  Use a flexible array member
instead
(link_stat): Rename from link_exists2_p and return -1/0 instead of
0/1.  Caller changed.
(glob): Fix memory leaks.
* posix/glob64 (globfree64): Move to separate file.
* sysdeps/gnu/glob64.c (NO_GLOB_PATTERN_P): Remove define.
(globfree64): Remove hidden alias.
* sysdeps/unix/sysv/linux/Makefile (sysdeps_routines): Add
oldglob.
* sysdeps/unix/sysv/linux/alpha/glob.c (__new_globfree): Move to
separate file.
* sysdeps/unix/sysv/linux/i386/glob64.c (NO_GLOB_PATTERN_P): Remove
define.
Move compat code to separate file.
* sysdeps/wordsize-64/glob.c (globfree): Move definitions to
separate file.

6 years agoUse "static const char domain[] ="
H.J. Lu [Thu, 7 Sep 2017 20:56:58 +0000 (13:56 -0700)] 
Use "static const char domain[] ="

* resolv/tst-resolv-qtypes.c (domain): Changed to
"const char domain[] =".

6 years agoUse MPFR 3.1.6 in build-many-glibcs.py.
Joseph Myers [Thu, 7 Sep 2017 14:50:32 +0000 (14:50 +0000)] 
Use MPFR 3.1.6 in build-many-glibcs.py.

* scripts/build-many-glibcs.py (Context.checkout): Default MPFR
version to 3.1.6.

6 years agoUpdate netinet/tcp.h from Linux 4.13.
Joseph Myers [Thu, 7 Sep 2017 14:29:38 +0000 (14:29 +0000)] 
Update netinet/tcp.h from Linux 4.13.

This patch updates sysdeps/gnu/netinet/tcp.h to include new
definitions from include/uapi/linux/tcp.h in Linux 4.13.

Tested for x86_64.

* sysdeps/gnu/netinet/tcp.h (TCP_ULP): New macro.
(TCP_MD5SIG_EXT): Likewise.
(TCP_MD5SIG_FLAG_PREFIX): Likewise.
(struct tcp_md5sig): Replace __tcpm_pad1 by tcpm_flags and
tcpm_prefixlen.  Rename __tcpm_pad2 to __tcpm_pad.

6 years agoAdd SOL_TLS definition from Linux 4.13.
Joseph Myers [Thu, 7 Sep 2017 14:28:36 +0000 (14:28 +0000)] 
Add SOL_TLS definition from Linux 4.13.

This patch adds the new SOL_TLS constant from Linux 4.13 to the Linux
bits/socket.h.

Tested for x86_64.

* sysdeps/unix/sysv/linux/bits/socket.h (SOL_TLS): New macro.

6 years agoUse ASCII in LC_TIME of om_ET for better readability
Mike FABIAN [Thu, 7 Sep 2017 07:43:35 +0000 (09:43 +0200)] 
Use ASCII in LC_TIME of om_ET for better readability

* localedata/locales/om_ET (LC_TIME): use ASCII for better readability.

6 years agoRemove redundant LC_TIME data in om_KE which is identical to the data in om_ET
Akhilesh Kumar [Thu, 7 Sep 2017 03:03:25 +0000 (08:33 +0530)] 
Remove redundant LC_TIME data in om_KE which is identical to the data in om_ET

[BZ #22100]
* locales/om_KE (LC_TIME): copy "om_ET".

6 years agohurd: fix gethostname(NULL, 0)
Samuel Thibault [Wed, 6 Sep 2017 22:51:17 +0000 (00:51 +0200)] 
hurd: fix gethostname(NULL, 0)

* hurd/get-host.c (_hurd_get_host_config): Also check that more == 0
before assuming that the file is empty.  Avoid testing buffer content
when nread == 0.

6 years agoAdd ChangeLog bugzilla mark for previous commit
Adhemerval Zanella [Wed, 6 Sep 2017 17:52:56 +0000 (14:52 -0300)] 
Add ChangeLog bugzilla mark for previous commit

6 years agoRemove remaining _HAVE_STRING_ARCH_* definitions (BZ #18858)
Adhemerval Zanella [Wed, 6 Sep 2017 17:35:23 +0000 (14:35 -0300)] 
Remove remaining _HAVE_STRING_ARCH_* definitions (BZ #18858)

Since the removal of bits/string.h, _HAVE_STRING_ARCH_* are no
longer used.  This patch removes the unused macros from i686
and x86_64 sysdeps folder.

Checked on x86_64-linux-gnu and i686-linux-gnu.

* sysdeps/i386/i686/multiarch/strncpy.c (_HAVE_STRING_ARCH_strncpy):
Remove define.
* sysdeps/x86_64/multiarch/stpcpy.c (_HAVE_STRING_ARCH_stpcpy):
Likewise.
* sysdeps/x86_64/multiarch/strcspn.c (_HAVE_STRING_ARCH_strcspn):
Likewise.
* sysdeps/x86_64/multiarch/strncat.c (_HAVE_STRING_ARCH_strncat):
Likewise.
* sysdeps/x86_64/multiarch/strncpy.c (_HAVE_STRING_ARCH_strncpy):
Likewise.
* sysdeps/x86_64/multiarch/strpbrk.c (_HAVE_STRING_ARCH_strpbrk):
Likewise.
* sysdeps/x86_64/multiarch/strspn.c (_HAVE_STRING_ARCH_strspn):
Likewise.

6 years ago__libc_dynarray_emplace_enlarge: Add missing else
Florian Weimer [Wed, 6 Sep 2017 09:25:14 +0000 (11:25 +0200)] 
__libc_dynarray_emplace_enlarge: Add missing else

Before, arrays of small elements received a starting allocation size of
8, not 16.

6 years agoresolv: __resolv_conf_attach must not free passed conf object [BZ #22096]
Florian Weimer [Wed, 6 Sep 2017 13:32:43 +0000 (15:32 +0200)] 
resolv: __resolv_conf_attach must not free passed conf object [BZ #22096]

6 years agoresolv: Fix memory leak with OOM during resolv.conf parsing [BZ #22095]
Florian Weimer [Wed, 6 Sep 2017 13:20:25 +0000 (15:20 +0200)] 
resolv: Fix memory leak with OOM during resolv.conf parsing [BZ #22095]

6 years agonss_dns: Remove dead PTR IPv4-to-IPv6 mapping code
Florian Weimer [Wed, 6 Sep 2017 13:11:44 +0000 (15:11 +0200)] 
nss_dns: Remove dead PTR IPv4-to-IPv6 mapping code

6 years agotst-res_use_inet6: Enhance test to cover IPv4-to-IPv6 address mapping
Florian Weimer [Wed, 6 Sep 2017 11:43:01 +0000 (13:43 +0200)] 
tst-res_use_inet6: Enhance test to cover IPv4-to-IPv6 address mapping

This requires more control over the response data, so it is now
determined by flags embedded in the query name.

6 years agoImprove utf8_gen.py to set the width for characters with Prepended_Concatenation_Mark...
Mike FABIAN [Wed, 6 Sep 2017 09:19:33 +0000 (11:19 +0200)] 
Improve utf8_gen.py to set the width for characters with Prepended_Concatenation_Mark property to 1

[BZ #22070]
* localedata/unicode-gen/utf8_gen.py: Set the width for
characters with Prepended_Concatenation_Mark property to 1
* localedata/charmaps/UTF-8: Updated using the improved script.

6 years agoWrite all ranges of neighbouring characters with the same width using the range notat...
Mike FABIAN [Fri, 18 Aug 2017 08:12:29 +0000 (10:12 +0200)] 
Write all ranges of neighbouring characters with the same width using the range notation in charmaps/UTF-8

Writing ranges of neighbouring characters with the same with like this

    <U000E0100>...<U000E01EF> 0

in charmaps/UTF-8 is more efficient than writing many single character lines
like:

    <U000E0100> 0
    <U000E0101> 0
    ...

[BZ #21750]
* unicode-gen/utf8_gen.py: Write all ranges of neighbouring characters
with the same width using the range notation in charmaps/UTF-8.

6 years agoPrefer new libm function wrappers for !LIBM_SVID_COMPAT.
Joseph Myers [Tue, 5 Sep 2017 23:35:55 +0000 (23:35 +0000)] 
Prefer new libm function wrappers for !LIBM_SVID_COMPAT.

The initial obsoletion of SVID libm error handling left the old
wrappers and __kernel_standard still being used for new ports and
static linking, just with macro definitions of _LIB_VERSION and
matherr that meant symbols with those names were never actually used
and the code for different error handling variants could be optimized
out.

This patch cleans things up further by eliminating the
__kernel_standard use for new ports and static linking.  Now, the old
wrappers no longer generate any code in the !LIBM_SVID_COMPAT case,
while the new errno-only wrappers that were added for float128 support
are now also used for float, double and long double in that case.

The changes are generally straightforward.  The w_scalb*_compat
wrappers continue to be used (scalb is obsolescent in the sense of not
being supported for float128, but is present in supported standards -
the 2001 edition of POSIX and earlier XSI versions - so remains
supported for static linking and new ports, as do the float and long
double variants that are existing GNU extensions).  Those wrappers
would only call __kernel_standard in the _LIB_VERSION == _SVID_ case.
Since we would like to be able to compile most of glibc without
optimization, relying on a static function whose only use is under an
if (0) condition being optimized away to avoid an undefined
__kernel_standard reference may not be a good idea.  Thus, the
relevant code in the scalb wrappers has LIBM_SVID_COMPAT conditionals
added to guarantee it's not built at all in the case where
__kernel_standard does not exist.

Just as i386 has its own w_sqrt_compat.c, so w_sqrt.c is also added.
ia64 gets dummy w_*.c to prevent those files being built where they
would conflict with the ia64 libm, as with its existing w_*_compat.c.

Conditions disabling code for !LIBM_SVID_COMPAT are needed in both the
math/ wrappers and in the long double wrappers in ldbl-opt (to avoid
them setting up aliases and symbol versions for undefined symbols).  I
hope that future cleanups to how libm function aliases and symbol
versioning are done will eliminate the need for most of the ldbl-opt
wrappers.

Tested for x86_64 and x86, and with build-many-glibcs.py.

* sysdeps/generic/math-type-macros-double.h: Include
<math-svid-compat.h>.
(__USE_WRAPPER_TEMPLATE): Define to !LIBM_SVID_COMPAT.
* sysdeps/generic/math-type-macros-float.h: Include
<math-svid-compat.h>.
(__USE_WRAPPER_TEMPLATE): Define to !LIBM_SVID_COMPAT.
* sysdeps/generic/math-type-macros-ldouble.h: Include
<math-svid-compat.h>.
(__USE_WRAPPER_TEMPLATE): Define to !LIBM_SVID_COMPAT.
* math/lgamma-compat.h (BUILD_LGAMMA): Include LIBM_SVID_COMPAT
condition.
* math/w_acos_compat.c: Condition contents on [LIBM_SVID_COMPAT].
* math/w_acosf_compat.c: Likewise.
* math/w_acosh_compat.c: Likewise.
* math/w_acoshf_compat.c: Likewise.
* math/w_acoshl_compat.c: Likewise.
* math/w_acosl_compat.c: Likewise.
* math/w_asin_compat.c: Likewise.
* math/w_asinf_compat.c: Likewise.
* math/w_asinl_compat.c: Likewise.
* math/w_atan2_compat.c: Likewise.
* math/w_atan2f_compat.c: Likewise.
* math/w_atan2l_compat.c: Likewise.
* math/w_atanh_compat.c: Likewise.
* math/w_atanhf_compat.c: Likewise.
* math/w_atanhl_compat.c: Likewise.
* math/w_cosh_compat.c: Likewise.
* math/w_coshf_compat.c: Likewise.
* math/w_coshl_compat.c: Likewise.
* math/w_exp10_compat.c: Likewise.
* math/w_exp10f_compat.c: Likewise.
* math/w_exp10l_compat.c: Likewise.
* math/w_exp2_compat.c: Likewise.
* math/w_exp2f_compat.c: Likewise.
* math/w_exp2l_compat.c: Likewise.
* math/w_fmod_compat.c: Likewise.
* math/w_fmodf_compat.c: Likewise.
* math/w_fmodl_compat.c: Likewise.
* math/w_hypot_compat.c: Likewise.
* math/w_hypotf_compat.c: Likewise.
* math/w_hypotl_compat.c: Likewise.
* math/w_j0_compat.c: Likewise.
* math/w_j0f_compat.c: Likewise.
* math/w_j0l_compat.c: Likewise.
* math/w_j1_compat.c: Likewise.
* math/w_j1f_compat.c: Likewise.
* math/w_j1l_compat.c: Likewise.
* math/w_jn_compat.c: Likewise.
* math/w_jnf_compat.c: Likewise.
* math/w_jnl_compat.c: Likewise.
* math/w_lgamma_r_compat.c: Likewise.
* math/w_lgammaf_r_compat.c: Likewise.
* math/w_lgammal_r_compat.c: Likewise.
* math/w_log10_compat.c: Likewise.
* math/w_log10f_compat.c: Likewise.
* math/w_log10l_compat.c: Likewise.
* math/w_log2_compat.c: Likewise.
* math/w_log2f_compat.c: Likewise.
* math/w_log2l_compat.c: Likewise.
* math/w_log_compat.c: Likewise.
* math/w_logf_compat.c: Likewise.
* math/w_logl_compat.c: Likewise.
* math/w_pow_compat.c: Likewise.
* math/w_powf_compat.c: Likewise.
* math/w_powl_compat.c: Likewise.
* math/w_remainder_compat.c: Likewise.
* math/w_remainderf_compat.c: Likewise.
* math/w_remainderl_compat.c: Likewise.
* math/w_sinh_compat.c: Likewise.
* math/w_sinhf_compat.c: Likewise.
* math/w_sinhl_compat.c: Likewise.
* math/w_sqrt_compat.c: Likewise.
* math/w_sqrtf_compat.c: Likewise.
* math/w_sqrtl_compat.c: Likewise.
* math/w_tgamma_compat.c: Likewise.
* math/w_tgammaf_compat.c: Likewise.
* math/w_tgammal_compat.c: Likewise.
* math/w_scalb_compat.c (sysv_scalb): Condition definition on
[LIBM_SVID_COMPAT].
(__scalb): Condition call to sysv_scalb on [LIBM_SVID_COMPAT].
* math/w_scalbf_compat.c (sysv_scalbf): Condition definition on
[LIBM_SVID_COMPAT].
(__scalbf): Condition call to sysv_scalbf on [LIBM_SVID_COMPAT].
* math/w_scalbl_compat.c (sysv_scalbl): Condition definition on
[LIBM_SVID_COMPAT].
(__scalbl): Condition call to sysv_scalbl on [LIBM_SVID_COMPAT].
* sysdeps/i386/fpu/w_sqrt.c: New file.
* sysdeps/ia64/fpu/w_acos.c: Likewise.
* sysdeps/ia64/fpu/w_acosf.c: Likewise.
* sysdeps/ia64/fpu/w_acosh.c: Likewise.
* sysdeps/ia64/fpu/w_acoshf.c: Likewise.
* sysdeps/ia64/fpu/w_acoshl.c: Likewise.
* sysdeps/ia64/fpu/w_acosl.c: Likewise.
* sysdeps/ia64/fpu/w_asin.c: Likewise.
* sysdeps/ia64/fpu/w_asinf.c: Likewise.
* sysdeps/ia64/fpu/w_asinl.c: Likewise.
* sysdeps/ia64/fpu/w_atan2.c: Likewise.
* sysdeps/ia64/fpu/w_atan2f.c: Likewise.
* sysdeps/ia64/fpu/w_atan2l.c: Likewise.
* sysdeps/ia64/fpu/w_atanh.c: Likewise.
* sysdeps/ia64/fpu/w_atanhf.c: Likewise.
* sysdeps/ia64/fpu/w_atanhl.c: Likewise.
* sysdeps/ia64/fpu/w_cosh.c: Likewise.
* sysdeps/ia64/fpu/w_coshf.c: Likewise.
* sysdeps/ia64/fpu/w_coshl.c: Likewise.
* sysdeps/ia64/fpu/w_exp.c: Likewise.
* sysdeps/ia64/fpu/w_exp10.c: Likewise.
* sysdeps/ia64/fpu/w_exp10f.c: Likewise.
* sysdeps/ia64/fpu/w_exp10l.c: Likewise.
* sysdeps/ia64/fpu/w_exp2.c: Likewise.
* sysdeps/ia64/fpu/w_exp2f.c: Likewise.
* sysdeps/ia64/fpu/w_exp2l.c: Likewise.
* sysdeps/ia64/fpu/w_expf.c: Likewise.
* sysdeps/ia64/fpu/w_expl.c: Likewise.
* sysdeps/ia64/fpu/w_fmod.c: Likewise.
* sysdeps/ia64/fpu/w_fmodf.c: Likewise.
* sysdeps/ia64/fpu/w_fmodl.c: Likewise.
* sysdeps/ia64/fpu/w_hypot.c: Likewise.
* sysdeps/ia64/fpu/w_hypotf.c: Likewise.
* sysdeps/ia64/fpu/w_hypotl.c: Likewise.
* sysdeps/ia64/fpu/w_lgamma_r.c: Likewise.
* sysdeps/ia64/fpu/w_lgammaf_r.c: Likewise.
* sysdeps/ia64/fpu/w_lgammal_r.c: Likewise.
* sysdeps/ia64/fpu/w_log.c: Likewise.
* sysdeps/ia64/fpu/w_log10.c: Likewise.
* sysdeps/ia64/fpu/w_log10f.c: Likewise.
* sysdeps/ia64/fpu/w_log10l.c: Likewise.
* sysdeps/ia64/fpu/w_log2.c: Likewise.
* sysdeps/ia64/fpu/w_log2f.c: Likewise.
* sysdeps/ia64/fpu/w_log2l.c: Likewise.
* sysdeps/ia64/fpu/w_logf.c: Likewise.
* sysdeps/ia64/fpu/w_logl.c: Likewise.
* sysdeps/ia64/fpu/w_pow.c: Likewise.
* sysdeps/ia64/fpu/w_powf.c: Likewise.
* sysdeps/ia64/fpu/w_powl.c: Likewise.
* sysdeps/ia64/fpu/w_remainder.c: Likewise.
* sysdeps/ia64/fpu/w_remainderf.c: Likewise.
* sysdeps/ia64/fpu/w_remainderl.c: Likewise.
* sysdeps/ia64/fpu/w_sinh.c: Likewise.
* sysdeps/ia64/fpu/w_sinhf.c: Likewise.
* sysdeps/ia64/fpu/w_sinhl.c: Likewise.
* sysdeps/ia64/fpu/w_sqrt.c: Likewise.
* sysdeps/ia64/fpu/w_sqrtf.c: Likewise.
* sysdeps/ia64/fpu/w_sqrtl.c: Likewise.
* sysdeps/ia64/fpu/w_tgamma.c: Likewise.
* sysdeps/ia64/fpu/w_tgammaf.c: Likewise.
* sysdeps/ia64/fpu/w_tgammal.c: Likewise.
* sysdeps/ieee754/dbl-64/w_exp_compat.c: Condition contents on
[LIBM_SVID_COMPAT].
* sysdeps/ieee754/flt-32/w_expf_compat.c: Likewise.
* sysdeps/ieee754/k_standard.c: Likewise.
* sysdeps/ieee754/k_standardf.c: Likewise.
* sysdeps/ieee754/k_standardl.c: Likewise.
* sysdeps/ieee754/ldbl-128/w_expl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/w_expl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-96/w_expl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-64-128/w_expl_compat.c: Condition
long_double_symbol call on [LIBM_SVID_COMPAT].
* sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_acosl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_asinl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_coshl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_j0l_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_j1l_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_jnl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_log10l_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_log2l_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_logl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_powl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c: Condition
long_double_symbol and compat_symbol calls on [LIBM_SVID_COMPAT].

6 years agoFix tests that are testing obsoleted functionality
Steve Ellcey [Tue, 5 Sep 2017 19:24:00 +0000 (12:24 -0700)] 
Fix tests that are testing obsoleted functionality

* include/shlib-compat.h (TEST_COMPAT): New Macro.
* malloc/tst-mallocstate.c: Convert from test-skeleton
to test-driver.  Ifdef code using TEST_COMPAT macro.
* math/test-matherr-2.c: Ifdef test using TEST_COMPAT macro.
* math/test-matherr.c: Likewise.

6 years agoFix pcprofiledump cross-endian condition (bug 22086).
Joseph Myers [Tue, 5 Sep 2017 15:14:09 +0000 (15:14 +0000)] 
Fix pcprofiledump cross-endian condition (bug 22086).

debug/pcprofiledump.c contains code that tries to handle other-endian
data.  This uses a condition "(word & 0xfffffff0) == bswap_32
(0xdeb00000)".  This condition is always false (the LHS always has the
low four bits zero, the RHS doesn't); a correct comparison would use
0x0fffffff.  This results in -Werror=tautological-compare build
failures with the tile version of bits/byteswap.h and mainline GCC.

https://sourceware.org/ml/libc-testresults/2017-q3/msg00400.html

pcprofiledump.c: In function 'main':
pcprofiledump.c:118:39: error: bitwise comparison always evaluates to false
[-Werror=tautological-compare]
   int must_swap = (word & 0xfffffff0) == bswap_32 (0xdeb00000);
                                       ^~

This patch fixes the condition.  Tested for x86_64, and with
build-many-glibcs.py that it fixes the build for tilegx-linux-gnu.
(Note that I have not tested the actual pcprofiledump functionality,
native or cross endian, which lacks any testsuite coverage.)

[BZ #22086]
* debug/pcprofiledump.c (main): Use byte-swapped mask when
comparing word with byte-swapped constant.

6 years agoAdd miq_NI locale for Miskito
Mike FABIAN [Thu, 31 Aug 2017 15:27:24 +0000 (17:27 +0200)] 
Add miq_NI locale for Miskito

[BZ #20498]
* locale/iso-639.def: add Miskito.
* localedata/SUPPORTED: Add miq_NI/UTF-8.
* localedata/locales/miq_NI: New file.

6 years agoHide __chmod and __mkdir [BZ #18822]
H.J. Lu [Mon, 4 Sep 2017 20:38:36 +0000 (13:38 -0700)] 
Hide __chmod and __mkdir [BZ #18822]

Hide internal __chmod and __mkdir functions to allow direct access
within libc.so and libc.a without using GOT nor PLT.

[BZ #18822]
* include/sys/stat.h (__chmod): Add libc_hidden_proto.
(__mkdir): Likewise.
* io/chmod.c (__chmod): Add libc_hidden_def.
* io/mkdir.c (__mkdir): Likewise.
* sysdeps/mach/hurd/chmod.c (__chmod): Likewise.
* sysdeps/mach/hurd/mkdir.c (__mkdir): Likewise.
* sysdeps/unix/sysv/linux/generic/chmod.c (__chmod): Likewise.
* sysdeps/unix/sysv/linux/generic/mkdir.c (__mkdir): Likewise.

6 years agoUpdate kernel version in syscall-names.list to 4.13.
Joseph Myers [Mon, 4 Sep 2017 20:16:07 +0000 (20:16 +0000)] 
Update kernel version in syscall-names.list to 4.13.

As far as I can tell Linux 4.13 does not add any new syscalls not
included in syscall-names.list.  This patch updates the version number
in that file accordingly.

* sysdeps/unix/sysv/linux/syscall-names.list: Update kernel
version to 4.13.

6 years agoFix bits/math-finite.h exp10 condition (bug 22082).
Joseph Myers [Mon, 4 Sep 2017 16:27:16 +0000 (16:27 +0000)] 
Fix bits/math-finite.h exp10 condition (bug 22082).

bits/math-finite.h handles exp10 if __USE_GNU.  It should use the
condition __GLIBC_USE (IEC_60559_FUNCS_EXT), as in bits/mathcalls.h.
This patch fixes the condition.

Tested for x86_64.

[BZ #22082]
* math/bits/math-finite.h (exp10): Redirect if [__GLIBC_USE
(IEC_60559_FUNCS_EXT)], not [__USE_GNU].

6 years agomath.h: Warn about an already-defined log macro
Florian Weimer [Mon, 4 Sep 2017 08:52:28 +0000 (10:52 +0200)] 
math.h: Warn about an already-defined log macro

This is a common programming error, and the cause of the problem is not
always obvious.

<tgmath.h> defines a log macro, but it includes <math.h> before that, so
that is compatible with the warning.

6 years agoUse Linux 4.13 in build-many-glibcs.py.
Joseph Myers [Mon, 4 Sep 2017 15:34:58 +0000 (15:34 +0000)] 
Use Linux 4.13 in build-many-glibcs.py.

* scripts/build-many-glibcs.py (Context.checkout): Default Linux
kernel version to 4.13.

6 years agohurd: fix resolv/tst-resolv-res_init-skeleton.c build
Samuel Thibault [Sun, 3 Sep 2017 17:44:07 +0000 (19:44 +0200)] 
hurd: fix resolv/tst-resolv-res_init-skeleton.c build

* resolv/tst-resolv-res_init-skeleton.c (run_res_init)
[!CLONE_NEWUTS]: Fail as unsupported if hostname is not NULL.

6 years agohurd: Fix build ot misc/tst-preadvwritev2-common.c
Samuel Thibault [Sun, 3 Sep 2017 15:48:33 +0000 (17:48 +0200)] 
hurd: Fix build ot misc/tst-preadvwritev2-common.c

* misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC,
RWF_NOWAIT): Define to 0 if undefined already.
(do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED
boils down to 0.

6 years agohurd: Fix rtld's strtoul_internal use through hurdlookup
Samuel Thibault [Sun, 3 Sep 2017 12:33:35 +0000 (14:33 +0200)] 
hurd: Fix rtld's strtoul_internal use through hurdlookup

* sysdeps/mach/hurd/dl-sysdep.c (__strtoul_internal): New
function.

6 years agohurd: fix overriding rtld's __sbrk with the real implementation
Samuel Thibault [Sun, 3 Sep 2017 12:19:21 +0000 (14:19 +0200)] 
hurd: fix overriding rtld's __sbrk with the real implementation

* sysdeps/mach/hurd/dl-sysdep.c (__sbrk): Add weak_function
qualifier.

6 years agohurd: mach/hurd/x86 also needs x86 tunables
Samuel Thibault [Sun, 3 Sep 2017 11:39:33 +0000 (13:39 +0200)] 
hurd: mach/hurd/x86 also needs x86 tunables

* sysdeps/mach/hurd/x86/dl-sysdep.c: New file.

6 years agohurd: mach/hurd/i386 also needs mach/hurd/x86
Samuel Thibault [Sun, 3 Sep 2017 11:38:09 +0000 (13:38 +0200)] 
hurd: mach/hurd/i386 also needs mach/hurd/x86

* sysdeps/mach/hurd/i386/Implies: Add mach/hurd/x86.

6 years agohurd: fix libm link
Samuel Thibault [Sun, 3 Sep 2017 03:32:10 +0000 (05:32 +0200)] 
hurd: fix libm link

* sysdeps/x86/fpu/include/bits/fenv.h [NO_HIDDEN]: Redirect
__feraiseexcept_renamed to feraiseexcept instead of
__GI_feraiseexcept.

6 years agohurd: Fix libc link
Samuel Thibault [Sun, 3 Sep 2017 02:58:00 +0000 (04:58 +0200)] 
hurd: Fix libc link

This follows db3d848 ('Build divdi3 only for architecture that required
it').

* sysdeps/mach/hurd/i386/Makefile
[$(subdir) = csu] (sysdep_routines): New rule: divdi3 object.
[$(subdir) = csu] (sysdep-only-routines): Likewise.
[$(subdir) = csu] (CFLAGS-divdi3.c): Likewise.

6 years agohurd: Fix libc link
Samuel Thibault [Sun, 3 Sep 2017 02:36:29 +0000 (04:36 +0200)] 
hurd: Fix libc link

* sysdeps/posix/pause.c: Include <sigsetops.h>.
* sysdeps/posix/system.c: Include <sigsetops.h>.

6 years agohurd: Fix rtld link
Samuel Thibault [Sun, 3 Sep 2017 02:25:35 +0000 (04:25 +0200)] 
hurd: Fix rtld link

* sysdeps/mach/hurd/dl-sysdep.c (__sbrk): New function.

6 years agohurd: Fix rtld link
Samuel Thibault [Sun, 3 Sep 2017 02:02:24 +0000 (04:02 +0200)] 
hurd: Fix rtld link

dl-tunables.c now uses __access_noerrno in addition to __access.

* sysdeps/mach/hurd/dl-sysdep.c (__access_noerrno): New function.

6 years agohurd: Fix p{read,write}{,v64}v2.c build
Samuel Thibault [Sun, 3 Sep 2017 01:03:40 +0000 (03:03 +0200)] 
hurd: Fix p{read,write}{,v64}v2.c build

* misc/preadv2.c: Include <errno.h>.
* misc/preadv64v2.c: Include <errno.h>.
* misc/pwritev2.c: Include <errno.h>.
* misc/pwritev64v2.c: Include <errno.h>.
* sysdeps/posix/preadv2.c: Include <errno.h>.
* sysdeps/posix/preadv64v2.c: Include <errno.h>.
Fix <unistd.h> inclusion.
* sysdeps/posix/pwritev2.c: Include <errno.h>.
* sysdeps/posix/pwritev64v2.c: Include <errno.h>.

6 years agohurd: Fix p{read,write}v64v2.c build
Samuel Thibault [Sun, 3 Sep 2017 01:00:32 +0000 (03:00 +0200)] 
hurd: Fix p{read,write}v64v2.c build

* sysdeps/posix/preadv64v2.c: Use off64_t instead of off_t.
* sysdeps/posix/pwritev64v2.c: Use off64_t instead of off_t.

6 years agohurd: Fix p{read,write}{,v64}v2.c build
Samuel Thibault [Sun, 3 Sep 2017 00:45:06 +0000 (02:45 +0200)] 
hurd: Fix p{read,write}{,v64}v2.c build

* sysdeps/posix/preadv2.c: Use off_t instead of OFF_T.
* sysdeps/posix/preadv64v2.c: Use off_t instead of OFF_T.
* sysdeps/posix/pwritev2.c: Use off_t instead of OFF_T.
* sysdeps/posix/pwritev64v2.c: Use off_t instead of OFF_T.

6 years agohurd: Fix getting ssize_t for <sys/socket.h>
Samuel Thibault [Sun, 3 Sep 2017 00:22:00 +0000 (02:22 +0200)] 
hurd: Fix getting ssize_t for <sys/socket.h>

* sysdeps/mach/hurd/bits/socket.h: Include <sys/types.h> instead of
just <bits/types.h>.

6 years agohurd: Fix sigsetops.h macros
Samuel Thibault [Sat, 2 Sep 2017 23:45:19 +0000 (01:45 +0200)] 
hurd: Fix sigsetops.h macros

* sysdeps/generic/sigsetops.h: Remove spurious #endif.
(__sigismember, __sigaddset, __sigdelset): Fix referencing set
parameter.

6 years agosysdeps/generic/sigsetops.h: Remove spurious #endif
Samuel Thibault [Sat, 2 Sep 2017 23:08:49 +0000 (01:08 +0200)] 
sysdeps/generic/sigsetops.h: Remove spurious #endif

6 years agoObsolete pow10 functions.
Joseph Myers [Fri, 1 Sep 2017 21:13:18 +0000 (21:13 +0000)] 
Obsolete pow10 functions.

This patch obsoletes the pow10, pow10f and pow10l functions (makes
them into compat symbols, not available for new ports or static
linking).  The exp10 names for these functions are standardized (in TS
18661-4) and were added in the same glibc version (2.1) as pow10 so
source code can change to use them without any loss of portability.
Since pow10 is deliberately not provided for _Float128, only exp10,
this slightly simplifies moving to the new wrapper templates in the
!LIBM_SVID_COMPAT case, by avoiding needing to arrange for pow10,
pow10f and pow10l to be defined by those templates.

Tested for x86_64, and with build-many-glibcs.py.

* manual/math.texi (pow10): Do not document.
(pow10f): Likewise.
(pow10l): Likewise.
* math/bits/mathcalls.h [__USE_GNU] (pow10): Do not declare.
* math/bits/math-finite.h [__USE_GNU] (pow10): Likewise.
* math/libm-test-exp10.inc (pow10_test): Remove.
(do_test): Do not call pow10.
* math/w_exp10_compat.c (pow10): Make into compat symbol.
[NO_LONG_DOUBLE] (pow10l): Likewise.
* math/w_exp10f_compat.c (pow10f): Likewise.
* math/w_exp10l_compat.c (pow10l): Likewise.
* sysdeps/ia64/fpu/e_exp10.S: Include <shlib-compat.h>.
(pow10): Make into compat symbol.
* sysdeps/ia64/fpu/e_exp10f.S: Include <shlib-compat.h>.
(pow10f): Make into compat symbol.
* sysdeps/ia64/fpu/e_exp10l.S: Include <shlib-compat.h>.
(pow10l): Make into compat symbol.
* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove
pow10.
(CFLAGS-nldbl-pow10.c): Remove variable..
* sysdeps/ieee754/ldbl-opt/nldbl-pow10.c: Remove file.
* sysdeps/ieee754/ldbl-opt/w_exp10_compat.c (pow10l): Condition on
[SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)].
* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c (compat_symbol):
Undefine and redefine.
(pow10l): Make into compat symbol.
* sysdeps/aarch64/libm-test-ulps: Remove pow10 ulps.
* sysdeps/alpha/fpu/libm-test-ulps: Likewise.
* sysdeps/arm/libm-test-ulps: Likewise.
* sysdeps/hppa/fpu/libm-test-ulps: Likewise.
* sysdeps/i386/fpu/libm-test-ulps: Likewise.
* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
* sysdeps/microblaze/libm-test-ulps: Likewise.
* sysdeps/mips/mips32/libm-test-ulps: Likewise.
* sysdeps/mips/mips64/libm-test-ulps: Likewise.
* sysdeps/nios2/libm-test-ulps: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Likewise.
* sysdeps/powerpc/nofpu/libm-test-ulps: Likewise.
* sysdeps/s390/fpu/libm-test-ulps: Likewise.
* sysdeps/sh/libm-test-ulps: Likewise.
* sysdeps/sparc/fpu/libm-test-ulps: Likewise.
* sysdeps/tile/libm-test-ulps: Likewise.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.

6 years ago2017-09-01 Paul Pluzhnikov <ppluzhnikov@google.com>
Paul Pluzhnikov [Fri, 1 Sep 2017 18:35:55 +0000 (11:35 -0700)] 
2017-09-01  Paul Pluzhnikov  <ppluzhnikov@google.com>

* stdlib/tst-atexit-common.c (crumbs): Ensure correct size.

6 years agoUpdate tst-regex.c/tst-regex2.c for old ChangeLog move
H.J. Lu [Fri, 1 Sep 2017 17:20:49 +0000 (10:20 -0700)] 
Update tst-regex.c/tst-regex2.c for old ChangeLog move

* posix/tst-regex.c (do_test): Replace "../ChangeLog.8" with
"../ChangeLog.old/ChangeLog.8".
* posix/tst-regex2.c (do_test): Replace "../ChangeLog.14" with
"../ChangeLog.old/ChangeLog.14".

6 years agoCredit Ulrich Drepper for libpthread in contrib.texi
H.J. Lu [Fri, 1 Sep 2017 17:18:37 +0000 (10:18 -0700)] 
Credit Ulrich Drepper for libpthread in contrib.texi

* manual/contrib.texi: Credit Ulrich Drepper for the POSIX
Threads Library.

6 years agoInclude <string.h> for strcmp call from sysdeps/unix/sysv/linux/gentempfd.c.
Joseph Myers [Fri, 1 Sep 2017 17:14:43 +0000 (17:14 +0000)] 
Include <string.h> for strcmp call from sysdeps/unix/sysv/linux/gentempfd.c.

* sysdeps/unix/sysv/linux/gentempfd.c: Include <string.h>.

6 years agoRemove Roland McGrath/Ulrich Drepper et al. from DSO banner
H.J. Lu [Fri, 1 Sep 2017 17:09:08 +0000 (10:09 -0700)] 
Remove Roland McGrath/Ulrich Drepper et al. from DSO banner

* csu/version.c (banner): Remove "by Roland McGrath et al.".
* nptl/Banner: Remove "by Ulrich Drepper et al.".

6 years ago2017-09-01 Paul Pluzhnikov <ppluzhnikov@google.com>
Paul Pluzhnikov [Fri, 1 Sep 2017 16:31:13 +0000 (09:31 -0700)] 
2017-09-01  Paul Pluzhnikov  <ppluzhnikov@google.com>

* stdlib/tst-atexit-common.c (do_test): Test support for at least
32 atexit handlers.

6 years agomath/math.h (HUGE_VAL): Improve commentary.
Zack Weinberg [Fri, 1 Sep 2017 15:19:47 +0000 (11:19 -0400)] 
math/math.h (HUGE_VAL): Improve commentary.

6 years agoMove all old ChangeLogs to a top-level ChangeLog.old directory.
Zack Weinberg [Fri, 1 Sep 2017 13:31:43 +0000 (09:31 -0400)] 
Move all old ChangeLogs to a top-level ChangeLog.old directory.

6 years agolinux: Implement tmpfile with O_TMPFILE (BZ#21530)
Adhemerval Zanella [Mon, 26 Jun 2017 14:52:14 +0000 (11:52 -0300)] 
linux: Implement tmpfile with O_TMPFILE (BZ#21530)

This patch adds O_TMPFILE support to tmpfile on Linux.  This is
similar to the previous suggestion by Andreas Schwab [1] with the
difference the file descriptor creation is parameterized to
compartmentalize Linux only open flags (O_TMPFILE) on sysdeps.

Checked on x86_64-linux-gnu.

Adhemerval Zanella  <adhemerval.zanella@linaro.org>
Andreas Schwab  <schwab@suse.de>

[BZ #21530]
* include/stdio.h (__gen_tempfd): New function.
* stdio-common/Makefile (routines): Add gentempfd.
* stdio-common/gentempfd.c: New file.
* sysdeps/unix/sysv/linux/gentempfd.c: Likewise.
* stdio-common/tmpfile.c (tmpfile): First try to use a system specific
unnamed file first.

[1] https://sourceware.org/ml/libc-alpha/2017-06/msg01293.html

6 years agoRemove obsolete notes at top level of source tree.
Zack Weinberg [Fri, 1 Sep 2017 12:04:22 +0000 (08:04 -0400)] 
Remove obsolete notes at top level of source tree.

 * BUGS, CONFORMANCE, NAMESPACE, WUR-REPORT: Deleted.
 * README.pretty-printers, README.tunables: Move to manual/.

6 years agogetaddrinfo: Fix error handling in gethosts [BZ #21915] [BZ #21922]
Florian Weimer [Fri, 1 Sep 2017 07:34:29 +0000 (09:34 +0200)] 
getaddrinfo: Fix error handling in gethosts [BZ #21915] [BZ #21922]

The old code uses errno as the primary indicator for success or
failure.  This is wrong because errno is only set for specific
combinations of the status return value and the h_errno variable.

6 years agogetaddrinfo: Return EAI_NODATA if gethostbyname2_r reports NO_DATA [BZ #21922]
Florian Weimer [Fri, 1 Sep 2017 07:15:36 +0000 (09:15 +0200)] 
getaddrinfo: Return EAI_NODATA if gethostbyname2_r reports NO_DATA [BZ #21922]

6 years agosupport_chroot_create: Add support for /etc/hosts, /etc/host.conf
Florian Weimer [Fri, 1 Sep 2017 06:58:07 +0000 (08:58 +0200)] 
support_chroot_create: Add support for /etc/hosts, /etc/host.conf

6 years agogetaddrinfo: In gaih_inet, use h_errno for certain status values only
Florian Weimer [Fri, 1 Sep 2017 06:57:52 +0000 (08:57 +0200)] 
getaddrinfo: In gaih_inet, use h_errno for certain status values only

h_errno is not set for NSS_STATUS_SUCCESS, so its value might not be
accurate at this point.

6 years agogetaddrinfo: Properly set errno for NSS function lookup failure
Florian Weimer [Fri, 1 Sep 2017 06:57:28 +0000 (08:57 +0200)] 
getaddrinfo: Properly set errno for NSS function lookup failure

6 years agogetaddrinfo: Use &h_errno has the h_errno pointer
Florian Weimer [Fri, 1 Sep 2017 06:57:07 +0000 (08:57 +0200)] 
getaddrinfo: Use &h_errno has the h_errno pointer

This simplifies the code because it is not necessary to propagate the
temporary h_errno value to the thread-local variable.  It also increases
compatibility with NSS modules which update only one of the two places.

6 years agogetaddrinfo: Use &errno has the errno pointer
Florian Weimer [Fri, 1 Sep 2017 06:56:46 +0000 (08:56 +0200)] 
getaddrinfo: Use &errno has the errno pointer

Similar code in nss/getXXbyYY_r.c is already using &errno as the
argument.

6 years agoILP32 math changes
Steve Ellcey [Thu, 31 Aug 2017 20:38:11 +0000 (13:38 -0700)] 
ILP32 math changes

* sysdeps/aarch64/fpu/s_llrint.c (OREG_SIZE): New macro.
* sysdeps/aarch64/fpu/s_llround.c (OREG_SIZE): Likewise.
* sysdeps/aarch64/fpu/s_llrintf.c (OREGS, IREGS): Remove.
(IREG_SIZE, OREG_SIZE): New macros.
* sysdeps/aarch64/fpu/s_llroundf.c: (OREGS, IREGS): Remove.
(IREG_SIZE, OREG_SIZE): New macros.
* sysdeps/aarch64/fpu/s_lrintf.c (IREGS): Remove.
(IREG_SIZE): New macro.
* sysdeps/aarch64/fpu/s_lroundf.c (IREGS): Remove.
(IREG_SIZE): New macro.
* sysdeps/aarch64/fpu/s_lrint.c (get-rounding-mode.h, stdint.h):
New includes.
(IREG_SIZE, OREG_SIZE): Initialize if not already set.
(OREGS, IREGS): Set based on IREG_SIZE and OREG_SIZE.
(__CONCATX): Handle exceptions correctly on large values that may
set FE_INVALID.
* sysdeps/aarch64/fpu/s_lround.c (IREG_SIZE, OREG_SIZE):
Initialize if not already set.
        (OREGS, IREGS): Set based on IREG_SIZE and OREG_SIZE.

6 years agoRemove NO_CANCELLATION macro
Adhemerval Zanella [Thu, 3 Aug 2017 17:29:06 +0000 (14:29 -0300)] 
Remove NO_CANCELLATION macro

The NO_CANCELLATION macro is used currently on generic headers to
define non cancellable syscalls and on Linux fcntl to implement the non
cancellable variation.  Former should be single-handled by not-cancel.h
header and former could be simplified build both cancellable and non
cancellable for default objects and alias the non-cancellable to default
one for rtld ones (since Linux already support cancellation as default).

This patch thus removes the NO_CANCELLATION macro and its usage.  The
generic non cancellable fcntl is route to internal fcntl.

Checked on x86_64-linux-gnu and i686-linux-gnu.  Also checked with
a build again major ABIs.

* sysdeps/generic/not-cancel.h (NO_CANCELLATION): Remove macro.
* sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/arm/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h
(NO_CANCELLATION): Likewise.
* sysdeps/unix/sysv/linux/mips/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/nios2/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/powerpc/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
(NO_CANCELLATION): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
(NO_CANCELLATION): Likewise.
* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (NO_CANCELLATION):
Likewise
* sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/tile/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (NO_CANCELLATION):
Likewise.
* sysdeps/unix/sysv/linux/not-cancel.h (__fcntl_nocancel): Add
hidden prototype.
* sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Define only
for !IS_IN (rtld) and remove NO_CANCELLATION usage.

6 years agoChange argument type passed to ifunc resolvers
Steve Ellcey [Thu, 31 Aug 2017 17:34:55 +0000 (10:34 -0700)] 
Change  argument type passed to ifunc resolvers

* sysdeps/aarch64/dl-irel.h: (elf_ifunc_invoke): Change argument type
in resolver call.

6 years agolibc-symbols.h: Remove definition of internal_function
Florian Weimer [Thu, 31 Aug 2017 16:31:04 +0000 (18:31 +0200)] 
libc-symbols.h: Remove definition of internal_function

6 years agostdlib: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 16:30:38 +0000 (18:30 +0200)] 
stdlib: Remove internal_function attribute

6 years agostdio-common: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 16:30:02 +0000 (18:30 +0200)] 
stdio-common: Remove internal_function attribute

6 years agoposix: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 16:25:55 +0000 (18:25 +0200)] 
posix: Remove internal_function attribute

6 years agonptl: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 15:50:26 +0000 (17:50 +0200)] 
nptl: Remove internal_function attribute

6 years agoio: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 15:41:25 +0000 (17:41 +0200)] 
io: Remove internal_function attribute

6 years agoinet: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 15:35:16 +0000 (17:35 +0200)] 
inet: Remove internal_function attribute

6 years agoSimplify NAN definitions.
Joseph Myers [Thu, 31 Aug 2017 16:39:25 +0000 (16:39 +0000)] 
Simplify NAN definitions.

Similar to my patches for HUGE_VAL and INFINITY. this patch eliminates
the bits/nan.h headers.  __builtin_nanf ("") is used to define NAN for
GCC 3.3 and later; the fallback is (0.0f / 0.0f), which is a constant
expression for a quiet NaN of type float, but raises a spurious
"invalid" exception outside static initializers, which seems the best
that can be done purely in standard C.  Again, if anyone actually uses
a compiler with its own incompatible extension for producing a
constant quiet NaN, we can add compiler conditionals.

Tested for x86_64.

*  math/math.h [__USE_ISOC99] (NAN): Define directly here.  Do not
include <bits/nan.h>.
* math/Makefile (headers): Remove bits/nan.h.
* bits/nan.h: Remove.
* sysdeps/ieee754/bits/nan.h: Likewise.
* sysdeps/mips/bits/nan.h: Likewise.

6 years agoSimplify INFINITY definitions.
Joseph Myers [Thu, 31 Aug 2017 16:12:46 +0000 (16:12 +0000)] 
Simplify INFINITY definitions.

Similar to my patch for HUGE_VAL, this patch eliminates the bits/inf.h
headers and just unconditionally uses the same definitions as the
sysdeps/ieee754 version did (__builtin_inff () for GCC >= 3.3,
otherwise HUGE_VALF), directly in math.h, so removing an unnecessary
level of indirection.

Tested for x86_64.

* math/math.h [__USE_ISOC99] (INFINITY): Define directly here.  Do
not include <bits/inf.h>.
* math/Makefile (headers): Remove bits/inf.h.
* bits/inf.h: Remove.
* sysdeps/ieee754/bits/inf.h: Likewise.

6 years agoSimplify HUGE_VAL definitions.
Joseph Myers [Thu, 31 Aug 2017 15:50:50 +0000 (15:50 +0000)] 
Simplify HUGE_VAL definitions.

There are various bits/huge_val*.h headers to define HUGE_VAL and
related macros.  All of them use __builtin_huge_val etc. for GCC 3.3
and later.  Then there are various fallbacks, such as using a large
hex float constant for GCC 2.96 and later, or using unions (with or
without compound literals) to construct the bytes of an infinity, with
this last being the reason for having architecture-specific files.
Supporting TS 18661-3 _FloatN / _FloatNx types that have the same
format as other supported types will mean adding more such macros;
needing to add more headers for them doesn't seem very desirable.

The fallbacks based on bytes of the representation of an infinity do
not meet the standard requirements for a constant expression.  At
least one of them is also wrong: sysdeps/sh/bits/huge_val.h is
producing a mixed-endian representation which does not match what GCC
does.

This patch eliminates all those headers, defining the macros directly
in math.h.  For GCC 3.3 and later, the built-in functions are used as
now.  For other compilers, a large constant 1e10000 (with appropriate
suffix) is used.  This is like the fallback for GCC 2.96 and later,
but without using hex floats (which have no apparent advantage here).
It is unambiguously valid standard C for all floating-point formats
with infinities, which covers all formats supported by glibc or likely
to be supported by glibc in future (C90 DR#025 said that if a
floating-point format represents infinities, all real values lie
within the range of representable values, so the constraints for
constant expressions are not violated), but may generate compiler
warnings and wouldn't handle the TS 18661-1 FENV_ROUND pragma
correctly.  If someone is actually using a compiler with glibc that
does not claim to be GCC 3.3 or later, but which has a better way to
define the HUGE_VAL macros, we can always add compiler conditionals in
with alternative definitions.

I intend to make similar changes for INF and NAN.  The SNAN macros
already just use __builtin_nans etc. with no fallback for compilers
not claiming to be GCC 3.3 or later.

Tested for x86_64.

* math/math.h: Do not include bits/huge_val.h, bits/huge_valf.h,
bits/huge_vall.h or bits/huge_val_flt128.h.
(HUGE_VAL): Define directly here.
[__USE_ISOC99] (HUGE_VALF): Likewise.
[__USE_ISOC99] (HUGE_VALL): Likewise.
[__HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)]
(HUGE_VAL_F128): Likewise.
* math/Makefile (headers): Remove bits/huge_val.h,
bits/huge_valf.h, bits/huge_vall.h and bits/huge_val_flt128.h.
* bits/huge_val.h: Remove.
* bits/huge_val_flt128.h: Likewise.
* bits/huge_valf.h: Likewise.
* bits/huge_vall.h: Likewise.
* sysdeps/ia64/bits/huge_vall.h: Likewise.
* sysdeps/ieee754/bits/huge_val.h: Likewise.
* sysdeps/ieee754/bits/huge_valf.h: Likewise.
* sysdeps/m68k/m680x0/bits/huge_vall.h: Likewise.
* sysdeps/sh/bits/huge_val.h: Likewise.
* sysdeps/sparc/bits/huge_vall.h: Likewise.
* sysdeps/x86/bits/huge_vall.h: Likewise.

6 years agoelf: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 14:59:37 +0000 (16:59 +0200)] 
elf: Remove internal_function attribute

6 years agogmon: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 14:16:07 +0000 (16:16 +0200)] 
gmon: Remove internal_function attribute

6 years agodlfcn: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 14:12:03 +0000 (16:12 +0200)] 
dlfcn: Remove internal_function attribute

6 years agoresolv: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 14:07:52 +0000 (16:07 +0200)] 
resolv: Remove internal_function attribute

6 years agodirent: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 14:02:40 +0000 (16:02 +0200)] 
dirent: Remove internal_function attribute

6 years agoLinux getcwd: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 13:33:27 +0000 (15:33 +0200)] 
Linux getcwd: Remove internal_function attribute

6 years agotime: Remove the internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 13:58:09 +0000 (15:58 +0200)] 
time: Remove the internal_function attribute

6 years agoiconv, intl, locale, wcsmbs: Remove internal_function
Florian Weimer [Tue, 15 Aug 2017 15:52:59 +0000 (17:52 +0200)] 
iconv, intl, locale, wcsmbs: Remove internal_function

Also adjust parts of the time subdirectory.

6 years agoaio: Remove internal_function function attribute
Florian Weimer [Thu, 31 Aug 2017 13:57:00 +0000 (15:57 +0200)] 
aio: Remove internal_function function attribute

6 years agomisc: Remove internal_function function attribute
Florian Weimer [Thu, 31 Aug 2017 13:56:45 +0000 (15:56 +0200)] 
misc: Remove internal_function function attribute

6 years agoNSS: Remove internal_function function attribute
Florian Weimer [Thu, 31 Aug 2017 13:56:32 +0000 (15:56 +0200)] 
NSS: Remove internal_function function attribute

6 years agomalloc: Remove the internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 13:56:21 +0000 (15:56 +0200)] 
malloc: Remove the internal_function attribute

6 years agosunrpc: Remove internal_function attribute
Florian Weimer [Thu, 31 Aug 2017 13:55:36 +0000 (15:55 +0200)] 
sunrpc: Remove internal_function attribute

6 years agomalloc: Resolve compilation failure in NDEBUG mode
Florian Weimer [Thu, 31 Aug 2017 12:55:11 +0000 (14:55 +0200)] 
malloc: Resolve compilation failure in NDEBUG mode

In _int_free, the locked variable is not used if NDEBUG is defined.

6 years agoPlace $(elf-objpfx)sofini.os last [BZ #22051]
H.J. Lu [Thu, 31 Aug 2017 13:28:31 +0000 (06:28 -0700)] 
Place $(elf-objpfx)sofini.os last [BZ #22051]

Since sofini.os terminates .eh_frame section, it should be placed last.

[BZ #22051]
* Makerules (build-module-helper-objlist): Filter out
$(elf-objpfx)sofini.os.
(build-shlib-objlist): Append $(elf-objpfx)sofini.os if it is
needed.

6 years agolibio: Assume _LIBC, weak_alias, errno, (__set_)errno &c are defined
Florian Weimer [Thu, 31 Aug 2017 12:07:23 +0000 (14:07 +0200)] 
libio: Assume _LIBC, weak_alias, errno, (__set_)errno &c are defined

Do not define _POSIX_SOURCE.

6 years agomalloc: Change top_check return type to void
Florian Weimer [Thu, 31 Aug 2017 10:02:59 +0000 (12:02 +0200)] 
malloc: Change top_check return type to void

After commit ec2c1fcefb200c6cb7e09553f3c6af8815013d83,
(malloc: Abort on heap corruption, without a backtrace), the function
always returns 0.

6 years agoFix decimal point and thousands separator in es_CU locale to agree with CLDR.
Mike FABIAN [Thu, 31 Aug 2017 10:56:07 +0000 (12:56 +0200)] 
Fix decimal point and thousands separator in es_CU locale to agree with CLDR.

[BZ #15332]
* locales/es_CU (LC_MONETARY): use “,” for mon_decimal_point
and “.” for mon_thousands_sep (to agree with CLDR)
* locales/es_CU (LC_NUMERIC): Likewise.

6 years agoRemove redundant data in li_BE which is identical to the data in li_NL
Akhilesh Kumar [Wed, 30 Aug 2017 13:43:45 +0000 (19:13 +0530)] 
Remove redundant data in li_BE which is identical to the data in li_NL

[BZ #22044]
* locales/li_BE (LC_TIME): copy "li_NL".