[PATCH v2] Remove unused dl-procinfo.h

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Wed Feb 26 19:04:50 GMT 2025



On 29/11/24 14: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.
> 
> 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?

LGTM, thanks.  The powerpc still has the _dl_procinfo, so it will continue
to print the hwcap on LD_SHOW_AUXV.  I rework how powerpc provide such
information, so we can eventually remove dl-procinfo.h [1]

This patch removes _dl_procinfo for both sparc and arm, but I think we can
eventually add them to ld.so diagnostics if they are really useful.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

[1] https://sourceware.org/pipermail/libc-alpha/2025-February/164955.html

> 
> ---
> 
> 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
> 



More information about the Libc-alpha mailing list