submitted-auxv
authorGNU Libc Maintainers <debian-glibc@lists.debian.org>
Thu, 6 Mar 2025 22:46:53 +0000 (23:46 +0100)
committerAurelien Jarno <aurel32@debian.org>
Thu, 6 Mar 2025 22:46:53 +0000 (23:46 +0100)
https://sourceware.org/bugzilla/show_bug.cgi?id=15794

Gbp-Pq: Topic kfreebsd
Gbp-Pq: Name submitted-auxv.diff

bits/auxv.h [new file with mode: 0644]
elf/elf.h
misc/Makefile
misc/getauxval.c
misc/sys/auxv.h
sysdeps/generic/ldsodefs.h

diff --git a/bits/auxv.h b/bits/auxv.h
new file mode 100644 (file)
index 0000000..d677afe
--- /dev/null
@@ -0,0 +1,93 @@
+/* Copyright (C) 1995-2013 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
+   <http://www.gnu.org/licenses/>.  */
+
+/* Legal values for a_type (entry type).  */
+
+#define AT_NULL                0               /* End of vector */
+#define AT_IGNORE      1               /* Entry should be ignored */
+#define AT_EXECFD      2               /* File descriptor of program */
+#define AT_PHDR                3               /* Program headers for program */
+#define AT_PHENT       4               /* Size of program header entry */
+#define AT_PHNUM       5               /* Number of program headers */
+#define AT_PAGESZ      6               /* System page size */
+#define AT_BASE                7               /* Base address of interpreter */
+#define AT_FLAGS       8               /* Flags */
+#define AT_ENTRY       9               /* Entry point of program */
+#define AT_NOTELF      10              /* Program is not ELF */
+#define AT_UID         11              /* Real uid */
+#define AT_EUID                12              /* Effective uid */
+#define AT_GID         13              /* Real gid */
+#define AT_EGID                14              /* Effective gid */
+#define AT_CLKTCK      17              /* Frequency of times() */
+
+/* Some more special a_type values describing the hardware.  */
+#define AT_PLATFORM    15              /* String identifying platform.  */
+#define AT_HWCAP       16              /* Machine-dependent hints about
+                                          processor capabilities.  */
+
+/* This entry gives some information about the FPU initialization
+   performed by the kernel.  */
+#define AT_FPUCW       18              /* Used FPU control word.  */
+
+/* Cache block sizes.  */
+#define AT_DCACHEBSIZE 19              /* Data cache block size.  */
+#define AT_ICACHEBSIZE 20              /* Instruction cache block size.  */
+#define AT_UCACHEBSIZE 21              /* Unified cache block size.  */
+
+/* A special ignored value for PPC, used by the kernel to control the
+   interpretation of the AUXV. Must be > 16.  */
+#define AT_IGNOREPPC   22              /* Entry should be ignored.  */
+
+#define        AT_SECURE       23              /* Boolean, was exec setuid-like?  */
+
+#define AT_BASE_PLATFORM 24            /* String identifying real platforms.*/
+
+#define AT_RANDOM      25              /* Address of 16 random bytes.  */
+
+#define AT_HWCAP2      26              /* More machine-dependent hints about
+                                          processor capabilities.  */
+
+#define AT_RSEQ_FEATURE_SIZE   27      /* rseq supported feature size.  */
+#define AT_RSEQ_ALIGN  28              /* rseq allocation alignment.  */
+
+#define AT_EXECFN      31              /* Filename of executable.  */
+
+/* Pointer to the global system page used for system calls and other
+   nice things.  */
+#define AT_SYSINFO     32
+#define AT_SYSINFO_EHDR        33
+
+/* Shapes of the caches.  Bits 0-3 contains associativity; bits 4-7 contains
+   log2 of line size; mask those to get cache size.  */
+#define AT_L1I_CACHESHAPE      34
+#define AT_L1D_CACHESHAPE      35
+#define AT_L2_CACHESHAPE       36
+#define AT_L3_CACHESHAPE       37
+
+/* Shapes of the caches, with more room to describe them.
+   *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits
+   and the cache associativity in the next 16 bits.  */
+#define AT_L1I_CACHESIZE       40
+#define AT_L1I_CACHEGEOMETRY   41
+#define AT_L1D_CACHESIZE       42
+#define AT_L1D_CACHEGEOMETRY   43
+#define AT_L2_CACHESIZE                44
+#define AT_L2_CACHEGEOMETRY    45
+#define AT_L3_CACHESIZE                46
+#define AT_L3_CACHEGEOMETRY    47
+
+#define AT_MINSIGSTKSZ         51 /* Stack needed for signal delivery  */
index f34d4ef7f498ed93faeb80e621d3ab609b56ce8c..04b3ad40165b1bb48803d6cc29735be49102f7ff 100644 (file)
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -1169,83 +1169,7 @@ typedef struct
     } a_un;
 } Elf64_auxv_t;
 
