Remove tilegx port

Message ID alpine.DEB.2.20.1804271534430.17705@digraph.polyomino.org.uk
State New, archived
Headers

Commit Message

Joseph Myers April 27, 2018, 3:36 p.m. UTC
  Since tile support has been removed from the Linux kernel for 4.17,
this patch removes the (unmaintained) port to tilegx from glibc (the
tilepro support having been previously removed).  This reflects the
general principle that a glibc port needs upstream support for the
architecture in all the components it build-depends on (so binutils,
GCC and the Linux kernel, for the normal case of a port supporting the
Linux kernel but no other OS), in order to be maintainable.

Apart from removal of sysdeps/tile and sysdeps/unix/sysv/linux/tile
(omitted from the diffs below), there are updates to various comments
referencing tile for which removal of those references seemed
appropriate.  The configuration is removed from README and from
build-many-glibcs.py.  contrib.texi keeps mention of removed
contributions, but I updated Chris Metcalf's entry to reflect that he
also contributed the non-removed support for the generic Linux kernel
syscall interface.  __ASSUME_FADVISE64_64_NO_ALIGN support is removed,
as it was only used by tile.

2018-04-27  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/tile: Remove.
	* sysdeps/unix/sysv/linux/tile: Likewise.
	* README (tilegx-*-linux-gnu): Remove from list of supported
	configurations.
	* manual/contrib.texi (Contributors): Mention Chris Metcalf's
	contribution of support for generic Linux kernel syscall
	interface.
	* scripts/build-many-glibcs.py (Context.add_all_configs): Remove
	tilegx configurations.
	(Config.install_linux_headers): Do not handle tile.
	* sysdeps/unix/sysv/linux/aarch64/ldsodefs.h: Do not mention Tile
	in comment.
	* sysdeps/unix/sysv/linux/nios2/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/posix_fadvise.c: Likewise.
	[__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove
	conditional undefine and redefine.
	* sysdeps/unix/sysv/linux/posix_fadvise64.c: Do not mention Tile
	in comment.
	[__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove
	conditional undefine and redefine.
  

Comments

Adhemerval Zanella April 27, 2018, 4:19 p.m. UTC | #1
On 27/04/2018 12:36, Joseph Myers wrote:
> Since tile support has been removed from the Linux kernel for 4.17,
> this patch removes the (unmaintained) port to tilegx from glibc (the
> tilepro support having been previously removed).  This reflects the
> general principle that a glibc port needs upstream support for the
> architecture in all the components it build-depends on (so binutils,
> GCC and the Linux kernel, for the normal case of a port supporting the
> Linux kernel but no other OS), in order to be maintainable.
> 
> Apart from removal of sysdeps/tile and sysdeps/unix/sysv/linux/tile
> (omitted from the diffs below), there are updates to various comments
> referencing tile for which removal of those references seemed
> appropriate.  The configuration is removed from README and from
> build-many-glibcs.py.  contrib.texi keeps mention of removed
> contributions, but I updated Chris Metcalf's entry to reflect that he
> also contributed the non-removed support for the generic Linux kernel
> syscall interface.  __ASSUME_FADVISE64_64_NO_ALIGN support is removed,
> as it was only used by tile.
> 
> 2018-04-27  Joseph Myers  <joseph@codesourcery.com>
> 
> 	* sysdeps/tile: Remove.
> 	* sysdeps/unix/sysv/linux/tile: Likewise.
> 	* README (tilegx-*-linux-gnu): Remove from list of supported
> 	configurations.
> 	* manual/contrib.texi (Contributors): Mention Chris Metcalf's
> 	contribution of support for generic Linux kernel syscall
> 	interface.
> 	* scripts/build-many-glibcs.py (Context.add_all_configs): Remove
> 	tilegx configurations.
> 	(Config.install_linux_headers): Do not handle tile.
> 	* sysdeps/unix/sysv/linux/aarch64/ldsodefs.h: Do not mention Tile
> 	in comment.
> 	* sysdeps/unix/sysv/linux/nios2/Makefile: Likewise.
> 	* sysdeps/unix/sysv/linux/posix_fadvise.c: Likewise.
> 	[__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove
> 	conditional undefine and redefine.
> 	* sysdeps/unix/sysv/linux/posix_fadvise64.c: Do not mention Tile
> 	in comment.
> 	[__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove
> 	conditional undefine and redefine.

LGTM.

> 
> diff --git a/NEWS b/NEWS
> index 3d6b2c8..363e918 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -57,6 +57,8 @@ Deprecated and removed features, and other changes affecting compatibility:
>    these macros should first include <sys/types.h>, and then include
>    <sys/sysmacros.h> if __GNU_LIBRARY__ is defined.
>  
> +* The tilegx*-*-linux-gnu configurations are no longer supported.
> +
>  Changes to build and runtime requirements:
>  
>    [Add changes to build and runtime requirements here]

Ok.

> diff --git a/README b/README
> index 2874505..27a9fd4 100644
> --- a/README
> +++ b/README
> @@ -41,7 +41,6 @@ The GNU C Library supports these configurations for using Linux kernels:
>  	sh[34]-*-linux-gnu
>  	sparc*-*-linux-gnu
>  	sparc64*-*-linux-gnu
> -	tilegx-*-linux-gnu
>  
>  If you are interested in doing a port, please contact the glibc
>  maintainers; see http://www.gnu.org/software/libc/ for more

Ok.

> diff --git a/manual/contrib.texi b/manual/contrib.texi
> index 0da6dcb..dd28e92 100644
> --- a/manual/contrib.texi
> +++ b/manual/contrib.texi
> @@ -265,7 +265,8 @@ version 3 (@code{i386-sequent-bsd}).
>  @item
>  Chris Metcalf for the port to Linux/Tile
>  (@code{tilegx-@var{anything}-linux} and
> -@code{tilepro-@var{anything}-linux}).
> +@code{tilepro-@var{anything}-linux}) and support for the generic Linux
> +kernel syscall interface used by several newer ports.
>  
>  @item
>  David Miller for contributing the port to Linux/Sparc
> diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
> index f911b20..19411c1 100755
> --- a/scripts/build-many-glibcs.py
> +++ b/scripts/build-many-glibcs.py
> @@ -376,14 +376,6 @@ class Context(object):
>                                         'arch': 'sparcv9',
>                                         'ccopts': '-m32 -mlong-double-128',
>                                         'cfg': ['--disable-multi-arch']}])
> -        self.add_config(arch='tilegx',
> -                        os_name='linux-gnu',
> -                        glibcs=[{},
> -                                {'variant': '32', 'ccopts': '-m32'}])
> -        self.add_config(arch='tilegxbe',
> -                        os_name='linux-gnu',
> -                        glibcs=[{},
> -                                {'variant': '32', 'ccopts': '-m32'}])
>          self.add_config(arch='x86_64',
>                          os_name='linux-gnu',
>                          gcc_cfg=['--with-multilib-list=m64,m32,mx32'],
> @@ -1271,7 +1263,6 @@ class Config(object):
>                      'riscv64': 'riscv',
>                      'sh': 'sh',
>                      'sparc': 'sparc',
> -                    'tile': 'tile',
>                      'x86_64': 'x86'}
>          linux_arch = None
>          for k in arch_map:

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h b/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h
> index 2f2f973..ff88292 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h
> +++ b/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h
> @@ -1,4 +1,5 @@
> -/* Run-time dynamic linker data structures for loaded ELF shared objects. Tile.
> +/* Run-time dynamic linker data structures for loaded ELF shared objects.
> +   AArch64 version.
>     Copyright (C) 2001-2018 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
>  

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/Makefile b/sysdeps/unix/sysv/linux/nios2/Makefile
> index d0af9ec..20910fa 100644
> --- a/sysdeps/unix/sysv/linux/nios2/Makefile
> +++ b/sysdeps/unix/sysv/linux/nios2/Makefile
> @@ -3,7 +3,7 @@ gen-as-const-headers += ucontext_i.sym
>  endif
>  
>  ifeq ($(subdir),misc)
> -# MIPS/Tile-style cacheflush routine
> +# MIPS-style cacheflush routine
>  sysdep_headers += sys/cachectl.h
>  sysdep_routines += cacheflush
>  endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/posix_fadvise.c b/sysdeps/unix/sysv/linux/posix_fadvise.c
> index 08ccc22..d676a68 100644
> --- a/sysdeps/unix/sysv/linux/posix_fadvise.c
> +++ b/sysdeps/unix/sysv/linux/posix_fadvise.c
> @@ -31,9 +31,8 @@
>     (redefined to __NR_fadvise64_64 in kernel-features.h) that behaves as
>     __NR_fadvise64_64 (without the aligment argument required for the ABI).
>  
> -   Third option will be used by both tile 32-bits and mips o32.  Tile
> -   will set __ASSUME_FADVISE64_64_NO_ALIGN to issue a 6 argument syscall,
> -   while mips will use a 7 argument one with __NR_fadvise64.
> +   Third option will be used by mips o32.  Mips will use a 7 argument
> +   syscall with __NR_fadvise64.
>  
>     s390 implements fadvice64_64 using a specific struct with arguments
>     packed inside.  This is the only implementation handled in arch-specific
> @@ -53,11 +52,6 @@ posix_fadvise (int fd, off_t offset, off_t len, int advise)
>  				   SYSCALL_LL (offset), SYSCALL_LL (len));
>  #  else
>  
> -#   ifdef __ASSUME_FADVISE64_64_NO_ALIGN
> -#    undef __ALIGNMENT_ARG
> -#    define __ALIGNMENT_ARG
> -#   endif
> -
>  #   ifndef __NR_fadvise64_64
>  #    define __NR_fadvise64_64 __NR_fadvise64
>  #   endif

Ok.

> diff --git a/sysdeps/unix/sysv/linux/posix_fadvise64.c b/sysdeps/unix/sysv/linux/posix_fadvise64.c
> index eebf10c..61dfe89 100644
> --- a/sysdeps/unix/sysv/linux/posix_fadvise64.c
> +++ b/sysdeps/unix/sysv/linux/posix_fadvise64.c
> @@ -26,18 +26,10 @@ libc_hidden_proto (__posix_fadvise64_l64)
>     just after 'fd' to avoid the requirement of implementing 7-arg syscalls.
>     ARM also defines __NR_fadvise64_64 as __NR_arm_fadvise64_64.
>  
> -   tile requires __ASSUME_ALIGNED_REGISTER_PAIRS but implements the 32-bit
> -   fadvise64_64 without the padding 0 after fd.
> -
>     s390 implements fadvice64_64 using a specific struct with arguments
>     packed inside.  This is the only implementation handled in arch-specific
>     code.  */
>  
> -#ifdef __ASSUME_FADVISE64_64_NO_ALIGN
> -# undef __ALIGNMENT_ARG
> -# define __ALIGNMENT_ARG
> -#endif
> -
>  #ifndef __NR_fadvise64_64
>  # define __NR_fadvise64_64 __NR_fadvise64
>  #endif
> 

