platform/upstream/glibc.git
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".

6 years agoFix mcontext_t sigcontext namespace (bug 21457).
Joseph Myers [Wed, 30 Aug 2017 22:02:04 +0000 (22:02 +0000)]
Fix mcontext_t sigcontext namespace (bug 21457).

This patch completes the ucontext.h namespace fixes by fixing issues
related to the use of struct sigcontext as mcontext_t, and inclusion
of <bits/sigcontext.h> even when struct sigcontext is not so used.

Inclusion of <bits/sigcontext.h> by <sys/ucontext.h> is removed; the
way to get the sigcontext structure is by including <signal.h> (in a
context where __USE_MISC is defined); the sysdeps/generic version of
sys/ucontext.h keeps the inclusion by necessity, with a comment about
how this is not namespace-clean, but the only configuration that used
it, MicroBlaze, gets its own version of the header in this patch.
Where mcontext_t was typedefed to struct sigcontext, the contents of
struct sigcontext are inserted (with appropriate namespace handling to
prefix fields with __ when __USE_MISC is not defined); review should
check that this has been done correctly in each case, whether the
definition of struct sigcontext comes from glibc headers or from the
Linux kernel.  This changes C++ name mangling on affected
architectures (which do not include x86_64/x86).

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

2017-08-14  Joseph Myers  <joseph@codesourcery.com>

