glibc:fw/bug25157

Last commit made on 2019-11-02
Get this branch:
git clone -b fw/bug25157 https://git.launchpad.net/glibc

Branch merges

Branch information

Name:
fw/bug25157
Repository:
lp:glibc

Recent commits

6a47bd9... by Florian Weimer

Properly initialize audit cookie for the dynamic loader [BZ #25157]

The l_audit array is indexed by audit module, not audit function.

42893aa... by Lukasz Majewski <email address hidden>

y2038: linux: Provide __futimens64 implementation

This patch provides new __futimens64 explicit 64 bit function for
setting access and modification time of file (by using its file descriptor).
Moreover, a 32 bit version - __futimens has been refactored to internally use
__futimens64.

The __futimens is now supposed to be used on systems still supporting
32 bit time (__TIMESIZE != 64) - hence the necessary conversions to 64 bit
struct __timespec64.
When pointer to struct __timespec64 is NULL - the file access and modification
time is set to the current one (by the kernel) and no conversions from struct
timespec to __timespec64 are performed.

The __futimens64 reuses __utimensat64_helper defined for __utimensat64.

The test procedure for __futimens64 is the same as for __utimensat64 conversion
patch.

f5b6fd2... by Lukasz Majewski <email address hidden>

y2038: linux: Provide __utimensat64 implementation

This patch provides new __utimensat64 explicit 64 bit function for
setting access and modification time of a file. Moreover, a 32 bit version
- __utimensat has been refactored to internally use __utimensat64.

The __utimensat is now supposed to be used on systems still supporting
32 bit time (__TIMESIZE != 64) - hence the necessary conversions to 64 bit
struct __timespec64.
When pointer to struct __timespec64 is NULL - the file access and modification
time is set to the current one and no conversions from struct timespec to
__timespec64 are performed.

The new utimensat_time64 syscall available from Linux 5.1+ has been used,
when applicable.
The new helper function - __utimensat64_helper - has been introduced to
facilitate code re-usage on function providing futimens syscall handling.
The Linux kernel checks if passed tv_nsec value overflows, so there is no
need to repeat it in glibc.
When utimensat syscall on systems supporting 32 bit time ABI is used,
the check is performed if passed data (which may have 64 bit tv_sec) fits
into 32 bit range.

Build tests:
- The code has been tested on x86_64/x86 (native compilation):
make PARALLELMFLAGS="-j8" && make xcheck PARALLELMFLAGS="-j8"

- The glibc has been build tested (make PARALLELMFLAGS="-j8") for
x86 (i386), x86_64-x32, and armv7

Run-time tests:
- Run specific tests on ARM/x86 32bit systems (qemu):
https://github.com/lmajewski/meta-y2038 and run tests:
https://github.com/lmajewski/y2038-tests/commits/master

- Use of cross-test-ssh.sh for ARM (armv7):
make PARALLELMFLAGS="-j8" test-wrapper='./cross-test-ssh.sh root@192.168.7.2' xcheck

Linux kernel, headers and minimal kernel version for glibc build test
matrix:
- Linux v5.1 (with utimensat_time64) and glibc build with v5.1 as
minimal kernel version (--enable-kernel="5.1.0")
The __ASSUME_TIME64_SYSCALLS flag defined.

- Linux v5.1 and default minimal kernel version
The __ASSUME_TIME64_SYSCALLS not defined, but kernel supports utimensat_time64
syscall.

- Linux v4.19 (no utimensat_time64 support) with default minimal kernel
version for contemporary glibc
This kernel doesn't support utimensat_time64 syscall, so the fallback
to utimensat is tested.

The above tests were performed with Y2038 redirection applied as well as
without (so the __TIMESIZE != 64 execution path is checked as well).

No regressions were observed.

7aeab82... by Mike Crowe

nptl: Add pthread_timedjoin_np, pthread_clockjoin_np NULL timeout test

Passing NULL as the timeout parameter to pthread_timedjoin_np has resulted
in it behaving like pthread_join for a long time. Since that is now the
documented behaviour, we ought to test that both it and the new
pthread_clockjoin_np support it.

Checked on x86_64-linux-gnu.

Reviewed-by: Adhemerval Zanella <email address hidden>

69ca4b5... by Mike Crowe

nptl: Add pthread_clockjoin_np

Introduce pthread_clockjoin_np as a version of pthread_timedjoin_np that
accepts a clockid_t parameter to indicate which clock the timeout should be
measured against. This mirrors the recently-added POSIX-proposed "clock"
wait functions.

Checked on x86_64-linux-gnu.

Reviewed-by: Adhemerval Zanella <email address hidden>

893bbdd... by Mike Crowe

manual: Add documentation for pthread_tryjoin_np and pthread_timedjoin_np

Reviewed-by: Adhemerval Zanella <email address hidden>

22434b2... by Mike Crowe

nptl: Convert tst-join3 to use libsupport

Checked on x86_64-linux-gnu.

Reviewed-by: Adhemerval Zanella <email address hidden>

f804253... by Paul Eggert

Sync time/mktime.c with gnulib

This syncs with gnulib commit 9e78024bad107fe786cc3e5e328a475921ea0873.
* time/mktime.c: Update URL in comment.

c1dac8f... by Adhemerval Zanella

Sync timespec-{add,sub} with gnulib

It sync with gnulib commit 06011ed74e978613422aca43c0bd92dc44213933.

Reviewed-by: Paul Eggert <email address hidden>

356ced8... by Adhemerval Zanella

Sync intprops.h with gnulib

It sync with gnulib commit f5756b919addb9e8ce03f4e61a10e4fcff14874a.

Reviewed-by: Paul Eggert <email address hidden>