about summary refs log tree commit diff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-07-20 17:31:30 +0000
committerUlrich Drepper <drepper@redhat.com>2002-07-20 17:31:30 +0000
commit846c6907d02ba2d8027e2053abb3d7ec017d9191 (patch)
tree227ff298b144d49025018b7f02e9c9e0a2c46bcc /sysdeps/unix
parent864dd9b2d01ae0d277b543226a04f49001de3566 (diff)
downloadglibc-846c6907d02ba2d8027e2053abb3d7ec017d9191.tar.gz
glibc-846c6907d02ba2d8027e2053abb3d7ec017d9191.tar.xz
glibc-846c6907d02ba2d8027e2053abb3d7ec017d9191.zip
Update.
	* sysdeps/unix/sysv/linux/ldsodefs.h (HAVE_AUX_XID): Define if
	__ASSUME_AT_XID is defined.
	* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_XID): Define
	for 2.4.1 and up.
	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Optimize handling
	of AT_UID, AT_EUID, AT_GID, and AT_EGID.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h6
-rw-r--r--sysdeps/unix/sysv/linux/ldsodefs.h6
2 files changed, 10 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index 562a6c7654..927701a662 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -171,6 +171,12 @@
 # define __ASSUME_AT_PAGESIZE		1
 #endif
 
+/* Starting with at least 2.4.0 the kernel passes the uid/gid unconditionally
+   up to the child.  */
+#if __LINUX_KERNEL_VERSION >= 132097
+# define __ASSUME_AT_XID		1
+#endif
+
 /* Starting with 2.4.5 kernels PPC passes the AUXV in the standard way
    and the mmap2 syscall made it into the official kernel.  */
 #if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__
diff --git a/sysdeps/unix/sysv/linux/ldsodefs.h b/sysdeps/unix/sysv/linux/ldsodefs.h
index 8e37f4df6a..a3c97c4731 100644
--- a/sysdeps/unix/sysv/linux/ldsodefs.h
+++ b/sysdeps/unix/sysv/linux/ldsodefs.h
@@ -36,8 +36,10 @@ extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function;
 extern void _dl_non_dynamic_init (void) internal_function;
 
 /* We can assume that the kernel always provides the AT_UID, AT_EUID,
-   AT_GID, and AT_EGID values in the auxiliary vector.  */
-#define HAVE_AUX_XID
+   AT_GID, and AT_EGID values in the auxiliary vector from 2.4.0 or so on.  */
+#if __ASSUME_AT_XID
+# define HAVE_AUX_XID
+#endif
 
 /* Starting with one of the 2.4.0 pre-releases the Linux kernel passes
    up the page size information.  */