Remove unused dl-procinfo.h

Message ID PAWPR08MB898269BDCD25C01EA5096A02832E2@PAWPR08MB8982.eurprd08.prod.outlook.com
State Under Review
Delegated to: Adhemerval Zanella Netto
Headers
Series Remove unused dl-procinfo.h |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
linaro-tcwg-bot/tcwg_glibc_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-arm success Test passed
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 success Test passed
redhat-pt-bot/TryBot-32bit success Build for i686

Commit Message

Wilco Dijkstra Nov. 25, 2024, 1:43 p.m. UTC
  Remove unused _dl_hwcap_string defines.  As a result many dl-procinfo.h headers
can be removed.  This also removes target specific _dl_procinfo implementations
which only printed HWCAP strings using dl_hwcap_string.

Passes buildmanyglibc, OK for commit?

---
  

Comments

Stefan Liebler Nov. 26, 2024, 3:44 p.m. UTC | #1
On 25.11.24 14:43, Wilco Dijkstra wrote:
> Remove unused _dl_hwcap_string defines.  As a result many dl-procinfo.h headers
> can be removed.  This also removes target specific _dl_procinfo implementations
> which only printed HWCAP strings using dl_hwcap_string.
I think removing unused _dl_hwcap_string defines is fine.
What is the idea behind not printing the HWCAP strings anymore?

Is the idea to remove the _dl_procinfo mechanism at all? I think powerpc
is the only leftover after your patch?

The _dl_procinfo versions for sparc, i386, s390 have not used
_dl_hwcap_string, but were removed. Instead those have just used the
dl_<arch>_cap_flags directly. Similar could also be done for arm.

If the intention is really to not print AT_HWCAP strings anymore, then
please also remove dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c.
I think _DL_HWCAP_COUNT can then also be removed (not only on s390).

