mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
hurd 64bit: Fix ipc_perm fields types
The standards want uid/cuid to be uid_t, gid/cgid to be gid_t and mode to be mode_t, see BZ 23082. We can leave them short ints on i386 for ABI compatibility, but avoid hitting the issue on 64bit. bits/ipc.h ends up being exactly the same in sysdeps/gnu/ and sysdeps/unix/sysv/linux/, so remove the latter.
This commit is contained in:
parent
d5e2f9eaf7
commit
e3a3616dbf
6 changed files with 71 additions and 53 deletions
|
@ -44,3 +44,7 @@ librt-sysdep_routines += rt-unwind-resume
|
|||
librt-shared-only-routines += rt-unwind-resume
|
||||
CFLAGS-rt-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),sysvipc)
|
||||
sysdep_headers += bits/ipc-perm.h
|
||||
endif
|
||||
|
|
33
sysdeps/gnu/bits/ipc-perm.h
Normal file
33
sysdeps/gnu/bits/ipc-perm.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
/* struct ipc_perm definition.
|
||||
Copyright (C) 1995-2023 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_IPC_H
|
||||
# error "Never use <bits/ipc-perm.h> directly; include <sys/ipc.h> instead."
|
||||
#endif
|
||||
|
||||
/* Data structure used to pass permission information to IPC operations. */
|
||||
struct ipc_perm
|
||||
{
|
||||
__key_t __key; /* Key. */
|
||||
__uid_t uid; /* Owner's user ID. */
|
||||
__gid_t gid; /* Owner's group ID. */
|
||||
__uid_t cuid; /* Creator's user ID. */
|
||||
__gid_t cgid; /* Creator's group ID. */
|
||||
__mode_t mode; /* Read/write permission. */
|
||||
unsigned short int __seq; /* Sequence number. */
|
||||
};
|
|
@ -37,15 +37,4 @@
|
|||
/* Special key values. */
|
||||
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
|
||||
|
||||
|
||||
/* Data structure used to pass permission information to IPC operations. */
|
||||
struct ipc_perm
|
||||
{
|
||||
__key_t __key; /* Key. */
|
||||
unsigned short int uid; /* Owner's user ID. */
|
||||
unsigned short int gid; /* Owner's group ID. */
|
||||
unsigned short int cuid; /* Creator's user ID. */
|
||||
unsigned short int cgid; /* Creator's group ID. */
|
||||
unsigned short int mode; /* Read/write permission. */
|
||||
unsigned short int __seq; /* Sequence number. */
|
||||
};
|
||||
#include <bits/ipc-perm.h>
|
||||
|
|
33
sysdeps/mach/hurd/i386/bits/ipc-perm.h
Normal file
33
sysdeps/mach/hurd/i386/bits/ipc-perm.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
/* struct ipc_perm definition.
|
||||
Copyright (C) 1995-2023 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_IPC_H
|
||||
# error "Never use <bits/ipc-perm.h> directly; include <sys/ipc.h> instead."
|
||||
#endif
|
||||
|
||||
/* Data structure used to pass permission information to IPC operations. */
|
||||
struct ipc_perm
|
||||
{
|
||||
__key_t __key; /* Key. */
|
||||
unsigned short int uid; /* Owner's user ID. */
|
||||
unsigned short int gid; /* Owner's group ID. */
|
||||
unsigned short int cuid; /* Creator's user ID. */
|
||||
unsigned short int cgid; /* Creator's group ID. */
|
||||
unsigned short int mode; /* Read/write permission. */
|
||||
unsigned short int __seq; /* Sequence number. */
|
||||
};
|
|
@ -125,7 +125,6 @@ sysdep_headers += \
|
|||
bits/epoll.h \
|
||||
bits/eventfd.h \
|
||||
bits/inotify.h \
|
||||
bits/ipc-perm.h \
|
||||
bits/mman-linux.h \
|
||||
bits/mman-map-flags-generic.h \
|
||||
bits/mman-shared.h \
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
/* Copyright (C) 1995-2023 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_IPC_H
|
||||
# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
|
||||
#endif
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Mode bits for `msgget', `semget', and `shmget'. */
|
||||
#define IPC_CREAT 01000 /* Create key if key does not exist. */
|
||||
#define IPC_EXCL 02000 /* Fail if key exists. */
|
||||
#define IPC_NOWAIT 04000 /* Return error on wait. */
|
||||
|
||||
/* Control commands for `msgctl', `semctl', and `shmctl'. */
|
||||
#define IPC_RMID 0 /* Remove identifier. */
|
||||
#define IPC_SET 1 /* Set `ipc_perm' options. */
|
||||
#define IPC_STAT 2 /* Get `ipc_perm' options. */
|
||||
#ifdef __USE_GNU
|
||||
# define IPC_INFO 3 /* See ipcs. */
|
||||
#endif
|
||||
|
||||
/* Special key values. */
|
||||
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
|
||||
|
||||
#include <bits/ipc-perm.h>
|
Loading…
Add table
Reference in a new issue