about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-12-19 23:05:13 +0000
committerUlrich Drepper <drepper@redhat.com>2002-12-19 23:05:13 +0000
commit5f5843e30dda46ffc443c492959e206530837c98 (patch)
tree7bc5ac8db51b676ae724d006fec887e2fdb11c75 /nptl
parent13880b3014cddd3700e4186a3e07aa6146863b02 (diff)
downloadglibc-5f5843e30dda46ffc443c492959e206530837c98.tar.gz
glibc-5f5843e30dda46ffc443c492959e206530837c98.tar.xz
glibc-5f5843e30dda46ffc443c492959e206530837c98.zip
Update.
2002-12-19  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/i386/sysdep.h: Add support to use AT_SYSINFO
	information for system calls.

	* sysdeps/generic/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO to 1 only
	for ld.so.

	* elf/rtld.c (_dl_start) [USE___THREAD]: Define initdtv.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog7
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/createthread.c5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h6
3 files changed, 17 insertions, 1 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 86fd4ed80f..c71c44b301 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,12 @@
 2002-12-19  Ulrich Drepper  <drepper@redhat.com>
 
+	* allocatestack.c (allocate_stack) [NEED_DL_SYSINFO]: Set sysinfo
+	in new TCB.
+	* sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Check
+	that sysinfo is properly initialized.
+	* sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO
+	to 1 only for ld.so.
+
 	* sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define
 	RTLD_CORRECT_DYNAMIC_WEAK.
 
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/createthread.c b/nptl/sysdeps/unix/sysv/linux/i386/createthread.c
index be2ca829ab..def163350f 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/createthread.c
+++ b/nptl/sysdeps/unix/sysv/linux/i386/createthread.c
@@ -108,6 +108,11 @@ create_thread (struct pthread *pd, STACK_VARIABLES_PARMS)
 	}
     }
 
+#ifdef NEED_DL_SYSINFO
+  assert (THREAD_GETMEM (THREAD_SELF, header.data.sysinfo)
+	  == pd->header.data.sysinfo);
+#endif
+
   /* We rely heavily on various flags the CLONE function understands:
 
      CLONE_VM, CLONE_FS, CLONE_FILES
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
index 8f541c5140..f0d4ac7a88 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
@@ -28,7 +28,11 @@
    all the libc functions that ld.so uses are called without PLT and always
    get the versions linked into ld.so rather than the libc ones.  */
 
-#define RTLD_PRIVATE_ERRNO 1
+#ifdef IS_IN_rtld
+# define RTLD_PRIVATE_ERRNO 1
+#else
+# define RTLD_PRIVATE_ERRNO 0
+#endif
 
 /* This configuration has in libc.so cancellable functions and other
    functions which have to behave differently if the application uses