This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.15-975-gc7683a6


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  c7683a6d02f3ed59f5cd119b3e8547f45a15912f (commit)
      from  a6f1845d45d0ea9303b3c71944c0a511e23bde26 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c7683a6d02f3ed59f5cd119b3e8547f45a15912f

commit c7683a6d02f3ed59f5cd119b3e8547f45a15912f
Author: Richard Henderson <rth@twiddle.net>
Date:   Sun May 20 10:34:00 2012 -0700

    Add <sys/auxv.h> and getauxval.

diff --git a/ChangeLog b/ChangeLog
index a428760..49e6157 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2012-05-20  Richard Henderson  <rth@twiddle.net>
+
+	* misc/getauxval.c: New file.
+	* misc/sys/auxv.h: New file.
+	* misc/Makefile (headers): Add sys/auxv.h, bits/hwcap.h.
+	(routines): Add getauxval.
+	* misc/Versions (GLIBC_2.16): Add __getauxval, getauxval.
+	* sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Add _dl_auxv.
+	* elf/dl-sysdep.c (_dl_auxv): Remove.
+	(_dl_sysdep_start, _dl_show_auxv): Use GLRO to access _dl_auxv.
+	* elf/dl-support.c (_dl_auxv): New variable.
+	(_dl_aux_init): Initialize it.
+	* manual/startup.texi (Auxiliary Vector): New node.
+	* sysdeps/generic/bits/hwcap.h: New file.
+	* sysdeps/powerpc/bits/hwcap.h: New file, split out from ...
+	* sysdeps/powerpc/sysdep.h: ... here.  Include it.
+	* sysdeps/sparc/bits/hwcap.h: New file, split out from ...
+	* sysdeps/sparc/sysdep.h: ... here.  Include it.
+	* sysdeps/unix/sysv/linux/s390/bits/hwcap.h: New file.
+	* sysdeps/unix/sysv/linux/i386/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/sh/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist: Update.
+	* sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist: Update.
+
 2012-05-19  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
 	* sysdeps/powerpc/fpu/libm-test-ulps: Update.
diff --git a/elf/dl-support.c b/elf/dl-support.c
index a0f2122..2bb468a 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -125,6 +125,7 @@ int _dl_debug_fd = STDERR_FILENO;
 
 int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
 
+ElfW(auxv_t) *_dl_auxv;
 ElfW(Phdr) *_dl_phdr;
 size_t _dl_phnum;
 uint64_t _dl_hwcap __attribute__ ((nocommon));
@@ -187,6 +188,7 @@ _dl_aux_init (ElfW(auxv_t) *av)
   uid_t uid = 0;
   gid_t gid = 0;
 
+  _dl_auxv = av;
   for (; av->a_type != AT_NULL; ++av)
     switch (av->a_type)
       {
diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
index ea505a6..e2a9d93 100644
--- a/elf/dl-sysdep.c
+++ b/elf/dl-sysdep.c
@@ -61,7 +61,6 @@ int __libc_multiple_libcs = 0;	/* Defining this here avoids the inclusion
 /* This variable contains the lowest stack address ever used.  */
 void *__libc_stack_end attribute_relro = NULL;
 rtld_hidden_data_def(__libc_stack_end)
-static ElfW(auxv_t) *_dl_auxv attribute_relro;
 void *_dl_random attribute_relro = NULL;
 
 #ifndef DL_FIND_ARG_COMPONENTS
@@ -111,12 +110,12 @@ _dl_sysdep_start (void **start_argptr,
 
   __libc_stack_end = DL_STACK_END (start_argptr);
   DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, INTUSE(_dl_argv), _environ,
-			  _dl_auxv);
+			  GLRO(dl_auxv));
 
   user_entry = (ElfW(Addr)) ENTRY_POINT;
   GLRO(dl_platform) = NULL; /* Default to nothing known about the platform.  */
 
