(root)/
glibc-2.38/
sysdeps/
arm/
dl-tlsdesc.h
       1  /* Thread-local storage descriptor handling in the ELF dynamic linker.
       2     ARM 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 _ARM_DL_TLSDESC_H
      21  # define _ARM_DL_TLSDESC_H 1
      22  
      23  /* Type used to represent a TLS descriptor in the GOT.  */
      24  struct tlsdesc
      25  {
      26    union
      27      {
      28        void *pointer;
      29        long value;
      30      } argument;
      31    ptrdiff_t (*entry)(struct tlsdesc *);
      32  };
      33  
      34  
      35  typedef struct dl_tls_index
      36  {
      37    unsigned long int ti_module;
      38    unsigned long int ti_offset;
      39  } tls_index;
      40  
      41  /* Type used as the argument in a TLS descriptor for a symbol that
      42     needs dynamic TLS offsets.  */
      43  struct tlsdesc_dynamic_arg
      44  {
      45    tls_index tlsinfo;
      46    size_t gen_count;
      47  };
      48  
      49  extern ptrdiff_t attribute_hidden
      50    _dl_tlsdesc_return(struct tlsdesc *),
      51    _dl_tlsdesc_undefweak(struct tlsdesc *);
      52  
      53  # ifdef SHARED
      54  extern void *_dl_make_tlsdesc_dynamic (struct link_map *map, size_t ti_offset);
      55  
      56  extern ptrdiff_t attribute_hidden
      57    _dl_tlsdesc_dynamic(struct tlsdesc *);
      58  # endif
      59  
      60  #endif