glibc:aaribaud/bugzilla/23789/v2

Last commit made on 2018-10-27
Get this branch:
git clone -b aaribaud/bugzilla/23789/v2 https://git.launchpad.net/glibc

Branch merges

Branch information

Name:
aaribaud/bugzilla/23789/v2
Repository:
lp:glibc

Recent commits

91ac988... by "Albert ARIBAUD (3ADEV)" <albert.aribaud@3adev.fr>

Ensure mktime sets errno on error (bug 23789)

Posix mandates that mktime set errno to EOVERFLOW
on error, that it, upon retuning -1, but the glibc
mktime does not so far on 32-bit architectures.

Fix this and add a test to prevent regressions.

The test was run through 'make check' on i686-linux-gnu,
then the fix was added and 'make check' run again.

 * time/mktime.c
 (mktime): Set errno to EOVERFLOW on error.
 * time/bug-mktime4.c: New file.
        * time/Makefile: Add bug-mktime4.

e5b8756... by Joseph Myers <email address hidden>

Remove pre-Python-3.4 compatibility from build-many-glibcs.py.

Since we have consensus on requiring Python 3.4 or later to build
glibc, it follows that compatibility with older Python versions is
also no longer relevant to auxiliary Python scripts for use in glibc
development. This patch removes such compatibility code from
build-many-glibcs.py (compatibility code needed for 3.4, which lacks
the newer subprocess interface, is kept). Because
build-many-glibcs.py is not itself called from the glibc build system,
this patch is independent of the configure checks for having a
new-enough Python version, which are only relevant to uses of Python
from the main build and test process.

Tested with build-many-glibcs.py building glibc for aarch64-linux-gnu
(with Python 3.4 to make sure that still works).

 * scripts/build-many-glibcs.py: Remove compatibility for missing
 os.cpu_count and re.fullmatch.

ba5b14c... by Szabolcs Nagy <email address hidden>

i64: fix missing exp2f, log2f and powf symbols in libm.a [BZ #23822]

When new symbol versions were introduced without SVID compatible
error handling the exp2f, log2f and powf symbols were accidentally
removed from the ia64 lim.a. The regression was introduced by
the commits

f5f0f5265162fe6f4f238abcd3086985f7c38d6d
New expf and exp2f version without SVID compat wrapper

72d3d281080be9f674982067d72874fd6cdb4b64
New symbol version for logf, log2f and powf without SVID compat

With WEAK_LIBM_ENTRY(foo), there is a hidden __foo and weak foo
symbol definition in both SHARED and !SHARED build.

 [BZ #23822]
 * sysdeps/ia64/fpu/e_exp2f.S (exp2f): Use WEAK_LIBM_ENTRY.
 * sysdeps/ia64/fpu/e_log2f.S (log2f): Likewise.
 * sysdeps/ia64/fpu/e_exp2f.S (powf): Likewise.

fe61f17... by Joseph Myers <email address hidden>

Add IN_MASK_CREATE from Linux 4.19 to sys/inotify.h.

This patch adds the IN_MASK_CREATE macro from Linux 4.19 to
sys/inotify.h.

Tested for x86_64.

 * sysdeps/unix/sysv/linux/sys/inotify.h (IN_MASK_CREATE): New
 macro.

7c5e34d... by Florian Weimer

conform: XFAIL siginfo_t si_band test on sparc64

We can use long int on sparcv9, but on sparc64, we must match the int
type used by the kernel (and not long int, as in POSIX).

5b784e8... by Joseph Myers <email address hidden>

Add new ELF note types from Linux 4.19 to elf.h.

This patch adds NT_MIPS_DSP and NT_MIPS_FP_MODE from Linux 4.19 to
elf.h.

Tested for x86_64.

 * elf/elf.h (NT_MIPS_DSP): New macro.
 (NT_MIPS_FP_MODE): Likewise.

41432eb... by Zong Li <email address hidden>

elf: Fix the ld flags not be applied to tst-execstack-mod.so

The Makefile variable name lacked the file extension (.so). As a
result, tst-execstack-mod.so was not linked with the -z execstack
flag.

d026efe... by Samuel thibault

hurd: XFAIL absence of C11 threads implementation

 * sysdeps/mach/hurd/i386/Makefile [$(subdir) = conform]
 (test-xfail-ISO11/threads.h/linknamespace,
 test-xfail-ISO11/threads.h/conform): Add.

b71ac2b... by Joseph Myers <email address hidden>

Use gen-libm-test.py to generate ulps table for manual.

This patch extends gen-libm-test.py to generate the ulps table for the
manual, so meaning there is only a single ulps file parser needed and
another Perl script is eliminated. As with the introduction of
gen-libm-test.py, this is designed to generate exactly the same
libm-err.texi as libm-err-tab.pl did. (gen-libm-test.py is still
shorter in lines than the old gen-libm-test.pl even after this patch.)
Note that this introduces a Python dependency for building the manual,
which is thus noted in install.texi and NEWS.

Tested building html / info / pdf versions of the manual.

 * math/gen-libm-test.py: Import os.
 (ALL_FLOATS_MANUAL): New constant.
 (ALL_FLOATS_SUFFIX): Likewise.
 (Ulps.all_functions): New function.
 (real_all_ulps): Likewise.
 (generate_err_table_sub): Likewise.
 (generate_err_table): Likewise.
 (main): Handle -s and -m options.
 * manual/libm-err-tab.pl: Remove.
 * manual/Makefile ($(objpfx)stamp-libm-err): Use gen-libm-test.py
 instead of libm-err-tab.pl.
 [$(PERL) != no]: Change condition to [$(if $(PYTHON),$(PERL),no)
 != no].
 * manual/install.texi (Tools for Compilation): Document
 requirement for Python to build manual.
 * INSTALL: Regenerated.

d51f99c... by "Albert ARIBAUD (3ADEV)" <albert.aribaud@3adev.fr>

Y2038: Add 64-bit time for all architectures

glibc support for 64-bit time_t on 32-bit architectures
will involve:

- Using 64-bit times inside glibc, with conversions
  to and from 32-bit times taking place as necessary
  for interfaces using such times.

- Adding 64-bit-time support in the glibc public API.
  This support should be dynamic, i.e. glibc should
  provide both 32-bit and 64-bit implementations and
   let user code choose at compile time whether to use
   the 32-bit or 64-bit interfaces.

This requires a glibc-internal name for a type for times
that are always 64-bit.

Based on __TIMESIZE, a new macro is defined, __TIME64_T_TYPE,
 which is always the right __*_T_TYPE to hold a 64-bit-time.
__TIME64_T_TYPE equals __TIME_T_TYPE if __TIMESIZE equals 64
and equals __SQUAD_T_TYPE otherwise.

__time64_t can then replace uses of internal_time_t.

This patch was tested by running 'make check' on branch
master then applying this patch and its predecessor and
running 'make check' again, and checking that both 'make
check' yield identical results. This was done on
x86_64-linux-gnu and i686-linux-gnu.

 * bits/time64.h: New file.
 * include/time.h: Replace internal_time_t with __time64_t.
 * posix/bits/types (__time64_t): Add.
 * stdlib/Makefile: Add bits/time64.h to includes.
 * time/tzfile.c: Replace internal_time_t with __time64_t.