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
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 
  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

More information about the Commits mailing list