1 /* Run-time dynamic linker data structures for loaded ELF shared objects. 2 X86 version. 3 Copyright (C) 1995-2022 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 68