-  for (av = _dl_auxv; av->a_type != AT_NULL; set_seen (av++))
+  for (av = GLRO(dl_auxv); av->a_type != AT_NULL; set_seen (av++))
     switch (av->a_type)
       {
       case AT_PHDR:
@@ -240,7 +239,7 @@ _dl_sysdep_start (void **start_argptr,
   if (__builtin_expect (INTUSE(__libc_enable_secure), 0))
     __libc_check_standard_fds ();
 
-  (*dl_main) (phdr, phnum, &user_entry, _dl_auxv);
+  (*dl_main) (phdr, phnum, &user_entry, GLRO(dl_auxv));
   return user_entry;
 }
 
@@ -265,7 +264,7 @@ _dl_show_auxv (void)
      close by (otherwise the array will be too large).  In case we have
      to support a platform where these requirements are not fulfilled
      some alternative implementation has to be used.  */
-  for (av = _dl_auxv; av->a_type != AT_NULL; ++av)
+  for (av = GLRO(dl_auxv); av->a_type != AT_NULL; ++av)
     {
       static const struct
       {
diff --git a/manual/startup.texi b/manual/startup.texi
index ed75e7b..0420e93 100644
--- a/manual/startup.texi
+++ b/manual/startup.texi
@@ -34,8 +34,9 @@ This chapter looks at program startup from the execee's point of view.  To
 see the event from the execor's point of view, see @ref{Executing a File}.
 
 @menu
-* Program Arguments::           Parsing your program's command-line arguments.
+* Program Arguments::           Parsing your program's command-line arguments
 * Environment Variables::       Less direct parameters affecting your program
+* Auxiliary Vector::            Least direct parameters affecting your program
 * System Calls::                Requesting service from the system
 * Program Termination::         Telling the system you're done; return status
 @end menu
@@ -590,6 +591,33 @@ reordering of command line arguments by @code{getopt} and
 @c !!! GNU also has COREFILE, CORESERVER, EXECSERVERS
 @end table
 
+@node Auxiliary Vector
+@section Auxiliary Vector
+@cindex auxiliary vector
+
+When a program is executed, it receives information from the operating
+system about the environment in which it is operating.  The form of this
+information is a table of key-value pairs, where the keys are from the
+set of @samp{AT_} values in @file{elf.h}.  Some of the data is provided
+by the kernel for libc consumption, and may be obtained by ordinary
+interfaces, such as @code{sysconf}.  However, on a platform-by-platform
+basis there may be information that is not available any other way.
+
+@subsection Definition of @code{getauxval}
+@comment sys/auxv.h
+@deftypefun {unsigned long int} getauxval (unsigned long int @var{type})
+This function is used to inquire about the entries in the auxiliary
+vector.  The @var{type} argument should be one of the @samp{AT_} symbols
+defined in @file{elf.h}.  If a matching entry is found, the value is
+returned; if the entry is not found, zero is returned.
+@end deftypefun
+
+For some platforms, the key @code{AT_HWCAP} is the easiest way to inquire
+about any instruction set extensions available at runtime.  In this case,
+there will (of necessity) be a platform-specific set of @samp{HWCAP_}
+values masked together that describe the capabilities of the cpu on which
+the program is being executed.
+
 @node System Calls
 @section System Calls
 
diff --git a/misc/Makefile b/misc/Makefile
index f42347a..d1c0a02 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -31,7 +31,7 @@ headers	:= sys/uio.h bits/uio.h sys/ioctl.h bits/ioctls.h bits/ioctl-types.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/select2.h bits/hwcap.h sys/auxv.h
 
 routines := brk sbrk sstk ioctl \
 	    readv writev preadv preadv64 pwritev pwritev64 \
@@ -64,7 +64,7 @@ routines := brk sbrk sstk ioctl \
 	    getloadavg getclktck \
 	    fgetxattr flistxattr fremovexattr fsetxattr getxattr \
 	    listxattr lgetxattr llistxattr lremovexattr lsetxattr \
-	    removexattr setxattr
+	    removexattr setxattr getauxval
 
 generated := tst-error1.mtrace tst-error1-mem
 
diff --git a/misc/Versions b/misc/Versions
index 3a31c7f..7f525ea 100644
--- a/misc/Versions
+++ b/misc/Versions
@@ -146,4 +146,7 @@ libc {
   GLIBC_2.14 {
     syncfs;
   }
+  GLIBC_2.16 {
+    __getauxval; getauxval;
+  }
 }
diff --git a/misc/getauxval.c b/misc/getauxval.c
new file mode 100644
index 0000000..a3338ee
--- /dev/null
+++ b/misc/getauxval.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 2012 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/>.  */
+
+#include <sys/auxv.h>
+#include <ldsodefs.h>
+
+
+unsigned long
+__getauxval (unsigned long type)
+{
+  ElfW(auxv_t) *p;
+
+  if (type == AT_HWCAP)
+    return GLRO(dl_hwcap);
+
+  for (p = GLRO(dl_auxv); p->a_type != AT_NULL; p++)
+    if (p->a_type == type)
+      return p->a_un.a_val;
+  return 0;
+}
+
+weak_alias (__getauxval, getauxval)
diff --git a/misc/sys/auxv.h b/misc/sys/auxv.h
new file mode 100644
index 0000000..a70fb37
--- /dev/null
+++ b/misc/sys/auxv.h
@@ -0,0 +1,35 @@
+/* Access to the auxiliary vector.
+   Copyright (C) 2012 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/>.  */
+
+#ifndef _SYS_AUXV_H
+#define _SYS_AUXV_H 1
+
+#include <elf.h>
+#include <bits/hwcap.h>
+
+__BEGIN_DECLS
+
+/* Return the value associated with an Elf*_auxv_t type from the auxv list
+   passed to the program on startup.  If __type was not present in the auxv
+   list, returns zero.  */
+extern unsigned long getauxval (unsigned long __type)
+  __THROW __attribute_const__;
+
+__END_DECLS
+
+#endif /* sys/auxv.h */
diff --git a/sysdeps/generic/bits/hwcap.h b/sysdeps/generic/bits/hwcap.h
new file mode 100644
index 0000000..b27d2fe
--- /dev/null
+++ b/sysdeps/generic/bits/hwcap.h
@@ -0,0 +1,23 @@
+/* Defines for bits in AT_HWCAP.
+   Copyright (C) 2012 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/>.  */
+
+#ifndef _SYS_AUXV_H
+# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
+#endif
+
+/* No bits defined for this architecture.  */
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index e071015..98cc123 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -597,6 +597,9 @@ struct rtld_global_ro
   /* Mask for important hardware capabilities we honour. */
   EXTERN uint64_t _dl_hwcap_mask;
 
+  /* Pointer to the auxv list supplied to the program at startup.  */
+  EXTERN ElfW(auxv_t) *_dl_auxv;
+
   /* Get architecture specific definitions.  */
 #define PROCINFO_DECL
 #ifndef PROCINFO_CLASS
diff --git a/sysdeps/powerpc/bits/hwcap.h b/sysdeps/powerpc/bits/hwcap.h
new file mode 100644
index 0000000..89e7d8b
--- /dev/null
+++ b/sysdeps/powerpc/bits/hwcap.h
@@ -0,0 +1,53 @@
+/* Defines for bits in AT_HWCAP.
+   Copyright (C) 2012 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/>.  */
+
+#ifndef _SYS_AUXV_H
+# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
+#endif
+
+/*
+ * The following must match the kernels asm/cputable.h.
+ */
+#define PPC_FEATURE_32		    0x80000000 /* 32-bit mode. */
+#define PPC_FEATURE_64		    0x40000000 /* 64-bit mode. */
+#define PPC_FEATURE_601_INSTR	    0x20000000 /* 601 chip, Old POWER ISA.  */
+#define PPC_FEATURE_HAS_ALTIVEC	    0x10000000 /* SIMD/Vector Unit.  */
+#define PPC_FEATURE_HAS_FPU	    0x08000000 /* Floating Point Unit.  */
+#define PPC_FEATURE_HAS_MMU	    0x04000000 /* Memory Management Unit.  */
+#define PPC_FEATURE_HAS_4xxMAC	    0x02000000 /* 4xx Multiply Accumulator.  */
+#define PPC_FEATURE_UNIFIED_CACHE   0x01000000 /* Unified I/D cache.  */
+#define PPC_FEATURE_HAS_SPE	    0x00800000 /* Signal Processing ext.  */
+#define PPC_FEATURE_HAS_EFP_SINGLE  0x00400000 /* SPE Float.  */
+#define PPC_FEATURE_HAS_EFP_DOUBLE  0x00200000 /* SPE Double.  */
+#define PPC_FEATURE_NO_TB	    0x00100000 /* 601/403gx have no timebase */
+#define PPC_FEATURE_POWER4	    0x00080000 /* POWER4 ISA 2.00 */
+#define PPC_FEATURE_POWER5	    0x00040000 /* POWER5 ISA 2.02 */
+#define PPC_FEATURE_POWER5_PLUS	    0x00020000 /* POWER5+ ISA 2.03 */
+#define PPC_FEATURE_CELL_BE	    0x00010000 /* CELL Broadband Engine */
+#define PPC_FEATURE_BOOKE	    0x00008000
+#define PPC_FEATURE_SMT		    0x00004000 /* Simultaneous Multi-Threading */
+#define PPC_FEATURE_ICACHE_SNOOP    0x00002000
+#define PPC_FEATURE_ARCH_2_05	    0x00001000 /* ISA 2.05 */
+#define PPC_FEATURE_PA6T	    0x00000800 /* PA Semi 6T Core */
+#define PPC_FEATURE_HAS_DFP	    0x00000400 /* Decimal FP Unit */
+#define PPC_FEATURE_POWER6_EXT	    0x00000200 /* P6 + mffgpr/mftgpr */
+#define PPC_FEATURE_ARCH_2_06	    0x00000100 /* ISA 2.06 */
+#define PPC_FEATURE_HAS_VSX	    0x00000080 /* P7 Vector Extension.  */
+#define PPC_FEATURE_PSERIES_PERFMON_COMPAT  0x00000040
+#define PPC_FEATURE_TRUE_LE	    0x00000002
+#define PPC_FEATURE_PPC_LE	    0x00000001
diff --git a/sysdeps/powerpc/sysdep.h b/sysdeps/powerpc/sysdep.h
index 5cd8613..7682ae9 100644
--- a/sysdeps/powerpc/sysdep.h
+++ b/sysdeps/powerpc/sysdep.h
@@ -18,33 +18,10 @@
 /* 
  * Powerpc Feature masks for the Aux Vector Hardware Capabilities (AT_HWCAP). 
  * This entry is copied to _dl_hwcap or rtld_global._dl_hwcap during startup.
- * The following must match the kernels linux/asm/cputable.h.  
  */
-#define PPC_FEATURE_32			0x80000000 /* 32-bit mode. */
-#define PPC_FEATURE_64			0x40000000 /* 64-bit mode. */
-#define PPC_FEATURE_601_INSTR		0x20000000 /* 601 chip, Old POWER ISA.  */
-#define PPC_FEATURE_HAS_ALTIVEC		0x10000000 /* SIMD/Vector Unit.  */
-#define PPC_FEATURE_HAS_FPU		0x08000000 /* Floating Point Unit.  */
-#define PPC_FEATURE_HAS_MMU		0x04000000 /* Memory Management Unit.  */
-#define PPC_FEATURE_HAS_4xxMAC		0x02000000 /* 4xx Multiply Accumulator.  */
-#define PPC_FEATURE_UNIFIED_CACHE	0x01000000 /* Unified I/D cache.  */
-#define PPC_FEATURE_HAS_SPE		0x00800000 /* Signal Processing ext.  */
-#define PPC_FEATURE_HAS_EFP_SINGLE	0x00400000 /* SPE Float.  */
-#define PPC_FEATURE_HAS_EFP_DOUBLE	0x00200000 /* SPE Double.  */
-#define PPC_FEATURE_NO_TB		0x00100000 /* 601/403gx have no timebase */
-#define PPC_FEATURE_POWER4		0x00080000 /* POWER4 ISA 2.00 */
-#define PPC_FEATURE_POWER5		0x00040000 /* POWER5 ISA 2.02 */
-#define PPC_FEATURE_POWER5_PLUS		0x00020000 /* POWER5+ ISA 2.03 */
-#define PPC_FEATURE_CELL_BE		0x00010000 /* CELL Broadband Engine */
-#define PPC_FEATURE_BOOKE		0x00008000
-#define PPC_FEATURE_SMT			0x00004000 /* Simultaneous Multi-Threading */
-#define PPC_FEATURE_ICACHE_SNOOP	0x00002000
-#define PPC_FEATURE_ARCH_2_05		0x00001000 /* ISA 2.05 */
-#define PPC_FEATURE_PA6T		0x00000800 /* PA Semi 6T Core */
-#define PPC_FEATURE_HAS_DFP		0x00000400 /* Decimal FP Unit */
-#define PPC_FEATURE_POWER6_EXT		0x00000200 /* P6 + mffgpr/mftgpr */
-#define PPC_FEATURE_ARCH_2_06	        0x00000100 /* ISA 2.06 */
-#define PPC_FEATURE_HAS_VSX		0x00000080 /* P7 Vector Extension.  */
+#define _SYS_AUXV_H
+#include <bits/hwcap.h>
+
 #define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
 
 #ifdef __ASSEMBLER__
diff --git a/sysdeps/sparc/bits/hwcap.h b/sysdeps/sparc/bits/hwcap.h
new file mode 100644
index 0000000..d922d7b
--- /dev/null
+++ b/sysdeps/sparc/bits/hwcap.h
@@ -0,0 +1,47 @@
+/* Defines for bits in AT_HWCAP.
+   Copyright (C) 2011-2012 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/>.  */
+
+#ifndef _SYS_AUXV_H
+# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
+#endif
+
+#define HWCAP_SPARC_FLUSH	0x00000001
+#define HWCAP_SPARC_STBAR	0x00000002
+#define HWCAP_SPARC_SWAP	0x00000004
+#define HWCAP_SPARC_MULDIV	0x00000008
+#define HWCAP_SPARC_V9		0x00000010
+#define HWCAP_SPARC_ULTRA3	0x00000020
+#define HWCAP_SPARC_BLKINIT	0x00000040
+#define HWCAP_SPARC_N2		0x00000080
+#define HWCAP_SPARC_MUL32	0x00000100
+#define HWCAP_SPARC_DIV32	0x00000200
+#define HWCAP_SPARC_FSMULD	0x00000400
+#define HWCAP_SPARC_V8PLUS	0x00000800
+#define HWCAP_SPARC_POPC	0x00001000
+#define HWCAP_SPARC_VIS		0x00002000
+#define HWCAP_SPARC_VIS2	0x00004000
+#define HWCAP_SPARC_ASI_BLK_INIT 0x00008000
+#define HWCAP_SPARC_FMAF	0x00010000
+#define HWCAP_SPARC_VIS3	0x00020000
+#define HWCAP_SPARC_HPC		0x00040000
+#define HWCAP_SPARC_RANDOM	0x00080000
+#define HWCAP_SPARC_TRANS	0x00100000
+#define HWCAP_SPARC_FJFMAU	0x00200000
+#define HWCAP_SPARC_IMA		0x00400000
+#define HWCAP_SPARC_ASI_CACHE_SPARING \
+				0x00800000
diff --git a/sysdeps/sparc/sysdep.h b/sysdeps/sparc/sysdep.h
index bcffec9..2d7b7f0 100644
--- a/sysdeps/sparc/sysdep.h
+++ b/sysdeps/sparc/sysdep.h
@@ -15,33 +15,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* Bits present in AT_HWCAP on SPARC.  */
-
-#define HWCAP_SPARC_FLUSH	0x00000001
-#define HWCAP_SPARC_STBAR	0x00000002
-#define HWCAP_SPARC_SWAP	0x00000004
-#define HWCAP_SPARC_MULDIV	0x00000008
-#define HWCAP_SPARC_V9		0x00000010
-#define HWCAP_SPARC_ULTRA3	0x00000020
-#define HWCAP_SPARC_BLKINIT	0x00000040
-#define HWCAP_SPARC_N2		0x00000080
-#define HWCAP_SPARC_MUL32	0x00000100
-#define HWCAP_SPARC_DIV32	0x00000200
-#define HWCAP_SPARC_FSMULD	0x00000400
-#define HWCAP_SPARC_V8PLUS	0x00000800
-#define HWCAP_SPARC_POPC	0x00001000
-#define HWCAP_SPARC_VIS		0x00002000
-#define HWCAP_SPARC_VIS2	0x00004000
-#define HWCAP_SPARC_ASI_BLK_INIT 0x00008000
-#define HWCAP_SPARC_FMAF	0x00010000
-#define HWCAP_SPARC_VIS3	0x00020000
-#define HWCAP_SPARC_HPC		0x00040000
-#define HWCAP_SPARC_RANDOM	0x00080000
-#define HWCAP_SPARC_TRANS	0x00100000
-#define HWCAP_SPARC_FJFMAU	0x00200000
-#define HWCAP_SPARC_IMA		0x00400000
-#define HWCAP_SPARC_ASI_CACHE_SPARING \
-				0x00800000
+#define _SYS_AUXV_H 1
+#include <bits/hwcap.h>
 
 #ifdef	__ASSEMBLER__
 
diff --git a/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist b/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist
index ccb8f9f..d6695eb 100644
--- a/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist
@@ -1801,11 +1801,13 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __poll_chk F
  __ppoll_chk F
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist
index 41d0881..bacdb6a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist
@@ -1761,11 +1761,13 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __poll_chk F
  __ppoll_chk F
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist
index c593952..a0d362e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist
@@ -68,11 +68,13 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __poll_chk F
  __ppoll_chk F
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
diff --git a/sysdeps/unix/sysv/linux/s390/bits/hwcap.h b/sysdeps/unix/sysv/linux/s390/bits/hwcap.h
new file mode 100644
index 0000000..7f03ffe
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/bits/hwcap.h
@@ -0,0 +1,36 @@
+/* Defines for bits in AT_HWCAP.
+   Copyright (C) 2012 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/>.  */
+
+#ifndef _SYS_AUXV_H
+# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
+#endif
+
+/*
+ * The following must match the kernels asm/elf.h.
+ * Note that these are *not* the same as the STORE FACILITY LIST bits.
+ */
+#define HWCAP_S390_ESAN3        1
+#define HWCAP_S390_ZARCH        2
+#define HWCAP_S390_STFLE        4
+#define HWCAP_S390_MSA          8
+#define HWCAP_S390_LDISP        16
+#define HWCAP_S390_EIMM         32
+#define HWCAP_S390_DFP          64
+#define HWCAP_S390_HPAGE        128
+#define HWCAP_S390_ETF3EH       256
+#define HWCAP_S390_HIGH_GPRS    512
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist
index c015daf..728550b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist
@@ -1758,11 +1758,13 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __poll_chk F
  __ppoll_chk F
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
index 8d57add..1ca4811 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
@@ -75,11 +75,13 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __poll_chk F
  __ppoll_chk F
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
diff --git a/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist b/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist
index ce6b549..ae57b67 100644
--- a/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist
@@ -75,11 +75,13 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __poll_chk F
  __ppoll_chk F
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist
index 815e8af..1804348 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist
@@ -1753,6 +1753,7 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __getshmlba F
  __poll_chk F
  __ppoll_chk F
@@ -1761,6 +1762,7 @@ GLIBC_2.16
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  sys_errlist D 0x220
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist
index 39c0642..2914d1c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist
@@ -74,6 +74,7 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __getshmlba F
  __poll_chk F
  __ppoll_chk F
@@ -82,6 +83,7 @@ GLIBC_2.16
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  sys_errlist D 0x440
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist
index 6f15f00..2a1b8e9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist
@@ -70,11 +70,13 @@ GLIBC_2.15
  scandirat64 F
 GLIBC_2.16
  GLIBC_2.16 A
+ __getauxval F
  __poll_chk F
  __ppoll_chk F
  aligned_alloc F
  c16rtomb F
  c32rtomb F
+ getauxval F
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   30 +++++++++++
 elf/dl-support.c                                   |    2 +
 elf/dl-sysdep.c                                    |    9 ++--
 manual/startup.texi                                |   30 +++++++++++-
 misc/Makefile                                      |    4 +-
 misc/Versions                                      |    3 +
 misc/getauxval.c                                   |   36 +++++++++++++
 misc/sys/auxv.h                                    |   35 +++++++++++++
 sysdeps/generic/bits/hwcap.h                       |   23 +++++++++
 sysdeps/generic/ldsodefs.h                         |    3 +
 sysdeps/powerpc/bits/hwcap.h                       |   53 ++++++++++++++++++++
 sysdeps/powerpc/sysdep.h                           |   29 +----------
 sysdeps/sparc/bits/hwcap.h                         |   47 +++++++++++++++++
 sysdeps/sparc/sysdep.h                             |   29 +----------
 sysdeps/unix/sysv/linux/i386/nptl/libc.abilist     |    2 +
 .../linux/powerpc/powerpc32/fpu/nptl/libc.abilist  |    2 +
 .../sysv/linux/powerpc/powerpc64/nptl/libc.abilist |    2 +
 sysdeps/unix/sysv/linux/s390/bits/hwcap.h          |   36 +++++++++++++
 .../unix/sysv/linux/s390/s390-32/nptl/libc.abilist |    2 +
 .../unix/sysv/linux/s390/s390-64/nptl/libc.abilist |    2 +
 sysdeps/unix/sysv/linux/sh/nptl/libc.abilist       |    2 +
 .../sysv/linux/sparc/sparc32/nptl/libc.abilist     |    2 +
 .../sysv/linux/sparc/sparc64/nptl/libc.abilist     |    2 +
 .../unix/sysv/linux/x86_64/64/nptl/libc.abilist    |    2 +
 24 files changed, 326 insertions(+), 61 deletions(-)
 create mode 100644 misc/getauxval.c
 create mode 100644 misc/sys/auxv.h
 create mode 100644 sysdeps/generic/bits/hwcap.h
 create mode 100644 sysdeps/powerpc/bits/hwcap.h
 create mode 100644 sysdeps/sparc/bits/hwcap.h
 create mode 100644 sysdeps/unix/sysv/linux/s390/bits/hwcap.h


hooks/post-receive
-- 
GNU C Library master sources


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