This is the mail archive of the 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]

Re: Unify some sys/procfs.h headers

On 14/09/2018 17:26, Joseph Myers wrote:
> As per recent discussions, this patch unifies some of the sys/procfs.h
> headers for architectures using the Linux kernel, producing a generic
> version that can hopefully be used by all new architectures as well.
> The new generic version is based on the AArch64 one.  The register
> definitions, the only part that generally needs to vary by
> architecture, go in a new bits/procfs.h header (which each
> architecture using the generic version needs to provide); that header
> also has any #includes that were in the architecture-specific
> sys/procfs.h, where those includes went beyond the generic set.
> The generic version is used for eight architectures where the generic
> definitions were the same as the architecture-specific ones.  (Some of
> those architectures had #if 0 fields, now removed; some defined types
> or fields using different type names which were typedefs for the same
> underlying types.)
> Six of the remaining architectures with their own sys/procfs.h use
> unsigned short for pr_uid / pr_gid in some cases; moving those to the
> generic header will require a bits/ header to define a typedef for the
> type of those fields.  In the case of alpha, the generic sys/procfs.h
> uses elf_gregset_t (= unsigned long int[33]) to define prgregset_t and
> elf_fpregset_t (= double[32]) to define prfpregset_t, but the alpha
> version uses gregset_t (= long int[33]) and fpregset_t (= long
> int[32]), so avoiding unnecessarily changing the underlying types (and
> thus C++ name mangling) again means a bits/ header will need to be
> able to define a different choice for those typedefs.
> bits/procfs.h is included outside the __BEGIN_DECLS / __END_DECLS pair
> (whereas the definitions it contains were previously inside that pair
> in various sys/procfs.h headers), because it sometimes includes other
> headers and putting those other #includes inside that pair seems
> risky.  Because none of the declarations in bits/procfs.h are of
> functions or variables or involve function types, I don't think it
> makes any difference whether they are inside or outside an extern "C"
> context.
> Tested with (again, that does not provide much
> validation for the correctness of this patch).

One option to add a bit of more coverage would be to add an option to 
rebuild binutils with gdb enabled after the toolchain completion.

> 2018-09-14  Joseph Myers  <>
> 	* sysdeps/unix/sysv/linux/sys/procfs.h: Replace with file based on
> 	AArch64 version.  Include <bits/procfs.h>.
> 	* sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc]
> 	(sysdep_headers): Add bits/procfs.h.
> 	* sysdeps/unix/sysv/linux/bits/procfs.h: New file.
> 	* sysdeps/unix/sysv/linux/aarch64/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/hppa/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/ia64/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/microblaze/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/mips/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/nios2/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/riscv/bits/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/aarch64/sys/procfs.h: Remove file.
> 	* sysdeps/unix/sysv/linux/hppa/sys/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/microblaze/sys/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/mips/sys/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/nios2/sys/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/sys/procfs.h: Likewise.
> 	* sysdeps/unix/sysv/linux/riscv/sys/procfs.h: Likewise.

LGTM, thanks.

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