1 /* Copyright (C) 2005-2024 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, see
16 <https://www.gnu.org/licenses/>. */
19 # error "Never include <bits/link.h> directly; use <link.h> instead."
24 #if _MIPS_SIM == _ABIO32
26 /* Registers for entry into PLT on MIPS. */
27 typedef struct La_mips_32_regs
29 uint32_t lr_reg
[4]; /* $a0 through $a3 */
30 double lr_fpreg
[2]; /* $f12 and $f14 */
35 /* Return values for calls from PLT on MIPS. */
36 typedef struct La_mips_32_retval
46 typedef struct La_mips_64_regs
48 uint64_t lr_reg
[8]; /* $a0 through $a7 */
49 double lr_fpreg
[8]; /* $f12 through $f19 */
54 /* Return values for calls from PLT on MIPS. */
55 typedef struct La_mips_64_retval
67 #if _MIPS_SIM == _ABIO32
69 extern Elf32_Addr
la_mips_o32_gnu_pltenter (Elf32_Sym
*__sym
, unsigned int __ndx
,
72 La_mips_32_regs
*__regs
,
73 unsigned int *__flags
,
74 const char *__symname
,
75 long int *__framesizep
);
76 extern unsigned int la_mips_o32_gnu_pltexit (Elf32_Sym
*__sym
, unsigned int __ndx
,
79 const La_mips_32_regs
*__inregs
,
80 La_mips_32_retval
*__outregs
,
81 const char *__symname
);
83 #elif _MIPS_SIM == _ABIN32
85 extern Elf32_Addr
la_mips_n32_gnu_pltenter (Elf32_Sym
*__sym
, unsigned int __ndx
,
88 La_mips_64_regs
*__regs
,
89 unsigned int *__flags
,
90 const char *__symname
,
91 long int *__framesizep
);
92 extern unsigned int la_mips_n32_gnu_pltexit (Elf32_Sym
*__sym
, unsigned int __ndx
,
95 const La_mips_64_regs
*__inregs
,
96 La_mips_64_retval
*__outregs
,
97 const char *__symname
);
101 extern Elf64_Addr
la_mips_n64_gnu_pltenter (Elf64_Sym
*__sym
, unsigned int __ndx
,
102 uintptr_t *__refcook
,
103 uintptr_t *__defcook
,
104 La_mips_64_regs
*__regs
,
105 unsigned int *__flags
,
106 const char *__symname
,
107 long int *__framesizep
);
108 extern unsigned int la_mips_n64_gnu_pltexit (Elf64_Sym
*__sym
, unsigned int __ndx
,
109 uintptr_t *__refcook
,
110 uintptr_t *__defcook
,
111 const La_mips_64_regs
*__inregs
,
112 La_mips_64_retval
*__outregs
,
113 const char *__symname
);