__ctype_init() every new TLS (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 23 Dec 2014 20:48:45 +0000 (12:48 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 31 Dec 2014 18:03:09 +0000 (13:03 -0500)
commitdcec68e39e372fad31db43f1bccbaf4bb023a8ab
treea91fcbc5758f12b941ab4287d258d37b0ec9b35a
parent03b5a3a97c5f19ba3383cb8165df9e1f33c58b50
__ctype_init() every new TLS (XCC)

Functions like isspace() look in TLS for a pointer to an array used in the
ctype ops.  If you PF near there, then that pointer might not be set.
__ctype_init() initializes that pointer.

Every TLS needs this done once.  We do it a little more often than necessary
(right before vcore_entry, for example).  Thread0 also had a few issues with
this.  The new init-array business in glibc doesn't call _init (hence the
override of elf-init.c), and our custom init method didn't catch the update to
call __ctype_init().
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/elf-init.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/init-first.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/start.c
user/parlib/uthread.c