-/* Legal values for a_type (entry type).  */
-
-#define AT_NULL                0               /* End of vector */
-#define AT_IGNORE      1               /* Entry should be ignored */
-#define AT_EXECFD      2               /* File descriptor of program */
-#define AT_PHDR                3               /* Program headers for program */
-#define AT_PHENT       4               /* Size of program header entry */
-#define AT_PHNUM       5               /* Number of program headers */
-#define AT_PAGESZ      6               /* System page size */
-#define AT_BASE                7               /* Base address of interpreter */
-#define AT_FLAGS       8               /* Flags */
-#define AT_ENTRY       9               /* Entry point of program */
-#define AT_NOTELF      10              /* Program is not ELF */
-#define AT_UID         11              /* Real uid */
-#define AT_EUID                12              /* Effective uid */
-#define AT_GID         13              /* Real gid */
-#define AT_EGID                14              /* Effective gid */
-#define AT_CLKTCK      17              /* Frequency of times() */
-
-/* Some more special a_type values describing the hardware.  */
-#define AT_PLATFORM    15              /* String identifying platform.  */
-#define AT_HWCAP       16              /* Machine-dependent hints about
-                                          processor capabilities.  */
-
-/* This entry gives some information about the FPU initialization
-   performed by the kernel.  */
-#define AT_FPUCW       18              /* Used FPU control word.  */
-
-/* Cache block sizes.  */
-#define AT_DCACHEBSIZE 19              /* Data cache block size.  */
-#define AT_ICACHEBSIZE 20              /* Instruction cache block size.  */
-#define AT_UCACHEBSIZE 21              /* Unified cache block size.  */
-
-/* A special ignored value for PPC, used by the kernel to control the
-   interpretation of the AUXV. Must be > 16.  */
-#define AT_IGNOREPPC   22              /* Entry should be ignored.  */
-
-#define        AT_SECURE       23              /* Boolean, was exec setuid-like?  */
-
-#define AT_BASE_PLATFORM 24            /* String identifying real platforms.*/
-
-#define AT_RANDOM      25              /* Address of 16 random bytes.  */
-
-#define AT_HWCAP2      26              /* More machine-dependent hints about
-                                          processor capabilities.  */
-
-#define AT_RSEQ_FEATURE_SIZE   27      /* rseq supported feature size.  */
-#define AT_RSEQ_ALIGN  28              /* rseq allocation alignment.  */
-
-#define AT_EXECFN      31              /* Filename of executable.  */
-
-/* Pointer to the global system page used for system calls and other
-   nice things.  */
-#define AT_SYSINFO     32
-#define AT_SYSINFO_EHDR        33
-
-/* Shapes of the caches.  Bits 0-3 contains associativity; bits 4-7 contains
-   log2 of line size; mask those to get cache size.  */
-#define AT_L1I_CACHESHAPE      34
-#define AT_L1D_CACHESHAPE      35
-#define AT_L2_CACHESHAPE       36
-#define AT_L3_CACHESHAPE       37
-
-/* Shapes of the caches, with more room to describe them.
-   *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits
-   and the cache associativity in the next 16 bits.  */
-#define AT_L1I_CACHESIZE       40
-#define AT_L1I_CACHEGEOMETRY   41
-#define AT_L1D_CACHESIZE       42
-#define AT_L1D_CACHEGEOMETRY   43
-#define AT_L2_CACHESIZE                44
-#define AT_L2_CACHEGEOMETRY    45
-#define AT_L3_CACHESIZE                46
-#define AT_L3_CACHEGEOMETRY    47
-
-#define AT_MINSIGSTKSZ         51 /* Stack needed for signal delivery  */
-
+#include <bits/auxv.h>
 /* Note section contents.  Each entry in the note section begins with
    a header of a fixed form.  */
 
index e77cdd8c1b5c13131fe269ff8afea3900465f1d9..7bbd1ec2d4b76ea32d058ecdaf9f88e4bde4d954 100644 (file)
@@ -35,7 +35,7 @@ headers       := sys/uio.h bits/uio-ext.h bits/uio_lim.h \
           regexp.h bits/select.h bits/mman.h sys/xattr.h \
           syslog.h sys/syslog.h \
           bits/syslog.h bits/syslog-ldbl.h bits/syslog-path.h bits/error.h \
-          bits/select2.h bits/hwcap.h sys/auxv.h \
+          bits/select2.h bits/hwcap.h bits/auxv.h sys/auxv.h \
           sys/sysmacros.h bits/sysmacros.h bits/types/struct_iovec.h \
           bits/err-ldbl.h bits/error-ldbl.h \
           sys/single_threaded.h
index 714ce5bd62ec33c38356b187e6ec067b72b77afb..fbc424c9e0641351ea16bf8aaf9113ad36d111a0 100644 (file)
@@ -27,16 +27,21 @@ __getauxval2 (unsigned long int type, unsigned long int *result)
   ElfW(auxv_t) *p;
 #endif
 
+#ifdef AT_HWCAP
   if (type == AT_HWCAP)
     {
       *result = GLRO(dl_hwcap);
       return true;
     }
-  else if (type == AT_HWCAP2)
+#endif
+
+#ifdef AT_HWCAP2
+  if (type == AT_HWCAP2)
     {
       *result = GLRO(dl_hwcap2);
       return true;
     }
+#endif
 
 #ifdef HAVE_AUX_VECTOR
   for (p = GLRO(dl_auxv); p->a_type != AT_NULL; p++)
index b5ab30ab777ec6d6aed94628db3d97534ad2e564..c8d9a1d65175608e67a418b628793b7c1fc684fa 100644 (file)
@@ -20,6 +20,7 @@
 #define _SYS_AUXV_H 1
 
 #include <elf.h>
+#include <bits/auxv.h>
 #include <sys/cdefs.h>
 #include <bits/hwcap.h>
 
index 17bd399888673f05c7570b076d9b571857d6b688..dcd631d6bd89bd6e749cae063320f7599e572c0f 100644 (file)
@@ -29,6 +29,7 @@
 #include <stdint.h>
 
 #include <elf.h>
+#include <bits/auxv.h>
 #include <dlfcn.h>
 #include <fpu_control.h>
 #include <sys/mman.h>