(root)/
glibc-2.38/
sysdeps/
mips/
bits/
link.h
       1  /* Copyright (C) 2005-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       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.
       8  
       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.
      13  
      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/>.  */
      17  
      18  #ifndef	_LINK_H
      19  # error "Never include <bits/link.h> directly; use <link.h> instead."
      20  #endif
      21  
      22  #include <sgidefs.h>
      23  
      24  #if _MIPS_SIM == _ABIO32
      25  
      26  /* Registers for entry into PLT on MIPS.  */
      27  typedef struct La_mips_32_regs
      28  {
      29    uint32_t lr_reg[4]; /* $a0 through $a3 */
      30    double lr_fpreg[2]; /* $f12 and $f14 */
      31    uint32_t lr_ra;
      32    uint32_t lr_sp;
      33  } La_mips_32_regs;
      34  
      35  /* Return values for calls from PLT on MIPS.  */
      36  typedef struct La_mips_32_retval
      37  {
      38    uint32_t lrv_v0;
      39    uint32_t lrv_v1;
      40    double lrv_f0;
      41    double lrv_f2;
      42  } La_mips_32_retval;
      43  
      44  #else
      45  
      46  typedef struct La_mips_64_regs
      47  {
      48    uint64_t lr_reg[8]; /* $a0 through $a7 */
      49    double lr_fpreg[8]; /* $f12 through $f19 */
      50    uint64_t lr_ra;
      51    uint64_t lr_sp;
      52  } La_mips_64_regs;
      53  
      54  /* Return values for calls from PLT on MIPS.  */
      55  typedef struct La_mips_64_retval
      56  {
      57    uint64_t lrv_v0;
      58    uint64_t lrv_v1;
      59    double lrv_f0;
      60    double lrv_f2;
      61  } La_mips_64_retval;
      62  
      63  #endif
      64  
      65  __BEGIN_DECLS
      66  
      67  #if _MIPS_SIM == _ABIO32
      68  
      69  extern Elf32_Addr la_mips_o32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
      70  					    uintptr_t *__refcook,
      71  					    uintptr_t *__defcook,
      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,
      77  					     uintptr_t *__refcook,
      78  					     uintptr_t *__defcook,
      79  					     const La_mips_32_regs *__inregs,
      80  					     La_mips_32_retval *__outregs,
      81  					     const char *__symname);
      82  
      83  #elif _MIPS_SIM == _ABIN32
      84  
      85  extern Elf32_Addr la_mips_n32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
      86  					    uintptr_t *__refcook,
      87  					    uintptr_t *__defcook,
      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,
      93  					     uintptr_t *__refcook,
      94  					     uintptr_t *__defcook,
      95  					     const La_mips_64_regs *__inregs,
      96  					     La_mips_64_retval *__outregs,
      97  					     const char *__symname);
      98  
      99  #else
     100  
     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);
     114  
     115  #endif
     116  
     117  __END_DECLS