This is the mail archive of the libc-alpha@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] |
Hi! During commit review for GNU Hurd suitability I noticed that the following commit is incomplete (and indeed provokes a SEGFAULT on x86 GNU Hurd). On 15 Oct 2011 20:28:33 -0000, drepper@sourceware.org wrote: > commit fd5bdc0924e0cfd1688b632068c1b26f3b0c88da > Author: Ulrich Drepper <drepper@gmail.com> > Date: Sat Oct 15 16:27:08 2011 -0400 > > Optimize access to isXYZ and toXYZ tables > > The functions to get the pointers can now depend on the TLS variable > be initialized. > > diff --git a/ChangeLog b/ChangeLog > index 414611a..a708003 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,13 @@ > +2011-10-15 Ulrich Drepper <drepper@gmail.com> > + > + * ctype/ctype-info.c (__ctype_init): Define. > + * include/ctype.h (__ctype_init): Declare. > + (__ctype_b_loc): The variable is always initialized. > + (__ctype_toupper_loc): Likewise. > + (__ctype_tolower_loc): Likewise. > + * ctype/Versions: Export __ctype_init for GLIBC_PRIVATE. > + * sysdeps/unix/sysv/linux/init-first.c (_init): Call __ctype_init. > diff --git a/nptl/ChangeLog b/nptl/ChangeLog > index ae48299..7ff2516 100644 > --- a/nptl/ChangeLog > +++ b/nptl/ChangeLog > @@ -1,3 +1,7 @@ > +2011-10-15 Ulrich Drepper <drepper@gmail.com> > + > + * pthread_create.c (start_thread): Ca;; __ctype_init. > + Here are the missing bits. OK to commit? I only tested x86 GNU Hurd, but the others follow analoguously -- and they very likely are not used in any functional configuration (it is debatable whether we should be carrying such unused files in-tree; the problem will be to identify all the unused ones). For the curious: the Hurd's libthreads and libpthread do not need an equivalent change to the nptl/pthread_create.c one, because they already call ``uselocale (LC_GLOBAL_LOCALE)'' which already includes matching code to what __ctype_init is now doing. * csu/init-first.c (__libc_init_first): Call __ctype_init. * sysdeps/i386/init-first.c (init): Likewise. * sysdeps/mach/hurd/i386/init-first.c (posixland_init): Likewise. * sysdeps/mach/hurd/powerpc/init-first.c (posixland_init): Likewise. * sysdeps/sh/init-first.c (init): Likewise. diff --git a/csu/init-first.c b/csu/init-first.c index fa21274..59fd477 100644 --- a/csu/init-first.c +++ b/csu/init-first.c @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <ctype.h> #include <unistd.h> #include <sys/types.h> @@ -56,4 +57,7 @@ void __libc_init_first /* This is a hack to make the special getopt in GNU libc working. */ __getopt_clean_environment (envp); #endif + + /* Initialize ctype data. */ + __ctype_init (); } diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c index 2af042f..a8970cf 100644 --- a/sysdeps/i386/init-first.c +++ b/sysdeps/i386/init-first.c @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <ctype.h> #include <unistd.h> extern void __libc_init (int, char **, char **); @@ -41,6 +42,9 @@ init (int *data) /* This is a hack to make the special getopt in GNU libc working. */ __getopt_clean_environment (envp); #endif + + /* Initialize ctype data. */ + __ctype_init (); } #ifdef SHARED diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c index ec03de3..d3b2f5d 100644 --- a/sysdeps/mach/hurd/i386/init-first.c +++ b/sysdeps/mach/hurd/i386/init-first.c @@ -19,6 +18,7 @@ 02111-1307 USA. */ #include <assert.h> +#include <ctype.h> #include <hurd.h> #include <stdio.h> #include <unistd.h> @@ -89,6 +89,9 @@ posixland_init (int argc, char **argv, char **envp) __getopt_clean_environment (envp); #endif + /* Initialize ctype data. */ + __ctype_init (); + #if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS __libc_global_ctors (); #endif diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c index 2047cac..48b9100 100644 --- a/sysdeps/mach/hurd/powerpc/init-first.c +++ b/sysdeps/mach/hurd/powerpc/init-first.c @@ -18,6 +18,7 @@ 02111-1307 USA. */ #include <assert.h> +#include <ctype.h> #include <hurd.h> #include <stdio.h> #include <unistd.h> @@ -79,6 +80,9 @@ posixland_init (int argc, char **argv, char **envp) __getopt_clean_environment (__environ); #endif + /* Initialize ctype data. */ + __ctype_init (); + #if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS __libc_global_ctors (); #endif diff --git a/sysdeps/sh/init-first.c b/sysdeps/sh/init-first.c index 1f3a821..b40333e 100644 --- a/sysdeps/sh/init-first.c +++ b/sysdeps/sh/init-first.c @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <ctype.h> #include <unistd.h> extern void __libc_init (int, char **, char **); @@ -41,6 +42,9 @@ init (int *data) /* This is a hack to make the special getopt in GNU libc working. */ __getopt_clean_environment (envp); #endif + + /* Initialize ctype data. */ + __ctype_init (); } #ifdef SHARED GrÃÃe, Thomas
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |