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]

[glibc/zack/no-nested-includes] Rename sys/ucontext.h to bits/ucontext.h.


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fd937b61650f992c03f72bf4569eb491ca9d2c65

commit fd937b61650f992c03f72bf4569eb491ca9d2c65
Author: Zack Weinberg <zackw@panix.com>
Date:   Tue Jun 25 16:18:31 2019 -0400

    Rename sys/ucontext.h to bits/ucontext.h.
    
    sys/ucontext.h is effectively a bits header.  Its contents are
    extremely system-specific, and itâ??s strongly associated with a
    specific public header (ucontext.h) that provides a superset of its
    definitions, but there are other public headers that also require some
    of its definitions.  This patch therefore moves it into the bits/
    namespace and adjusts all the headers that refer to it.  In case there
    are external users, a stub is added that includes ucontext.h.
    
    Most of the fallout changes are trivial, but aarch64, ia64 and riscv
    need a little more work.  aarch64 sys/ucontext.h (now bits/ucontext.h)
    was including sys/procfs.h for the definition of elf_greg_t etc;
    the simplest fix is to have it include bits/procfs.h instead (and then
    that needs to include sys/user.h for user_regs_struct).  This is not
    ideal but fixing it properly would require disentangling all of the
    debugger interface headers which is more than Iâ??m up for at the moment.
    
    ia64 bits/ptrace.h and bits/procfs.h were both including
    bits/sigcontext.h, which is only licensed to be included from
    signal.h.  (Iâ??m not sure how this ever worked, or why it broke with
    this patch and not some previous one.)  This is fixed by creating
    another single-type header, bits/types/__ia64_fpreg.h, which provides
    the only thing they need from bits/sigcontext.h.
    
    s/u/s/l/riscv/makecontext.c was defining makecontext with a function
    head that didnâ??t agree with its official prototype (in ucontext.h);
    formerly that file did not include ucontext.h, only sys/ucontext.h,
    so we were getting away with it, but itâ??s still wrong.  Making the
    function head match the prototype actually simplifies the code.
    
    	* sysdeps/generic/sys/ucontext.h: Move to top level bits/ucontext.h.
    	Adjust multiple inclusion guard.
    	* sysdeps/arm/sys/ucontext.h: Move to sysdeps/arm/bits/ucontext.h.
    	Adjust multiple inclusion guard.
    	* sysdeps/i386/sys/ucontext.h: Similarly.
    	* sysdeps/m68k/sys/ucontext.h: Similarly.
    	* sysdeps/mips/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/csky/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/riscv/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Similarly.
    	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Similarly.
    	* stdlib/Makefile: Install bits/ucontext.h.
    
    	* stdlib/sys/ucontext.h: New backward compatibility stub header,
    	includes ucontext.h.
    	* include/sys/ucontext.h: New wrapper.
    
    	* sysdeps/unix/sysv/linux/aarch64/bits/procfs.h: Allow inclusion
    	by bits/ucontext.h as well as sys/procfs.h.  Include sys/user.h.
    	* sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h: Include
    	bits/procfs.h instead of sys/procfs.h.
    
    	* sysdeps/unix/sysv/linux/ia64/bits/types/__ia64_fpreg.h:
    	New file, contents factored out of ia64/bits/sigcontext.h and
    	ia64/bits/ucontext.h.
    	* sysdeps/unix/sysv/linux/ia64/Makefile:
    	Install bits/types/__ia64_fpreg.h.  Merge subdir=misc blocks.
    	* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
    	* sysdeps/unix/sysv/linux/ia64/bits/ucontext.h:
    	Include bits/types/__ia64_fpreg.h for struct ia64_fpreg.
    
    	* sysdeps/unix/sysv/linux/ia64/bits/procfs.h:
    	Include bits/types/__ia64_fpreg.h for struct ia64_fpreg.
    	Donâ??t include bits/sigcontext.h or bits/ucontext.h.
    	* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h:
    	Donâ??t include bits/sigcontext.h.
    
    	* sysdeps/unix/sysv/linux/riscv/makecontext.c: Include
    	ucontext.h, not sys/ucontext.h. Correct function head to match
    	prototype in ucontext.h.  Use va_arg to retrieve all arguments
    	past argc.
    
    	* sysdeps/unix/sysv/linux/s390/tst-ptrace-singleblock.c:
    	Sort list of includes.
    
    	* signal/signal.h, stdlib/ucontext.h
    	* sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h
    	* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
    	* sysdeps/unix/sysv/linux/riscv/bits/procfs.h
    	* sysdeps/unix/sysv/linux/s390/bits/procfs.h:
    	Include bits/ucontext.h, not sys/ucontext.h.
    
    	* sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
    	* sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
    	* sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h
    	* sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h:
    	Include signal.h, not sys/ucontext.h.
    
    	* sysdeps/unix/sysv/linux/arm/register-dump.h
    	* sysdeps/unix/sysv/linux/csky/register-dump.h:
    	Include ucontext.h, not sys/ucontext.h.
    
    	* sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
    	* sysdeps/unix/sysv/linux/arm/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/csky/abiv2/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/hppa/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/i386/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym
    	* sysdeps/unix/sysv/linux/m68k/m680x0/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/mips/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/nios2/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/riscv/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/s390/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/sparc/sparc32/ucontext_i.sym
    	* sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym:
    	Include stddef.h and signal.h; donâ??t include any other headers.
    
    	* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES)
    	(SYSDEP_ALLOWED_INCLUDES): Update.
    
    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    #
    # Date:      Tue Jun 11 13:05:02 2019 -0400
    #
    # On branch after-amend
    # Changes to be committed:
    #	renamed:    sysdeps/generic/sys/ucontext.h -> bits/ucontext.h
    #	new file:   include/sys/ucontext.h
    #	modified:   scripts/check-obsolete-constructs.py
    #	modified:   signal/signal.h
    #	modified:   stdlib/Makefile
    #	new file:   stdlib/sys/ucontext.h
    #	modified:   stdlib/ucontext.h
    #	renamed:    sysdeps/arm/sys/ucontext.h -> sysdeps/arm/bits/ucontext.h
    #	renamed:    sysdeps/i386/sys/ucontext.h -> sysdeps/i386/bits/ucontext.h
    #	renamed:    sysdeps/m68k/sys/ucontext.h -> sysdeps/m68k/bits/ucontext.h
    #	renamed:    sysdeps/mips/sys/ucontext.h -> sysdeps/mips/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/aarch64/bits/procfs.h
    #	renamed:    sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h -> sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
    #	modified:   sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h
    #	renamed:    sysdeps/unix/sysv/linux/alpha/sys/ucontext.h -> sysdeps/unix/sysv/linux/alpha/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
    #	renamed:    sysdeps/unix/sysv/linux/arm/sys/ucontext.h -> sysdeps/unix/sysv/linux/arm/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/arm/register-dump.h
    #	modified:   sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
    #	modified:   sysdeps/unix/sysv/linux/arm/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/csky/abiv2/ucontext_i.sym
    #	renamed:    sysdeps/unix/sysv/linux/csky/sys/ucontext.h -> sysdeps/unix/sysv/linux/csky/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/csky/register-dump.h
    #	renamed:    sysdeps/unix/sysv/linux/hppa/sys/ucontext.h -> sysdeps/unix/sysv/linux/hppa/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/hppa/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/i386/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/ia64/Makefile
    #	modified:   sysdeps/unix/sysv/linux/ia64/bits/procfs.h
    #	modified:   sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
    #	new file:   sysdeps/unix/sysv/linux/ia64/bits/types/__ia64_fpreg.h
    #	renamed:    sysdeps/unix/sysv/linux/ia64/sys/ucontext.h -> sysdeps/unix/sysv/linux/ia64/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym
    #	modified:   sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
    #	renamed:    sysdeps/unix/sysv/linux/m68k/sys/ucontext.h -> sysdeps/unix/sysv/linux/m68k/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/m68k/m680x0/ucontext_i.sym
    #	renamed:    sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h -> sysdeps/unix/sysv/linux/microblaze/bits/ucontext.h
    #	renamed:    sysdeps/unix/sysv/linux/mips/sys/ucontext.h -> sysdeps/unix/sysv/linux/mips/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/mips/ucontext_i.sym
    #	renamed:    sysdeps/unix/sysv/linux/nios2/sys/ucontext.h -> sysdeps/unix/sysv/linux/nios2/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h
    #	modified:   sysdeps/unix/sysv/linux/nios2/ucontext_i.sym
    #	renamed:    sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h -> sysdeps/unix/sysv/linux/powerpc/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/riscv/bits/procfs.h
    #	renamed:    sysdeps/unix/sysv/linux/riscv/sys/ucontext.h -> sysdeps/unix/sysv/linux/riscv/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/riscv/makecontext.c
    #	modified:   sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h
    #	modified:   sysdeps/unix/sysv/linux/riscv/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/s390/bits/procfs.h
    #	renamed:    sysdeps/unix/sysv/linux/s390/sys/ucontext.h -> sysdeps/unix/sysv/linux/s390/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/s390/tst-ptrace-singleblock.c
    #	modified:   sysdeps/unix/sysv/linux/s390/ucontext_i.sym
    #	renamed:    sysdeps/unix/sysv/linux/sh/sys/ucontext.h -> sysdeps/unix/sysv/linux/sh/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym
    #	modified:   sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym
    #	renamed:    sysdeps/unix/sysv/linux/sparc/sys/ucontext.h -> sysdeps/unix/sysv/linux/sparc/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/sparc/sparc32/ucontext_i.sym
    #	renamed:    sysdeps/unix/sysv/linux/x86/sys/ucontext.h -> sysdeps/unix/sysv/linux/x86/bits/ucontext.h
    #	modified:   sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym
    #

