cvs commit: src/sys/i386/include tls.h src/gnu/usr.bin/cc34/cc_prep/config dragonfly-spec.h src/gnu/usr.bin/cc34/cc_prep/config/i386 dragonfly.h src/lib/csu/i386 crt1.c src/lib/libc/gen tls.c src/lib/libc/i386/sys cerror.S src/lib/libc/include libc_private.h ...
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed May 11 12:48:08 PDT 2005
dillon 2005/05/11 12:47:09 PDT
DragonFly src repository
Modified files:
sys/i386/include tls.h
gnu/usr.bin/cc34/cc_prep/config dragonfly-spec.h
gnu/usr.bin/cc34/cc_prep/config/i386 dragonfly.h
lib/csu/i386 crt1.c
lib/libc/gen tls.c
lib/libc/i386/sys cerror.S
lib/libc/include libc_private.h
lib/libc_r/uthread uthread_create.c uthread_init.c
lib/libthread_xu/arch/amd64/amd64 pthread_md.c
lib/libthread_xu/arch/i386/i386 pthread_md.c
libexec/rtld-elf Makefile debug.h rtld.1 rtld.c rtld.h
libexec/rtld-elf/i386 reloc.c rtld_machdep.h
Log:
Major TLS cleanups.
* The RTLD no longer attempts to set up an initial TLS. The job has been
moved to libc. The RTLD does not use TLS itself. The
allocate_initial_tls() function has been removed.
* The _init_tls() call made by CRT1 is no mandatory.
* The RTLD no longer calls the library _init() functions early. Instead it
sets up a callback that allows CRT1 to call the library _init() functions
after it has called _init_tls().
* LIBC now has a _libc_init_tls() function which is weakly bound as
_init_tls(). This function initializes the TLS for the program (generally
by calling the _rtld_allocate_tls() and then doing any required
post-allocation initialization). In the absence of a threading library
this function is basically it.
Threading libraries may replace _init_tls() with their own version. This
does not yet occur as of this commit. The threading library would then
almost certainly call _libc_init_tls() and then make further modifications
to the TCB as necessary (e.g. populate the tcb_pthread field).
* RTLD's allocate_tls() no longer does anything fancy. The 'old_tcb' argument
and concept has been removed.
* We have a new tcb_errno_p field in the TCB, but as of this commit it
is not yet being used.
Reviewed-by: Joerg Sonnenberger <joerg at xxxxxxxxxxxxxxxxx>,
David Xu <davidxu at xxxxxxxxxxxxxxxxxxxxxxx>
Revision Changes Path
1.6 +16 -1 src/sys/i386/include/tls.h
1.7 +1 -1 src/gnu/usr.bin/cc34/cc_prep/config/dragonfly-spec.h
1.2 +1 -1 src/gnu/usr.bin/cc34/cc_prep/config/i386/dragonfly.h
1.3 +10 -3 src/lib/csu/i386/crt1.c
1.9 +110 -52 src/lib/libc/gen/tls.c
1.5 +64 -13 src/lib/libc/i386/sys/cerror.S
1.6 +2 -1 src/lib/libc/include/libc_private.h
1.5 +1 -1 src/lib/libc_r/uthread/uthread_create.c
1.9 +1 -1 src/lib/libc_r/uthread/uthread_init.c
1.7 +3 -3 src/lib/libthread_xu/arch/amd64/amd64/pthread_md.c
1.10 +2 -3 src/lib/libthread_xu/arch/i386/i386/pthread_md.c
1.9 +1 -1 src/libexec/rtld-elf/Makefile
1.3 +3 -3 src/libexec/rtld-elf/debug.h
1.3 +8 -2 src/libexec/rtld-elf/rtld.1
1.23 +50 -48 src/libexec/rtld-elf/rtld.c
1.11 +1 -1 src/libexec/rtld-elf/rtld.h
1.13 +7 -27 src/libexec/rtld-elf/i386/reloc.c
1.7 +3 -0 src/libexec/rtld-elf/i386/rtld_machdep.h
http://www.dragonflybsd.org/cvsweb/src/sys/i386/include/tls.h.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/gnu/usr.bin/cc34/cc_prep/config/dragonfly-spec.h.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/gnu/usr.bin/cc34/cc_prep/config/i386/dragonfly.h.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/csu/i386/crt1.c.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/libc/gen/tls.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/libc/i386/sys/cerror.S.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/libc/include/libc_private.h.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/libc_r/uthread/uthread_create.c.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/libc_r/uthread/uthread_init.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/libthread_xu/arch/amd64/amd64/pthread_md.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/lib/libthread_xu/arch/i386/i386/pthread_md.c.diff?r1=1.9&r2=1.10&f=u
http://www.dragonflybsd.org/cvsweb/src/libexec/rtld-elf/Makefile.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/libexec/rtld-elf/debug.h.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/libexec/rtld-elf/rtld.1.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/libexec/rtld-elf/rtld.c.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/libexec/rtld-elf/rtld.h.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/libexec/rtld-elf/i386/reloc.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/libexec/rtld-elf/i386/rtld_machdep.h.diff?r1=1.6&r2=1.7&f=u
More information about the Commits
mailing list