Bye
Stefan
> 
> Passes buildmanyglibc, OK for commit?
> 
> ---
> 
> diff --git a/sysdeps/alpha/dl-procinfo.h b/sysdeps/alpha/dl-procinfo.h
> deleted file mode 100644
> index 8d17d42ce2da36be67e78a57c97b32ed02a57575..0000000000000000000000000000000000000000
> --- a/sysdeps/alpha/dl-procinfo.h
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/* Alpha version of processor capability information handling macros.
> -   Copyright (C) 2008-2024 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 _DL_PROCINFO_H
> -#define _DL_PROCINFO_H	1
> -
> -#include <ldsodefs.h>
> -
> -/* We cannot provide a general printing function.  */
> -#define _dl_procinfo(type, word) -1
> -
> -/* There are no hardware capabilities defined.  */
> -#define _dl_hwcap_string(idx) ""
> -
> -/* We don't have any hardware capabilities.  */
> -#define _DL_HWCAP_COUNT	0
> -
> -#endif /* dl-procinfo.h */
> diff --git a/sysdeps/csky/dl-procinfo.h b/sysdeps/csky/dl-procinfo.h
> deleted file mode 100644
> index f5f6343cf64b3448b28496934c6f7d07428c7280..0000000000000000000000000000000000000000
> --- a/sysdeps/csky/dl-procinfo.h
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -/* C-SKY version of processor capability information handling macros.
> -   Copyright (C) 2018-2024 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 _DL_PROCINFO_H
> -#define _DL_PROCINFO_H	1
> -
> -#include <ldsodefs.h>
> -
> -/* We cannot provide a general printing function.  */
> -#define _dl_procinfo(word, val) -1
> -
> -/* There are no hardware capabilities defined.  */
> -#define _dl_hwcap_string(idx) ""
> -
> -/* We don't have any hardware capabilities.  */
> -#define _DL_HWCAP_COUNT	0
> -
> -#endif /* dl-procinfo.h */
> diff --git a/sysdeps/generic/dl-procinfo.h b/sysdeps/generic/dl-procinfo.h
> index 93edfc00cb3830608d8715765cfa120cfe163d84..04d6fb00a202675aa6b895dd3b9c5a19ff68ca20 100644
> --- a/sysdeps/generic/dl-procinfo.h
> +++ b/sysdeps/generic/dl-procinfo.h
> @@ -22,10 +22,4 @@
>  /* We cannot provide a general printing function.  */
>  #define _dl_procinfo(type, word) -1
>  
> -/* There are no hardware capabilities defined.  */
> -#define _dl_hwcap_string(idx) ""
> -
> -/* We don't have any hardware capabilities.  */
> -#define _DL_HWCAP_COUNT 0
> -
>  #endif /* dl-procinfo.h */
> diff --git a/sysdeps/i386/dl-procinfo.c b/sysdeps/i386/dl-procinfo.c
> index e7c82414c01003e6d69769debac385f6ff77cbbb..fb82fbd7f11416173109938211bb807764d42453 100644
> --- a/sysdeps/i386/dl-procinfo.c
> +++ b/sysdeps/i386/dl-procinfo.c
> @@ -41,24 +41,5 @@
>  
>  #include <sysdeps/x86/dl-procinfo.c>
>  
> -#if !defined PROCINFO_DECL && defined SHARED
> -  ._dl_x86_cap_flags
> -#else
> -PROCINFO_CLASS const char _dl_x86_cap_flags[32][8]
> -#endif
> -#ifndef PROCINFO_DECL
> -= {
> -    "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
> -    "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov",
> -    "pat", "pse36", "pn", "clflush", "20", "dts", "acpi", "mmx",
> -    "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe"
> -  }
> -#endif
> -#if !defined SHARED || defined PROCINFO_DECL
> -;
> -#else
> -,
> -#endif
> -
>  #undef PROCINFO_DECL
>  #undef PROCINFO_CLASS
> diff --git a/sysdeps/mips/dl-procinfo.h b/sysdeps/mips/dl-procinfo.h
> deleted file mode 100644
> index af2616e1db61a1485cc32323c3e0b3a4cd898587..0000000000000000000000000000000000000000
> --- a/sysdeps/mips/dl-procinfo.h
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/* Mips version of processor capability information handling macros.
> -   Copyright (C) 2007-2024 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 _DL_PROCINFO_H
> -#define _DL_PROCINFO_H	1
> -
> -#include <ldsodefs.h>
> -
> -/* We cannot provide a general printing function.  */
> -#define _dl_procinfo(type, word) -1
> -
> -/* There are no hardware capabilities defined.  */
> -#define _dl_hwcap_string(idx) ""
> -
> -/* We don't have any hardware capabilities.  */
> -#define _DL_HWCAP_COUNT	0
> -
> -#endif /* dl-procinfo.h */
> diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h
> index 45dd11c189b48e0fba436cc57dcee6b290d5c08f..ea9356735aea2b5d0b96d6e51bdc8ed8b3a04250 100644
> --- a/sysdeps/s390/dl-procinfo.h
> +++ b/sysdeps/s390/dl-procinfo.h
> @@ -62,11 +62,4 @@ enum
>  /* We cannot provide a general printing function.  */
>  #define _dl_procinfo(type, word) -1
>  
> -static inline const char *
> -__attribute__ ((unused))
> -_dl_hwcap_string (int idx)
> -{
> -  return _dl_s390_cap_flags[idx];
> -};
> -
>  #endif /* dl-procinfo.h */
> diff --git a/sysdeps/sparc/dl-procinfo.h b/sysdeps/sparc/dl-procinfo.h
> deleted file mode 100644
> index 709178706c5a43a87d235ed40f1643e730135682..0000000000000000000000000000000000000000
> --- a/sysdeps/sparc/dl-procinfo.h
> +++ /dev/null
> @@ -1,55 +0,0 @@
> -/* Linux/sparc version of processor capability information handling macros.
> -   Copyright (C) 1999-2024 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 _DL_PROCINFO_H
> -#define _DL_PROCINFO_H	1
> -
> -#include <ldsodefs.h>
> -#include <sysdep.h>
> -
> -#define _DL_HWCAP_COUNT 28
> -
> -static inline int
> -__attribute__ ((unused))
> -_dl_procinfo (unsigned int type, unsigned long int word)
> -{
> -  int i;
> -
> -  /* Fallback to generic output mechanism.  */
> -  if (type != AT_HWCAP)
> -    return -1;
> -
> -  _dl_printf ("AT_HWCAP:   ");
> -
> -  for (i = 0; i < _DL_HWCAP_COUNT; ++i)
> -    if (word & (1 << i))
> -      _dl_printf (" %s", GLRO(dl_sparc_cap_flags)[i]);
> -
> -  _dl_printf ("\n");
> -
> -  return 0;
> -}
> -
> -static inline const char *
> -__attribute__ ((unused))
> -_dl_hwcap_string (int idx)
> -{
> -  return GLRO(dl_sparc_cap_flags)[idx];
> -};
> -
> -#endif /* dl-procinfo.h */
> diff --git a/sysdeps/sparc/dl-procinfo.c b/sysdeps/sparc/dl-procinfo.c
> deleted file mode 100644
> index 643fbd9ebf801cd0fff6a2b499c677153a601aa3..0000000000000000000000000000000000000000
> --- a/sysdeps/sparc/dl-procinfo.c
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -/* Data for Linux/sparc version of processor capability information.
> -   Copyright (C) 2002-2024 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/>.  */
> -
> -/* This information must be kept in sync with the _DL_HWCAP_COUNT
> -   definition in procinfo.h.
> -
> -   If anything should be added here check whether the size of each string
> -   is still ok with the given array size.
> -
> -   All the #ifdefs in the definitions ar equite irritating but
> -   necessary if we want to avoid duplicating the information.  There
> -   are three different modes:
> -
> -   - PROCINFO_DECL is defined.  This means we are only interested in
> -     declarations.
> -
> -   - PROCINFO_DECL is not defined:
> -
> -     + if SHARED is defined the file is included in an array
> -       initializer.  The .element = { ... } syntax is needed.
> -
> -     + if SHARED is not defined a normal array initialization is
> -       needed.
> -  */
> -
> -#ifndef PROCINFO_CLASS
> -#define PROCINFO_CLASS
> -#endif
> -
> -#if !defined PROCINFO_DECL && defined SHARED
> -  ._dl_sparc_cap_flags
> -#else
> -PROCINFO_CLASS const char _dl_sparc_cap_flags[28][11]
> -#endif
> -#ifndef PROCINFO_DECL
> -  = { "flush", "stbar", "swap", "muldiv", "v9", "ultra3", "v9v", "v9v2",
> -      "mul32", "div32", "fsmuld", "v8plus", "popc", "vis", "vis2",
> -      "ASIBlkInit", "fmaf", "vis3", "hpc", "random", "trans", "fjfmau",
> -      "ima", "cspare", "pause", "cbcond", "crypto", "adp" }
> -#endif
> -#if !defined SHARED || defined PROCINFO_DECL
> -;
> -#else
> -,
> -#endif
> -
> -#undef PROCINFO_DECL
> -#undef PROCINFO_CLASS
> diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
> deleted file mode 100644
> index b85d4ad8a32e41fb6f884517108f806ad62bf93b..0000000000000000000000000000000000000000
> --- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -/* Processor capability information handling macros - aarch64 version.
> -   Copyright (C) 2017-2024 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 _DL_PROCINFO_H
> -#define _DL_PROCINFO_H	1
> -
> -#include <sys/auxv.h>
> -#include <unistd.h>
> -#include <ldsodefs.h>
> -#include <sysdep.h>
> -
> -/* We cannot provide a general printing function.  */
> -#define _dl_procinfo(type, word) -1
> -
> -static inline const char *
> -__attribute__ ((unused))
> -_dl_hwcap_string (int idx)
> -{
> -  return (unsigned)idx < _DL_HWCAP_COUNT ? GLRO(dl_aarch64_cap_flags)[idx] : "";
> -};
> -
> -#endif /* dl-procinfo.h */
> diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
> index 7af232de523e8e2cc95554a49fcf26842ad7ecaa..f303d7ab47903af547b05436c473eea1df9be5e2 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
> +++ b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
> @@ -56,27 +56,5 @@ PROCINFO_CLASS struct cpu_features _dl_aarch64_cpu_features
>  # endif
>  #endif
>  
> -/* Number of HWCAP bits set.  */
> -#define _DL_HWCAP_COUNT 32
> -
> -#if !defined PROCINFO_DECL && defined SHARED
> -  ._dl_aarch64_cap_flags
> -#else
> -PROCINFO_CLASS const char _dl_aarch64_cap_flags[_DL_HWCAP_COUNT][10]
> -#endif
> -#ifndef PROCINFO_DECL
> -/* Matches the names in arch/arm64/kernel/cpuinfo.c of Linux.  */
> -= { "fp", "asimd", "evtstrm", "aes", "pmull", "sha1", "sha2", "crc32",
> -    "atomics", "fphp", "asimdhp", "cpuid", "asimdrdm", "jscvt", "fcma",
> -    "lrcpc", "dcpop", "sha3", "sm3", "sm4", "asimddp", "sha512", "sve",
> -    "asimdfhm", "dit", "uscat", "ilrcpc", "flagm", "ssbs", "sb", "paca",
> -    "pacg" }
> -#endif
> -#if !defined SHARED || defined PROCINFO_DECL
> -;
> -#else
> -,
> -#endif
> -
>  #undef PROCINFO_DECL
>  #undef PROCINFO_CLASS
> diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
> deleted file mode 100644
> index 7d26216718d3b0bee35b16c62ff08a2e3bdbe873..0000000000000000000000000000000000000000
> --- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -/* Linux/ARM version of processor capability information handling macros.
> -   Copyright (C) 2001-2024 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 _DL_PROCINFO_H
> -#define _DL_PROCINFO_H	1
> -
> -#include <ldsodefs.h>
> -#include <sysdep.h>
> -
> -#define _DL_HWCAP_COUNT 27
> -
> -/* Low 28 bits are allocated in HWCAP.  */
> -#define _DL_HWCAP_LAST		27
> -
> -/* Low 7 bits are allocated in HWCAP2.  */
> -#define _DL_HWCAP2_LAST		6
> -
> -
> -static inline const char *
> -__attribute__ ((unused))
> -_dl_hwcap_string (int idx)
> -{
> -  return GLRO(dl_arm_cap_flags)[idx];
> -};
> -
> -static inline int
> -__attribute__ ((unused))
> -_dl_procinfo (unsigned int type, unsigned long int word)
> -{
> -  switch(type)
> -    {
> -    case AT_HWCAP:
> -      _dl_printf ("AT_HWCAP:       ");
> -
> -      for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
> -	if (word & (1 << i))
> -	  _dl_printf (" %s", _dl_hwcap_string (i));
> -      break;
> -    case AT_HWCAP2:
> -      {
> -	unsigned int offset = _DL_HWCAP_LAST + 1;
> -
> -	_dl_printf ("AT_HWCAP2:      ");
> -
> -	for (int i = 0; i <= _DL_HWCAP2_LAST; ++i)
> -	  if (word & (1 << i))
> -	    _dl_printf (" %s", _dl_hwcap_string (offset + i));
> -	break;
> -      }
> -    default:
> -      /* Fallback to generic output mechanism.  */
> -      return -1;
> -    }
> -  _dl_printf ("\n");
> -  return 0;
> -}
> -
> -#endif /* dl-procinfo.h */
> diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.c b/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
> deleted file mode 100644
> index ad18a8ce8f1dd1a202e03ec3f15da23d436cac15..0000000000000000000000000000000000000000
> --- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
> +++ /dev/null
> @@ -1,66 +0,0 @@
> -/* Data for Linux/ARM version of processor capability information.
> -   Copyright (C) 2001-2024 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/>.  */
> -
> -/* This information must be kept in sync with the _DL_HWCAP_COUNT and
> -   _DL_PLATFORM_COUNT definitions in procinfo.h.
> -
> -   If anything should be added here check whether the size of each string
> -   is still ok with the given array size.
> -
> -   All the #ifdefs in the definitions are quite irritating but
> -   necessary if we want to avoid duplicating the information.  There
> -   are three different modes:
> -
> -   - PROCINFO_DECL is defined.  This means we are only interested in
> -     declarations.
> -
> -   - PROCINFO_DECL is not defined:
> -
> -     + if SHARED is defined the file is included in an array
> -       initializer.  The .element = { ... } syntax is needed.
> -
> -     + if SHARED is not defined a normal array initialization is
> -       needed.
> -  */
> -
> -#ifndef PROCINFO_CLASS
> -#define PROCINFO_CLASS
> -#endif
> -
> -#if !defined PROCINFO_DECL && defined SHARED
> -  ._dl_arm_cap_flags
> -#else
> -PROCINFO_CLASS const char _dl_arm_cap_flags[35][10]
> -#endif
> -#ifndef PROCINFO_DECL
> -= {
> -    "swp", "half", "thumb", "26bit", "fastmult", "fpa", "vfp", "edsp",
> -    "java", "iwmmxt", "crunch", "thumbee", "neon", "vfpv3", "vfpv3d16",
> -    "tls", "vfpv4", "idiva", "idivt", "vfpd32", "lpae", "evtstrm",
> -    "fphp", "asimdhp", "asimddp", "asimdfhm", "asimdbf16", "i8mm",
> -    "aes", "pmull", "sha1", "sha2", "crc32", "sb", "ssbs",
> -  }
> -#endif
> -#if !defined SHARED || defined PROCINFO_DECL
> -;
> -#else
> -,
> -#endif
> -
> -#undef PROCINFO_DECL
> -#undef PROCINFO_CLASS
> diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
> deleted file mode 100644
> index 3de8dea0df44086424524a9e58e4a455461fb74a..0000000000000000000000000000000000000000
> --- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -/* Linux/i386 version of processor capability information handling macros.
> -   Copyright (C) 1998-2024 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 _DL_I386_PROCINFO_H
> -#define _DL_I386_PROCINFO_H	1
> -#include <sysdeps/x86/dl-procinfo.h>
> -
> -#undef _dl_procinfo
> -static inline int
> -__attribute__ ((unused))
> -_dl_procinfo (unsigned int type, unsigned long int word)
> -{
> -  /* This table should match the information from arch/i386/kernel/setup.c
> -     in the kernel sources.  */
> -  int i;
> -
> -  /* Fallback to generic output mechanism.  */
> -  if (type != AT_HWCAP)
> -    return -1;
> -
> -  _dl_printf ("AT_HWCAP:   ");
> -
> -  for (i = 0; i < 32; ++i)
> -    if (word & (1 << i))
> -      _dl_printf (" %s", GLRO(dl_x86_cap_flags)[i]);
> -
> -  _dl_printf ("\n");
> -
> -  return 0;
> -}
> -#endif
> diff --git a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
> deleted file mode 100644
> index bcae03e93416648ee7e895ae0759c91f04bd3635..0000000000000000000000000000000000000000
> --- a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -/* Linux/s390 version of processor capability information handling macros.
> -   Copyright (C) 2006-2024 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 _DL_S390_PROCINFO_H
> -#define _DL_S390_PROCINFO_H	1
> -#include <sysdeps/s390/dl-procinfo.h>
> -#include <ldsodefs.h>
> -
> -
> -#undef _dl_procinfo
> -static inline int
> -__attribute__ ((unused))
> -_dl_procinfo (unsigned int type, unsigned long int word)
> -{
> -  /* This table should match the information from arch/s390/kernel/setup.c
> -     in the kernel sources.  */
> -  int i;
> -
> -  /* Fallback to generic output mechanism.  */
> -  if (type != AT_HWCAP)
> -    return -1;
> -
> -  _dl_printf ("AT_HWCAP:   ");
> -
> -  for (i = 0; i < _DL_HWCAP_COUNT; ++i)
> -    if (word & (1UL << i))
> -      _dl_printf (" %s", _dl_s390_cap_flags[i]);
> -
> -  _dl_printf ("\n");
> -
> -  return 0;
> -}
> -#endif
> diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
> deleted file mode 100644
> index 7b45fe4bf8675a16573764b316106c63401a5a45..0000000000000000000000000000000000000000
> --- a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -#if IS_IN (ldconfig)
> -# include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
> -#else
> -# include <sysdeps/x86/dl-procinfo.h>
> -#endif
> diff --git a/sysdeps/x86/dl-hwcap.h b/sysdeps/x86/dl-hwcap.h
> index 325f1c467ca77bf4f4c9d5aa4009b39bcea9592e..8c181e3cb3639932997da42252ccd690081284e7 100644
> --- a/sysdeps/x86/dl-hwcap.h
> +++ b/sysdeps/x86/dl-hwcap.h
> @@ -25,13 +25,6 @@ enum
>    HWCAP_X86_AVX512_1		= 1 << 2
>  };
>  
> -static inline const char *
> -__attribute__ ((unused))
> -_dl_hwcap_string (int idx)
> -{
> -  return GLRO(dl_x86_hwcap_flags)[idx];
> -};
> -
>  /* We cannot provide a general printing function.  */
>  #define _dl_procinfo(type, word) -1
>  
> diff --git a/sysdeps/x86/dl-procinfo.c b/sysdeps/x86/dl-procinfo.c
> index b791fd3e92ba53f7611e82d3fbbebc61fce34d7e..b6b8f7d24e8fca59c8066e7824ac61b0ad63f26d 100644
> --- a/sysdeps/x86/dl-procinfo.c
> +++ b/sysdeps/x86/dl-procinfo.c
> @@ -54,22 +54,6 @@ PROCINFO_CLASS struct cpu_features _dl_x86_cpu_features
>  # endif
>  #endif
>  
> -#if !defined PROCINFO_DECL && defined SHARED
> -  ._dl_x86_hwcap_flags
> -#else
> -PROCINFO_CLASS const char _dl_x86_hwcap_flags[3][9]
> -#endif
> -#ifndef PROCINFO_DECL
> -= {
> -    "sse2", "x86_64", "avx512_1"
> -  }
> -#endif
> -#if !defined SHARED || defined PROCINFO_DECL
> -;
> -#else
> -,
> -#endif
> -
>  #if defined SHARED && !IS_IN (ldconfig)
>  # if !defined PROCINFO_DECL
>    ._dl_x86_tlsdesc_dynamic
> 
>
  
