Skip to content

Commit 956b43d

Browse files
authored
[druntime]: Fix posix.sys.shm.shmid_ds on (some) non-x86_64 (dlang#21771)
Check glibc's sysdeps/unix/sysv/linux/**/bits/types/struct_shmid_ds.h for correctness. Some arches still look like they have an incorrect declaration but this, at least, fixes aarch64 which is the more common one. For convenience, the shared definition used by both x86_64 and aarch64 is: ``` struct shmid_ds { #ifdef __USE_TIME64_REDIRECTS # include <bits/types/struct_shmid64_ds_helper.h> #else struct ipc_perm shm_perm; /* operation permission struct */ size_t shm_segsz; /* size of segment in bytes */ # if __TIMESIZE == 32 __time_t shm_atime; /* time of last shmat() */ unsigned long int __shm_atime_high; __time_t shm_dtime; /* time of last shmdt() */ unsigned long int __shm_dtime_high; __time_t shm_ctime; /* time of last change by shmctl() */ unsigned long int __shm_ctime_high; # else __time_t shm_atime; /* time of last shmat() */ __time_t shm_dtime; /* time of last shmdt() */ __time_t shm_ctime; /* time of last change by shmctl() */ # endif __pid_t shm_cpid; /* pid of creator */ __pid_t shm_lpid; /* pid of last shmop */ shmatt_t shm_nattch; /* number of current attaches */ __syscall_ulong_t __glibc_reserved5; __syscall_ulong_t __glibc_reserved6; #endif }; ``` Signed-off-by: Andrei Horodniceanu <[email protected]>
1 parent a5a12f8 commit 956b43d

File tree

1 file changed

+3
-3
lines changed
  • druntime/src/core/sys/posix/sys

1 file changed

+3
-3
lines changed

druntime/src/core/sys/posix/sys/shm.d

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ version (linux)
6666
ipc_perm shm_perm;
6767
size_t shm_segsz;
6868
time_t shm_atime;
69-
version (X86_64) {} else c_ulong __unused1;
69+
static if (time_t.sizeof == 4) c_ulong __unused1;
7070
time_t shm_dtime;
71-
version (X86_64) {} else c_ulong __unused2;
71+
static if (time_t.sizeof == 4) c_ulong __unused2;
7272
time_t shm_ctime;
73-
version (X86_64) {} else c_ulong __unused3;
73+
static if (time_t.sizeof == 4) c_ulong __unused3;
7474
pid_t shm_cpid;
7575
pid_t shm_lpid;
7676
shmatt_t shm_nattch;

0 commit comments

Comments
 (0)