History log of /dragonfly/lib/libc/gen/tls.c (Results 1 – 20 of 20)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3
# ccd5664d 08-Oct-2019 Sascha Wildner <saw@online.de>

libc/tls: Remove some code that has been #if 0'd since 2005.


Revision tags: v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2
# a32e3ba6 08-Apr-2019 Sascha Wildner <saw@online.de>

libc: Add prototypes for various functions we use in __weak_reference().


# dc676eae 19-Feb-2019 Matthew Dillon <dillon@apollo.backplane.com>

libc - Use sbrk() system call, remove brk() (2)

* Change the initial TLS allocation to use mmap() instead of sbrk()
in order to maintain compatibility with older kernels.

* Using sbrk() will work

libc - Use sbrk() system call, remove brk() (2)

* Change the initial TLS allocation to use mmap() instead of sbrk()
in order to maintain compatibility with older kernels.

* Using sbrk() will work with a fully updated system, but will not
work with an old kernel because it returns an error and sets errno,
but setting errno requires the TLS to already be installed. So
even though we have back-off code in libc, it seg-faults before
it gets to it.

* Only affects a few programs in base such as 'chflags' so not a
disaster. But still, the intent was to maintain compatibility
with older kernels.

show more ...


Revision tags: v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc, v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1
# f8406b33 06-Oct-2016 zrj <rimvydas.jasinskas@gmail.com>

<sys/cdefs.h>: Rework __weak_reference() macro.

My LTO build blew away weak symbols from slim LTO objects.
Use __strong_reference() + weak attribute to allow the compiler to catch
extern declaration

<sys/cdefs.h>: Rework __weak_reference() macro.

My LTO build blew away weak symbols from slim LTO objects.
Use __strong_reference() + weak attribute to allow the compiler to catch
extern declarations and not to fold weak symbols as local ones.

Keep previous version as __weak_reference_asm() in _pthread_stubs.c for
now due to several issues (there is a need to do it in a cleaner way).

lib/libc/gen/ucontext.c:
add missing __DECONST for ucp, shouldn't sigreturn take const ucontext_t?

lib/libc/inet/inet_ntoa.c:
add missing #undef inet_ntoa_r

No symbol changes in libc and librt on normal compilation.

While there, add __weak_symbol attribute for future additions.

show more ...


Revision tags: v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3
# 965b839f 04-Jul-2015 Sascha Wildner <saw@online.de>

Use roundup2() from <sys/param.h> in a number of places.


Revision tags: v4.2.1, v4.2.0
# f8695751 22-Jun-2015 Sascha Wildner <saw@online.de>

i386 removal, part 4/x: Remove i386 specific code from libc.


Revision tags: v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4, v4.0.3, v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.7.0, v3.4.3, v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0, v3.2.2, v3.2.1, v3.2.0, v3.3.0, v3.0.3
# 6f93d55f 14-Apr-2012 Sascha Wildner <saw@online.de>

Remove some unnecessary inclusions of <sys/cdefs.h> across the tree.


Revision tags: v3.0.2
# 678e8cc6 05-Mar-2012 Sascha Wildner <saw@online.de>

Sweep-fix comparing pointers with 0 (and assigning 0 to pointers).

For better readability, don't compare pointers with 0 or assign 0
to them. Use NULL instead.

The change was done with coccinelle.


Revision tags: v3.0.1, v3.1.0, v3.0.0
# 86d7f5d3 26-Nov-2011 John Marino <draco@marino.st>

Initial import of binutils 2.22 on the new vendor branch

Future versions of binutils will also reside on this branch rather
than continuing to create new binutils branches for each new version.


Revision tags: v2.12.0, v2.13.0, v2.10.1, v2.11.0, v2.10.0, v2.9.1, v2.8.2, v2.8.1, v2.8.0, v2.9.0, v2.6.3, v2.7.3, v2.6.2, v2.7.2, v2.7.1, v2.6.1, v2.7.0, v2.6.0, v2.5.1, v2.4.1, v2.5.0, v2.4.0, v2.3.2, v2.3.1
# 97c6bef2 28-Apr-2009 Matthew Dillon <dillon@apollo.backplane.com>

Fix short allocation in libc RTLD for static-compiled programs.

libc's __libc_allocate_tls() (weakly bound to _rtld_allocate_tls()) was not
allocating enough space for the TLS segments in statically

Fix short allocation in libc RTLD for static-compiled programs.