Ok.
  
Jeff Law April 27, 2018, 5:26 p.m. UTC | #2
On 04/27/2018 09:36 AM, Joseph Myers wrote:
> Since tile support has been removed from the Linux kernel for 4.17,
> this patch removes the (unmaintained) port to tilegx from glibc (the
> tilepro support having been previously removed).  This reflects the
> general principle that a glibc port needs upstream support for the
> architecture in all the components it build-depends on (so binutils,
> GCC and the Linux kernel, for the normal case of a port supporting the
> Linux kernel but no other OS), in order to be maintainable.
> 
> Apart from removal of sysdeps/tile and sysdeps/unix/sysv/linux/tile
> (omitted from the diffs below), there are updates to various comments
> referencing tile for which removal of those references seemed
> appropriate.  The configuration is removed from README and from
> build-many-glibcs.py.  contrib.texi keeps mention of removed
> contributions, but I updated Chris Metcalf's entry to reflect that he
> also contributed the non-removed support for the generic Linux kernel
> syscall interface.  __ASSUME_FADVISE64_64_NO_ALIGN support is removed,
> as it was only used by tile.
Given tilegx/tilepro removal from the kernel and glibc, should we go
ahead and deprecate them in GCC?  The only tilegx/tilepro configurations
are -linux.

Jeff
  