Diff:
---
 scripts/check-obsolete-constructs.py            | 3 ++-
 sysdeps/unix/sysv/linux/aarch64/bits/procfs.h   | 3 ++-
 sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h | 2 +-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index e142818..997b73b 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -667,7 +667,8 @@ SYSDEP_ALLOWED_INCLUDES = {
         "bits/ioctls.h":           [ "asm/ioctls.h", "linux/sockios.h" ],
         "bits/local_lim.h":        [ "linux/limits.h" ],
         "bits/param.h":            [ "linux/limits.h", "linux/param.h" ],
-        "bits/procfs.h":           [ "asm/elf.h", "asm/ptrace.h" ],
+        "bits/procfs.h":           [ "asm/elf.h", "asm/ptrace.h",
+                                     "sys/user.h" ],
         "bits/sigcontext.h":       [ "asm/sigcontext.h" ],
         "bits/socket.h":           [ "asm/socket.h" ],
     },
diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h b/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h
index fec2f6a..9603b02 100644
--- a/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h
+++ b/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h
@@ -20,11 +20,12 @@
 #ifndef _BITS_PROCFS_H
 #define _BITS_PROCFS_H 1
 
-#ifndef _SYS_PROCFS_H
+#if !defined _SYS_PROCFS_H && !defined _BITS_UCONTEXT_H
 # error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
 #endif
 
 #include <bits/types.h>
+#include <sys/user.h>
 
 /* Type for a general-purpose register.  */
 typedef __uint64_t elf_greg_t;
diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h
index 00df592..7be5302 100644
--- a/sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h
+++ b/sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h
@@ -33,7 +33,7 @@
 #endif
 
 #ifdef __USE_MISC
-# include <sys/procfs.h>
+# include <bits/procfs.h>
 
 
 typedef elf_greg_t greg_t;


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