Peter Bergner Nov. 26, 2024, 4:03 p.m. UTC | #2
On 11/26/24 9:44 AM, Stefan Liebler wrote:
> If the intention is really to not print AT_HWCAP strings anymore, then
> please also remove dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c.
> I think _DL_HWCAP_COUNT can then also be removed (not only on s390).

I hope that's not the intention, unless there is a replacement for
"LD_SHOW_AUXV=1 /bin/true" I don't know about.  I do this all the
time.

Peter
  
Adhemerval Zanella Nov. 26, 2024, 5:06 p.m. UTC | #3
On 26/11/24 13:03, Peter Bergner wrote:
> On 11/26/24 9:44 AM, Stefan Liebler wrote:
>> If the intention is really to not print AT_HWCAP strings anymore, then
>> please also remove dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c.
>> I think _DL_HWCAP_COUNT can then also be removed (not only on s390).
> 
> I hope that's not the intention, unless there is a replacement for
> "LD_SHOW_AUXV=1 /bin/true" I don't know about.  I do this all the
> time.
> 
> Peter

We discussed this briefly some time ago [1], and my take was this debug
information is not a hard requirement.  And it is not really consistent
over architectures where aarch64 defines dl_aarch64_cap_flags, but does not
add the debug print hook.

If you think we should really keep it, maybe then keep the removal of
the ones that are either empty (alpha, csky) or unused (aarch64, x86) along
with _dl_hwcap_string (which is unused since the glibc-hwcap), and
them move dl_<arch>_cap_flags out of _rtld_global and make it local 
to _dl_procinfo.

[1] https://sourceware.org/pipermail/libc-alpha/2024-November/161275.html
  
Stefan Liebler Nov. 28, 2024, 1:53 p.m. UTC | #4
On 26.11.24 18:06, Adhemerval Zanella Netto wrote:
> 
> 
> On 26/11/24 13:03, Peter Bergner wrote:
>> On 11/26/24 9:44 AM, Stefan Liebler wrote:
>>> If the intention is really to not print AT_HWCAP strings anymore, then
>>> please also remove dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c.
>>> I think _DL_HWCAP_COUNT can then also be removed (not only on s390).
>>
>> I hope that's not the intention, unless there is a replacement for
>> "LD_SHOW_AUXV=1 /bin/true" I don't know about.  I do this all the
>> time.
>>
>> Peter
> 
> We discussed this briefly some time ago [1], and my take was this debug
> information is not a hard requirement.  And it is not really consistent
> over architectures where aarch64 defines dl_aarch64_cap_flags, but does not
> add the debug print hook.
> 
> If you think we should really keep it, maybe then keep the removal of
> the ones that are either empty (alpha, csky) or unused (aarch64, x86) along
> with _dl_hwcap_string (which is unused since the glibc-hwcap), and
> them move dl_<arch>_cap_flags out of _rtld_global and make it local 
> to _dl_procinfo.
> 
> [1] https://sourceware.org/pipermail/libc-alpha/2024-November/161275.html

For s390, we've discussed it internally and we are fine with removing
the names. Thus if you do so, as already mentioned please also remove
dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c and the
_DL_HWCAP_COUNT definition.

Bye,
Stefan
  
