Back to index

glibc  2.9
link.h
Go to the documentation of this file.
00001 /* Machine-specific audit interfaces for dynamic linker.  SPARC version.
00002    Copyright (C) 2005 Free Software Foundation, Inc.
00003    This file is part of the GNU C Library.
00004 
00005    The GNU C Library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009 
00010    The GNU C Library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014 
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with the GNU C Library; if not, write to the Free
00017    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018    02111-1307 USA.  */
00019 
00020 #ifndef       _LINK_H
00021 # error "Never include <bits/link.h> directly; use <link.h> instead."
00022 #endif
00023 
00024 #if __WORDSIZE == 32
00025 
00026 typedef struct La_sparc32_regs
00027 {
00028   uint32_t lr_lreg[8];  /* %l0 through %l7 */
00029   uint32_t lr_reg[6];   /* %o0 through %o5 */
00030   uint32_t lr_sp;       /* %o6 */
00031   uint32_t lr_ra;       /* %o7 */
00032   uint32_t lr_struct;   /* Pass-by-reference struct pointer */
00033 } La_sparc32_regs;
00034 
00035 typedef struct La_sparc32_retval
00036 {
00037   uint32_t lrv_reg[2]; /* %o0 and %o1 */
00038   double lrv_fpreg[2]; /* %f0 and %f2 */
00039 } La_sparc32_retval;
00040 
00041 #else
00042 
00043 typedef struct La_sparc64_regs
00044 {
00045   uint64_t lr_lreg[8];  /* %l0 through %l7 */
00046   uint64_t lr_reg[6];       /* %o0 through %o5 */
00047   uint64_t lr_sp;    /* %o6 */
00048   uint64_t lr_ra;    /* %o7 */
00049   double lr_fpreg[16];      /* %f0 through %f30 */
00050 } La_sparc64_regs;
00051 
00052 typedef struct La_sparc64_retval
00053 {
00054   uint64_t lrv_reg[4]; /* %o0 through %o3 */
00055   double lrv_fprev[4]; /* %f0 through %f8 */
00056 } La_sparc64_retval;
00057 
00058 #endif
00059 
00060 __BEGIN_DECLS
00061 
00062 #if __WORDSIZE == 32
00063 
00064 extern Elf32_Addr la_sparc32_gnu_pltenter (Elf32_Sym *__sym,
00065                                       unsigned int __ndx,
00066                                       uintptr_t *__refcook,
00067                                       uintptr_t *__defcook,
00068                                       La_sparc32_regs *__regs,
00069                                       unsigned int *__flags,
00070                                       const char *__symname,
00071                                       long int *__framesizep);
00072 extern unsigned int la_sparc32_gnu_pltexit (Elf32_Sym *__sym,
00073                                        unsigned int __ndx,
00074                                        uintptr_t *__refcook,
00075                                        uintptr_t *__defcook,
00076                                         const La_sparc32_regs *__inregs,
00077                                        La_sparc32_retval *__outregs,
00078                                        const char *symname);
00079 
00080 #else
00081 
00082 extern Elf64_Addr la_sparc64_gnu_pltenter (Elf64_Sym *__sym,
00083                                       unsigned int __ndx,
00084                                       uintptr_t *__refcook,
00085                                       uintptr_t *__defcook,
00086                                       La_sparc64_regs *__regs,
00087                                       unsigned int *__flags,
00088                                       const char *__symname,
00089                                       long int *__framesizep);
00090 extern unsigned int la_sparc64_gnu_pltexit (Elf64_Sym *__sym,
00091                                        unsigned int __ndx,
00092                                        uintptr_t *__refcook,
00093                                        uintptr_t *__defcook,
00094                                        const La_sparc64_regs *__inregs,
00095                                        La_sparc64_retval *__outregs,
00096                                        const char *symname);
00097 
00098 #endif
00099 
00100 __END_DECLS