This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[RFC v6 06/23] sysdeps: Use long types with 64-bit time_t on 32-bit archs
- From: Alistair Francis <alistair dot francis at wdc dot com>
- To: libc-alpha at sourceware dot org
- Cc: arnd at arndb dot de, adhemerval dot zanella at linaro dot org, fweimer at redhat dot com, joseph at codesourcery dot com, palmerdabbelt at google dot com, macro at wdc dot com, zongbox at gmail dot com, alistair dot francis at wdc dot com, alistair23 at gmail dot com
- Date: Sun, 12 Jan 2020 02:33:47 -0800
- Subject: [RFC v6 06/23] sysdeps: Use long types with 64-bit time_t on 32-bit archs
- Ironport-sdr: sXbXOOD6Hu2gxRyXf5eMp3vcjO+3nacGUTf0kM2ao635W+6sbcDPAw0XMqEOlJBP6B6JyY5YJ+ 6CRTdBJam/Acc4YdAsOCcFaLvncKn//8QtBYLA9IqsDi6VXCGqRoDopyOAKYZhBGT+exyK4Q2l fW6XQB9+qj8L7D+wp2+YydpyJYsiWXYSzMersP6Sp7LCiRWsqrPhRHxm09B3k2I9ivgdsJ0o8R zrCO6pnh3QSkxyY44LirH8b5gMenj9Gq8UI+vYFde4GqXD3RFnmneqwIWnJ3W0EYWiBM9PNCkY CEE=
- Ironport-sdr: QKz7pn1D2CuesDMLpjNJO0qgZH+GfbN+B/3ea8GDPLBLPxszupMSn+MIfQ4k3nnlCfqsx6IMsj KNxgpgU/Zf8ce8/F9TLDR+58EzFhOWrIXvXPF3ZfFixb0KaXU4jx182pFQyvY/3Gn2L1ku8k++ KIekOEabdAN7Ix5UFaytok7EYK5ixyVTnZiEb5XBeIQrSQ2GbRFwGXOZvjoAQd/ddsf4X7CnIr j4QVyB0cCmPBdfW6ACuIG/WHArBSTMmGtzkY1z4PL7n46EAVRxl7XdZkf4lWxPXW0Um9XGzvKd Eipe1me3+2g9gapziLsIAWk3
- Ironport-sdr: VaXU+HDy06GfBzvbNS9/83tyzWHR7LtWYBUWSBRa1u462lt6FZltlbxylh7458hasUspQuNVW4 owqqItvc1c5HtU3031zeBiAZWKPJKARRWXMcS7Vkzkei21b2VzX3/EHsPrUsjRjg0N906EjOC+ PUHKBcF/a9/GC5jc9Oey+JpgndON8GT2n3BGiWoXvkrR1MK/vOJlHVe3BtaBA2iH4V/uW7pagI k6deNSlLEQ3cBPV2x8hc5y+xYt607/rSkCEYCHTQEfZNRSCvLwBMh7f5StUUh16cTcI731d3VU IeM=
- References: <cover.1578824547.git.alistair.francis@wdc.com>
- Wdcironportexception: Internal
If we are using a 32-bit architecture with a 64-bit time_t let's
define __SEM_PAD_BEFORE_TIME as 1. This is because the kernel is
expecting a type __kernel_old_time_t which is 32-bit even with a
64-bit time_t. Instead of adding another check, let's just set
__SEM_PAD_BEFORE_TIME as that will use a long type instead of
long long.
---
sysdeps/unix/sysv/linux/bits/sem-pad.h | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/sysdeps/unix/sysv/linux/bits/sem-pad.h b/sysdeps/unix/sysv/linux/bits/sem-pad.h
index 566ce039cc..4b419a6100 100644
--- a/sysdeps/unix/sysv/linux/bits/sem-pad.h
+++ b/sysdeps/unix/sysv/linux/bits/sem-pad.h
@@ -30,4 +30,15 @@
layout conversions for this structure. */
#define __SEM_PAD_AFTER_TIME (__TIMESIZE == 32)
-#define __SEM_PAD_BEFORE_TIME 0
+
+/* If we are using a 32-bit architecture with a 64-bit time_t let's
+ define __SEM_PAD_BEFORE_TIME as 1. This is because the kernel is
+ expecting a type __kernel_old_time_t which is 32-bit even with a
+ 64-bit time_t. Instead of adding another check, let's just set
+ __SEM_PAD_BEFORE_TIME as that will use a long type instead of
+ long long. */
+#if __WORDSIZE == 32 && __TIMESIZE == 64
+# define __SEM_PAD_BEFORE_TIME 1
+#else
+# define __SEM_PAD_BEFORE_TIME 0
+#endif
--
2.24.1