diff options
| author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2005-07-22 08:00:47 +0000 |
|---|---|---|
| committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2005-07-22 08:00:47 +0000 |
| commit | 6e8c30a9b99892f23293bd13b7a544197627fa69 (patch) | |
| tree | c0867f0f50982f79dfb9465c9c8557257ce0d3e0 /libpthread/nptl/sysdeps/mips/dl-tls.h | |
| parent | 4ace63889357f5ffc8b96a8a6144352e7ce56eec (diff) | |
| download | uClibc-alpine-6e8c30a9b99892f23293bd13b7a544197627fa69.tar.bz2 uClibc-alpine-6e8c30a9b99892f23293bd13b7a544197627fa69.tar.xz | |
Added new files for TLS functionality in libpthreads and for the dynamic loader. The headers may be moved to the 'ldso' directory hierarchy at a later date depending on what we run into when implementating changes to the loader.
Diffstat (limited to 'libpthread/nptl/sysdeps/mips/dl-tls.h')
| -rw-r--r-- | libpthread/nptl/sysdeps/mips/dl-tls.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libpthread/nptl/sysdeps/mips/dl-tls.h b/libpthread/nptl/sysdeps/mips/dl-tls.h new file mode 100644 index 000000000..6d3ed6f5a --- /dev/null +++ b/libpthread/nptl/sysdeps/mips/dl-tls.h @@ -0,0 +1,46 @@ +/* Thread-local storage handling in the ELF dynamic linker. MIPS version. + Copyright (C) 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + + +/* Type used for the representation of TLS information in the GOT. */ +typedef struct +{ + unsigned long int ti_module; + unsigned long int ti_offset; +} tls_index; + +/* The thread pointer points 0x7000 past the first static TLS block. */ +#define TLS_TP_OFFSET 0x7000 + +/* Dynamic thread vector pointers point 0x8000 past the start of each + TLS block. */ +#define TLS_DTV_OFFSET 0x8000 + +/* Compute the value for a GOTTPREL reloc. */ +#define TLS_TPREL_VALUE(sym_map, sym) \ + ((sym_map)->l_tls_offset + (sym)->st_value - TLS_TP_OFFSET) + +/* Compute the value for a DTPREL reloc. */ +#define TLS_DTPREL_VALUE(sym) \ + ((sym)->st_value - TLS_DTV_OFFSET) + +extern void *__tls_get_addr (tls_index *ti); + +# define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET) +# define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET) |