Wilco Dijkstra Nov. 29, 2024, 5:22 p.m. UTC | #5
Hi Stefan,

> For s390, we've discussed it internally and we are fine with removing
> the names. Thus if you do so, as already mentioned please also remove
> dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c and the
> _DL_HWCAP_COUNT definition.

I've done that and also removed the duplicated HWCAP definitions in
sysdeps/s390/dl-procinfo.h (which allows its removal after adding a few
includes of sys/auxv.h - overall this seems better, but please check that's
fine). It passes buildmanyglibc.

Cheers,
Wilco


v2: Remove s390 dl-procinfo.h.

Remove unused _dl_hwcap_string defines.  As a result many dl-procinfo.h headers
can be removed.  This also removes target specific _dl_procinfo implementations
which only printed HWCAP strings using dl_hwcap_string.

Passes buildmanyglibc, OK for commit?

---

diff --git a/sysdeps/alpha/dl-procinfo.h b/sysdeps/alpha/dl-procinfo.h
deleted file mode 100644
index 8d17d42ce2da36be67e78a57c97b32ed02a57575..0000000000000000000000000000000000000000
--- a/sysdeps/alpha/dl-procinfo.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Alpha version of processor capability information handling macros.
-   Copyright (C) 2008-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT	0
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/csky/dl-procinfo.h b/sysdeps/csky/dl-procinfo.h
deleted file mode 100644
index f5f6343cf64b3448b28496934c6f7d07428c7280..0000000000000000000000000000000000000000
--- a/sysdeps/csky/dl-procinfo.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* C-SKY version of processor capability information handling macros.
-   Copyright (C) 2018-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(word, val) -1
-
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT	0
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/generic/dl-procinfo.h b/sysdeps/generic/dl-procinfo.h
index 93edfc00cb3830608d8715765cfa120cfe163d84..04d6fb00a202675aa6b895dd3b9c5a19ff68ca20 100644
--- a/sysdeps/generic/dl-procinfo.h
+++ b/sysdeps/generic/dl-procinfo.h
@@ -22,10 +22,4 @@
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT 0
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/i386/dl-procinfo.c b/sysdeps/i386/dl-procinfo.c
index e7c82414c01003e6d69769debac385f6ff77cbbb..fb82fbd7f11416173109938211bb807764d42453 100644
--- a/sysdeps/i386/dl-procinfo.c
+++ b/sysdeps/i386/dl-procinfo.c
@@ -41,24 +41,5 @@
 
 #include <sysdeps/x86/dl-procinfo.c>
 
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_x86_cap_flags
-#else
-PROCINFO_CLASS const char _dl_x86_cap_flags[32][8]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
-    "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov",
-    "pat", "pse36", "pn", "clflush", "20", "dts", "acpi", "mmx",
-    "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
 #undef PROCINFO_DECL
 #undef PROCINFO_CLASS
diff --git a/sysdeps/mips/dl-procinfo.h b/sysdeps/mips/dl-procinfo.h
deleted file mode 100644
index af2616e1db61a1485cc32323c3e0b3a4cd898587..0000000000000000000000000000000000000000
--- a/sysdeps/mips/dl-procinfo.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Mips version of processor capability information handling macros.
-   Copyright (C) 2007-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT	0
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/mips/dl-procinfo.c b/sysdeps/mips/dl-procinfo.c
deleted file mode 100644
index 6a1aaefef2ea9be87d258084d3fadcc6718e470f..0000000000000000000000000000000000000000
--- a/sysdeps/mips/dl-procinfo.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Data for Mips version of processor capability information.
-   Copyright (C) 2007-2024 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/>.  */
-
-/* Note:
-   When compiling elf/ldconfig.c, PROCINFO_CLASS is defined to static.
-   This dl-procinfo.c is included in sysdeps/generic/ldsodefs.h.
-   Afterwards, if not yet defined, PROCINFO_CLASS is defined to EXTERN
-   just before dl-vdso-setup.c is included.  A "static" _dl_vdso_xyz
-   function prototype would lead to gcc warnings/errors: defined but
-   not used.  */
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/s390/Makefile b/sysdeps/s390/Makefile
index b793b26112130ff8e9861c8ef1c93a991a86127b..985b4f25eef6a960a41ae404cdc18acc6b110fcb 100644
--- a/sysdeps/s390/Makefile
+++ b/sysdeps/s390/Makefile
@@ -43,7 +43,6 @@ $(modpfx)gconv-modules-s390.conf: ../sysdeps/s390/gconv-modules-s390.conf \
 endif
 
 ifeq ($(subdir),elf)
-sysdep-dl-routines += dl-procinfo-s390
 
 ifeq ($(build-shared),yes)
 tests += tst-dl-runtime-resolve-noaudit tst-dl-runtime-resolve-audit \
diff --git a/sysdeps/s390/cpu-features.c b/sysdeps/s390/cpu-features.c
index bc4ad601f1d1db87040798f1389a65996ca839c1..b7493d0d754889cdfa9398f92443d1a05e070ae8 100644
--- a/sysdeps/s390/cpu-features.c
+++ b/sysdeps/s390/cpu-features.c
@@ -17,7 +17,8 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <cpu-features.h>
-
+#include <ldsodefs.h>
+#include <sys/auxv.h>
 #include <elf/dl-tunables.h>
 #include <ifunc-memcmp.h>
 #include <string.h>
diff --git a/sysdeps/s390/dl-procinfo-s390.c b/sysdeps/s390/dl-procinfo-s390.c
deleted file mode 100644
index 652f6067a352b9ab4a047549a4889288725daeb7..0000000000000000000000000000000000000000
--- a/sysdeps/s390/dl-procinfo-s390.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Data for s390 version of processor capability information.
-   Copyright (C) 2006-2024 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/>.  */
-
-#include <dl-procinfo.h>
-
-const char _dl_s390_cap_flags[_DL_HWCAP_COUNT][9] =
-  {
-    "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "edat", "etf3eh",
-    "highgprs", "te", "vx", "vxd", "vxe", "gs", "vxe2", "vxp", "sort", "dflt",
-    "vxp2", "nnpa", "pcimio", "sie"
-  };
diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h
deleted file mode 100644
index 45dd11c189b48e0fba436cc57dcee6b290d5c08f..0000000000000000000000000000000000000000
--- a/sysdeps/s390/dl-procinfo.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* s390 version of processor capability information handling macros.
-   Copyright (C) 2006-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-#include <ldsodefs.h>
-
-#define _DL_HWCAP_COUNT 23
-extern const char _dl_s390_cap_flags[_DL_HWCAP_COUNT][9] attribute_hidden;
-
-/* Hardware capability bit numbers are derived directly from the
-   facility indications as stored by the "store facility list" (STFL)
-   instruction.
-   highgprs is an alien in that list.  It describes a *kernel*
-   capability.  */
-
-enum
-{
-  HWCAP_S390_ESAN3 = 1 << 0,
-  HWCAP_S390_ZARCH = 1 << 1,
-  HWCAP_S390_STFLE = 1 << 2,
-  HWCAP_S390_MSA = 1 << 3,
-  HWCAP_S390_LDISP = 1 << 4,
-  HWCAP_S390_EIMM = 1 << 5,
-  HWCAP_S390_DFP = 1 << 6,
-  HWCAP_S390_HPAGE = 1 << 7,
-  HWCAP_S390_ETF3EH = 1 << 8,
-  HWCAP_S390_HIGH_GPRS = 1 << 9,
-  HWCAP_S390_TE = 1 << 10,
-  HWCAP_S390_VX = 1 << 11,
-  HWCAP_S390_VXRS = HWCAP_S390_VX,
-  HWCAP_S390_VXD = 1 << 12,
-  HWCAP_S390_VXRS_BCD = HWCAP_S390_VXD,
-  HWCAP_S390_VXE = 1 << 13,
-  HWCAP_S390_VXRS_EXT = HWCAP_S390_VXE,
-  HWCAP_S390_GS = 1 << 14,
-  HWCAP_S390_VXRS_EXT2 = 1 << 15,
-  HWCAP_S390_VXRS_PDE = 1 << 16,
-  HWCAP_S390_SORT = 1 << 17,
-  HWCAP_S390_DFLT = 1 << 18,
-  HWCAP_S390_VXRS_PDE2 = 1 << 19,
-  HWCAP_S390_NNPA = 1 << 20,
-  HWCAP_S390_PCI_MIO = 1 << 21,
-  HWCAP_S390_SIE = 1 << 22,
-};
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return _dl_s390_cap_flags[idx];
-};
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/s390/dl-procinfo.c b/sysdeps/s390/dl-procinfo.c
index b6f446709cbeeeb1da692edd39f8c5b5896f768c..3c2d9eb066b4ae91a9d778d6be4950a30cf5aeb8 100644
--- a/sysdeps/s390/dl-procinfo.c
+++ b/sysdeps/s390/dl-procinfo.c
@@ -16,9 +16,6 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-/* The hwcap and platform strings are now in
-   sysdeps/s390/dl-procinfo-s390.c.  */
-
 /* Needed by sysdeps/unix/sysv/linux/dl-vdso-setup.c (as included from
    sysdeps/generic/ldsodefs.h).  */
 
