Mercurial > projects > ldc
diff druntime/src/compiler/ldc/tls.S @ 1458:e0b2d67cfe7c
Added druntime (this should be removed once it works).
author | Robert Clipsham <robert@octarineparrot.com> |
---|---|
date | Tue, 02 Jun 2009 17:43:06 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/druntime/src/compiler/ldc/tls.S Tue Jun 02 17:43:06 2009 +0100 @@ -0,0 +1,44 @@ +/** + * Contains support code for thread-local storage. + * + * Copyright: Copyright Digital Mars 2008 - 2009. + * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>. + * Authors: Walter Bright + * + * Copyright Digital Mars 2008 - 2009. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +#if linux + +/* The memory between the addresses of _tlsstart and _tlsend is the storage for + * thread-local data in D 2.0. Both of these rely on the default linker script + * of: + * .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + * .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + * to group the sections in that order. + * + * Sadly, this does not work because ld orders .tdata after .tdata.*, despite + * what the linker script says. + */ + +.file "tls.S" + +.globl _tlsstart + .section .tdata,"awT",@progbits + .align 4 + .type _tlsstart, @object + .size _tlsstart, 4 +_tlsstart: + .long 3 + +.globl _tlsend + .section .tcommon,"awT",@nobits + .align 4 + .type _tlsend, @object + .size _tlsend, 4 +_tlsend: + .zero 4 + +#endif