libc's __libc_allocate_tls() (weakly bound to _rtld_allocate_tls()) was not
allocating enough space for the TLS segments in statically-compiled
threaded applications.

The old malloc allocated lots of extra space and masked the bug. The new
slab malloc doesn't and revealed the bug.

Reproduced-by: Sepherosa Ziehau <sepherosa@gmail.com>

show more ...


Revision tags: v2.2.1, v2.2.0, v2.3.0, v2.1.1, v2.0.1
# b0e25abd 19-Nov-2005 Sascha Wildner <swildner@dragonflybsd.org>

- Document ttyname_r().

- Fix several compilation warnings.

- Perform some style(9) cleanup.

Submitted-by: Alexey Slynko <slynko@tronet.ru>


# a1eee96a 11-May-2005 Matthew Dillon <dillon@dragonflybsd.org>

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 remo

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@britannica.bec.de>,
David Xu <davidxu@crater.dragonflybsd.org>

show more ...


# a378ce7d 29-Apr-2005 Joerg Sonnenberger <joerg@dragonflybsd.org>

Prepare for thread-local errno by implementing full TLS support for
static binaries, which does not touch errno before the initial TLS
space is created. This code path is *very* sensitive to changes.


# 7d6ff7ad 28-Apr-2005 Joerg Sonnenberger <joerg@dragonflybsd.org>

Always allocate static TLS space.


# f20fd431 29-Mar-2005 Joerg Sonnenberger <joerg@dragonflybsd.org>

Remove tcb_size and flag argument for _rtld_allocate_tls,
remove tcb_size argument for _rtld_free_tls. The size is defined
by the architecture's struct tls_tcb layout and the behaviour
of RTLD_ALLOC_

Remove tcb_size and flag argument for _rtld_allocate_tls,
remove tcb_size argument for _rtld_free_tls. The size is defined
by the architecture's struct tls_tcb layout and the behaviour
of RTLD_ALLOC_TLS_FREE_OLD is the only possible reaction for
old_tcb != NULL which doesn't leak memory.

show more ...


# 9e2ee207 29-Mar-2005 Joerg Sonnenberger <joerg@dragonflybsd.org>

Cleanup the TLS implementation:
- Define the TCB layout in machine/tls.h, define wether tcb_self exists or
not.
- Define the layout of the DTV, not used yet.
- Define the TLS variant
- Define commo

Cleanup the TLS implementation:
- Define the TCB layout in machine/tls.h, define wether tcb_self exists or
not.
- Define the layout of the DTV, not used yet.
- Define the TLS variant
- Define common access functions (tls_get_tcb, tls_get_curthread, tls_set_tcb)
and the RTLD functions.

show more ...


# bc633d63 28-Mar-2005 Matthew Dillon <dillon@dragonflybsd.org>

Cleanup and retool portions of the TLS support and make sure that
non-threaded binaries remain compatible with older kernels.

* Removes the tcb alignment argument. Instead an alignment #define is

Cleanup and retool portions of the TLS support and make sure that
non-threaded binaries remain compatible with older kernels.

* Removes the tcb alignment argument. Instead an alignment #define is
placed in sys/tls.h

* Gets rid of the Variant I code (we can add it in later, it just gets
in the way).

* Retools the Variant II code to support %gs:OFFSET (negative offset)
AND %gs:0 relative accesses, supporting both -mtls-direct-seg-refs and
-mno-tls-direct-seg-refs.

* Changes the Elf_Addr array for the TCB into a real structure in
sys/tls.h

* Retains the DTV methodology.

* Retains the TCB methodology, but note that the area 'after' the tcb
is now available for future use (at least with Variant I removed).
Frankly I'm not sure we would ever want to support having the
'data' area after the TCB instead of before the TCB, at least not
for i386.

* Do not try to call sys_set_tls_area() if there is no TLS storage.
i.e. so non-threaded binaries remain compatible with old kernels.

The TLS is only initialized if (a) There is thread local storage, aka
gcc3's __thread keyword, or (b) The program is linked against a threading
library. The threading library makes the appropriate calls to set up the
TLS.

show more ...


# 9b074eef 20-Mar-2005 Joerg Sonnenberger <joerg@dragonflybsd.org>

Minor style changes.


# 92df6c3e 09-Mar-2005 David Xu <davidxu@dragonflybsd.org>

1. use __weak_reference to define weak symbol.
2. fix compiler warnings.


# b00401f0 08-Mar-2005 David Xu <davidxu@dragonflybsd.org>

Import tls support code for static binary from FreeBSD.