Home | History | Annotate | Download | only in bits
      1 /* Copyright (C) 2004, 2005, 2009 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, write to the Free
     16    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
     17    02111-1307 USA.  */
     18 
     19 #ifndef	_LINK_H
     20 # error "Never include <bits/link.h> directly; use <link.h> instead."
     21 #endif
     22 
     23 
     24 /* Registers for entry into PLT on IA-32.  */
     25 typedef struct La_i86_regs
     26 {
     27   uint32_t lr_edx;
     28   uint32_t lr_ecx;
     29   uint32_t lr_eax;
     30   uint32_t lr_ebp;
     31   uint32_t lr_esp;
     32 } La_i86_regs;
     33 
     34 /* Return values for calls from PLT on IA-32.  */
     35 typedef struct La_i86_retval
     36 {
     37   uint32_t lrv_eax;
     38   uint32_t lrv_edx;
     39   long double lrv_st0;
     40   long double lrv_st1;
     41 } La_i86_retval;
     42 
     43 
     44 __BEGIN_DECLS
     45 
     46 extern Elf32_Addr la_i86_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
     47 				       uintptr_t *__refcook,
     48 				       uintptr_t *__defcook,
     49 				       La_i86_regs *__regs,
     50 				       unsigned int *__flags,
     51 				       const char *__symname,
     52 				       long int *__framesizep);
     53 extern unsigned int la_i86_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
     54 					uintptr_t *__refcook,
     55 					uintptr_t *__defcook,
     56 					const La_i86_regs *__inregs,
     57 					La_i86_retval *__outregs,
     58 					const char *__symname);
     59 
     60 __END_DECLS
     61