From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 54177 invoked by alias); 19 Aug 2019 18:31:40 -0000 Mailing-List: contact glibc-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: , Sender: glibc-cvs-owner@sourceware.org List-Subscribe: Received: (qmail 54160 invoked by uid 9014); 19 Aug 2019 18:31:40 -0000 Date: Mon, 19 Aug 2019 18:31:00 -0000 Message-ID: <20190819183140.54159.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Zack Weinberg To: glibc-cvs@sourceware.org Subject: [glibc/zack/y2038-preliminaries] Use clock_gettime to implement gettimeofday. X-Act-Checkin: glibc X-Git-Author: Zack Weinberg X-Git-Refname: refs/heads/zack/y2038-preliminaries X-Git-Oldrev: fcc009b4e7a14dc193cfb0864de2e548e9c87fa4 X-Git-Newrev: 33487ef53eb37e49701fb808139db8adf85cff4a X-SW-Source: 2019-q3/txt/msg00287.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=33487ef53eb37e49701fb808139db8adf85cff4a commit 33487ef53eb37e49701fb808139db8adf85cff4a Author: Zack Weinberg Date: Fri Aug 16 19:28:17 2019 -0400 Use clock_gettime to implement gettimeofday. Abstractly, this is the same change as using clock_gettime to implement time, but the vestigial “get time zone” feature of gettimeofday complicates matters a little. Unlike settimeofday, there are *no* known uses of this feature that are not bugs, so it is simply dummied out. (The per-process timezone support in ‘localtime’ and friends is unrelated, and the programs that set the kernel’s offset between the hardware clock and UTC do not need to read it back.) Henceforth, if gettimeofday’s ‘struct timezone’ argument is not NULL, it will write zeroes to both fields. Any program that is actually looking at this data will thus think it is running in UTC, which is probably more correct than whatever it was doing before. Hurd having already been converted, this patch only affects Linux and hypothetical future ports. Most Linux ports supplied a vDSO symbol for gettimeofday, and some wrapped that with an ifunc, so this patch deletes a lot of code. For ease of future edits to the many copies of _libc_vdso_platform_setup, the variable ‘p’ in each is now declared separately from any use of it. As with settimeofday, the alpha-linux-gnu configuration has two versions, GLIBC_2.0 and GLIBC_2.1, with the older symbol using 32-bit time_t (yes, really) and the same solution is implemented here. __gettimeofday is no longer called by anyone, so remove its internal prototype and its entries in Versions and .abilits files. (It would have been a GLIBC_PRIVATE symbol if the GLIBC_PRIVATE convention had been invented back in the days of 2.0.) * time/gettimeofday.c: No longer a stub implementation. Call __clock_gettime. If ‘tz’ argument is not NULL, clear the object it points to. Remove libc_hidden_def for __gettimeofday and libc_hidden_weak for gettimeofday. Optionally override the default symbol version for gettimeofday. * include/sys/time.h: Remove internal prototype and libc_hidden_proto for __gettimeofday, and libc_hidden_proto for gettimeofday. * time/Versions * sysdeps/unix/sysv/linux/alpha/Versions * sysdeps/**/libc.abilist: Remove entry for __gettimeofday. * sysdeps/unix/sysv/linux/aarch64/init-first.c * sysdeps/unix/sysv/linux/arm/init-first.c * sysdeps/unix/sysv/linux/mips/init-first.c * sysdeps/unix/sysv/linux/powerpc/init-first.c * sysdeps/unix/sysv/linux/riscv/init-first.c * sysdeps/unix/sysv/linux/s390/init-first.c * sysdeps/unix/sysv/linux/sparc/init-first.c: Do not define nor initialize VDSO_SYMBOL(gettimeofday). * sysdeps/unix/sysv/linux/aarch64/libc-vdso.h * sysdeps/unix/sysv/linux/arm/libc-vdso.h * sysdeps/unix/sysv/linux/mips/libc-vdso.h * sysdeps/unix/sysv/linux/powerpc/libc-vdso.h * sysdeps/unix/sysv/linux/riscv/libc-vdso.h * sysdeps/unix/sysv/linux/s390/libc-vdso.h * sysdeps/unix/sysv/linux/sparc/libc-vdso.h: Do not declare VDSO_SYMBOL(gettimeofday). * sysdeps/unix/syscalls.list: Remove entry for gettimeofday. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove entries for gettimeofday and osf_gettimeofday. * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list: Remove entry for gettimeofday. * sysdeps/posix/gettimeofday.c * sysdeps/unix/sysv/linux/aarch64/gettimeofday.c * sysdeps/unix/sysv/linux/gettimeofday.c * sysdeps/unix/sysv/linux/i386/gettimeofday.c * sysdeps/unix/sysv/linux/powerpc/gettimeofday.c * sysdeps/unix/sysv/linux/x86/gettimeofday.c: Delete file. * sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c: New file, defines gettimeofday@GLIBC_2.0. * sysdeps/unix/sysv/linux/alpha/gettimeofday.c New file, defines gettimeofday@@GLIBC_2.1. * sysdeps/unix/make-syscalls.sh: Change an example in a comment from referring to gettimeofday, to referring to sigaction. Diff: --- include/sys/time.h | 4 - sysdeps/mach/hurd/i386/libc.abilist | 1 - sysdeps/posix/gettimeofday.c | 67 ----------------- sysdeps/unix/make-syscalls.sh | 2 +- sysdeps/unix/syscalls.list | 1 - sysdeps/unix/sysv/linux/aarch64/gettimeofday.c | 71 ------------------ sysdeps/unix/sysv/linux/aarch64/init-first.c | 7 +- sysdeps/unix/sysv/linux/aarch64/libc-vdso.h | 2 - sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 - sysdeps/unix/sysv/linux/alpha/Versions | 1 - .../unix/sysv/linux/{i386 => alpha}/gettimeofday.c | 25 ++----- sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 - sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c | 66 +++++++++++++++++ sysdeps/unix/sysv/linux/alpha/syscalls.list | 2 - sysdeps/unix/sysv/linux/arm/init-first.c | 7 +- sysdeps/unix/sysv/linux/arm/libc-vdso.h | 2 - sysdeps/unix/sysv/linux/arm/libc.abilist | 1 - sysdeps/unix/sysv/linux/csky/libc.abilist | 1 - sysdeps/unix/sysv/linux/gettimeofday.c | 39 ---------- sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 - sysdeps/unix/sysv/linux/i386/libc.abilist | 1 - sysdeps/unix/sysv/linux/ia64/libc.abilist | 1 - sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 1 - sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 1 - sysdeps/unix/sysv/linux/microblaze/libc.abilist | 1 - sysdeps/unix/sysv/linux/mips/init-first.c | 7 +- sysdeps/unix/sysv/linux/mips/libc-vdso.h | 2 - .../unix/sysv/linux/mips/mips32/fpu/libc.abilist | 1 - .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 1 - .../unix/sysv/linux/mips/mips64/n32/libc.abilist | 1 - .../unix/sysv/linux/mips/mips64/n64/libc.abilist | 1 - sysdeps/unix/sysv/linux/nios2/libc.abilist | 1 - sysdeps/unix/sysv/linux/powerpc/gettimeofday.c | 85 ---------------------- sysdeps/unix/sysv/linux/powerpc/init-first.c | 8 +- sysdeps/unix/sysv/linux/powerpc/libc-vdso.h | 2 - .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 1 - .../linux/powerpc/powerpc32/nofpu/libc.abilist | 1 - .../sysv/linux/powerpc/powerpc64/be/libc.abilist | 1 - .../sysv/linux/powerpc/powerpc64/le/libc.abilist | 1 - sysdeps/unix/sysv/linux/riscv/init-first.c | 10 +-- sysdeps/unix/sysv/linux/riscv/libc-vdso.h | 2 - sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist | 1 - sysdeps/unix/sysv/linux/s390/init-first.c | 9 +-- sysdeps/unix/sysv/linux/s390/libc-vdso.h | 3 - sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 1 - sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist | 1 - sysdeps/unix/sysv/linux/sh/libc.abilist | 1 - sysdeps/unix/sysv/linux/sparc/init-first.c | 8 +- sysdeps/unix/sysv/linux/sparc/libc-vdso.h | 2 - sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist | 1 - sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist | 1 - sysdeps/unix/sysv/linux/x86/gettimeofday.c | 61 ---------------- sysdeps/unix/sysv/linux/x86_64/64/libc.abilist | 1 - sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist | 1 - sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list | 1 - time/Versions | 2 +- time/gettimeofday.c | 28 ++++--- 57 files changed, 108 insertions(+), 447 deletions(-) diff --git a/include/sys/time.h b/include/sys/time.h index a57752e..4a91622 100644 --- a/include/sys/time.h +++ b/include/sys/time.h @@ -20,10 +20,6 @@ # include