From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2101) id 1E917386F021; Sun, 26 Apr 2020 02:24:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1E917386F021 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Alistair Francis To: glibc-cvs@sourceware.org Subject: [glibc/alistair/rv32.next] (26 commits) Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5 X-Act-Checkin: glibc X-Git-Author: Alistair Francis X-Git-Refname: refs/heads/alistair/rv32.next X-Git-Oldrev: 451786b99d6aa8b5e953ac8ddc1c10ff953cd376 X-Git-Newrev: 5b738d3df30be3eb7dda1eb99edb02ce974f1031 Message-Id: <20200426022437.1E917386F021@sourceware.org> Date: Sun, 26 Apr 2020 02:24:37 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Apr 2020 02:24:37 -0000 The branch 'alistair/rv32.next' was updated to point to: 5b738d3df3... Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5 It previously pointed to: 451786b99d... Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5 Diff: !!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST): ------------------------------------------------------------------- 451786b... Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5 24bf5aa... COVER: glibc port for 32-bit RISC-V (RV32) 41f8a5b... Add RISC-V 32-bit target to build-many-glibcs.py f0a8751... Documentation for the RISC-V 32-bit port 403d3b9... RISC-V: Add rv32 path to RTLDLIST in ldd 4348f4d... riscv32: Specify the arch_minimum_kernel as 5.4 aa5a064... RISC-V: Build Infastructure for 32-bit 5c3d192... RISC-V: Fix llrint and llround missing exceptions on RV32 8b0850a... RISC-V: Add the RV32 libm-test-ulps bd372f9... RISC-V: Add ABI lists 0246f48... RISC-V: Hard float support for 32-bit 6bcee67... RISC-V: The ABI implementation for 32-bit 70e3d09... RISC-V: nptl: update default pthread-offsets.h afe9bc0... RISC-V: Add arch-syscall.h for RV32 0e7813b... RISC-V: Add path of library directories for the 32-bit 8e183a2... RISC-V: Support dynamic loader for the 32-bit 57587db... RISC-V: Add support for 32-bit vDSO calls 54b6e93... RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit 6e0bc9c... RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 5e57479... generic/typesizes.h: Add support for 32-bit arches with 64- bd0a045... sysv: linux: Pass 64-bit version of semctl syscall cce07de... semctl: Remove the sem-pad.h file c863b5e... bits/sem.h: Split out struct semid_ds commit 451786b99d6aa8b5e953ac8ddc1c10ff953cd376 Author: Alistair Francis Date: Wed Apr 8 14:43:47 2020 -0700 Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5.6 to netinet/in.h." This reverts commit f9ac84f92f151e07586c55e14ed628d493a5929d. commit 24bf5aaf8b2d2cef8a8a33c3783e7867a86fe278 Author: Alistair Francis Date: Mon Dec 30 13:33:07 2019 -0800 COVER: glibc port for 32-bit RISC-V (RV32) This patch set contains the glibc port for 32-bit RISC-V. This is based on the original work from Zong Li [1] and has been updated to use a 64-bit time_t. This requires a 5.4+ kernel and all of the testing has been done using the 5.4 stable kernel. Nothing fails when running ./scripts/build-many-glibcs.py (for all targets) on my x86-64 machine. This is the current list of tests that fail when running inside QEMU RV32 system emulation on the 5.4 kernel: FAIL: elf/tst-ldconfig-ld_so_conf-update FAIL: io/tst-lockf FAIL: misc/test-errno-linux FAIL: nss/tst-nss-files-hosts-long FAIL: resolv/tst-resolv-res_init-thread FAIL: stdio-common/bug22 FAIL: stdlib/tst-strfrom FAIL: stdlib/tst-strfrom-locale FAIL: sysvipc/test-sysvmsg ---Links--- 1: https://sourceware.org/ml/libc-alpha/2018-07/msg00892.html The latest version of my work can be found here: https://github.com/alistair23/glibc/tree/alistair/rv32.next This specific version can be found here: https://github.com/alistair23/glibc/tree/alistair/rv32.1 ---Changelog--- v1: - Update based from feedback on RFCv6 - Improve test passing - There are only 9 tests failing now - Rebase on Lukasz's work - Send only the RV32 specific patches (other patches are already merged or on the list) RFC v6: - Rebase on top of accetpted patches - Fix issues so that the tests actually run RFC v5: - Hopefully finally get the correct layout for the *64 syscalls - Sort out the Changelog RFC v4: - Continue to fix things that weren't working - Update the coding style to match glibc - Update the __ASSUME_TIME64_SYSCALLS work to better match Lukasz's work RFC v3: - Remove all "Hack" patches - Incorporate upstream comments - Ensure we don't break RV64 - Lot's more testing and fixes RFC v2: - Add Lukasz's patches - Update the non HACK syscalls after feedback - define __ASSUME_TIME64_SYSCALLS and __ASSUME_RLIM64_SYSCALLS - Remove lockf64.c - Other smaller changes from RFC v1 commit 41f8a5b2ebc44586248a9ff1e1b700c21870f197 Author: Zong Li Date: Fri Nov 30 17:18:40 2018 +0800 Add RISC-V 32-bit target to build-many-glibcs.py Support building three variant of 32 bit RISC-V glibc as follows: - riscv32-linux-gnu-rv32imac-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32d commit f0a87519792c55a9b088e168d8e29beea3957af1 Author: Zong Li Date: Fri Nov 30 17:13:12 2018 +0800 Documentation for the RISC-V 32-bit port There is already RISC-V 64-bit port information in the documentation. Let's add some documentation entries for the RISC-V 32-bit as well. commit 403d3b9d25e315c8a0c930806df562831a11d806 Author: Zong Li Date: Mon Sep 9 21:35:50 2019 -0700 RISC-V: Add rv32 path to RTLDLIST in ldd commit 4348f4df88179ef554cc8cb78b2fdcb455988c59 Author: Alistair Francis Date: Fri Dec 20 18:29:42 2019 -0800 riscv32: Specify the arch_minimum_kernel as 5.4 commit aa5a0641c29743e19a9d7f7c5f20b98f5e71633c Author: Zong Li Date: Fri Nov 30 17:18:00 2018 +0800 RISC-V: Build Infastructure for 32-bit This patch lays out the top-level orginazition of the RISC-V 32-bit port. It contains all the Implies files as well as various other fragments of build infastructure for the RISC-V 32-bit port. commit 5c3d1923735d4f425d3cb826819c23cb6d7ba569 Author: Zong Li Date: Fri Nov 30 17:18:20 2018 +0800 RISC-V: Fix llrint and llround missing exceptions on RV32 Similar to the fix for MIPS, ARM and S/390, RV32 is missing correct exception on overflow from llrint and llround functions because cast from floating-point types to long long do not result in correct exceptions on overflow. commit 8b0850a29cd331aa43fc65f5157907aee2bcfff5 Author: Alistair Francis Date: Fri Jan 3 17:56:50 2020 -0800 RISC-V: Add the RV32 libm-test-ulps Add a libm-test-ulps for RV32, generated by running `make regen-ulps`. This is different to the RV64 one. commit bd372f9d16a4c6f816e1492fc65d3d62b744af5d Author: Alistair Francis Date: Fri Nov 15 07:34:37 2019 -0800 RISC-V: Add ABI lists Use the check-api and update-abi to generate the abilist for rv32. commit 0246f486e77f25e9e029549d4ca2ffb8ce56e451 Author: Zong Li Date: Fri Nov 30 17:16:38 2018 +0800 RISC-V: Hard float support for 32-bit This patch contains hardware floating-point support for the RV32IF and RV32IFD commit 6bcee67ccdccb244515cefbb0d2f4835b1613da2 Author: Zong Li Date: Fri Nov 30 17:16:18 2018 +0800 RISC-V: The ABI implementation for 32-bit This patch adds the ABI implementation about 32 bit version. It contains the Linux-specific and RISC-V architecture code, I've collected here. commit 70e3d09f439b569ee0dabf7c5d336928897bdbe2 Author: Alistair Francis Date: Mon Feb 10 10:36:21 2020 -0800 RISC-V: nptl: update default pthread-offsets.h Update the RISC-V pthread-offsets.h values to support RV32. commit afe9bc0a7d26ec2039cd132e7cfbce0c5cd14885 Author: Alistair Francis Date: Thu Jan 2 11:38:27 2020 -0800 RISC-V: Add arch-syscall.h for RV32 commit 0e7813b9fe1f9aa707b93615b03fe37514dce74e Author: Zong Li Date: Fri Nov 30 17:15:44 2018 +0800 RISC-V: Add path of library directories for the 32-bit For the recommand of 64 bit version, we add the libraries path of 32 bit in this patch. The status of RV32 binaries under RV64 kernels is that the ISA optionally supports having different XLEN for user and supervisor modes, but AFAIK there's no silicon that implements this feature, and the Linux kernel doesn't support it yet. For the recommand of 64 bit version, we add the libraries path of 32 bit in this patch. This includes a fix to avoid an out of bound array check when building with GCC 8.2. commit 8e183a2eff885a888cdbc37b3cbb819cfa5f1229 Author: Zong Li Date: Fri Nov 30 17:14:35 2018 +0800 RISC-V: Support dynamic loader for the 32-bit Add the LD_SO_ABI definition for RISC-V 32-bit. commit 57587db0219854ce7bdebc339ee0ce341c9f9e37 Author: Alistair Francis Date: Wed Sep 18 08:41:59 2019 -0700 RISC-V: Add support for 32-bit vDSO calls commit 54b6e938efda733adbf7bf54f155c164657d3203 Author: Alistair Francis Date: Tue Jun 25 16:32:38 2019 -0700 RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit commit 6e0bc9ca17aca659c6292dfb84cb41bc4cea671a Author: Alistair Francis Date: Fri Jun 21 11:31:56 2019 -0700 RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 Using the original glibc headers under bits/ let's make small modifications to use 64-bit time_t and off_t for both RV32 and RV64. For the typesizes.h, here are justifications for the changes from the generic version (based on Arnd's very helpful feedback): - All the !__USE_FILE_OFFSET64 types (__off_t, __ino_t, __rlim_t, ...) are changed to match the 64-bit replacements. - __time_t is defined to 64 bit, but no __time64_t is added. This makes sense as we don't have the time64 support for other 32-bit architectures yet, and it will be easy to change when that happens. - __suseconds_t is 64-bit. This matches what we use the kernel ABI for the few drivers that are relying on 'struct timeval' input arguments in ioctl, as well as the adjtimex system call. It means that timeval has to be defined without the padding, unlike timespec, which needs padding. commit 5e574792e950c6ebd9c8919ae55e65c6b4da984d Author: Alistair Francis Date: Fri Feb 14 11:02:29 2020 -0800 generic/typesizes.h: Add support for 32-bit arches with 64-bit types Update the default typesizes.h to match the new kernel sizes for 32-bit architectures with a 64-bit time_t and friends. This follows the sizes used for RV32 which is a y2038 safe architecture added after Linux 5.1. Reviewed-by: Vineet Gupta Tested-by: Vineet Gupta commit bd0a0459c0b69f7a811defd97c886492aa7b3a34 Author: Alistair Francis Date: Tue Feb 25 15:11:23 2020 -0800 sysv: linux: Pass 64-bit version of semctl syscall The semctl_syscall() function passes a union semun to the kernel. The union includes struct semid_ds as a member. On 32-bit architectures the Linux kernel provides a *_high version of the 32-bit sem_otime and sem_ctime values. These can be combined to get a 64-bit version of the time. This patch adjusts the struct semid_ds to support the *_high versions of sem_otime and sem_ctime. For 32-bit systems with a 64-bit time_t this can be used to get a 64-bit time from the two 32-bit values. Due to allignment differences between 64-bit and 32-bit variables we also need to set nsems to ensure it's correct. commit cce07de62c79073d9b89640e9ee19412fc528540 Author: Alistair Francis Date: Tue Feb 25 15:52:59 2020 -0800 semctl: Remove the sem-pad.h file Remove the sem-pad.h file and instead have architectures override the struct semid_ds via the bits/types/struct_semid_ds.h file. Reviewed-by: Adhemerval Zanella commit c863b5ea1fc12d9ac39c8ebd41617ebbd9089d39 Author: Alistair Francis Date: Tue Feb 25 14:52:27 2020 -0800 bits/sem.h: Split out struct semid_ds Split out the struct semid_ds into it's own file. This will allow us to have architectures specify their own version. Reviewed-by: Adhemerval Zanella Summary of changes (added commits): ----------------------------------- 5b738d3... Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5 858342b... COVER: glibc port for 32-bit RISC-V (RV32) 09ce020... Add RISC-V 32-bit target to build-many-glibcs.py f1a49b3... Documentation for the RISC-V 32-bit port daecde0... RISC-V: Add rv32 path to RTLDLIST in ldd 376aa9d... riscv32: Specify the arch_minimum_kernel as 5.4 5bafcca... RISC-V: Build Infastructure for 32-bit bed534f... RISC-V: Fix llrint and llround missing exceptions on RV32 0258a4f... RISC-V: Add the RV32 libm-test-ulps 6ffd7a1... RISC-V: Add ABI lists fb57a29... RISC-V: Hard float support for 32-bit 6035661... RISC-V: The ABI implementation for 32-bit 270e33a... RISC-V: nptl: update default pthread-offsets.h 270608d... RISC-V: Add arch-syscall.h for RV32 08f88cc... RISC-V: Add path of library directories for the 32-bit 83909c1... RISC-V: Support dynamic loader for the 32-bit 85c5dc3... RISC-V: Add support for 32-bit vDSO calls 10e80de... RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit a756d0c... RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 8439db9... generic/typesizes.h: Add support for 32-bit arches with 64- b196ef7... sysv: linux: Pass 64-bit version of semctl syscall 621f295... semctl: Remove the sem-pad.h file 1bf8f30... bits/sem.h: Split out struct semid_ds 8d9ffbb... Remove most gmp-mparam.h headers. ec935de... elf: Implement __libc_early_init 50a2d83... elf: Introduce commit 5b738d3df30be3eb7dda1eb99edb02ce974f1031 Author: Alistair Francis Date: Wed Apr 8 14:43:47 2020 -0700 Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5.6 to netinet/in.h." This reverts commit f9ac84f92f151e07586c55e14ed628d493a5929d. commit 858342bd91eb1fa9dec42f1fdfb9973d1e2845cc Author: Alistair Francis Date: Mon Dec 30 13:33:07 2019 -0800 COVER: glibc port for 32-bit RISC-V (RV32) This patch set contains the glibc port for 32-bit RISC-V. This is based on the original work from Zong Li [1] and has been updated to use a 64-bit time_t. This requires a 5.4+ kernel and all of the testing has been done using the 5.4 stable kernel. Nothing fails when running ./scripts/build-many-glibcs.py (for all targets) on my x86-64 machine. This is the current list of tests that fail when running inside QEMU RV32 system emulation on the 5.4 kernel: FAIL: elf/tst-ldconfig-ld_so_conf-update FAIL: io/tst-lockf FAIL: misc/test-errno-linux FAIL: nss/tst-nss-files-hosts-long FAIL: resolv/tst-resolv-res_init-thread FAIL: stdio-common/bug22 FAIL: stdlib/tst-strfrom FAIL: stdlib/tst-strfrom-locale FAIL: sysvipc/test-sysvmsg ---Links--- 1: https://sourceware.org/ml/libc-alpha/2018-07/msg00892.html The latest version of my work can be found here: https://github.com/alistair23/glibc/tree/alistair/rv32.next This specific version can be found here: https://github.com/alistair23/glibc/tree/alistair/rv32.1 ---Changelog--- v1: - Update based from feedback on RFCv6 - Improve test passing - There are only 9 tests failing now - Rebase on Lukasz's work - Send only the RV32 specific patches (other patches are already merged or on the list) RFC v6: - Rebase on top of accetpted patches - Fix issues so that the tests actually run RFC v5: - Hopefully finally get the correct layout for the *64 syscalls - Sort out the Changelog RFC v4: - Continue to fix things that weren't working - Update the coding style to match glibc - Update the __ASSUME_TIME64_SYSCALLS work to better match Lukasz's work RFC v3: - Remove all "Hack" patches - Incorporate upstream comments - Ensure we don't break RV64 - Lot's more testing and fixes RFC v2: - Add Lukasz's patches - Update the non HACK syscalls after feedback - define __ASSUME_TIME64_SYSCALLS and __ASSUME_RLIM64_SYSCALLS - Remove lockf64.c - Other smaller changes from RFC v1 commit 09ce02006a41a0872fc8149832522dfa4506aa08 Author: Zong Li Date: Fri Nov 30 17:18:40 2018 +0800 Add RISC-V 32-bit target to build-many-glibcs.py Support building three variant of 32 bit RISC-V glibc as follows: - riscv32-linux-gnu-rv32imac-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32d commit f1a49b33afd40f61163a2064d9a0f2905cd50e51 Author: Zong Li Date: Fri Nov 30 17:13:12 2018 +0800 Documentation for the RISC-V 32-bit port There is already RISC-V 64-bit port information in the documentation. Let's add some documentation entries for the RISC-V 32-bit as well. commit daecde01f172754617e23fe399fc57e12c97c6a9 Author: Zong Li Date: Mon Sep 9 21:35:50 2019 -0700 RISC-V: Add rv32 path to RTLDLIST in ldd commit 376aa9d4274782a2aa99efb6282af93135abae8b Author: Alistair Francis Date: Fri Dec 20 18:29:42 2019 -0800 riscv32: Specify the arch_minimum_kernel as 5.4 commit 5bafccaff6f145a5375d748ef36eb594c4930bdb Author: Zong Li Date: Fri Nov 30 17:18:00 2018 +0800 RISC-V: Build Infastructure for 32-bit This patch lays out the top-level orginazition of the RISC-V 32-bit port. It contains all the Implies files as well as various other fragments of build infastructure for the RISC-V 32-bit port. commit bed534fb7b45578bc0a51a47103783ec255d339d Author: Zong Li Date: Fri Nov 30 17:18:20 2018 +0800 RISC-V: Fix llrint and llround missing exceptions on RV32 Similar to the fix for MIPS, ARM and S/390, RV32 is missing correct exception on overflow from llrint and llround functions because cast from floating-point types to long long do not result in correct exceptions on overflow. commit 0258a4fb827287f193cf75cd7290173e69d3c667 Author: Alistair Francis Date: Fri Jan 3 17:56:50 2020 -0800 RISC-V: Add the RV32 libm-test-ulps Add a libm-test-ulps for RV32, generated by running `make regen-ulps`. This is different to the RV64 one. commit 6ffd7a18a1c6537812ce503ad5140aca699c06e6 Author: Alistair Francis Date: Fri Nov 15 07:34:37 2019 -0800 RISC-V: Add ABI lists Use the check-api and update-abi to generate the abilist for rv32. commit fb57a299eca5ac10252618f2968500a54277ce8a Author: Zong Li Date: Fri Nov 30 17:16:38 2018 +0800 RISC-V: Hard float support for 32-bit This patch contains hardware floating-point support for the RV32IF and RV32IFD commit 60356616a29a428e8071cfb3c1aa78f9cf72cfa0 Author: Zong Li Date: Fri Nov 30 17:16:18 2018 +0800 RISC-V: The ABI implementation for 32-bit This patch adds the ABI implementation about 32 bit version. It contains the Linux-specific and RISC-V architecture code, I've collected here. commit 270e33ab0b4bbdc849f03e360d0fd0def0cd460e Author: Alistair Francis Date: Mon Feb 10 10:36:21 2020 -0800 RISC-V: nptl: update default pthread-offsets.h Update the RISC-V pthread-offsets.h values to support RV32. commit 270608db01f31381c323f59eb589be905c5974fb Author: Alistair Francis Date: Thu Jan 2 11:38:27 2020 -0800 RISC-V: Add arch-syscall.h for RV32 commit 08f88cc98ee77a7c7ad94107bc20bfaf3817a646 Author: Zong Li Date: Fri Nov 30 17:15:44 2018 +0800 RISC-V: Add path of library directories for the 32-bit For the recommand of 64 bit version, we add the libraries path of 32 bit in this patch. The status of RV32 binaries under RV64 kernels is that the ISA optionally supports having different XLEN for user and supervisor modes, but AFAIK there's no silicon that implements this feature, and the Linux kernel doesn't support it yet. For the recommand of 64 bit version, we add the libraries path of 32 bit in this patch. This includes a fix to avoid an out of bound array check when building with GCC 8.2. commit 83909c183785ba509bbfa3537ee4f0226c7e06bb Author: Zong Li Date: Fri Nov 30 17:14:35 2018 +0800 RISC-V: Support dynamic loader for the 32-bit Add the LD_SO_ABI definition for RISC-V 32-bit. commit 85c5dc3d683952afbdf818ae33ff8d5e36cc6247 Author: Alistair Francis Date: Wed Sep 18 08:41:59 2019 -0700 RISC-V: Add support for 32-bit vDSO calls commit 10e80de0a49b57097eb02c8a98051617a82117f8 Author: Alistair Francis Date: Tue Jun 25 16:32:38 2019 -0700 RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit commit a756d0ca693b1bbc24c87f6d58b87cfb6461efdc Author: Alistair Francis Date: Fri Jun 21 11:31:56 2019 -0700 RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 Using the original glibc headers under bits/ let's make small modifications to use 64-bit time_t and off_t for both RV32 and RV64. For the typesizes.h, here are justifications for the changes from the generic version (based on Arnd's very helpful feedback): - All the !__USE_FILE_OFFSET64 types (__off_t, __ino_t, __rlim_t, ...) are changed to match the 64-bit replacements. - __time_t is defined to 64 bit, but no __time64_t is added. This makes sense as we don't have the time64 support for other 32-bit architectures yet, and it will be easy to change when that happens. - __suseconds_t is 64-bit. This matches what we use the kernel ABI for the few drivers that are relying on 'struct timeval' input arguments in ioctl, as well as the adjtimex system call. It means that timeval has to be defined without the padding, unlike timespec, which needs padding. commit 8439db9276c677fbc11f46dbdf9b2388f5f1de03 Author: Alistair Francis Date: Fri Feb 14 11:02:29 2020 -0800 generic/typesizes.h: Add support for 32-bit arches with 64-bit types Update the default typesizes.h to match the new kernel sizes for 32-bit architectures with a 64-bit time_t and friends. This follows the sizes used for RV32 which is a y2038 safe architecture added after Linux 5.1. Reviewed-by: Vineet Gupta Tested-by: Vineet Gupta commit b196ef7d06c452fb3e58ec05efdb0002df28990a Author: Alistair Francis Date: Tue Feb 25 15:11:23 2020 -0800 sysv: linux: Pass 64-bit version of semctl syscall The semctl_syscall() function passes a union semun to the kernel. The union includes struct semid_ds as a member. On 32-bit architectures the Linux kernel provides a *_high version of the 32-bit sem_otime and sem_ctime values. These can be combined to get a 64-bit version of the time. This patch adjusts the struct semid_ds to support the *_high versions of sem_otime and sem_ctime. For 32-bit systems with a 64-bit time_t this can be used to get a 64-bit time from the two 32-bit values. Due to alignment differences between 64-bit and 32-bit variables we also need to set nsems to ensure it's correct. commit 621f295f92c99d1b8653a16b0ca21909f32be5b7 Author: Alistair Francis Date: Tue Feb 25 15:52:59 2020 -0800 semctl: Remove the sem-pad.h file Remove the sem-pad.h file and instead have architectures override the struct semid_ds via the bits/types/struct_semid_ds.h file. Reviewed-by: Adhemerval Zanella commit 1bf8f30f627b7f2f392f81ec2df35d47e78b967a Author: Alistair Francis Date: Tue Feb 25 14:52:27 2020 -0800 bits/sem.h: Split out struct semid_ds Split out the struct semid_ds into it's own file. This will allow us to have architectures specify their own version. Reviewed-by: Adhemerval Zanella commit 8d9ffbb9d00669f62d5ddb4283b7c3d03955d942 Author: Joseph Myers Date: Fri Apr 24 22:08:59 2020 +0000 Remove most gmp-mparam.h headers. Most gmp-mparam.h headers in glibc define various macros to the same values they would be defined to by the generic version of that header, plus macros IEEE_DOUBLE_BIG_ENDIAN or IEEE_DOUBLE_MIXED_ENDIAN related to the representation of double. The latter macros are in turn only used in gmp-impl.h to define union ieee_double_extract, which is not used in glibc. Thus all of these headers, except for the generic one and those that define _LONG_LONG_LIMB for ILP32 configurations with 64-bit registers, are redundant, and this patch removes them. Tested with build-many-glibcs.py that installed stripped shared libraries are unchanged by this patch. commit ec935dea6332cb22f9881cd1162bad156173f4b0 Author: Florian Weimer Date: Fri Apr 24 22:31:15 2020 +0200 elf: Implement __libc_early_init This function is defined in libc.so, and the dynamic loader calls right after relocation has been finished, before any ELF constructors or the preinit function is invoked. It is also used in the static build for initializing parts of the static libc. To locate __libc_early_init, a direct symbol lookup function is used, _dl_lookup_direct. It does not search the entire symbol scope and consults merely a single link map. This function could also be used to implement lookups in the vDSO (as an optimization). A per-namespace variable (libc_map) is added for locating libc.so, to avoid repeated traversals of the search scope. It is similar to GL(dl_initfirst). An alternative would have been to thread a context argument from _dl_open down to _dl_map_object_from_fd (where libc.so is identified). This could have avoided the global variable, but the change would be larger as a result. It would not have been possible to use this to replace GL(dl_initfirst) because that global variable is used to pass the function pointer past the stack switch from dl_main to the main program. Replacing that requires adding a new argument to _dl_init, which in turn needs changes to the architecture-specific libc.so startup code written in assembler. __libc_early_init should not be used to replace _dl_var_init (as it exists today on some architectures). Instead, _dl_lookup_direct should be used to look up a new variable symbol in libc.so, and that should then be initialized from the dynamic loader, immediately after the object has been loaded in _dl_map_object_from_fd (before relocation is run). This way, more IFUNC resolvers which depend on these variables will work. Reviewed-by: Carlos O'Donell commit 50a2d83c08a94a10f88a1fedeb7a6e3667a6b732 Author: Florian Weimer Date: Fri Apr 24 22:13:03 2020 +0200 elf: Introduce MIPS needs to ignore certain existing symbols during symbol lookup. The old scheme uses the ELF_MACHINE_SYM_NO_MATCH macro, with an inline function, within its own header, with a sysdeps override for MIPS. This allows re-use of the function from another file (without having to include or providing the default definition for ELF_MACHINE_SYM_NO_MATCH). Reviewed-by: Carlos O'Donell