diff --git a/sysdeps/s390/multiarch/ifunc-resolve.h b/sysdeps/s390/multiarch/ifunc-resolve.h
index 2a0c4a56a4a8b62737bed3fd01a727ffa21edfcc..f3aaec397af03005226fefadf63d74627ac6d56d 100644
--- a/sysdeps/s390/multiarch/ifunc-resolve.h
+++ b/sysdeps/s390/multiarch/ifunc-resolve.h
@@ -18,8 +18,9 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <unistd.h>
-#include <dl-procinfo.h>
 #include <cpu-features.h>
+#include <ldsodefs.h>
+#include <sys/auxv.h>
 
 #define s390_libc_ifunc_expr_stfle_init()				\
   const unsigned long long *stfle_bits = features->stfle_bits;
diff --git a/sysdeps/s390/s390-32/dl-machine.h b/sysdeps/s390/s390-32/dl-machine.h
index 15ff999289efcc30fae3c5a14670e63161bba147..b6d9ce3c1fd6f79f873f78b35c16d53d8a6510b9 100644
--- a/sysdeps/s390/s390-32/dl-machine.h
+++ b/sysdeps/s390/s390-32/dl-machine.h
@@ -24,7 +24,6 @@
 #include <sys/param.h>
 #include <string.h>
 #include <link.h>
-#include <sysdeps/s390/dl-procinfo.h>
 #include <dl-irel.h>
 #include <dl-static-tls.h>
 #include <dl-machine-rel.h>
diff --git a/sysdeps/s390/s390-64/dl-hwcaps-subdirs.c b/sysdeps/s390/s390-64/dl-hwcaps-subdirs.c
index 0a8cce1d3c2bccd5b97c42f3669c9a8654d9cc7a..10c97d3a0dd52591759b6ff6f9904fcc98f7fdbe 100644
--- a/sysdeps/s390/s390-64/dl-hwcaps-subdirs.c
+++ b/sysdeps/s390/s390-64/dl-hwcaps-subdirs.c
@@ -18,6 +18,7 @@
 
 #include <dl-hwcaps.h>
 #include <ldsodefs.h>
+#include <sys/auxv.h>
 
 const char _dl_hwcaps_subdirs[] = "z16:z15:z14:z13";
 enum { subdirs_count = 4 }; /* Number of components in _dl_hwcaps_subdirs.  */
diff --git a/sysdeps/s390/s390-64/dl-machine.h b/sysdeps/s390/s390-64/dl-machine.h
index 5ed0b844e0b35ec904817e6774b257db7ef45e0d..b66b7bd0ded882466716ad11371a20cc9382e8f0 100644
--- a/sysdeps/s390/s390-64/dl-machine.h
+++ b/sysdeps/s390/s390-64/dl-machine.h
@@ -25,7 +25,6 @@
 #include <sys/param.h>
 #include <string.h>
 #include <link.h>
-#include <sysdeps/s390/dl-procinfo.h>
 #include <dl-irel.h>
 #include <dl-static-tls.h>
 #include <dl-machine-rel.h>
diff --git a/sysdeps/sparc/dl-procinfo.h b/sysdeps/sparc/dl-procinfo.h
deleted file mode 100644
index 709178706c5a43a87d235ed40f1643e730135682..0000000000000000000000000000000000000000
--- a/sysdeps/sparc/dl-procinfo.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Linux/sparc version of processor capability information handling macros.
-   Copyright (C) 1999-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-#define _DL_HWCAP_COUNT 28
-
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  int i;
-
-  /* Fallback to generic output mechanism.  */
-  if (type != AT_HWCAP)
-    return -1;
-
-  _dl_printf ("AT_HWCAP:   ");
-
-  for (i = 0; i < _DL_HWCAP_COUNT; ++i)
-    if (word & (1 << i))
-      _dl_printf (" %s", GLRO(dl_sparc_cap_flags)[i]);
-
-  _dl_printf ("\n");
-
-  return 0;
-}
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GLRO(dl_sparc_cap_flags)[idx];
-};
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/sparc/dl-procinfo.c b/sysdeps/sparc/dl-procinfo.c
deleted file mode 100644
index 643fbd9ebf801cd0fff6a2b499c677153a601aa3..0000000000000000000000000000000000000000
--- a/sysdeps/sparc/dl-procinfo.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Data for Linux/sparc version of processor capability information.
-   Copyright (C) 2002-2024 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/>.  */
-
-/* This information must be kept in sync with the _DL_HWCAP_COUNT
-   definition in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions ar equite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-#define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_sparc_cap_flags
-#else
-PROCINFO_CLASS const char _dl_sparc_cap_flags[28][11]
-#endif
-#ifndef PROCINFO_DECL
-  = { "flush", "stbar", "swap", "muldiv", "v9", "ultra3", "v9v", "v9v2",
-      "mul32", "div32", "fsmuld", "v8plus", "popc", "vis", "vis2",
-      "ASIBlkInit", "fmaf", "vis3", "hpc", "random", "trans", "fjfmau",
-      "ima", "cspare", "pause", "cbcond", "crypto", "adp" }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
deleted file mode 100644
index b85d4ad8a32e41fb6f884517108f806ad62bf93b..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Processor capability information handling macros - aarch64 version.
-   Copyright (C) 2017-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <sys/auxv.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return (unsigned)idx < _DL_HWCAP_COUNT ? GLRO(dl_aarch64_cap_flags)[idx] : "";
-};
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
index 7af232de523e8e2cc95554a49fcf26842ad7ecaa..f303d7ab47903af547b05436c473eea1df9be5e2 100644
--- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
+++ b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
@@ -56,27 +56,5 @@ PROCINFO_CLASS struct cpu_features _dl_aarch64_cpu_features
 # endif
 #endif
 
-/* Number of HWCAP bits set.  */
-#define _DL_HWCAP_COUNT 32
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_aarch64_cap_flags
-#else
-PROCINFO_CLASS const char _dl_aarch64_cap_flags[_DL_HWCAP_COUNT][10]
-#endif
-#ifndef PROCINFO_DECL
-/* Matches the names in arch/arm64/kernel/cpuinfo.c of Linux.  */
-= { "fp", "asimd", "evtstrm", "aes", "pmull", "sha1", "sha2", "crc32",
-    "atomics", "fphp", "asimdhp", "cpuid", "asimdrdm", "jscvt", "fcma",
-    "lrcpc", "dcpop", "sha3", "sm3", "sm4", "asimddp", "sha512", "sve",
-    "asimdfhm", "dit", "uscat", "ilrcpc", "flagm", "ssbs", "sb", "paca",
-    "pacg" }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
 #undef PROCINFO_DECL
 #undef PROCINFO_CLASS
diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
deleted file mode 100644
index 7d26216718d3b0bee35b16c62ff08a2e3bdbe873..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Linux/ARM version of processor capability information handling macros.
-   Copyright (C) 2001-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-#define _DL_HWCAP_COUNT 27
-
-/* Low 28 bits are allocated in HWCAP.  */
-#define _DL_HWCAP_LAST		27
-
-/* Low 7 bits are allocated in HWCAP2.  */
-#define _DL_HWCAP2_LAST		6
-
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GLRO(dl_arm_cap_flags)[idx];
-};
-
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  switch(type)
-    {
-    case AT_HWCAP:
-      _dl_printf ("AT_HWCAP:       ");
-
-      for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
-	if (word & (1 << i))
-	  _dl_printf (" %s", _dl_hwcap_string (i));
-      break;
-    case AT_HWCAP2:
-      {
-	unsigned int offset = _DL_HWCAP_LAST + 1;
-
-	_dl_printf ("AT_HWCAP2:      ");
-
-	for (int i = 0; i <= _DL_HWCAP2_LAST; ++i)
-	  if (word & (1 << i))
-	    _dl_printf (" %s", _dl_hwcap_string (offset + i));
-	break;
-      }
-    default:
-      /* Fallback to generic output mechanism.  */
-      return -1;
-    }
-  _dl_printf ("\n");
-  return 0;
-}
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.c b/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
deleted file mode 100644
index ad18a8ce8f1dd1a202e03ec3f15da23d436cac15..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Data for Linux/ARM version of processor capability information.
-   Copyright (C) 2001-2024 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/>.  */
-
-/* This information must be kept in sync with the _DL_HWCAP_COUNT and
-   _DL_PLATFORM_COUNT definitions in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions are quite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-#define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_arm_cap_flags
-#else
-PROCINFO_CLASS const char _dl_arm_cap_flags[35][10]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "swp", "half", "thumb", "26bit", "fastmult", "fpa", "vfp", "edsp",
-    "java", "iwmmxt", "crunch", "thumbee", "neon", "vfpv3", "vfpv3d16",
-    "tls", "vfpv4", "idiva", "idivt", "vfpd32", "lpae", "evtstrm",
-    "fphp", "asimdhp", "asimddp", "asimdfhm", "asimdbf16", "i8mm",
-    "aes", "pmull", "sha1", "sha2", "crc32", "sb", "ssbs",
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
deleted file mode 100644
index 3de8dea0df44086424524a9e58e4a455461fb74a..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Linux/i386 version of processor capability information handling macros.
-   Copyright (C) 1998-2024 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 _DL_I386_PROCINFO_H
-#define _DL_I386_PROCINFO_H	1
-#include <sysdeps/x86/dl-procinfo.h>
-
-#undef _dl_procinfo
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  /* This table should match the information from arch/i386/kernel/setup.c
-     in the kernel sources.  */
-  int i;
-
-  /* Fallback to generic output mechanism.  */
-  if (type != AT_HWCAP)
-    return -1;
-
-  _dl_printf ("AT_HWCAP:   ");
-
-  for (i = 0; i < 32; ++i)
-    if (word & (1 << i))
-      _dl_printf (" %s", GLRO(dl_x86_cap_flags)[i]);
-
-  _dl_printf ("\n");
-
-  return 0;
-}
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
deleted file mode 100644
index bcae03e93416648ee7e895ae0759c91f04bd3635..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Linux/s390 version of processor capability information handling macros.
-   Copyright (C) 2006-2024 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 _DL_S390_PROCINFO_H
-#define _DL_S390_PROCINFO_H	1
-#include <sysdeps/s390/dl-procinfo.h>
-#include <ldsodefs.h>
-
-
-#undef _dl_procinfo
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  /* This table should match the information from arch/s390/kernel/setup.c
-     in the kernel sources.  */
-  int i;
-
-  /* Fallback to generic output mechanism.  */
-  if (type != AT_HWCAP)
-    return -1;
-
-  _dl_printf ("AT_HWCAP:   ");
-
-  for (i = 0; i < _DL_HWCAP_COUNT; ++i)
-    if (word & (1UL << i))
-      _dl_printf (" %s", _dl_s390_cap_flags[i]);
-
-  _dl_printf ("\n");
-
-  return 0;
-}
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/elision-conf.c b/sysdeps/unix/sysv/linux/s390/elision-conf.c
index 08b902837b01746cefeb2514580f2e54b9a4e590..954bcfcae6c17aa0c02a176f45e45e7ecd887fa5 100644
--- a/sysdeps/unix/sysv/linux/s390/elision-conf.c
+++ b/sysdeps/unix/sysv/linux/s390/elision-conf.c
@@ -20,7 +20,8 @@
 #include <pthreadP.h>
 #include <elision-conf.h>
 #include <unistd.h>
-#include <dl-procinfo.h>
+#include <ldsodefs.h>
+#include <sys/auxv.h>
 
 #define TUNABLE_NAMESPACE elision
 #include <elf/dl-tunables.h>
diff --git a/sysdeps/unix/sysv/linux/s390/sysconf.c b/sysdeps/unix/sysv/linux/s390/sysconf.c
index ca25822811ae500ec0e9bed5d21e3fe888b20904..8b8c0fc5e2ae73219c21902c4866851349c62b81 100644
--- a/sysdeps/unix/sysv/linux/s390/sysconf.c
+++ b/sysdeps/unix/sysv/linux/s390/sysconf.c
@@ -17,8 +17,9 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <unistd.h>
-#include <dl-procinfo.h>
 #include <cpu-features.h>
+#include <ldsodefs.h>
+#include <sys/auxv.h>
 
 static long int linux_sysconf (int name);
 
diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
deleted file mode 100644
index 7b45fe4bf8675a16573764b316106c63401a5a45..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#if IS_IN (ldconfig)
-# include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
-#else
-# include <sysdeps/x86/dl-procinfo.h>
-#endif
diff --git a/sysdeps/x86/dl-hwcap.h b/sysdeps/x86/dl-hwcap.h
index 325f1c467ca77bf4f4c9d5aa4009b39bcea9592e..8c181e3cb3639932997da42252ccd690081284e7 100644
--- a/sysdeps/x86/dl-hwcap.h
+++ b/sysdeps/x86/dl-hwcap.h
@@ -25,13 +25,6 @@ enum
   HWCAP_X86_AVX512_1		= 1 << 2
 };
 
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GLRO(dl_x86_hwcap_flags)[idx];
-};
-
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
diff --git a/sysdeps/x86/dl-procinfo.h b/sysdeps/x86/dl-procinfo.h
deleted file mode 100644
index ea0f33bbad7adbbc092f91a7812500c8014989ed..0000000000000000000000000000000000000000
--- a/sysdeps/x86/dl-procinfo.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* x86 version of processor capability information handling macros.
-   Copyright (C) 2017-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-#include <ldsodefs.h>
-#include <dl-hwcap.h>
-
-#define _DL_HWCAP_COUNT		HWCAP_COUNT
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/x86/dl-procinfo.c b/sysdeps/x86/dl-procinfo.c
index b791fd3e92ba53f7611e82d3fbbebc61fce34d7e..b6b8f7d24e8fca59c8066e7824ac61b0ad63f26d 100644
--- a/sysdeps/x86/dl-procinfo.c
+++ b/sysdeps/x86/dl-procinfo.c
@@ -54,22 +54,6 @@ PROCINFO_CLASS struct cpu_features _dl_x86_cpu_features
 # endif
 #endif
 
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_x86_hwcap_flags
-#else
-PROCINFO_CLASS const char _dl_x86_hwcap_flags[3][9]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "sse2", "x86_64", "avx512_1"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
 #if defined SHARED && !IS_IN (ldconfig)
 # if !defined PROCINFO_DECL
   ._dl_x86_tlsdesc_dynamic
  
Wilco Dijkstra Nov. 29, 2024, 5:33 p.m. UTC | #6
Hi Peter,

>On 11/26/24 9:44 AM, Stefan Liebler wrote:
>> If the intention is really to not print AT_HWCAP strings anymore, then
>> please also remove dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c.
>> I think _DL_HWCAP_COUNT can then also be removed (not only on s390).
>
> I hope that's not the intention, unless there is a replacement for
> "LD_SHOW_AUXV=1 /bin/true" I don't know about.  I do this all the
> time.

The dynamic linker still prints HWCAP values in hex. Pretty printing was dead code
for most targets, hence the idea of cleaning it up. Note I've left powerpc unchanged
since it duplicates much of 'lscpu' (which I find easier to use than the above cmd)...

The reason we're looking into this is because minor changes in these target
specific variables change the ABI of the dynamic linker. And all of that seems
unnecessary, especially for variables that are not even used...

Cheers,
Wilco
  
Stefan Liebler Dec. 4, 2024, 2 p.m. UTC | #7
On 29.11.24 18:22, Wilco Dijkstra wrote:
> Hi Stefan,
> 
>> For s390, we've discussed it internally and we are fine with removing
>> the names. Thus if you do so, as already mentioned please also remove
>> dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c and the
>> _DL_HWCAP_COUNT definition.
> 
> I've done that and also removed the duplicated HWCAP definitions in
> sysdeps/s390/dl-procinfo.h (which allows its removal after adding a few
> includes of sys/auxv.h - overall this seems better, but please check that's
> fine). It passes buildmanyglibc.
> 
Thanks a lot. Yes, the s390 part is fine. It also builds fine on my side.

