(root)/
glibc-2.38/
sysdeps/
s390/
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  #if defined HAVE_S390_VX_ASM_SUPPORT
      23  typedef char La_s390_vr[16];
      24  #endif
      25  
      26  #if __ELF_NATIVE_CLASS == 32
      27  
      28  /* Registers for entry into PLT on s390-32.  */
      29  typedef struct La_s390_32_regs
      30  {
      31    uint32_t lr_r2;
      32    uint32_t lr_r3;
      33    uint32_t lr_r4;
      34    uint32_t lr_r5;
      35    uint32_t lr_r6;
      36    double lr_fp0;
      37    double lr_fp2;
      38  # if defined HAVE_S390_VX_ASM_SUPPORT
      39    La_s390_vr lr_v24;
      40    La_s390_vr lr_v25;
      41    La_s390_vr lr_v26;
      42    La_s390_vr lr_v27;
      43    La_s390_vr lr_v28;
      44    La_s390_vr lr_v29;
      45    La_s390_vr lr_v30;
      46    La_s390_vr lr_v31;
      47  # endif
      48  } La_s390_32_regs;
      49  
      50  /* Return values for calls from PLT on s390-32.  */
      51  typedef struct La_s390_32_retval
      52  {
      53    uint32_t lrv_r2;
      54    uint32_t lrv_r3;
      55    double lrv_fp0;
      56  # if defined HAVE_S390_VX_ASM_SUPPORT
      57    La_s390_vr lrv_v24;
      58  # endif
      59  } La_s390_32_retval;
      60  
      61  
      62  __BEGIN_DECLS
      63  
      64  extern Elf32_Addr la_s390_32_gnu_pltenter (Elf32_Sym *__sym,
      65  					   unsigned int __ndx,
      66  					   uintptr_t *__refcook,
      67  					   uintptr_t *__defcook,
      68  					   La_s390_32_regs *__regs,
      69  					   unsigned int *__flags,
      70  					   const char *__symname,
      71  					   long int *__framesizep);
      72  extern unsigned int la_s390_32_gnu_pltexit (Elf32_Sym *__sym,
      73  					    unsigned int __ndx,
      74  					    uintptr_t *__refcook,
      75  					    uintptr_t *__defcook,
      76  					    const La_s390_32_regs *__inregs,
      77  					    La_s390_32_retval *__outregs,
      78  					    const char *symname);
      79  
      80  __END_DECLS
      81  
      82  #else
      83  
      84  /* Registers for entry into PLT on s390-64.  */
      85  typedef struct La_s390_64_regs
      86  {
      87    uint64_t lr_r2;
      88    uint64_t lr_r3;
      89    uint64_t lr_r4;
      90    uint64_t lr_r5;
      91    uint64_t lr_r6;
      92    double lr_fp0;
      93    double lr_fp2;
      94    double lr_fp4;
      95    double lr_fp6;
      96  # if defined HAVE_S390_VX_ASM_SUPPORT
      97    La_s390_vr lr_v24;
      98    La_s390_vr lr_v25;
      99    La_s390_vr lr_v26;
     100    La_s390_vr lr_v27;
     101    La_s390_vr lr_v28;
     102    La_s390_vr lr_v29;
     103    La_s390_vr lr_v30;
     104    La_s390_vr lr_v31;
     105  # endif
     106  } La_s390_64_regs;
     107  
     108  /* Return values for calls from PLT on s390-64.  */
     109  typedef struct La_s390_64_retval
     110  {
     111    uint64_t lrv_r2;
     112    double lrv_fp0;
     113  # if defined HAVE_S390_VX_ASM_SUPPORT
     114    La_s390_vr lrv_v24;
     115  # endif
     116  } La_s390_64_retval;
     117  
     118  
     119  __BEGIN_DECLS
     120  
     121  extern Elf64_Addr la_s390_64_gnu_pltenter (Elf64_Sym *__sym,
     122  					   unsigned int __ndx,
     123  					   uintptr_t *__refcook,
     124  					   uintptr_t *__defcook,
     125  					   La_s390_64_regs *__regs,
     126  					   unsigned int *__flags,
     127  					   const char *__symname,
     128  					   long int *__framesizep);
     129  extern unsigned int la_s390_64_gnu_pltexit (Elf64_Sym *__sym,
     130  					    unsigned int __ndx,
     131  					    uintptr_t *__refcook,
     132  					    uintptr_t *__defcook,
     133  					    const La_s390_64_regs *__inregs,
     134  					    La_s390_64_retval *__outregs,
     135  					    const char *__symname);
     136  
     137  __END_DECLS
     138  
     139  #endif