[BZ #21457]
* sysdeps/arm/sys/ucontext.h: Do not include <bits/sigcontext.h>.
* sysdeps/generic/sys/ucontext.h: Add comment about use of struct
sigcontext and namespace requirements.
* sysdeps/i386/sys/ucontext.h: Do not include <bits/sigcontext.h>.
* sysdeps/m68k/sys/ucontext.h: Likewise.
* sysdeps/mips/sys/ucontext.h: Likewise.  Include <bits/types.h>.
* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
(__ctx): Define earlier.
(mcontext_t): Define structure contents rather than using struct
sigcontext.
* sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym (oEXTENSION): Use
__glibc_reserved1 instead of __reserved.
* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
(__ctx): Define earlier.
(mcontext_t): Define structure contents rather than using struct
sigcontext.
* sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym: Use
mcontext_t instead of struct sigcontext.
* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
(__ctx): Define earlier.
(mcontext_t): Define structure contents rather than using struct
sigcontext.
* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
(__ctx): Define earlier.
(mcontext_t): Define structure contents rather than using struct
sigcontext.
* sysdeps/unix/sysv/linux/ia64/makecontext.c (__makecontext): Use
mcontext_t instead of struct sigcontext.
* sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: Use
mcontext_t instead of struct sigcontext.
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
(__ctx): New macro.
(struct __ia64_fpreg_mcontext): New type.
(mcontext_t): Define structure contents rather than using struct
sigcontext.
(_SC_GR0_OFFSET): Use mcontext_t instead of struct sigcontext.
(uc_sigmask): Define using __ctx.
(uc_stack): Likewise.
* sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Likewise.
* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h: New file.
* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: Do not include
<bits/sigcontext.h>.
(__ctx): Define earlier.
(mcontext_t): Define structure contents rather than using struct
sigcontext.
* sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Do not include
<bits/sigcontext.h>.  Include <bits/types.h>.
* conform/Makefile (test-xfail-XPG42/signal.h/conform): Remove.
(test-xfail-XPG42/sys/wait.h/conform): Likewise.
(test-xfail-XPG42/ucontext.h/conform): Likewise.
(test-xfail-UNIX98/signal.h/conform): Likewise.
(test-xfail-UNIX98/sys/wait.h/conform): Likewise.
(test-xfail-UNIX98/ucontext.h/conform): Likewise.
(test-xfail-XOPEN2K/signal.h/conform): Likewise.
(test-xfail-XOPEN2K/sys/wait.h/conform): Likewise.
(test-xfail-XOPEN2K/ucontext.h/conform): Likewise.
(test-xfail-POSIX2008/signal.h/conform): Likewise.
(test-xfail-POSIX2008/sys/wait.h/conform): Likewise.
(test-xfail-XOPEN2K8/signal.h/conform): Likewise.
(test-xfail-XOPEN2K8/sys/wait.h/conform): Likewise.

6 years agodynarray: Set errno on overflow-induced allocation failure
Florian Weimer [Wed, 30 Aug 2017 18:10:56 +0000 (20:10 +0200)]
dynarray: Set errno on overflow-induced allocation failure

This allows the caller to return directly on such an error, with an
appropriate errno value.

6 years agomalloc: Remove corrupt arena flag
Florian Weimer [Wed, 30 Aug 2017 15:16:08 +0000 (17:16 +0200)]
malloc: Remove corrupt arena flag

This is no longer needed because we now abort immediately
once heap corruption is detected.

6 years agomalloc: Remove check_action variable [BZ #21754]
Florian Weimer [Wed, 30 Aug 2017 17:29:38 +0000 (19:29 +0200)]
malloc: Remove check_action variable [BZ #21754]

Clean up calls to malloc_printerr and trim its argument list.

This also removes a few bits of work done before calling
malloc_printerr (such as unlocking operations).

The tunable/environment variable still enables the lightweight
additional malloc checking, but mallopt (M_CHECK_ACTION)
no longer has any effect.

6 years agoaarch64: Fix tst-makecontext3 in ILP32 mode.
Steve Ellcey [Wed, 30 Aug 2017 16:25:51 +0000 (09:25 -0700)]
aarch64: Fix tst-makecontext3 in ILP32 mode.

* sysdeps/unix/sysv/linux/aarch64/makecontext.c (__makecontext):
Use pointer to uint64_t instead of long int for sp.

6 years agomalloc: Abort on heap corruption, without a backtrace [BZ #21754]
Florian Weimer [Wed, 30 Aug 2017 14:39:41 +0000 (16:39 +0200)]
malloc: Abort on heap corruption, without a backtrace [BZ #21754]

The stack trace printing caused deadlocks and has been itself been
targeted by code execution exploits.

6 years agoDo not scale NPTL tests with available number of CPUs
Florian Weimer [Wed, 30 Aug 2017 14:20:20 +0000 (16:20 +0200)]
Do not scale NPTL tests with available number of CPUs

On very large multi-processor systems, creating hundreds of threads
runs into a test time out.  The tests do not seem to benefit from
massive over-scheduling.

6 years agoUse “.” in thousands_sep in the ca_ES locale
Mike FABIAN [Wed, 30 Aug 2017 13:19:39 +0000 (15:19 +0200)]
Use “.” in thousands_sep in the ca_ES locale

[BZ #16148]
* locales/ca_ES (LC_NUMERIC): Use “.” in thousands_sep.
And make it more readable by using ASCII.

6 years agoAdd country_name for mni_IN
Mike FABIAN [Wed, 30 Aug 2017 09:31:44 +0000 (15:01 +0530)]
Add country_name for mni_IN

[BZ #22022]
* locales/mni_IN (LC_ADDRESS): Add country_name.

6 years agoFix abbreviated weeks and months for Somali to agree with CLDR
Akhilesh Kumar [Wed, 30 Aug 2017 08:39:02 +0000 (14:09 +0530)]
Fix abbreviated weeks and months for Somali to agree with CLDR

[BZ #22038]
* locales/so_DJ (LC_TIME): Fix abday, abmon and
make t_fmt in the comment agree with the value of t_fmt.
* locales/so_ET (LC_TIME): Fix abday (From Axa to Axd)
* locales/so_KE (LC_TIME): Fix abday (From Axa to Axd)
* locales/so_SO (LC_TIME): Fix abday (From Axa to Axd)

6 years agoUpdate hanzi collation by stroke
Wei-Lun Chao [Tue, 29 Aug 2017 14:52:32 +0000 (16:52 +0200)]
Update hanzi collation by stroke

[BZ #21951]
        * locales/cns11643_stroke: Update hanzi collation by stroke
        (Add license declaration, use strokes by component).

6 years agoFix m68k bits/math-inline.h macro namespace (bug 22035).
Joseph Myers [Tue, 29 Aug 2017 21:07:51 +0000 (21:07 +0000)]
Fix m68k bits/math-inline.h macro namespace (bug 22035).

As shown by build bot failures
<https://sourceware.org/ml/libc-testresults/2017-q3/msg00349.html> the
m68k bits/mathinline.h is not namespace-clean: it fails to compile if
the user has defined macros f or l before it is included, because of
expansions of those arguments to __inline_functions.  This patch
changes the __inline_functions definitions to take not the suffix but
a macro that concatenates it with the function name, to avoid the
spurious macro expansions.

Tested for m68k with build-many-glibcs.py.

[BZ #22035]
* sysdeps/m68k/m680x0/fpu/bits/mathinline.h (__inline_functions):
Define to take a second argument that is a macro that
concatentates a suffix, not the suffix itself.
(__CONCAT_d): New macro.
(__CONCAT_f): Likewise.
(__CONCAT_l): Likewise.

6 years ago2017-08-29 Paul Pluzhnikov <ppluzhnikov@google.com>
Paul Pluzhnikov [Tue, 29 Aug 2017 17:42:42 +0000 (10:42 -0700)]
2017-08-29  Paul Pluzhnikov  <ppluzhnikov@google.com>

* stdlib/tst-atexit-common.c (do_test): Test handler inheritance
by child.