Home | History | Annotate | Download | only in tls
History log of /src/lib/libc/tls/tls.c
RevisionDateAuthorComments
 1.16  30-Nov-2024  christos Create a new header lwp_private.h to contain _lwp_getprivate_fast,
_lwp_gettcb_fast, _lwp_settcb and remove them from mcontext.h, so that:
1. we don't need special hacks to hide them
2. we can include <lwp.h> where needed to get the necessary prototypes
without redefining them locally.
 1.15  20-Jan-2024  christos branches: 1.15.2;
Catch up with all the lint warnings since exit on warning was disabled.
Disable 'missing header declaration' and 'nested extern' warnings for now.
 1.14  20-Aug-2020  riastradh mmap MAP_FAILED audit.
 1.13  21-Nov-2019  nakayama Fix PR/54074 and PR/54093 completely.

More similar to the ld.elf_so logic, it is necessary to align with
p_align first. Also, invert the #ifdef condition for consistency.

Should fix regression for static linking binaries:
http://releng.netbsd.org/b5reports/sparc/commits-2019.11.html#2019.11.10.23.39.03
http://releng.netbsd.org/b5reports/sparc64/commits-2019.11.html#2019.11.16.04.10.33
 1.12  07-Nov-2019  joerg Mirror the ld.elf_so logic for handling aligning the TLS size.
Most noticable, recompute the start of the TLS area for variant I
relative to the TCB. This makes a difference when the segment size and
base alignment don't agree.
 1.11  05-Nov-2019  joerg Use alignof and not size_t for platforms with non-natural base
alignments.
 1.10  04-Nov-2019  joerg PR 54093: Align static TLS area to max_align_t.
 1.9  13-Jul-2018  joerg branches: 1.9.2;
Determine dynamic binaries by presence of PT_INTERP. Static PIE has
_DYNAMIC.
 1.8  14-Dec-2014  chs branches: 1.8.14; 1.8.16;
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.
 1.7  19-Aug-2013  matt branches: 1.7.4;
Put the startup code in .text.startup
 1.6  07-Apr-2011  matt branches: 1.6.4; 1.6.10;
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  18-Mar-2011  he It would be nice if lint knew that abort() will never return.
For now just insert a /* NOTREACHED */ comment to fix the build failure.
 1.4  17-Mar-2011  skrll Appease the hppa linker.
 1.3  12-Mar-2011  matt Use __lwp_settcb if available.
 1.2  09-Mar-2011  joerg Define namespace remap macros before including sys/tls.h.
 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.6.10.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.4.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.4.1  31-Dec-2014  snj Pull up following revision(s) (requested by chs in ticket #364):
lib/libc/tls/tls.c: revision 1.8
libexec/ld.elf_so/tls.c: revision 1.10
sys/arch/powerpc/include/types.h: revision 1.50
sys/arch/powerpc/powerpc/sig_machdep.c: revision 1.44
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.
 1.8.16.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.16.1  10-Jun-2019  christos Sync with HEAD
 1.8.14.1  28-Jul-2018  pgoyette Sync with HEAD
 1.9.2.1  26-Nov-2019  martin Pull up following revision(s) (requested by nakayama in ticket #469):

lib/libc/tls/tls.c: revision 1.10
lib/libc/tls/tls.c: revision 1.11
lib/libc/tls/tls.c: revision 1.12
lib/libc/tls/tls.c: revision 1.13
libexec/ld.elf_so/tls.c: revision 1.13
libexec/ld.elf_so/tls.c: revision 1.14
libexec/ld.elf_so/Makefile: revision 1.142
lib/libc/tls/Makefile.inc: revision 1.3
usr.bin/ldd/Makefile.elf: revision 1.6

PR 54093: Align static TLS area to max_align_t.
Use alignof and not size_t for platforms with non-natural base
alignments.

Mirror the ld.elf_so logic for handling aligning the TLS size.
Most noticable, recompute the start of the TLS area for variant I
relative to the TCB. This makes a difference when the segment size and
base alignment don't agree.

Fix PR/54074 and PR/54093 completely.
More similar to the ld.elf_so logic, it is necessary to align with
p_align first. Also, invert the #ifdef condition for consistency.

Should fix regression for static linking binaries:
http://releng.netbsd.org/b5reports/sparc/commits-2019.11.html#2019.11.10.23.39.03
http://releng.netbsd.org/b5reports/sparc64/commits-2019.11.html#2019.11.16.04.10.33
 1.15.2.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed