1
/* Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc.
2
This file is part of the GNU C Library.
4
The GNU C Library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Lesser General Public
6
License as published by the Free Software Foundation; either
7
version 2.1 of the License, or (at your option) any later version.
9
The GNU C Library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Lesser General Public License for more details.
14
You should have received a copy of the GNU Lesser General Public
15
License along with the GNU C Library; if not, write to the Free
16
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20
# error "Never include <bits/link.h> directly; use <link.h> instead."
24
#if __ELF_NATIVE_CLASS == 32
25
/* Registers for entry into PLT on IA-32. */
26
typedef struct La_i86_regs
35
/* Return values for calls from PLT on IA-32. */
36
typedef struct La_i86_retval
47
extern Elf32_Addr la_i86_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
51
unsigned int *__flags,
52
const char *__symname,
53
long int *__framesizep);
54
extern unsigned int la_i86_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
57
const La_i86_regs *__inregs,
58
La_i86_retval *__outregs,
65
/* Registers for entry into PLT on x86-64. */
66
# if __GNUC_PREREQ (4,0)
67
typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16)));
68
typedef float La_x86_64_ymm
69
__attribute__ ((__vector_size__ (32), __aligned__ (16)));
71
typedef float La_x86_64_xmm __attribute__ ((__mode__ (__V4SF__)));
76
# if __GNUC_PREREQ (4,0)
80
} La_x86_64_vector __attribute__ ((__aligned__ (16)));
82
typedef struct La_x86_64_regs
92
La_x86_64_xmm lr_xmm[8];
93
La_x86_64_vector lr_vector[8];
96
/* Return values for calls from PLT on x86-64. */
97
typedef struct La_x86_64_retval
101
La_x86_64_xmm lrv_xmm0;
102
La_x86_64_xmm lrv_xmm1;
105
La_x86_64_vector lrv_vector0;
106
La_x86_64_vector lrv_vector1;
112
extern Elf64_Addr la_x86_64_gnu_pltenter (Elf64_Sym *__sym,
114
uintptr_t *__refcook,
115
uintptr_t *__defcook,
116
La_x86_64_regs *__regs,
117
unsigned int *__flags,
118
const char *__symname,
119
long int *__framesizep);
120
extern unsigned int la_x86_64_gnu_pltexit (Elf64_Sym *__sym,
122
uintptr_t *__refcook,
123
uintptr_t *__defcook,
124
const La_x86_64_regs *__inregs,
125
La_x86_64_retval *__outregs,
126
const char *__symname);