(root)/
glibc-2.38/
sysdeps/
x86/
ldsodefs.h
       1  /* Run-time dynamic linker data structures for loaded ELF shared objects.
       2     X86 version.
       3     Copyright (C) 1995-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	_X86_LDSODEFS_H
      21  #define	_X86_LDSODEFS_H	1
      22  
      23  #include <elf.h>
      24  #include <cpu-features.h>
      25  
      26  struct La_i86_regs;
      27  struct La_i86_retval;
      28  struct La_x86_64_regs;
      29  struct La_x86_64_retval;
      30  struct La_x32_regs;
      31  struct La_x32_retval;
      32  
      33  #define ARCH_PLTENTER_MEMBERS						\
      34      Elf32_Addr (*i86_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
      35  				    uintptr_t *, struct La_i86_regs *,	\
      36  				    unsigned int *, const char *name,	\
      37  				    long int *framesizep);		\
      38      Elf64_Addr (*x86_64_gnu_pltenter) (Elf64_Sym *, unsigned int,	\
      39  				       uintptr_t *,			\
      40  				       uintptr_t *, struct La_x86_64_regs *, \
      41  				       unsigned int *, const char *name, \
      42  				       long int *framesizep);		\
      43      Elf32_Addr (*x32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
      44  				    uintptr_t *, struct La_x32_regs *,	\
      45  				    unsigned int *, const char *name,	\
      46  				    long int *framesizep)
      47  
      48  #define ARCH_PLTEXIT_MEMBERS						\
      49      unsigned int (*i86_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
      50  				     uintptr_t *, const struct La_i86_regs *, \
      51  				     struct La_i86_retval *, const char *); \
      52      unsigned int (*x86_64_gnu_pltexit) (Elf64_Sym *, unsigned int,	\
      53  					uintptr_t *,			\
      54  					uintptr_t *,			\
      55  					const struct La_x86_64_regs *,	\
      56  					struct La_x86_64_retval *,	\
      57  					const char *);			\
      58      unsigned int (*x32_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
      59  				     uintptr_t *,			\
      60  				     const struct La_x32_regs *,	\
      61  				     struct La_x86_64_retval *,		\
      62  				     const char *)
      63  
      64  #include <cet-control.h>
      65  #include_next <ldsodefs.h>
      66  
      67  #endif