This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.28.9000-194-g729f340


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  729f34028a7f494b599a29889df825cf826b6de0 (commit)
      from  8c8d2a8aff71e0c53b372871f158c121289452cf (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=729f34028a7f494b599a29889df825cf826b6de0

commit 729f34028a7f494b599a29889df825cf826b6de0
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Wed Oct 17 11:56:28 2018 +0000

    Use single bits/shm.h for all architectures.
    
    After my patch to move SHMLBA to its own header, the bits/shm.h
    headers for architectures using the Linux kernel still vary in a few
    ways: the use of __syscall_ulong_t; whether padding for 32-bit systems
    is present before or after time fields, or missing altogether (mips,
    x32); whether shm_segsz is before or after the time fields; whether,
    if after time fields, there is extra padding before shm_segsz.
    
    This patch arranges for a single header to be used.  __syscall_ulong_t
    is safe to use everywhere, while bits/shm-pad.h is added with new
    macros __SHM_PAD_AFTER_TIME, __SHM_PAD_BEFORE_TIME,
    __SHM_SEGSZ_AFTER_TIME and __SHM_PAD_BETWEEN_TIME_AND_SEGSZ to
    describe the differences.
    
    Tested for x86_64 and x86, and with build-many-glibcs.py.
    
    	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
    	bits/shm-pad.h.
    	* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shm-pad.h>.
    	(shmatt_t): Define as __syscall_ulong_t.
    	(__SHM_PAD_TIME): New macro, depending on [__SHM_PAD_BEFORE_TIME]
    	and [__SHM_PAD_AFTER_TIME].
    	(struct shmid_ds): Define time fields using __SHM_PAD_TIME.
    	Define shm_segsz and associated padding based on
    	[__SHM_SEGSZ_AFTER_TIME] and [__SHM_PAD_BETWEEN_TIME_AND_SEGSZ].
    	Use __syscall_ulong_t instead of unsigned long int.
    	[__USE_MISC] (struct shminfo): Use __syscall_ulong_t instead of
    	unsigned long int.
    	[__USE_MISC] (struct shm_info): Likewise.
    	* sysdeps/unix/sysv/linux/bits/shm-pad.h: New file.
    	* sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h: Likewise.
    	* sysdeps/unix/sysv/linux/mips/bits/shm-pad.h: Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h: Likewise.
    	* sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86/bits/shm-pad.h: Likewise.
    	* sysdeps/unix/sysv/linux/hppa/bits/shm.h: Remove.
    	* sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Likewise.
    	* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86/bits/shm.h: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 0b2100f..0f3a846 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,31 @@
 2018-10-17  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
+	bits/shm-pad.h.
+	* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shm-pad.h>.
+	(shmatt_t): Define as __syscall_ulong_t.
+	(__SHM_PAD_TIME): New macro, depending on [__SHM_PAD_BEFORE_TIME]
+	and [__SHM_PAD_AFTER_TIME].
+	(struct shmid_ds): Define time fields using __SHM_PAD_TIME.
+	Define shm_segsz and associated padding based on
+	[__SHM_SEGSZ_AFTER_TIME] and [__SHM_PAD_BETWEEN_TIME_AND_SEGSZ].
+	Use __syscall_ulong_t instead of unsigned long int.
+	[__USE_MISC] (struct shminfo): Use __syscall_ulong_t instead of
+	unsigned long int.
+	[__USE_MISC] (struct shm_info): Likewise.
+	* sysdeps/unix/sysv/linux/bits/shm-pad.h: New file.
+	* sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h: Likewise.
+	* sysdeps/unix/sysv/linux/mips/bits/shm-pad.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h: Likewise.
+	* sysdeps/unix/sysv/linux/x86/bits/shm-pad.h: Likewise.
+	* sysdeps/unix/sysv/linux/hppa/bits/shm.h: Remove.
+	* sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
+	* sysdeps/unix/sysv/linux/x86/bits/shm.h: Likewise.
+
+	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
 	bits/shmlba.h.
 	* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shmlba.h>.
 	(SHMLBA): Remove macro.
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 27c7ef6..72b6b64 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -43,7 +43,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
 		  bits/siginfo-arch.h bits/siginfo-consts-arch.h \
 		  bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
 		  bits/procfs-prregset.h bits/mman-map-flags-generic.h \
-		  bits/msq-pad.h bits/sem-pad.h bits/shmlba.h
+		  bits/msq-pad.h bits/sem-pad.h bits/shmlba.h bits/shm-pad.h
 
 tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
 	 tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
diff --git a/sysdeps/unix/sysv/linux/bits/shm-pad.h b/sysdeps/unix/sysv/linux/bits/shm-pad.h
new file mode 100644
index 0000000..9233c95
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/bits/shm-pad.h
@@ -0,0 +1,37 @@
+/* Define where padding goes in struct shmid_ds.  Generic version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SHM_H
+# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+/* On most architectures, padding goes after time fields for 32-bit
+   systems and is omitted for 64-bit systems.  Some architectures pad
+   before time fields instead, or omit padding despite being 32-bit,
+   or include it despite being 64-bit.  Furthermore, some
+   architectures place shm_segsz after the time fields rather than
+   before them, with or without padding there.  This must match the
+   layout used for struct shmid64_ds in <asm/shmbuf.h>, as glibc does
+   not do layout conversions for this structure.  */
+
+#define __SHM_PAD_AFTER_TIME (__WORDSIZE == 32)
+#define __SHM_PAD_BEFORE_TIME 0
+#define __SHM_SEGSZ_AFTER_TIME 0
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index c305ee4..68ac6e9 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -22,6 +22,7 @@
 #include <bits/types.h>
 #include <bits/wordsize.h>
 #include <bits/shmlba.h>
+#include <bits/shm-pad.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
@@ -40,30 +41,40 @@
 __BEGIN_DECLS
 
 /* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
+typedef __syscall_ulong_t shmatt_t;
+
+#if __SHM_PAD_BEFORE_TIME
+# define __SHM_PAD_TIME(NAME, RES)				\
+  unsigned long int __glibc_reserved ## RES; __time_t NAME
+#elif __SHM_PAD_AFTER_TIME
+# define __SHM_PAD_TIME(NAME, RES)				\
+  __time_t NAME; unsigned long int __glibc_reserved ## RES
+#else
+# define __SHM_PAD_TIME(NAME, RES)		\
+  __time_t NAME
+#endif
 
 /* Data structure describing a shared memory segment.  */
 struct shmid_ds
   {
     struct ipc_perm shm_perm;		/* operation permission struct */
+#if !__SHM_SEGSZ_AFTER_TIME
     size_t shm_segsz;			/* size of segment in bytes */
-    __time_t shm_atime;			/* time of last shmat() */
-#if __WORDSIZE == 32
-    unsigned long int __glibc_reserved1;
 #endif
-    __time_t shm_dtime;			/* time of last shmdt() */
-#if __WORDSIZE == 32
-    unsigned long int __glibc_reserved2;
+    __SHM_PAD_TIME (shm_atime, 1);	/* time of last shmat() */
+    __SHM_PAD_TIME (shm_dtime, 2);	/* time of last shmdt() */
+    __SHM_PAD_TIME (shm_ctime, 3);	/* time of last change by shmctl() */
+#if __SHM_PAD_BETWEEN_TIME_AND_SEGSZ
+    unsigned long int __glibc_reserved4;
 #endif
-    __time_t shm_ctime;			/* time of last change by shmctl() */
-#if __WORDSIZE == 32
-    unsigned long int __glibc_reserved3;
+#if __SHM_SEGSZ_AFTER_TIME
+    size_t shm_segsz;			/* size of segment in bytes */
 #endif
     __pid_t shm_cpid;			/* pid of creator */
     __pid_t shm_lpid;			/* pid of last shmop */
     shmatt_t shm_nattch;		/* number of current attaches */
-    unsigned long int __glibc_reserved4;
-    unsigned long int __glibc_reserved5;
+    __syscall_ulong_t __glibc_reserved5;
+    __syscall_ulong_t __glibc_reserved6;
   };
 
 #ifdef __USE_MISC
@@ -81,25 +92,25 @@ struct shmid_ds
 
 struct	shminfo
   {
-    unsigned long int shmmax;
-    unsigned long int shmmin;
-    unsigned long int shmmni;
-    unsigned long int shmseg;
-    unsigned long int shmall;
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-    unsigned long int __glibc_reserved3;
-    unsigned long int __glibc_reserved4;
+    __syscall_ulong_t shmmax;
+    __syscall_ulong_t shmmin;
+    __syscall_ulong_t shmmni;
+    __syscall_ulong_t shmseg;
+    __syscall_ulong_t shmall;
+    __syscall_ulong_t __glibc_reserved1;
+    __syscall_ulong_t __glibc_reserved2;
+    __syscall_ulong_t __glibc_reserved3;
+    __syscall_ulong_t __glibc_reserved4;
   };
 
 struct shm_info
   {
     int used_ids;
-    unsigned long int shm_tot;	/* total allocated shm */
-    unsigned long int shm_rss;	/* total resident shm */
-    unsigned long int shm_swp;	/* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
+    __syscall_ulong_t shm_tot;	/* total allocated shm */
+    __syscall_ulong_t shm_rss;	/* total resident shm */
+    __syscall_ulong_t shm_swp;	/* total swapped shm */
+    __syscall_ulong_t swap_attempts;
+    __syscall_ulong_t swap_successes;
   };
 
 #endif /* __USE_MISC */
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h b/sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h
new file mode 100644
index 0000000..6a9c5dd
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h
@@ -0,0 +1,28 @@
+/* Define where padding goes in struct shmid_ds.  HPPA version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SHM_H
+# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+#define __SHM_PAD_AFTER_TIME 0
+#define __SHM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SHM_SEGSZ_AFTER_TIME 1
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__WORDSIZE == 32)
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/shm.h b/sysdeps/unix/sysv/linux/hppa/bits/shm.h
deleted file mode 100644
index fed18e4..0000000
--- a/sysdeps/unix/sysv/linux/hppa/bits/shm.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Copyright (C) 1995-2018 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_SHM_H
-# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-#include <bits/wordsize.h>
-#include <bits/shmlba.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
-#define SHM_W		0200		/* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY	010000		/* attach read-only else read-write */
-#define SHM_RND		020000		/* round attach address to SHMLBA */
-#define SHM_REMAP	040000		/* take-over region on attach */
-#define SHM_EXEC	0100000		/* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK	11		/* lock segment (root only) */
-#define SHM_UNLOCK	12		/* unlock segment (root only) */
-
-/* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;		/* operation permission struct */
-#if __WORDSIZE == 32
-    unsigned int __pad1;
-#endif
-    __time_t shm_atime;			/* time of last shmat() */
-#if __WORDSIZE == 32
-    unsigned int __pad2;
-#endif
-    __time_t shm_dtime;			/* time of last shmdt() */
-#if __WORDSIZE == 32
-    unsigned int __pad3;
-#endif
-    __time_t shm_ctime;			/* time of last change by shmctl() */
-#if __WORDSIZE == 32
-    unsigned int __pad4;
-#endif
-    size_t shm_segsz;			/* size of segment in bytes */
-    __pid_t shm_cpid;			/* pid of creator */
-    __pid_t shm_lpid;			/* pid of last shmop */
-    shmatt_t shm_nattch;		/* number of current attaches */
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT 	13
-# define SHM_INFO 	14
-# define SHM_STAT_ANY	15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST	01000	/* segment will be destroyed on last detach */
-# define SHM_LOCKED	02000   /* segment will not be swapped */
-# define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */
-# define SHM_NORESERVE	010000	/* don't check for reservations */
-
-struct	shminfo
-  {
-    unsigned long shmmax;
-    unsigned long shmmin;
-    unsigned long shmmni;
-    unsigned long shmseg;
-    unsigned long shmall;
-    unsigned long __glibc_reserved1;
-    unsigned long __glibc_reserved2;
-    unsigned long __glibc_reserved3;
-    unsigned long __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    unsigned long int shm_tot;	/* total allocated shm */
-    unsigned long int shm_rss;	/* total resident shm */
-    unsigned long int shm_swp;	/* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
-  };
-
-#endif /* __USE_MISC */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/shm-pad.h b/sysdeps/unix/sysv/linux/mips/bits/shm-pad.h
new file mode 100644
index 0000000..efa2617
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/shm-pad.h
@@ -0,0 +1,26 @@
+/* Define where padding goes in struct shmid_ds.  MIPS version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SHM_H
+# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
+#endif
+
+#define __SHM_PAD_AFTER_TIME 0
+#define __SHM_PAD_BEFORE_TIME 0
+#define __SHM_SEGSZ_AFTER_TIME 0
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
diff --git a/sysdeps/unix/sysv/linux/mips/bits/shm.h b/sysdeps/unix/sysv/linux/mips/bits/shm.h
deleted file mode 100644
index 4320bd4..0000000
--- a/sysdeps/unix/sysv/linux/mips/bits/shm.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Copyright (C) 1995-2018 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_SHM_H
-# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-#include <bits/shmlba.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
-#define SHM_W		0200		/* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY	010000		/* attach read-only else read-write */
-#define SHM_RND		020000		/* round attach address to SHMLBA */
-#define SHM_REMAP	040000		/* take-over region on attach */
-#define SHM_EXEC	0100000		/* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK	11		/* lock segment (root only) */
-#define SHM_UNLOCK	12		/* unlock segment (root only) */
-
-
-/* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;		/* operation permission struct */
-    size_t shm_segsz;			/* size of segment in bytes */
-    __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() */
-    __pid_t shm_cpid;			/* pid of creator */
-    __pid_t shm_lpid;			/* pid of last shmop */
-    shmatt_t shm_nattch;		/* number of current attaches */
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT	13
-# define SHM_INFO	14
-# define SHM_STAT_ANY	15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST	01000	/* segment will be destroyed on last detach */
-# define SHM_LOCKED	02000   /* segment will not be swapped */
-# define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */
-# define SHM_NORESERVE	010000  /* don't check for reservations */
-
-struct shminfo
-  {
-    unsigned long int shmmax;
-    unsigned long int shmmin;
-    unsigned long int shmmni;
-    unsigned long int shmseg;
-    unsigned long int shmall;
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-    unsigned long int __glibc_reserved3;
-    unsigned long int __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    unsigned long int shm_tot;  /* total allocated shm */
-    unsigned long int shm_rss;  /* total resident shm */
-    unsigned long int shm_swp;  /* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
-  };
-
-#endif /* __USE_MISC */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h b/sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h
new file mode 100644
index 0000000..69a7e4a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h
@@ -0,0 +1,28 @@
+/* Define where padding goes in struct shmid_ds.  PowerPC version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SHM_H
+# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+#define __SHM_PAD_AFTER_TIME 0
+#define __SHM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SHM_SEGSZ_AFTER_TIME 1
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__WORDSIZE == 32)
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h b/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
deleted file mode 100644
index a41a1ab..0000000
--- a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Copyright (C) 1995-2018 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_SHM_H
-# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-#include <bits/shmlba.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
-#define SHM_W          0200            /* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY	010000          /* attach read-only else read-write */
-#define SHM_RND		020000          /* round attach address to SHMLBA */
-#define SHM_REMAP	040000          /* take-over region on attach */
-#define SHM_EXEC	0100000		/* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK       11              /* lock segment (root only) */
-#define SHM_UNLOCK     12              /* unlock segment (root only) */
-
-__BEGIN_DECLS
-
-
-/* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;          /* operation permission struct */
-#if __WORDSIZE == 32
-    unsigned int __glibc_reserved1;
-#endif
-    __time_t shm_atime;                        /* time of last shmat() */
-#if __WORDSIZE == 32
-    unsigned int __glibc_reserved2;
-#endif
-    __time_t shm_dtime;                        /* time of last shmdt() */
-#if __WORDSIZE == 32
-    unsigned int __glibc_reserved3;
-#endif
-    __time_t shm_ctime;			/* time of last change by shmctl() */
-#if __WORDSIZE == 32
-    unsigned int __glibc_reserved4;
-#endif
-    size_t shm_segsz;                  /* size of segment in bytes */
-    __pid_t shm_cpid;                  /* pid of creator */
-    __pid_t shm_lpid;                  /* pid of last shmop */
-    shmatt_t shm_nattch;               /* number of current attaches */
-    unsigned long __glibc_reserved5;
-    unsigned long __glibc_reserved6;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT      13
-# define SHM_INFO      14
-# define SHM_STAT_ANY	15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST      01000	/* segment will be destroyed on last detach */
-# define SHM_LOCKED    02000	/* segment will not be swapped */
-# define SHM_HUGETLB   04000	/* segment is mapped via hugetlb */
-# define SHM_NORESERVE 010000	/* don't check for reservations */
-
-struct shminfo
-  {
-    unsigned long int shmmax;
-    unsigned long int shmmin;
-    unsigned long int shmmni;
-    unsigned long int shmseg;
-    unsigned long int shmall;
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-    unsigned long int __glibc_reserved3;
-    unsigned long int __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    unsigned long int shm_tot; /* total allocated shm */
-    unsigned long int shm_rss; /* total resident shm */
-    unsigned long int shm_swp; /* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
-  };
-
-#endif /* __USE_MISC */
-
-__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h b/sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
new file mode 100644
index 0000000..c4d0c2f
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
@@ -0,0 +1,28 @@
+/* Define where padding goes in struct shmid_ds.  SPARC version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SHM_H
+# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+#define __SHM_PAD_AFTER_TIME 0
+#define __SHM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SHM_SEGSZ_AFTER_TIME 1
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/shm.h b/sysdeps/unix/sysv/linux/sparc/bits/shm.h
deleted file mode 100644
index 5262a79..0000000
--- a/sysdeps/unix/sysv/linux/sparc/bits/shm.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Copyright (C) 1995-2018 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_SHM_H
-# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-#include <bits/wordsize.h>
-#include <bits/shmlba.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
-#define SHM_W		0200		/* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY	010000		/* attach read-only else read-write */
-#define SHM_RND		020000		/* round attach address to SHMLBA */
-#define SHM_REMAP	040000		/* take-over region on attach */
-#define SHM_EXEC	0100000		/* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK	11		/* lock segment (root only) */
-#define SHM_UNLOCK	12		/* unlock segment (root only) */
-
-__BEGIN_DECLS
-
-
-/* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;		/* operation permission struct */
-#if __WORDSIZE == 32
-    unsigned int __pad1;
-#endif
-    __time_t shm_atime;			/* time of last shmat() */
-#if __WORDSIZE == 32
-    unsigned int __pad2;
-#endif
-    __time_t shm_dtime;			/* time of last shmdt() */
-#if __WORDSIZE == 32
-    unsigned int __pad3;
-#endif
-    __time_t shm_ctime;			/* time of last change by shmctl() */
-    size_t shm_segsz;			/* size of segment in bytes */
-    __pid_t shm_cpid;			/* pid of creator */
-    __pid_t shm_lpid;			/* pid of last shmop */
-    shmatt_t shm_nattch;		/* number of current attaches */
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT 	13
-# define SHM_INFO 	14
-# define SHM_STAT_ANY	15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST	01000	/* segment will be destroyed on last detach */
-# define SHM_LOCKED	02000   /* segment will not be swapped */
-# define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */
-# define SHM_NORESERVE	010000	/* don't check for reservations */
-
-struct	shminfo
-  {
-    unsigned long shmmax;
-    unsigned long shmmin;
-    unsigned long shmmni;
-    unsigned long shmseg;
-    unsigned long shmall;
-    unsigned long __glibc_reserved1;
-    unsigned long __glibc_reserved2;
-    unsigned long __glibc_reserved3;
-    unsigned long __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    unsigned long int shm_tot;	/* total allocated shm */
-    unsigned long int shm_rss;	/* total resident shm */
-    unsigned long int shm_swp;	/* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
-  };
-
-#endif /* __USE_MISC */
-
-__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/x86/bits/shm-pad.h b/sysdeps/unix/sysv/linux/x86/bits/shm-pad.h
new file mode 100644
index 0000000..277a70f
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86/bits/shm-pad.h
@@ -0,0 +1,30 @@
+/* Define where padding goes in struct shmid_ds.  x86 version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SHM_H
+# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
+#endif
+
+#ifdef __x86_64__
+# define __SHM_PAD_AFTER_TIME 0
+#else
+# define __SHM_PAD_AFTER_TIME 1
+#endif
+#define __SHM_PAD_BEFORE_TIME 0
+#define __SHM_SEGSZ_AFTER_TIME 0
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
diff --git a/sysdeps/unix/sysv/linux/x86/bits/shm.h b/sysdeps/unix/sysv/linux/x86/bits/shm.h
deleted file mode 100644
index 4b88ff0..0000000
--- a/sysdeps/unix/sysv/linux/x86/bits/shm.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Copyright (C) 1995-2018 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_SHM_H
-# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-#include <bits/shmlba.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
-#define SHM_W		0200		/* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY	010000		/* attach read-only else read-write */
-#define SHM_RND		020000		/* round attach address to SHMLBA */
-#define SHM_REMAP	040000		/* take-over region on attach */
-#define SHM_EXEC	0100000		/* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK	11		/* lock segment (root only) */
-#define SHM_UNLOCK	12		/* unlock segment (root only) */
-
-__BEGIN_DECLS
-
-
-/* Type to count number of attaches.  */
-typedef __syscall_ulong_t shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;		/* operation permission struct */
-    size_t shm_segsz;			/* size of segment in bytes */
-    __time_t shm_atime;			/* time of last shmat() */
-#ifndef __x86_64__
-    unsigned long int __glibc_reserved1;
-#endif
-    __time_t shm_dtime;			/* time of last shmdt() */
-#ifndef __x86_64__
-    unsigned long int __glibc_reserved2;
-#endif
-    __time_t shm_ctime;			/* time of last change by shmctl() */
-#ifndef __x86_64__
-    unsigned long int __glibc_reserved3;
-#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_reserved4;
-    __syscall_ulong_t __glibc_reserved5;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT 	13
-# define SHM_INFO 	14
-# define SHM_STAT_ANY	15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST	01000	/* segment will be destroyed on last detach */
-# define SHM_LOCKED	02000   /* segment will not be swapped */
-# define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */
-# define SHM_NORESERVE	010000	/* don't check for reservations */
-
-struct	shminfo
-  {
-    __syscall_ulong_t shmmax;
-    __syscall_ulong_t shmmin;
-    __syscall_ulong_t shmmni;
-    __syscall_ulong_t shmseg;
-    __syscall_ulong_t shmall;
-    __syscall_ulong_t __glibc_reserved1;
-    __syscall_ulong_t __glibc_reserved2;
-    __syscall_ulong_t __glibc_reserved3;
-    __syscall_ulong_t __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    __syscall_ulong_t shm_tot;	/* total allocated shm */
-    __syscall_ulong_t shm_rss;	/* total resident shm */
-    __syscall_ulong_t shm_swp;	/* total swapped shm */
-    __syscall_ulong_t swap_attempts;
-    __syscall_ulong_t swap_successes;
-  };
-
-#endif /* __USE_MISC */
-
-__END_DECLS

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                      |   25 ++++++
 sysdeps/unix/sysv/linux/Makefile               |    2 +-
 sysdeps/unix/sysv/linux/bits/shm-pad.h         |   37 ++++++++
 sysdeps/unix/sysv/linux/bits/shm.h             |   63 ++++++++------
 sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h    |   28 ++++++
 sysdeps/unix/sysv/linux/hppa/bits/shm.h        |  106 -----------------------
 sysdeps/unix/sysv/linux/mips/bits/shm-pad.h    |   26 ++++++
 sysdeps/unix/sysv/linux/mips/bits/shm.h        |   94 --------------------
 sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h |   28 ++++++
 sysdeps/unix/sysv/linux/powerpc/bits/shm.h     |  110 ------------------------
 sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h   |   28 ++++++
 sysdeps/unix/sysv/linux/sparc/bits/shm.h       |  108 -----------------------
 sysdeps/unix/sysv/linux/x86/bits/shm-pad.h     |   30 +++++++
 sysdeps/unix/sysv/linux/x86/bits/shm.h         |  107 -----------------------
 14 files changed, 240 insertions(+), 552 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/bits/shm-pad.h
 create mode 100644 sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h
 delete mode 100644 sysdeps/unix/sysv/linux/hppa/bits/shm.h
 create mode 100644 sysdeps/unix/sysv/linux/mips/bits/shm-pad.h
 delete mode 100644 sysdeps/unix/sysv/linux/mips/bits/shm.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/shm.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
 delete mode 100644 sysdeps/unix/sysv/linux/sparc/bits/shm.h
 create mode 100644 sysdeps/unix/sysv/linux/x86/bits/shm-pad.h
 delete mode 100644 sysdeps/unix/sysv/linux/x86/bits/shm.h


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]