mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
Fix sys/procfs.h pr_uid, pr_gid type (bug 23649).
As noted in <https://sourceware.org/ml/libc-alpha/2018-09/msg00178.html>, glibc's sys/procfs.h headers for microblaze, mips (n64), nios2 and riscv have incorrect types for the pr_uid and pr_gid members of struct elf_prpsinfo (as does the generic Linux version, but nothing uses that). This patch fixes those headers to use unsigned int. The generic Linux version is also fixed, but I do *not* recommend making new architectures use it yet. Rather, I think it should be reworked to look more like a copy of the AArch64 version, but with a new <bits/procfs.h> header included to provide register set definitions; <bits/procfs.h> would then be architecture-specific while many architectures could use the generic <sys/procfs.h>. This fix is deliberately separate from any reworking to use a generic header more, since it's possible there could be uses for backporting this fix but not for backporting a subsequent cleanup. Tested with build-many-glibcs.py. This of course doesn't provide much validation of the structure layout; if the Linux kernel is fixed so that "#include <linux/elfcore.h>" actually compiles with the headers from "make headers_install" (and if the layout in both headers is meant to be the same, whatever ABI we are building for), I have a test that can be added to glibc to check the layout against that from the Linux kernel. [BZ #23649] * sysdeps/unix/sysv/linux/microblaze/sys/procfs.h (struct elf_prpsinfo): Use unsigned int for pr_uid and pr_gid. * sysdeps/unix/sysv/linux/mips/sys/procfs.h (struct elf_prpsinfo): Likewise. * sysdeps/unix/sysv/linux/nios2/sys/procfs.h (struct elf_prpsinfo): Likewise. * sysdeps/unix/sysv/linux/riscv/sys/procfs.h (struct elf_prpsinfo): Likewise. * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Likewise.
This commit is contained in:
parent
f29b6f17e4
commit
d59f3e5e0f
12
ChangeLog
12
ChangeLog
@ -1,5 +1,17 @@
|
||||
2018-09-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #23649]
|
||||
* sysdeps/unix/sysv/linux/microblaze/sys/procfs.h (struct
|
||||
elf_prpsinfo): Use unsigned int for pr_uid and pr_gid.
|
||||
* sysdeps/unix/sysv/linux/mips/sys/procfs.h (struct elf_prpsinfo):
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/nios2/sys/procfs.h (struct
|
||||
elf_prpsinfo): Likewise.
|
||||
* sysdeps/unix/sysv/linux/riscv/sys/procfs.h (struct
|
||||
elf_prpsinfo): Likewise.
|
||||
* sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo):
|
||||
Likewise.
|
||||
|
||||
* include/math.h [!_ISOMAC && !(__FINITE_MATH_ONLY__ &&
|
||||
__FINITE_MATH_ONLY__ > 0) && !NO_MATH_REDIRECT] (rint): Redirect
|
||||
using MATH_REDIRECT.
|
||||
|
5
NEWS
5
NEWS
@ -26,6 +26,11 @@ Deprecated and removed features, and other changes affecting compatibility:
|
||||
* The glibc.tune tunable namespace has been renamed to glibc.cpu and the
|
||||
tunable glibc.tune.cpu has been renamed to glibc.cpu.name.
|
||||
|
||||
* The type of the pr_uid and pr_gid members of struct elf_prpsinfo, defined
|
||||
in <sys/procfs.h>, has been corrected to match the type actually used by
|
||||
the Linux kernel. This affects the size and layout of that structure on
|
||||
MicroBlaze, MIPS (n64 ABI only), Nios II and RISC-V.
|
||||
|
||||
Changes to build and runtime requirements:
|
||||
|
||||
[Add changes to build and runtime requirements here]
|
||||
|
@ -91,8 +91,8 @@ struct elf_prpsinfo
|
||||
char pr_zomb; /* Zombie. */
|
||||
char pr_nice; /* Nice val. */
|
||||
unsigned long int pr_flag; /* Flags. */
|
||||
unsigned short int pr_uid;
|
||||
unsigned short int pr_gid;
|
||||
unsigned int pr_uid;
|
||||
unsigned int pr_gid;
|
||||
int pr_pid, pr_ppid, pr_pgrp, pr_sid;
|
||||
/* Lots missing. */
|
||||
char pr_fname[16]; /* Filename of executable. */
|
||||
|
@ -97,8 +97,8 @@ struct elf_prpsinfo
|
||||
#else
|
||||
unsigned long int pr_flag; /* Flags. */
|
||||
#endif
|
||||
long pr_uid;
|
||||
long pr_gid;
|
||||
unsigned int pr_uid;
|
||||
unsigned int pr_gid;
|
||||
int pr_pid, pr_ppid, pr_pgrp, pr_sid;
|
||||
/* Lots missing */
|
||||
char pr_fname[16]; /* Filename of executable. */
|
||||
|
@ -91,8 +91,8 @@ struct elf_prpsinfo
|
||||
char pr_zomb; /* Zombie. */
|
||||
char pr_nice; /* Nice val. */
|
||||
unsigned long int pr_flag; /* Flags. */
|
||||
unsigned short int pr_uid;
|
||||
unsigned short int pr_gid;
|
||||
unsigned int pr_uid;
|
||||
unsigned int pr_gid;
|
||||
int pr_pid, pr_ppid, pr_pgrp, pr_sid;
|
||||
/* Lots missing */
|
||||
char pr_fname[16]; /* Filename of executable. */
|
||||
|
@ -82,8 +82,8 @@ struct elf_prpsinfo
|
||||
char pr_zomb; /* Zombie. */
|
||||
char pr_nice; /* Nice val. */
|
||||
unsigned long int pr_flag; /* Flags. */
|
||||
long int pr_uid;
|
||||
long int pr_gid;
|
||||
unsigned int pr_uid;
|
||||
unsigned int pr_gid;
|
||||
int pr_pid, pr_ppid, pr_pgrp, pr_sid;
|
||||
/* Lots missing */
|
||||
char pr_fname[16]; /* Filename of executable. */
|
||||
|
@ -86,8 +86,8 @@ struct elf_prpsinfo
|
||||
char pr_zomb; /* Zombie. */
|
||||
char pr_nice; /* Nice val. */
|
||||
unsigned long int pr_flag; /* Flags. */
|
||||
unsigned short int pr_uid;
|
||||
unsigned short int pr_gid;
|
||||
unsigned int pr_uid;
|
||||
unsigned int pr_gid;
|
||||
int pr_pid, pr_ppid, pr_pgrp, pr_sid;
|
||||
/* Lots missing */
|
||||
char pr_fname[16]; /* Filename of executable. */
|
||||
|
Loading…
Reference in New Issue
Block a user