#
1.19 |
|
07-Jun-2023 |
joerg |
TLS variant I archs need to fudge the offset by the size of the TCB.
|
#
1.18 |
|
04-Jun-2023 |
joerg |
Fix interactions of initial-exec TLS model and dlopen
(1) If an initial-exec relocation was used for a non-local symbol (i.e. the definition of the symbol is in a different DSO), the computation of the static TLS offset used the wrong DSO. This would effectively mean the wrong address was computed (PR toolchain/50277, PR pkg/57445).
Fix this by forcing the computation of the correct DSO (the one defining the symbol).
This code uses __UNCONST to avoid the vast interface changes for this special case.
(2) If symbols from a DSO loaded via dlopen are used with both global-dynamic/local-dynamic and initial-exec relocations AND a initial-exec relocation was resolved first in a thread, a split brain situation could exist where the dynamic relocations would use one memory block (separate allocation) and the initial-exec relocations the static per-thread TLS space.
(3) If the initial-exec relocation in (2) is seen after any thread has already used a GD/LD allocation, bail out. Since IE relocations are used only in the GOT, this will prevent the dlopen. This is a bit more aggressive than necessary, but a full blown reference counting doesn't seem to be justified.
|
#
1.17 |
|
01-Jun-2023 |
riastradh |
ld.elf_so: Make tls alloc debug messages more detailed and greppable.
XXX pullup-10
|
#
1.16 |
|
31-May-2023 |
riastradh |
ld.elf_so: Sprinkle tls debug messages.
XXX pullup-10
|
#
1.15 |
|
10-Feb-2023 |
skrll |
Alignment. NFCI.
|
Revision tags: netbsd-10-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
|
#
1.14 |
|
05-Nov-2019 |
joerg |
Use alignof and not size_t for platforms with non-natural base alignments.
|
#
1.13 |
|
04-Nov-2019 |
joerg |
PR 54093: Align static TLS area to max_align_t.
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
#
1.12 |
|
13-Apr-2019 |
rin |
branches: 1.12.2; Do not compile __tls_get_addr() into ldd(1), which fixes ldd(1) crashing on arm after switching to new jemalloc.
jemalloc invokes __tls_get_addr() under some condition. If anything other than ld.elf_so nor libc exports it, inconsistency arises as a result.
|
Revision tags: pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base
|
#
1.11 |
|
13-Jul-2017 |
joerg |
branches: 1.11.6; Fix two bugs related to promotion of DSO TLS blocks into the static thread allocation: (1) Set the DTV vector up whenever an offset into the static allocation is assigned, even if the block itself is not initialized. This has been seen in libstdc++. (2) Do not free a DTV block if it is part of the static thread allocation.
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
#
1.10 |
|
14-Dec-2014 |
chs |
branches: 1.10.8; fix powerpc TLS problems by removing the hacks for PPC EABI. the kernel no longer treats R2 specially and its use as the TLS register is now handled entirely in userland.
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
|
#
1.9 |
|
21-Oct-2013 |
joerg |
branches: 1.9.4; Only initialise TLS space from the PT_TLS segment, if the size is positive and the offset has been computed. Fixes PR lib/48324.
|
#
1.8 |
|
19-Oct-2013 |
skrll |
Add debug code.
|
Revision tags: yamt-pagecache-tag8 netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
|
#
1.7 |
|
23-Apr-2011 |
joerg |
branches: 1.7.4; 1.7.6; 1.7.10; 1.7.12; 1.7.18; Fix a Freudian slip found by rmind
|
#
1.6 |
|
07-Apr-2011 |
matt |
Add a workaround for older crt0.o that overwrite r2 (tcb pointer). (save tcb pointer using _lwp_setprivate in ld.elf_so and retrieve the tcb via _lwp_getprivate in libc and use it to restore the value in r2).
|
#
1.5 |
|
29-Mar-2011 |
joerg |
Block signals when using the exclusive lock.
|
#
1.4 |
|
25-Mar-2011 |
joerg |
Add basic locking to ld.elf_so.
|
#
1.3 |
|
12-Mar-2011 |
matt |
Add TLS support for PowerPC. If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of __lwp_getprivate_fast or lwp_setprivate.
|
#
1.2 |
|
10-Mar-2011 |
joerg |
Fix prototype for __tls_get_addr. Add a generic implementation of it using __tls_get_addr. Update TLS notes.
|
#
1.1 |
|
09-Mar-2011 |
joerg |
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports _rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to setup the thread private area of all new threads. ld.elf_so is responsible for setting up the private area for the initial thread. Similar functions are called from _libc_init for static binaries, using dl_iterate_phdr to access the ELF Program Header.
Add test cases to exercise the different TLS storage models. Test cases are compiled and installed on all platforms, but are skipped on platforms not marked for TLS support.
This material is based upon work partially supported by The NetBSD Foundation under a contract with Joerg Sonnenberger.
It is inspired by the TLS support in FreeBSD by Doug Rabson and the clean ups of the DragonFly port of the original FreeBSD modifications.
|
#
1.15 |
|
10-Feb-2023 |
skrll |
Alignment. NFCI.
|
Revision tags: netbsd-10-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
|
#
1.14 |
|
05-Nov-2019 |
joerg |
Use alignof and not size_t for platforms with non-natural base alignments.
|
#
1.13 |
|
04-Nov-2019 |
joerg |
PR 54093: Align static TLS area to max_align_t.
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
#
1.12 |
|
13-Apr-2019 |
rin |
branches: 1.12.2; Do not compile __tls_get_addr() into ldd(1), which fixes ldd(1) crashing on arm after switching to new jemalloc.
jemalloc invokes __tls_get_addr() under some condition. If anything other than ld.elf_so nor libc exports it, inconsistency arises as a result.
|
Revision tags: pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base
|
#
1.11 |
|
13-Jul-2017 |
joerg |
branches: 1.11.6; Fix two bugs related to promotion of DSO TLS blocks into the static thread allocation: (1) Set the DTV vector up whenever an offset into the static allocation is assigned, even if the block itself is not initialized. This has been seen in libstdc++. (2) Do not free a DTV block if it is part of the static thread allocation.
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
#
1.10 |
|
14-Dec-2014 |
chs |
branches: 1.10.8; fix powerpc TLS problems by removing the hacks for PPC EABI. the kernel no longer treats R2 specially and its use as the TLS register is now handled entirely in userland.
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
|
#
1.9 |
|
21-Oct-2013 |
joerg |
branches: 1.9.4; Only initialise TLS space from the PT_TLS segment, if the size is positive and the offset has been computed. Fixes PR lib/48324.
|
#
1.8 |
|
19-Oct-2013 |
skrll |
Add debug code.
|
Revision tags: yamt-pagecache-tag8 netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
|
#
1.7 |
|
23-Apr-2011 |
joerg |
branches: 1.7.4; 1.7.6; 1.7.10; 1.7.12; 1.7.18; Fix a Freudian slip found by rmind
|
#
1.6 |
|
07-Apr-2011 |
matt |
Add a workaround for older crt0.o that overwrite r2 (tcb pointer). (save tcb pointer using _lwp_setprivate in ld.elf_so and retrieve the tcb via _lwp_getprivate in libc and use it to restore the value in r2).
|
#
1.5 |
|
29-Mar-2011 |
joerg |
Block signals when using the exclusive lock.
|
#
1.4 |
|
25-Mar-2011 |
joerg |
Add basic locking to ld.elf_so.
|
#
1.3 |
|
12-Mar-2011 |
matt |
Add TLS support for PowerPC. If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of __lwp_getprivate_fast or lwp_setprivate.
|
#
1.2 |
|
10-Mar-2011 |
joerg |
Fix prototype for __tls_get_addr. Add a generic implementation of it using __tls_get_addr. Update TLS notes.
|
#
1.1 |
|
09-Mar-2011 |
joerg |
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports _rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to setup the thread private area of all new threads. ld.elf_so is responsible for setting up the private area for the initial thread. Similar functions are called from _libc_init for static binaries, using dl_iterate_phdr to access the ELF Program Header.
Add test cases to exercise the different TLS storage models. Test cases are compiled and installed on all platforms, but are skipped on platforms not marked for TLS support.
This material is based upon work partially supported by The NetBSD Foundation under a contract with Joerg Sonnenberger.
It is inspired by the TLS support in FreeBSD by Doug Rabson and the clean ups of the DragonFly port of the original FreeBSD modifications.
|
#
1.14 |
|
05-Nov-2019 |
joerg |
Use alignof and not size_t for platforms with non-natural base alignments.
|
#
1.13 |
|
04-Nov-2019 |
joerg |
PR 54093: Align static TLS area to max_align_t.
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
#
1.12 |
|
13-Apr-2019 |
rin |
Do not compile __tls_get_addr() into ldd(1), which fixes ldd(1) crashing on arm after switching to new jemalloc.
jemalloc invokes __tls_get_addr() under some condition. If anything other than ld.elf_so nor libc exports it, inconsistency arises as a result.
|
Revision tags: pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base
|
#
1.11 |
|
13-Jul-2017 |
joerg |
branches: 1.11.6; Fix two bugs related to promotion of DSO TLS blocks into the static thread allocation: (1) Set the DTV vector up whenever an offset into the static allocation is assigned, even if the block itself is not initialized. This has been seen in libstdc++. (2) Do not free a DTV block if it is part of the static thread allocation.
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
#
1.10 |
|
14-Dec-2014 |
chs |
branches: 1.10.8; fix powerpc TLS problems by removing the hacks for PPC EABI. the kernel no longer treats R2 specially and its use as the TLS register is now handled entirely in userland.
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
|
#
1.9 |
|
21-Oct-2013 |
joerg |
branches: 1.9.4; Only initialise TLS space from the PT_TLS segment, if the size is positive and the offset has been computed. Fixes PR lib/48324.
|
#
1.8 |
|
19-Oct-2013 |
skrll |
Add debug code.
|
Revision tags: yamt-pagecache-tag8 netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
|
#
1.7 |
|
23-Apr-2011 |
joerg |
branches: 1.7.4; 1.7.6; 1.7.10; 1.7.12; 1.7.18; Fix a Freudian slip found by rmind
|
#
1.6 |
|
07-Apr-2011 |
matt |
Add a workaround for older crt0.o that overwrite r2 (tcb pointer). (save tcb pointer using _lwp_setprivate in ld.elf_so and retrieve the tcb via _lwp_getprivate in libc and use it to restore the value in r2).
|
#
1.5 |
|
29-Mar-2011 |
joerg |
Block signals when using the exclusive lock.
|
#
1.4 |
|
25-Mar-2011 |
joerg |
Add basic locking to ld.elf_so.
|
#
1.3 |
|
12-Mar-2011 |
matt |
Add TLS support for PowerPC. If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of __lwp_getprivate_fast or lwp_setprivate.
|
#
1.2 |
|
10-Mar-2011 |
joerg |
Fix prototype for __tls_get_addr. Add a generic implementation of it using __tls_get_addr. Update TLS notes.
|
#
1.1 |
|
09-Mar-2011 |
joerg |
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports _rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to setup the thread private area of all new threads. ld.elf_so is responsible for setting up the private area for the initial thread. Similar functions are called from _libc_init for static binaries, using dl_iterate_phdr to access the ELF Program Header.
Add test cases to exercise the different TLS storage models. Test cases are compiled and installed on all platforms, but are skipped on platforms not marked for TLS support.
This material is based upon work partially supported by The NetBSD Foundation under a contract with Joerg Sonnenberger.
It is inspired by the TLS support in FreeBSD by Doug Rabson and the clean ups of the DragonFly port of the original FreeBSD modifications.
|
#
1.13 |
|
04-Nov-2019 |
joerg |
PR 54093: Align static TLS area to max_align_t.
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
#
1.12 |
|
13-Apr-2019 |
rin |
Do not compile __tls_get_addr() into ldd(1), which fixes ldd(1) crashing on arm after switching to new jemalloc.
jemalloc invokes __tls_get_addr() under some condition. If anything other than ld.elf_so nor libc exports it, inconsistency arises as a result.
|
Revision tags: pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base
|
#
1.11 |
|
13-Jul-2017 |
joerg |
branches: 1.11.6; Fix two bugs related to promotion of DSO TLS blocks into the static thread allocation: (1) Set the DTV vector up whenever an offset into the static allocation is assigned, even if the block itself is not initialized. This has been seen in libstdc++. (2) Do not free a DTV block if it is part of the static thread allocation.
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
#
1.10 |
|
14-Dec-2014 |
chs |
branches: 1.10.8; fix powerpc TLS problems by removing the hacks for PPC EABI. the kernel no longer treats R2 specially and its use as the TLS register is now handled entirely in userland.
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
|
#
1.9 |
|
21-Oct-2013 |
joerg |
branches: 1.9.4; Only initialise TLS space from the PT_TLS segment, if the size is positive and the offset has been computed. Fixes PR lib/48324.
|
#
1.8 |
|
19-Oct-2013 |
skrll |
Add debug code.
|
Revision tags: yamt-pagecache-tag8 netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
|
#
1.7 |
|
23-Apr-2011 |
joerg |
branches: 1.7.4; 1.7.6; 1.7.10; 1.7.12; 1.7.18; Fix a Freudian slip found by rmind
|
#
1.6 |
|
07-Apr-2011 |
matt |
Add a workaround for older crt0.o that overwrite r2 (tcb pointer). (save tcb pointer using _lwp_setprivate in ld.elf_so and retrieve the tcb via _lwp_getprivate in libc and use it to restore the value in r2).
|
#
1.5 |
|
29-Mar-2011 |
joerg |
Block signals when using the exclusive lock.
|
#
1.4 |
|
25-Mar-2011 |
joerg |
Add basic locking to ld.elf_so.
|
#
1.3 |
|
12-Mar-2011 |
matt |
Add TLS support for PowerPC. If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of __lwp_getprivate_fast or lwp_setprivate.
|
#
1.2 |
|
10-Mar-2011 |
joerg |
Fix prototype for __tls_get_addr. Add a generic implementation of it using __tls_get_addr. Update TLS notes.
|
#
1.1 |
|
09-Mar-2011 |
joerg |
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports _rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to setup the thread private area of all new threads. ld.elf_so is responsible for setting up the private area for the initial thread. Similar functions are called from _libc_init for static binaries, using dl_iterate_phdr to access the ELF Program Header.
Add test cases to exercise the different TLS storage models. Test cases are compiled and installed on all platforms, but are skipped on platforms not marked for TLS support.
This material is based upon work partially supported by The NetBSD Foundation under a contract with Joerg Sonnenberger.
It is inspired by the TLS support in FreeBSD by Doug Rabson and the clean ups of the DragonFly port of the original FreeBSD modifications.
|
#
1.12 |
|
13-Apr-2019 |
rin |
Do not compile __tls_get_addr() into ldd(1), which fixes ldd(1) crashing on arm after switching to new jemalloc.
jemalloc invokes __tls_get_addr() under some condition. If anything other than ld.elf_so nor libc exports it, inconsistency arises as a result.
|
Revision tags: pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base
|
#
1.11 |
|
13-Jul-2017 |
joerg |
Fix two bugs related to promotion of DSO TLS blocks into the static thread allocation: (1) Set the DTV vector up whenever an offset into the static allocation is assigned, even if the block itself is not initialized. This has been seen in libstdc++. (2) Do not free a DTV block if it is part of the static thread allocation.
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
#
1.10 |
|
14-Dec-2014 |
chs |
branches: 1.10.8; fix powerpc TLS problems by removing the hacks for PPC EABI. the kernel no longer treats R2 specially and its use as the TLS register is now handled entirely in userland.
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
|
#
1.9 |
|
21-Oct-2013 |
joerg |
branches: 1.9.4; Only initialise TLS space from the PT_TLS segment, if the size is positive and the offset has been computed. Fixes PR lib/48324.
|
#
1.8 |
|
19-Oct-2013 |
skrll |
Add debug code.
|
Revision tags: yamt-pagecache-tag8 netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
|
#
1.7 |
|
23-Apr-2011 |
joerg |
branches: 1.7.4; 1.7.6; 1.7.10; 1.7.12; 1.7.18; Fix a Freudian slip found by rmind
|
#
1.6 |
|
07-Apr-2011 |
matt |
Add a workaround for older crt0.o that overwrite r2 (tcb pointer). (save tcb pointer using _lwp_setprivate in ld.elf_so and retrieve the tcb via _lwp_getprivate in libc and use it to restore the value in r2).
|
#
1.5 |
|
29-Mar-2011 |
joerg |
Block signals when using the exclusive lock.
|
#
1.4 |
|
25-Mar-2011 |
joerg |
Add basic locking to ld.elf_so.
|
#
1.3 |
|
12-Mar-2011 |
matt |
Add TLS support for PowerPC. If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of __lwp_getprivate_fast or lwp_setprivate.
|
#
1.2 |
|
10-Mar-2011 |
joerg |
Fix prototype for __tls_get_addr. Add a generic implementation of it using __tls_get_addr. Update TLS notes.
|
#
1.1 |
|
09-Mar-2011 |
joerg |
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports _rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to setup the thread private area of all new threads. ld.elf_so is responsible for setting up the private area for the initial thread. Similar functions are called from _libc_init for static binaries, using dl_iterate_phdr to access the ELF Program Header.
Add test cases to exercise the different TLS storage models. Test cases are compiled and installed on all platforms, but are skipped on platforms not marked for TLS support.
This material is based upon work partially supported by The NetBSD Foundation under a contract with Joerg Sonnenberger.
It is inspired by the TLS support in FreeBSD by Doug Rabson and the clean ups of the DragonFly port of the original FreeBSD modifications.
|
#
1.11 |
|
13-Jul-2017 |
joerg |
Fix two bugs related to promotion of DSO TLS blocks into the static thread allocation: (1) Set the DTV vector up whenever an offset into the static allocation is assigned, even if the block itself is not initialized. This has been seen in libstdc++. (2) Do not free a DTV block if it is part of the static thread allocation.
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
#
1.10 |
|
14-Dec-2014 |
chs |
fix powerpc TLS problems by removing the hacks for PPC EABI. the kernel no longer treats R2 specially and its use as the TLS register is now handled entirely in userland.
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
|
#
1.9 |
|
21-Oct-2013 |
joerg |
branches: 1.9.4; Only initialise TLS space from the PT_TLS segment, if the size is positive and the offset has been computed. Fixes PR lib/48324.
|
#
1.8 |
|
19-Oct-2013 |
skrll |
Add debug code.
|
Revision tags: yamt-pagecache-tag8 netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
|
#
1.7 |
|
23-Apr-2011 |
joerg |
branches: 1.7.4; 1.7.6; 1.7.10; 1.7.12; 1.7.18; Fix a Freudian slip found by rmind
|
#
1.6 |
|
07-Apr-2011 |
matt |
Add a workaround for older crt0.o that overwrite r2 (tcb pointer). (save tcb pointer using _lwp_setprivate in ld.elf_so and retrieve the tcb via _lwp_getprivate in libc and use it to restore the value in r2).
|
#
1.5 |
|
29-Mar-2011 |
joerg |
Block signals when using the exclusive lock.
|
#
1.4 |
|
25-Mar-2011 |
joerg |
Add basic locking to ld.elf_so.
|
#
1.3 |
|
12-Mar-2011 |
matt |
Add TLS support for PowerPC. If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of __lwp_getprivate_fast or lwp_setprivate.
|
#
1.2 |
|
10-Mar-2011 |
joerg |
Fix prototype for __tls_get_addr. Add a generic implementation of it using __tls_get_addr. Update TLS notes.
|
#
1.1 |
|
09-Mar-2011 |
joerg |
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports _rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to setup the thread private area of all new threads. ld.elf_so is responsible for setting up the private area for the initial thread. Similar functions are called from _libc_init for static binaries, using dl_iterate_phdr to access the ELF Program Header.
Add test cases to exercise the different TLS storage models. Test cases are compiled and installed on all platforms, but are skipped on platforms not marked for TLS support.
This material is based upon work partially supported by The NetBSD Foundation under a contract with Joerg Sonnenberger.
It is inspired by the TLS support in FreeBSD by Doug Rabson and the clean ups of the DragonFly port of the original FreeBSD modifications.
|