(root)/
glibc-2.38/
sysdeps/
i386/
dl-tlsdesc.h
       1  /* Thread-local storage descriptor handling in the ELF dynamic linker.
       2     i386 version.
       3     Copyright (C) 2005-2023 Free Software Foundation, Inc.
       4     This file is part of the GNU C Library.
       5  
       6     The GNU C Library is free software; you can redistribute it and/or
       7     modify it under the terms of the GNU Lesser General Public
       8     License as published by the Free Software Foundation; either
       9     version 2.1 of the License, or (at your option) any later version.
      10  
      11     The GNU C Library is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14     Lesser General Public License for more details.
      15  
      16     You should have received a copy of the GNU Lesser General Public
      17     License along with the GNU C Library; if not, see
      18     <https://www.gnu.org/licenses/>.  */
      19  
      20  #ifndef _I386_DL_TLSDESC_H
      21  # define _I386_DL_TLSDESC_H 1
      22  
      23  /* Type used to represent a TLS descriptor in the GOT.  */
      24  struct tlsdesc
      25  {
      26    ptrdiff_t __attribute__ ((regparm (1))) (*entry) (struct tlsdesc *);
      27    void *arg;
      28  };
      29  
      30  typedef struct dl_tls_index
      31  {
      32    unsigned long int ti_module;
      33    unsigned long int ti_offset;
      34  } tls_index;
      35  
      36  /* Type used as the argument in a TLS descriptor for a symbol that
      37     needs dynamic TLS offsets.  */
      38  struct tlsdesc_dynamic_arg
      39  {
      40    tls_index tlsinfo;
      41    size_t gen_count;
      42  };
      43  
      44  extern ptrdiff_t attribute_hidden __attribute__ ((regparm (1)))
      45    _dl_tlsdesc_return (struct tlsdesc *),
      46    _dl_tlsdesc_undefweak (struct tlsdesc *);
      47  
      48  # ifdef SHARED
      49  extern void *_dl_make_tlsdesc_dynamic (struct link_map *map,
      50  				       size_t ti_offset) attribute_hidden;
      51  
      52  extern ptrdiff_t attribute_hidden __attribute__ ((regparm (1)))
      53    _dl_tlsdesc_dynamic (struct tlsdesc *);
      54  # endif
      55  
      56  #endif