Skip to content

Conversation

@the-horo
Copy link
Contributor

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
   };

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]>
@dlang-bot
Copy link
Contributor

Thanks for your pull request and interest in making D better, @the-horo! We are looking forward to reviewing it, and you should be hearing from a maintainer soon.
Please verify that your PR follows this checklist:

  • My PR is fully covered with tests (you can see the coverage diff by visiting the details link of the codecov check)
  • My PR is as minimal as possible (smaller, focused PRs are easier to review than big ones)
  • I have provided a detailed rationale explaining my changes
  • New or modified functions have Ddoc comments (with Params: and Returns:)

Please see CONTRIBUTING.md for more information.


If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment.

Bugzilla references

Your PR doesn't reference any Bugzilla issue.

If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog.

Testing this PR locally

If you don't have a local development environment setup, you can use Digger to test this PR:

dub run digger -- build "master + dmd#21771"

@the-horo
Copy link
Contributor Author

Tested on aarch64 in ldc-developers/ldc#4971

@thewilsonator thewilsonator merged commit 956b43d into dlang:master Aug 24, 2025
40 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants