1/* Run-time dynamic linker data structures for loaded ELF shared objects.
2 X86 version.
3 Copyright (C) 1995-2019 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 <http://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
26struct La_i86_regs;
27struct La_i86_retval;
28struct La_x86_64_regs;
29struct La_x86_64_retval;
30struct La_x32_regs;
31struct 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_next <ldsodefs.h>
65
66#endif
67