about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2019-07-29 18:03:41 -0400
committerRich Felker <dalias@aerifal.cx>2019-07-29 18:03:41 -0400
commit1afe5f3e5b504992914362d6c1c0a0af55f3b32b (patch)
tree9338410d72d7fa265122b05dc82a116b3f1b1696
parent7f797b5e255fa91296ac02e767ca16edea19c828 (diff)
downloadmusl-1afe5f3e5b504992914362d6c1c0a0af55f3b32b.tar.gz
musl-1afe5f3e5b504992914362d6c1c0a0af55f3b32b.tar.xz
musl-1afe5f3e5b504992914362d6c1c0a0af55f3b32b.zip
extricate bits/sem.h from x32 time_t hack
various padding fields in the generic bits/sem.h were defined in terms
of time_t as a cheap hack standing in for "kernel long", to allow x32
to use the generic version of the file. this was a really bad idea, as
it ended up getting copied into lots of arch-specific versions of the
bits file, and is a blocker to changing time_t to 64-bit on 32-bit
archs.

this commit adds an x32-specific version of the header, and changes
padding type back from time_t to long (currently the same type on all
archs but x32) in the generic header and all the others the hack got
copied into.
-rw-r--r--arch/aarch64/bits/sem.h8
-rw-r--r--arch/generic/bits/sem.h12
-rw-r--r--arch/mips/bits/sem.h8
-rw-r--r--arch/mips64/bits/sem.h8
-rw-r--r--arch/mipsn32/bits/sem.h8
-rw-r--r--arch/riscv64/bits/sem.h6
-rw-r--r--arch/x32/bits/sem.h11
7 files changed, 36 insertions, 25 deletions
diff --git a/arch/aarch64/bits/sem.h b/arch/aarch64/bits/sem.h
index e46ced95..5184eb59 100644
--- a/arch/aarch64/bits/sem.h
+++ b/arch/aarch64/bits/sem.h
@@ -4,11 +4,11 @@ struct semid_ds {
 	time_t sem_ctime;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 	unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+	long __unused3;
+	long __unused4;
 };
diff --git a/arch/generic/bits/sem.h b/arch/generic/bits/sem.h
index c629b81e..d383d4ea 100644
--- a/arch/generic/bits/sem.h
+++ b/arch/generic/bits/sem.h
@@ -1,16 +1,16 @@
 struct semid_ds {
 	struct ipc_perm sem_perm;
 	time_t sem_otime;
-	time_t __unused1;
+	long __unused1;
 	time_t sem_ctime;
-	time_t __unused2;
+	long __unused2;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 	unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+	long __unused3;
+	long __unused4;
 };
diff --git a/arch/mips/bits/sem.h b/arch/mips/bits/sem.h
index e46ced95..5184eb59 100644
--- a/arch/mips/bits/sem.h
+++ b/arch/mips/bits/sem.h
@@ -4,11 +4,11 @@ struct semid_ds {
 	time_t sem_ctime;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 	unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+	long __unused3;
+	long __unused4;
 };
diff --git a/arch/mips64/bits/sem.h b/arch/mips64/bits/sem.h
index e46ced95..5184eb59 100644
--- a/arch/mips64/bits/sem.h
+++ b/arch/mips64/bits/sem.h
@@ -4,11 +4,11 @@ struct semid_ds {
 	time_t sem_ctime;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 	unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+	long __unused3;
+	long __unused4;
 };
diff --git a/arch/mipsn32/bits/sem.h b/arch/mipsn32/bits/sem.h
index e46ced95..5184eb59 100644
--- a/arch/mipsn32/bits/sem.h
+++ b/arch/mipsn32/bits/sem.h
@@ -4,11 +4,11 @@ struct semid_ds {
 	time_t sem_ctime;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
 	unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+	long __unused3;
+	long __unused4;
 };
diff --git a/arch/riscv64/bits/sem.h b/arch/riscv64/bits/sem.h
index 5f93c12d..7b434413 100644
--- a/arch/riscv64/bits/sem.h
+++ b/arch/riscv64/bits/sem.h
@@ -3,7 +3,7 @@ struct semid_ds {
 	time_t sem_otime;
 	time_t sem_ctime;
 	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
-	time_t __unused3;
-	time_t __unused4;
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
+	long __unused3;
+	long __unused4;
 };
diff --git a/arch/x32/bits/sem.h b/arch/x32/bits/sem.h
new file mode 100644
index 00000000..18745f4c
--- /dev/null
+++ b/arch/x32/bits/sem.h
@@ -0,0 +1,11 @@
+struct semid_ds {
+	struct ipc_perm sem_perm;
+	time_t sem_otime;
+	long long __unused1;
+	time_t sem_ctime;
+	long long __unused2;
+	unsigned short sem_nsems;
+	char __sem_nsems_pad[sizeof(long long)-sizeof(short)];
+	long long __unused3;
+	long long __unused4;
+};