Richard Biener April 27, 2018, 5:42 p.m. UTC | #3
On April 27, 2018 7:26:19 PM GMT+02:00, Jeff Law <law@redhat.com> wrote:
>On 04/27/2018 09:36 AM, Joseph Myers wrote:
>> Since tile support has been removed from the Linux kernel for 4.17,
>> this patch removes the (unmaintained) port to tilegx from glibc (the
>> tilepro support having been previously removed).  This reflects the
>> general principle that a glibc port needs upstream support for the
>> architecture in all the components it build-depends on (so binutils,
>> GCC and the Linux kernel, for the normal case of a port supporting
>the
>> Linux kernel but no other OS), in order to be maintainable.
>> 
>> Apart from removal of sysdeps/tile and sysdeps/unix/sysv/linux/tile
>> (omitted from the diffs below), there are updates to various comments
>> referencing tile for which removal of those references seemed
>> appropriate.  The configuration is removed from README and from
>> build-many-glibcs.py.  contrib.texi keeps mention of removed
>> contributions, but I updated Chris Metcalf's entry to reflect that he
>> also contributed the non-removed support for the generic Linux kernel
>> syscall interface.  __ASSUME_FADVISE64_64_NO_ALIGN support is
>removed,
>> as it was only used by tile.
>Given tilegx/tilepro removal from the kernel and glibc, should we go
>ahead and deprecate them in GCC?  The only tilegx/tilepro
>configurations
>are -linux.