Do you know why the hex-values for AT_HWCAP2-4 are prefixed with "0x",
but not AT_HWCAP?
Shall we also prefix it?
diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c
b/sysdeps/unix/sysv/linux/dl-sysdep.c
index d1170a1d00..1dfd4ff460 100644
--- a/sysdeps/unix/sysv/linux/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/dl-sysdep.c
@@ -185,7 +185,7 @@ _dl_show_auxv (void)
          [AT_GID - 2] =                { "GID:               ", dec },
          [AT_EGID - 2] =               { "EGID:              ", dec },
          [AT_PLATFORM - 2] =           { "PLATFORM:          ", str },
-         [AT_HWCAP - 2] =              { "HWCAP:             ", hex },
+         [AT_HWCAP - 2] =              { "HWCAP:             0x", hex },
          [AT_CLKTCK - 2] =             { "CLKTCK:            ", dec },
          [AT_FPUCW - 2] =              { "FPUCW:             ", hex },
          [AT_DCACHEBSIZE - 2] =        { "DCACHEBSIZE:       0x", hex },


Bye,
Stefan

> Cheers,
> Wilco
> 
> 
> v2: Remove s390 dl-procinfo.h.
> 
> Remove unused _dl_hwcap_string defines.  As a result many dl-procinfo.h headers
> can be removed.  This also removes target specific _dl_procinfo implementations
> which only printed HWCAP strings using dl_hwcap_string.
> 
> Passes buildmanyglibc, OK for commit?
> 
> ---
>
  
Adhemerval Zanella Dec. 4, 2024, 4:40 p.m. UTC | #8
On 04/12/24 11:00, Stefan Liebler wrote:
> On 29.11.24 18:22, Wilco Dijkstra wrote:
>> Hi Stefan,
>>
>>> For s390, we've discussed it internally and we are fine with removing
>>> the names. Thus if you do so, as already mentioned please also remove
>>> dl_s390_cap_flags in sysdeps/s390/dl-procinfo-s390.c and the
>>> _DL_HWCAP_COUNT definition.
>>
>> I've done that and also removed the duplicated HWCAP definitions in
>> sysdeps/s390/dl-procinfo.h (which allows its removal after adding a few
>> includes of sys/auxv.h - overall this seems better, but please check that's
>> fine). It passes buildmanyglibc.
>>
> Thanks a lot. Yes, the s390 part is fine. It also builds fine on my side.
> 
> Do you know why the hex-values for AT_HWCAP2-4 are prefixed with "0x",
> but not AT_HWCAP?

I think it is most likely an overlook.

> Shall we also prefix it?

Yeap;

> diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c
> b/sysdeps/unix/sysv/linux/dl-sysdep.c
> index d1170a1d00..1dfd4ff460 100644
> --- a/sysdeps/unix/sysv/linux/dl-sysdep.c
> +++ b/sysdeps/unix/sysv/linux/dl-sysdep.c
> @@ -185,7 +185,7 @@ _dl_show_auxv (void)
>           [AT_GID - 2] =                { "GID:               ", dec },
>           [AT_EGID - 2] =               { "EGID:              ", dec },
>           [AT_PLATFORM - 2] =           { "PLATFORM:          ", str },
> -         [AT_HWCAP - 2] =              { "HWCAP:             ", hex },
> +         [AT_HWCAP - 2] =              { "HWCAP:             0x", hex },
>           [AT_CLKTCK - 2] =             { "CLKTCK:            ", dec },
>           [AT_FPUCW - 2] =              { "FPUCW:             ", hex },
>           [AT_DCACHEBSIZE - 2] =        { "DCACHEBSIZE:       0x", hex },
> 
> 
> Bye,
> Stefan
> 
>> Cheers,
>> Wilco
>>
>>
>> v2: Remove s390 dl-procinfo.h.
>>
>> Remove unused _dl_hwcap_string defines.  As a result many dl-procinfo.h headers
>> can be removed.  This also removes target specific _dl_procinfo implementations
>> which only printed HWCAP strings using dl_hwcap_string.
>>
>> Passes buildmanyglibc, OK for commit?
>>
>> ---
>>
  

Patch

diff --git a/sysdeps/alpha/dl-procinfo.h b/sysdeps/alpha/dl-procinfo.h
deleted file mode 100644
index 8d17d42ce2da36be67e78a57c97b32ed02a57575..0000000000000000000000000000000000000000
--- a/sysdeps/alpha/dl-procinfo.h
+++ /dev/null
@@ -1,33 +0,0 @@ 
-/* Alpha version of processor capability information handling macros.
-   Copyright (C) 2008-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT	0
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/csky/dl-procinfo.h b/sysdeps/csky/dl-procinfo.h
deleted file mode 100644
index f5f6343cf64b3448b28496934c6f7d07428c7280..0000000000000000000000000000000000000000
--- a/sysdeps/csky/dl-procinfo.h
+++ /dev/null
@@ -1,34 +0,0 @@ 
-/* C-SKY version of processor capability information handling macros.
-   Copyright (C) 2018-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(word, val) -1
-
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT	0
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/generic/dl-procinfo.h b/sysdeps/generic/dl-procinfo.h
index 93edfc00cb3830608d8715765cfa120cfe163d84..04d6fb00a202675aa6b895dd3b9c5a19ff68ca20 100644
--- a/sysdeps/generic/dl-procinfo.h
+++ b/sysdeps/generic/dl-procinfo.h
@@ -22,10 +22,4 @@ 
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT 0
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/i386/dl-procinfo.c b/sysdeps/i386/dl-procinfo.c
index e7c82414c01003e6d69769debac385f6ff77cbbb..fb82fbd7f11416173109938211bb807764d42453 100644
--- a/sysdeps/i386/dl-procinfo.c
+++ b/sysdeps/i386/dl-procinfo.c
@@ -41,24 +41,5 @@ 
 
 #include <sysdeps/x86/dl-procinfo.c>
 
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_x86_cap_flags
-#else
-PROCINFO_CLASS const char _dl_x86_cap_flags[32][8]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
-    "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov",
-    "pat", "pse36", "pn", "clflush", "20", "dts", "acpi", "mmx",
-    "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
 #undef PROCINFO_DECL
 #undef PROCINFO_CLASS
diff --git a/sysdeps/mips/dl-procinfo.h b/sysdeps/mips/dl-procinfo.h
deleted file mode 100644
index af2616e1db61a1485cc32323c3e0b3a4cd898587..0000000000000000000000000000000000000000
--- a/sysdeps/mips/dl-procinfo.h
+++ /dev/null
@@ -1,33 +0,0 @@ 
-/* Mips version of processor capability information handling macros.
-   Copyright (C) 2007-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT	0
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h
index 45dd11c189b48e0fba436cc57dcee6b290d5c08f..ea9356735aea2b5d0b96d6e51bdc8ed8b3a04250 100644
--- a/sysdeps/s390/dl-procinfo.h
+++ b/sysdeps/s390/dl-procinfo.h
@@ -62,11 +62,4 @@  enum
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return _dl_s390_cap_flags[idx];
-};
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/sparc/dl-procinfo.h b/sysdeps/sparc/dl-procinfo.h
deleted file mode 100644
index 709178706c5a43a87d235ed40f1643e730135682..0000000000000000000000000000000000000000
--- a/sysdeps/sparc/dl-procinfo.h
+++ /dev/null
@@ -1,55 +0,0 @@ 
-/* Linux/sparc version of processor capability information handling macros.
-   Copyright (C) 1999-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-#define _DL_HWCAP_COUNT 28
-
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  int i;
-
-  /* Fallback to generic output mechanism.  */
-  if (type != AT_HWCAP)
-    return -1;
-
-  _dl_printf ("AT_HWCAP:   ");
-
-  for (i = 0; i < _DL_HWCAP_COUNT; ++i)
-    if (word & (1 << i))
-      _dl_printf (" %s", GLRO(dl_sparc_cap_flags)[i]);
-
-  _dl_printf ("\n");
-
-  return 0;
-}
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GLRO(dl_sparc_cap_flags)[idx];
-};
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/sparc/dl-procinfo.c b/sysdeps/sparc/dl-procinfo.c
deleted file mode 100644
index 643fbd9ebf801cd0fff6a2b499c677153a601aa3..0000000000000000000000000000000000000000
--- a/sysdeps/sparc/dl-procinfo.c
+++ /dev/null
@@ -1,63 +0,0 @@ 
-/* Data for Linux/sparc version of processor capability information.
-   Copyright (C) 2002-2024 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/>.  */
-
-/* This information must be kept in sync with the _DL_HWCAP_COUNT
-   definition in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions ar equite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-#define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_sparc_cap_flags
-#else
-PROCINFO_CLASS const char _dl_sparc_cap_flags[28][11]
-#endif
-#ifndef PROCINFO_DECL
-  = { "flush", "stbar", "swap", "muldiv", "v9", "ultra3", "v9v", "v9v2",
-      "mul32", "div32", "fsmuld", "v8plus", "popc", "vis", "vis2",
-      "ASIBlkInit", "fmaf", "vis3", "hpc", "random", "trans", "fjfmau",
-      "ima", "cspare", "pause", "cbcond", "crypto", "adp" }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
deleted file mode 100644
index b85d4ad8a32e41fb6f884517108f806ad62bf93b..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
+++ /dev/null
@@ -1,37 +0,0 @@ 
-/* Processor capability information handling macros - aarch64 version.
-   Copyright (C) 2017-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <sys/auxv.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return (unsigned)idx < _DL_HWCAP_COUNT ? GLRO(dl_aarch64_cap_flags)[idx] : "";
-};
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
index 7af232de523e8e2cc95554a49fcf26842ad7ecaa..f303d7ab47903af547b05436c473eea1df9be5e2 100644
--- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
+++ b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c
@@ -56,27 +56,5 @@  PROCINFO_CLASS struct cpu_features _dl_aarch64_cpu_features
 # endif
 #endif
 
-/* Number of HWCAP bits set.  */
-#define _DL_HWCAP_COUNT 32
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_aarch64_cap_flags
-#else
-PROCINFO_CLASS const char _dl_aarch64_cap_flags[_DL_HWCAP_COUNT][10]
-#endif
-#ifndef PROCINFO_DECL
-/* Matches the names in arch/arm64/kernel/cpuinfo.c of Linux.  */
-= { "fp", "asimd", "evtstrm", "aes", "pmull", "sha1", "sha2", "crc32",
-    "atomics", "fphp", "asimdhp", "cpuid", "asimdrdm", "jscvt", "fcma",
-    "lrcpc", "dcpop", "sha3", "sm3", "sm4", "asimddp", "sha512", "sve",
-    "asimdfhm", "dit", "uscat", "ilrcpc", "flagm", "ssbs", "sb", "paca",
-    "pacg" }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
 #undef PROCINFO_DECL
 #undef PROCINFO_CLASS
diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
deleted file mode 100644
index 7d26216718d3b0bee35b16c62ff08a2e3bdbe873..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
+++ /dev/null
@@ -1,73 +0,0 @@ 
-/* Linux/ARM version of processor capability information handling macros.
-   Copyright (C) 2001-2024 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 _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-#define _DL_HWCAP_COUNT 27
-
-/* Low 28 bits are allocated in HWCAP.  */
-#define _DL_HWCAP_LAST		27
-
-/* Low 7 bits are allocated in HWCAP2.  */
-#define _DL_HWCAP2_LAST		6
-
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GLRO(dl_arm_cap_flags)[idx];
-};
-
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  switch(type)
-    {
-    case AT_HWCAP:
-      _dl_printf ("AT_HWCAP:       ");
-
-      for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
-	if (word & (1 << i))
-	  _dl_printf (" %s", _dl_hwcap_string (i));
-      break;
-    case AT_HWCAP2:
-      {
-	unsigned int offset = _DL_HWCAP_LAST + 1;
-
-	_dl_printf ("AT_HWCAP2:      ");
-
-	for (int i = 0; i <= _DL_HWCAP2_LAST; ++i)
-	  if (word & (1 << i))
-	    _dl_printf (" %s", _dl_hwcap_string (offset + i));
-	break;
-      }
-    default:
-      /* Fallback to generic output mechanism.  */
-      return -1;
-    }
-  _dl_printf ("\n");
-  return 0;
-}
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.c b/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
deleted file mode 100644
index ad18a8ce8f1dd1a202e03ec3f15da23d436cac15..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.c
+++ /dev/null
@@ -1,66 +0,0 @@ 
-/* Data for Linux/ARM version of processor capability information.
-   Copyright (C) 2001-2024 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/>.  */
-
-/* This information must be kept in sync with the _DL_HWCAP_COUNT and
-   _DL_PLATFORM_COUNT definitions in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions are quite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-#define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_arm_cap_flags
-#else
-PROCINFO_CLASS const char _dl_arm_cap_flags[35][10]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "swp", "half", "thumb", "26bit", "fastmult", "fpa", "vfp", "edsp",
-    "java", "iwmmxt", "crunch", "thumbee", "neon", "vfpv3", "vfpv3d16",
-    "tls", "vfpv4", "idiva", "idivt", "vfpd32", "lpae", "evtstrm",
-    "fphp", "asimdhp", "asimddp", "asimdfhm", "asimdbf16", "i8mm",
-    "aes", "pmull", "sha1", "sha2", "crc32", "sb", "ssbs",
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
deleted file mode 100644
index 3de8dea0df44086424524a9e58e4a455461fb74a..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
+++ /dev/null
@@ -1,46 +0,0 @@ 
-/* Linux/i386 version of processor capability information handling macros.
-   Copyright (C) 1998-2024 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 _DL_I386_PROCINFO_H
-#define _DL_I386_PROCINFO_H	1
-#include <sysdeps/x86/dl-procinfo.h>
-
-#undef _dl_procinfo
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  /* This table should match the information from arch/i386/kernel/setup.c
-     in the kernel sources.  */
-  int i;
-
-  /* Fallback to generic output mechanism.  */
-  if (type != AT_HWCAP)
-    return -1;
-
-  _dl_printf ("AT_HWCAP:   ");
-
-  for (i = 0; i < 32; ++i)
-    if (word & (1 << i))
-      _dl_printf (" %s", GLRO(dl_x86_cap_flags)[i]);
-
-  _dl_printf ("\n");
-
-  return 0;
-}
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
deleted file mode 100644
index bcae03e93416648ee7e895ae0759c91f04bd3635..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
+++ /dev/null
@@ -1,48 +0,0 @@ 
-/* Linux/s390 version of processor capability information handling macros.
-   Copyright (C) 2006-2024 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 _DL_S390_PROCINFO_H
-#define _DL_S390_PROCINFO_H	1
-#include <sysdeps/s390/dl-procinfo.h>
-#include <ldsodefs.h>
-
-
-#undef _dl_procinfo
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  /* This table should match the information from arch/s390/kernel/setup.c
-     in the kernel sources.  */
-  int i;
-
-  /* Fallback to generic output mechanism.  */
-  if (type != AT_HWCAP)
-    return -1;
-
-  _dl_printf ("AT_HWCAP:   ");
-
-  for (i = 0; i < _DL_HWCAP_COUNT; ++i)
-    if (word & (1UL << i))
-      _dl_printf (" %s", _dl_s390_cap_flags[i]);
-
-  _dl_printf ("\n");
-
-  return 0;
-}
-#endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
deleted file mode 100644
index 7b45fe4bf8675a16573764b316106c63401a5a45..0000000000000000000000000000000000000000
--- a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
+++ /dev/null
@@ -1,5 +0,0 @@ 
-#if IS_IN (ldconfig)
-# include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
-#else
-# include <sysdeps/x86/dl-procinfo.h>
-#endif
diff --git a/sysdeps/x86/dl-hwcap.h b/sysdeps/x86/dl-hwcap.h
index 325f1c467ca77bf4f4c9d5aa4009b39bcea9592e..8c181e3cb3639932997da42252ccd690081284e7 100644
--- a/sysdeps/x86/dl-hwcap.h
+++ b/sysdeps/x86/dl-hwcap.h
@@ -25,13 +25,6 @@  enum
   HWCAP_X86_AVX512_1		= 1 << 2
 };
 
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GLRO(dl_x86_hwcap_flags)[idx];
-};
-
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
diff --git a/sysdeps/x86/dl-procinfo.c b/sysdeps/x86/dl-procinfo.c
index b791fd3e92ba53f7611e82d3fbbebc61fce34d7e..b6b8f7d24e8fca59c8066e7824ac61b0ad63f26d 100644
--- a/sysdeps/x86/dl-procinfo.c
+++ b/sysdeps/x86/dl-procinfo.c
@@ -54,22 +54,6 @@  PROCINFO_CLASS struct cpu_features _dl_x86_cpu_features
 # endif
 #endif
 
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_x86_hwcap_flags
-#else
-PROCINFO_CLASS const char _dl_x86_hwcap_flags[3][9]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "sse2", "x86_64", "avx512_1"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
 #if defined SHARED && !IS_IN (ldconfig)
 # if !defined PROCINFO_DECL
   ._dl_x86_tlsdesc_dynamic