The NetBSD Project

CVS log for src/libexec/ld.elf_so/tls.c

[BACK] Up to [cvs.NetBSD.org] / src / libexec / ld.elf_so

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.11.6.2 / (download) - annotate - [select for diffs], Mon Apr 13 08:03:17 2020 UTC (9 months ago) by martin
Branch: phil-wifi
Changes since 1.11.6.1: +5 -3 lines
Diff to previous 1.11.6.1 (colored) to branchpoint 1.11 (colored) next main 1.12 (colored)

Mostly merge changes from HEAD upto 20200411

Revision 1.12.2.1 / (download) - annotate - [select for diffs], Tue Nov 26 08:12:26 2019 UTC (13 months, 3 weeks ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1
Changes since 1.12: +5 -3 lines
Diff to previous 1.12 (colored) next main 1.13 (colored)

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

Revision 1.14 / (download) - annotate - [select for diffs], Tue Nov 5 22:22:42 2019 UTC (14 months, 2 weeks ago) by joerg
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, is-mlppp-base, is-mlppp, HEAD
Changes since 1.13: +4 -3 lines
Diff to previous 1.13 (colored)

Use alignof and not size_t for platforms with non-natural base
alignments.

Revision 1.13 / (download) - annotate - [select for diffs], Mon Nov 4 12:45:10 2019 UTC (14 months, 2 weeks ago) by joerg
Branch: MAIN
Changes since 1.12: +4 -3 lines
Diff to previous 1.12 (colored)

PR 54093: Align static TLS area to max_align_t.

Revision 1.11.6.1 / (download) - annotate - [select for diffs], Mon Jun 10 22:05:29 2019 UTC (19 months, 1 week ago) by christos
Branch: phil-wifi
Changes since 1.11: +3 -3 lines
Diff to previous 1.11 (colored)

Sync with HEAD

Revision 1.12 / (download) - annotate - [select for diffs], Sat Apr 13 00:23:32 2019 UTC (21 months, 1 week ago) by rin
Branch: MAIN
CVS Tags: phil-wifi-20190609, netbsd-9-base
Branch point for: netbsd-9
Changes since 1.11: +3 -3 lines
Diff to previous 1.11 (colored)

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 1.9.4.2 / (download) - annotate - [select for diffs], Wed Jul 26 15:54:15 2017 UTC (3 years, 5 months ago) by snj
Branch: netbsd-7
CVS Tags: netbsd-7-2-RELEASE
Changes since 1.9.4.1: +15 -10 lines
Diff to previous 1.9.4.1 (colored) to branchpoint 1.9 (colored) next main 1.10 (colored)

Pull up following revision(s) (requested by joerg in ticket #1455):
	libexec/ld.elf_so/tls.c: revision 1.11
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 1.10.8.1 / (download) - annotate - [select for diffs], Tue Jul 25 01:36:58 2017 UTC (3 years, 5 months ago) by snj
Branch: netbsd-8
CVS Tags: netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, matt-nb8-mediatek-base, matt-nb8-mediatek
Changes since 1.10: +15 -10 lines
Diff to previous 1.10 (colored) next main 1.11 (colored)

Pull up following revision(s) (requested by joerg in ticket #133):
	libexec/ld.elf_so/tls.c: revision 1.11
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 1.7.6.2 / (download) - annotate - [select for diffs], Sun Jul 23 14:25:46 2017 UTC (3 years, 5 months ago) by snj
Branch: netbsd-6
Changes since 1.7.6.1: +15 -10 lines
Diff to previous 1.7.6.1 (colored) to branchpoint 1.7 (colored) next main 1.8 (colored)

Pull up following revision(s) (requested by joerg in ticket #1462):
	libexec/ld.elf_so/tls.c: revision 1.11 via patch
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 1.11 / (download) - annotate - [select for diffs], Thu Jul 13 14:10:38 2017 UTC (3 years, 6 months ago) by joerg
Branch: MAIN
CVS Tags: phil-wifi-base, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, 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, perseant-stdc-iso10646-base, perseant-stdc-iso10646
Branch point for: phil-wifi
Changes since 1.10: +15 -10 lines
Diff to previous 1.10 (colored)

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 1.9.4.1 / (download) - annotate - [select for diffs], Wed Dec 31 06:51:08 2014 UTC (6 years ago) by snj
Branch: netbsd-7
CVS Tags: netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0
Changes since 1.9: +2 -9 lines
Diff to previous 1.9 (colored)

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.

Revision 1.10 / (download) - annotate - [select for diffs], Sun Dec 14 23:49:17 2014 UTC (6 years, 1 month ago) by chs
Branch: MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, netbsd-8-base, localcount-20160914, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan
Branch point for: netbsd-8
Changes since 1.9: +2 -9 lines
Diff to previous 1.9 (colored)

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 1.7.10.1 / (download) - annotate - [select for diffs], Wed Aug 20 00:02:22 2014 UTC (6 years, 5 months ago) by tls
Branch: tls-maxphys
Changes since 1.7: +8 -3 lines
Diff to previous 1.7 (colored) next main 1.8 (colored)

Rebase to HEAD as of a few days ago.

Revision 1.7.4.1 / (download) - annotate - [select for diffs], Thu May 22 11:37:13 2014 UTC (6 years, 7 months ago) by yamt
Branch: yamt-pagecache
Changes since 1.7: +8 -3 lines
Diff to previous 1.7 (colored) next main 1.8 (colored)

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

Revision 1.7.18.1 / (download) - annotate - [select for diffs], Thu Nov 7 20:32:36 2013 UTC (7 years, 2 months ago) by snj
Branch: netbsd-6-1
CVS Tags: netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE
Changes since 1.7: +3 -3 lines
Diff to previous 1.7 (colored) next main 1.8 (colored)

Pull up following revision(s) (requested by joerg in ticket #976):
	libexec/ld.elf_so/tls.c: revision 1.9
	tests/lib/libc/tls/dso/h_tls_dlopen.c: revision 1.5
Only initialise TLS space from the PT_TLS segment, if the size is
positive and the offset has been computed. Fixes PR lib/48324.

Revision 1.7.12.1 / (download) - annotate - [select for diffs], Thu Nov 7 20:31:55 2013 UTC (7 years, 2 months ago) by snj
Branch: netbsd-6-0
CVS Tags: netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE
Changes since 1.7: +3 -3 lines
Diff to previous 1.7 (colored) next main 1.8 (colored)

Pull up following revision(s) (requested by joerg in ticket #976):
	libexec/ld.elf_so/tls.c: revision 1.9
	tests/lib/libc/tls/dso/h_tls_dlopen.c: revision 1.5
Only initialise TLS space from the PT_TLS segment, if the size is
positive and the offset has been computed. Fixes PR lib/48324.

Revision 1.7.6.1 / (download) - annotate - [select for diffs], Thu Nov 7 20:23:46 2013 UTC (7 years, 2 months ago) by snj
Branch: netbsd-6
Changes since 1.7: +3 -3 lines
Diff to previous 1.7 (colored)

Pull up following revision(s) (requested by joerg in ticket #976):
	libexec/ld.elf_so/tls.c: revision 1.9
	tests/lib/libc/tls/dso/h_tls_dlopen.c: revision 1.5
Only initialise TLS space from the PT_TLS segment, if the size is
positive and the offset has been computed. Fixes PR lib/48324.

Revision 1.9 / (download) - annotate - [select for diffs], Mon Oct 21 19:14:15 2013 UTC (7 years, 2 months ago) by joerg
Branch: MAIN
CVS Tags: yamt-pagecache-base9, tls-maxphys-base, tls-earlyentropy-base, tls-earlyentropy, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, netbsd-7-base
Branch point for: netbsd-7
Changes since 1.8: +3 -3 lines
Diff to previous 1.8 (colored)

Only initialise TLS space from the PT_TLS segment, if the size is
positive and the offset has been computed. Fixes PR lib/48324.

Revision 1.8 / (download) - annotate - [select for diffs], Sat Oct 19 10:14:06 2013 UTC (7 years, 3 months ago) by skrll
Branch: MAIN
Changes since 1.7: +7 -2 lines
Diff to previous 1.7 (colored)

Add debug code.

Revision 1.7 / (download) - annotate - [select for diffs], Sat Apr 23 16:40:08 2011 UTC (9 years, 8 months ago) by joerg
Branch: MAIN
CVS Tags: yamt-pagecache-tag8, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, cherry-xenmp-base, cherry-xenmp, agc-symver-base, agc-symver
Branch point for: yamt-pagecache, tls-maxphys, netbsd-6-1, netbsd-6-0, netbsd-6
Changes since 1.6: +3 -3 lines
Diff to previous 1.6 (colored)

Fix a Freudian slip found by rmind

Revision 1.6 / (download) - annotate - [select for diffs], Thu Apr 7 02:19:28 2011 UTC (9 years, 9 months ago) by matt
Branch: MAIN
Changes since 1.5: +9 -2 lines
Diff to previous 1.5 (colored)

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

Revision 1.5 / (download) - annotate - [select for diffs], Tue Mar 29 20:56:35 2011 UTC (9 years, 9 months ago) by joerg
Branch: MAIN
Changes since 1.4: +11 -8 lines
Diff to previous 1.4 (colored)

Block signals when using the exclusive lock.

Revision 1.4 / (download) - annotate - [select for diffs], Fri Mar 25 18:07:04 2011 UTC (9 years, 9 months ago) by joerg
Branch: MAIN
Changes since 1.3: +27 -5 lines
Diff to previous 1.3 (colored)

Add basic locking to ld.elf_so.

Revision 1.3 / (download) - annotate - [select for diffs], Sat Mar 12 07:43:53 2011 UTC (9 years, 10 months ago) by matt
Branch: MAIN
Changes since 1.2: +16 -4 lines
Diff to previous 1.2 (colored)

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.

Revision 1.2 / (download) - annotate - [select for diffs], Thu Mar 10 14:27:31 2011 UTC (9 years, 10 months ago) by joerg
Branch: MAIN
Changes since 1.1: +27 -2 lines
Diff to previous 1.1 (colored)

Fix prototype for __tls_get_addr. Add a generic implementation of it
using __tls_get_addr. Update TLS notes.

Revision 1.1 / (download) - annotate - [select for diffs], Wed Mar 9 23:10:07 2011 UTC (9 years, 10 months ago) by joerg
Branch: MAIN

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.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>