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