Makes sense to me. Let's deprecate it for GCC 8 and remove from trunk. 

Richard. 

>Jeff
  

Patch

diff --git a/NEWS b/NEWS
index 3d6b2c8..363e918 100644
--- a/NEWS
+++ b/NEWS
@@ -57,6 +57,8 @@  Deprecated and removed features, and other changes affecting compatibility:
   these macros should first include <sys/types.h>, and then include
   <sys/sysmacros.h> if __GNU_LIBRARY__ is defined.
 
+* The tilegx*-*-linux-gnu configurations are no longer supported.
+
 Changes to build and runtime requirements:
 
   [Add changes to build and runtime requirements here]
diff --git a/README b/README
index 2874505..27a9fd4 100644
--- a/README
+++ b/README
@@ -41,7 +41,6 @@  The GNU C Library supports these configurations for using Linux kernels:
 	sh[34]-*-linux-gnu
 	sparc*-*-linux-gnu
 	sparc64*-*-linux-gnu
-	tilegx-*-linux-gnu
 
 If you are interested in doing a port, please contact the glibc
 maintainers; see http://www.gnu.org/software/libc/ for more
diff --git a/manual/contrib.texi b/manual/contrib.texi
index 0da6dcb..dd28e92 100644
--- a/manual/contrib.texi
+++ b/manual/contrib.texi
@@ -265,7 +265,8 @@  version 3 (@code{i386-sequent-bsd}).
 @item
 Chris Metcalf for the port to Linux/Tile
 (@code{tilegx-@var{anything}-linux} and
-@code{tilepro-@var{anything}-linux}).
+@code{tilepro-@var{anything}-linux}) and support for the generic Linux
+kernel syscall interface used by several newer ports.
 
 @item
 David Miller for contributing the port to Linux/Sparc
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index f911b20..19411c1 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -376,14 +376,6 @@  class Context(object):
                                        'arch': 'sparcv9',
                                        'ccopts': '-m32 -mlong-double-128',
                                        'cfg': ['--disable-multi-arch']}])
-        self.add_config(arch='tilegx',
-                        os_name='linux-gnu',
-                        glibcs=[{},
-                                {'variant': '32', 'ccopts': '-m32'}])
-        self.add_config(arch='tilegxbe',
-                        os_name='linux-gnu',
-                        glibcs=[{},
-                                {'variant': '32', 'ccopts': '-m32'}])
         self.add_config(arch='x86_64',
                         os_name='linux-gnu',
                         gcc_cfg=['--with-multilib-list=m64,m32,mx32'],
@@ -1271,7 +1263,6 @@  class Config(object):
                     'riscv64': 'riscv',
                     'sh': 'sh',
                     'sparc': 'sparc',
-                    'tile': 'tile',
                     'x86_64': 'x86'}
         linux_arch = None
         for k in arch_map:
