This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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

[PATCH] Fix statically linked apps dlopening AT_SYSINFO using libs


Hi!

When statically linked application dlopens (e.g. for NSS or iconv) libc.so
which uses %gs:0x10 ENTER_KERNEL, it segfaults the first time one of the
syscalls in the libraries is called.
The following patch fixes it.

2003-01-16  Jakub Jelinek  <jakub@redhat.com>

linuxthreads/
	* sysdeps/i386/tls.h (INIT_SYSINFO): Initialize head->sysinfo even
	if not SHARED.
nptl/
	* sysdeps/i386/tls.h (INIT_SYSINFO): Initialize _head->sysinfo even
	if not SHARED.

--- libc/linuxthreads/sysdeps/i386/tls.h.jj	2002-12-31 11:46:38.000000000 +0100
+++ libc/linuxthreads/sysdeps/i386/tls.h	2003-01-16 16:29:07.000000000 +0100
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  linuxthreads/i386 version.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003 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
@@ -182,7 +182,7 @@ TLS_DO_MODIFY_LDT_KERNEL_CHECK(						   
   TLS_DO_MODIFY_LDT ((descr), 0)
 #  endif
 
-#if defined NEED_DL_SYSINFO && defined SHARED
+#if defined NEED_DL_SYSINFO
 # define INIT_SYSINFO \
   head->sysinfo = GL(dl_sysinfo)
 #else
--- libc/nptl/sysdeps/i386/tls.h.jj	2002-12-29 20:21:57.000000000 +0100
+++ libc/nptl/sysdeps/i386/tls.h	2003-01-16 16:29:49.000000000 +0100
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  nptl/i386 version.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003 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
@@ -161,7 +161,7 @@ union user_desc_init
 #  define TLS_LOAD_EBX
 # endif
 
-#if defined NEED_DL_SYSINFO && defined SHARED
+#if defined NEED_DL_SYSINFO
 # define INIT_SYSINFO \
   _head->sysinfo = GL(dl_sysinfo)
 #else

	Jakub


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