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