diff --git a/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h b/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h
index 2f2f973..ff88292 100644
--- a/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h
+++ b/sysdeps/unix/sysv/linux/aarch64/ldsodefs.h
@@ -1,4 +1,5 @@ 
-/* Run-time dynamic linker data structures for loaded ELF shared objects. Tile.
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+   AArch64 version.
    Copyright (C) 2001-2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
diff --git a/sysdeps/unix/sysv/linux/nios2/Makefile b/sysdeps/unix/sysv/linux/nios2/Makefile
index d0af9ec..20910fa 100644
--- a/sysdeps/unix/sysv/linux/nios2/Makefile
+++ b/sysdeps/unix/sysv/linux/nios2/Makefile
@@ -3,7 +3,7 @@  gen-as-const-headers += ucontext_i.sym
 endif
 
 ifeq ($(subdir),misc)
-# MIPS/Tile-style cacheflush routine
+# MIPS-style cacheflush routine
 sysdep_headers += sys/cachectl.h
 sysdep_routines += cacheflush
 endif
diff --git a/sysdeps/unix/sysv/linux/posix_fadvise.c b/sysdeps/unix/sysv/linux/posix_fadvise.c
index 08ccc22..d676a68 100644
--- a/sysdeps/unix/sysv/linux/posix_fadvise.c
+++ b/sysdeps/unix/sysv/linux/posix_fadvise.c
@@ -31,9 +31,8 @@ 
    (redefined to __NR_fadvise64_64 in kernel-features.h) that behaves as
    __NR_fadvise64_64 (without the aligment argument required for the ABI).
 
-   Third option will be used by both tile 32-bits and mips o32.  Tile
-   will set __ASSUME_FADVISE64_64_NO_ALIGN to issue a 6 argument syscall,
-   while mips will use a 7 argument one with __NR_fadvise64.
+   Third option will be used by mips o32.  Mips will use a 7 argument
+   syscall with __NR_fadvise64.
 
    s390 implements fadvice64_64 using a specific struct with arguments
    packed inside.  This is the only implementation handled in arch-specific
@@ -53,11 +52,6 @@  posix_fadvise (int fd, off_t offset, off_t len, int advise)
 				   SYSCALL_LL (offset), SYSCALL_LL (len));
 #  else
 
-#   ifdef __ASSUME_FADVISE64_64_NO_ALIGN
-#    undef __ALIGNMENT_ARG
-#    define __ALIGNMENT_ARG
-#   endif
-
 #   ifndef __NR_fadvise64_64
 #    define __NR_fadvise64_64 __NR_fadvise64
 #   endif
diff --git a/sysdeps/unix/sysv/linux/posix_fadvise64.c b/sysdeps/unix/sysv/linux/posix_fadvise64.c
index eebf10c..61dfe89 100644
--- a/sysdeps/unix/sysv/linux/posix_fadvise64.c
+++ b/sysdeps/unix/sysv/linux/posix_fadvise64.c
@@ -26,18 +26,10 @@  libc_hidden_proto (__posix_fadvise64_l64)
    just after 'fd' to avoid the requirement of implementing 7-arg syscalls.
    ARM also defines __NR_fadvise64_64 as __NR_arm_fadvise64_64.
 
-   tile requires __ASSUME_ALIGNED_REGISTER_PAIRS but implements the 32-bit
-   fadvise64_64 without the padding 0 after fd.
-
    s390 implements fadvice64_64 using a specific struct with arguments
    packed inside.  This is the only implementation handled in arch-specific
    code.  */
 
-#ifdef __ASSUME_FADVISE64_64_NO_ALIGN
-# undef __ALIGNMENT_ARG
-# define __ALIGNMENT_ARG
-#endif
-
 #ifndef __NR_fadvise64_64
 # define __NR_fadvise64_64 __NR_fadvise64
 #endif