link.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019: #ifndef _LINK_H
020: # error "Never include <bits/link.h> directly; use <link.h> instead."
021: #endif
022:
023:
024: #if __ELF_NATIVE_CLASS == 32
025:
026: typedef struct La_i86_regs
027: {
028: uint32_t lr_edx;
029: uint32_t lr_ecx;
030: uint32_t lr_eax;
031: uint32_t lr_ebp;
032: uint32_t lr_esp;
033: } La_i86_regs;
034:
035:
036: typedef struct La_i86_retval
037: {
038: uint32_t lrv_eax;
039: uint32_t lrv_edx;
040: long double lrv_st0;
041: long double lrv_st1;
042: } La_i86_retval;
043:
044:
045: __BEGIN_DECLS
046:
047: extern Elf32_Addr la_i86_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
048: uintptr_t *__refcook,
049: uintptr_t *__defcook,
050: La_i86_regs *__regs,
051: unsigned int *__flags,
052: const char *__symname,
053: long int *__framesizep);
054: extern unsigned int la_i86_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
055: uintptr_t *__refcook,
056: uintptr_t *__defcook,
057: const La_i86_regs *__inregs,
058: La_i86_retval *__outregs,
059: const char *symname);
060:
061: __END_DECLS
062:
063: #else
064:
065:
066: # if __GNUC_PREREQ (4,0)
067: typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16)));
068: typedef float La_x86_64_ymm
069: __attribute__ ((__vector_size__ (32), __aligned__ (16)));
070: # else
071: typedef float La_x86_64_xmm __attribute__ ((__mode__ (__V4SF__)));
072: # endif
073:
074: typedef union
075: {
076: # if __GNUC_PREREQ (4,0)
077: La_x86_64_ymm ymm[2];
078: # endif
079: La_x86_64_xmm xmm[4];
080: } La_x86_64_vector __attribute__ ((__aligned__ (16)));
081:
082: typedef struct La_x86_64_regs
083: {
084: uint64_t lr_rdx;
085: uint64_t lr_r8;
086: uint64_t lr_r9;
087: uint64_t lr_rcx;
088: uint64_t lr_rsi;
089: uint64_t lr_rdi;
090: uint64_t lr_rbp;
091: uint64_t lr_rsp;
092: La_x86_64_xmm lr_xmm[8];
093: La_x86_64_vector lr_vector[8];
094: } La_x86_64_regs;
095:
096:
097: typedef struct La_x86_64_retval
098: {
099: uint64_t lrv_rax;
100: uint64_t lrv_rdx;
101: La_x86_64_xmm lrv_xmm0;
102: La_x86_64_xmm lrv_xmm1;
103: long double lrv_st0;
104: long double lrv_st1;
105: La_x86_64_vector lrv_vector0;
106: La_x86_64_vector lrv_vector1;
107: } La_x86_64_retval;
108:
109:
110: __BEGIN_DECLS
111:
112: extern Elf64_Addr la_x86_64_gnu_pltenter (Elf64_Sym *__sym,
113: unsigned int __ndx,
114: uintptr_t *__refcook,
115: uintptr_t *__defcook,
116: La_x86_64_regs *__regs,
117: unsigned int *__flags,
118: const char *__symname,
119: long int *__framesizep);
120: extern unsigned int la_x86_64_gnu_pltexit (Elf64_Sym *__sym,
121: unsigned int __ndx,
122: uintptr_t *__refcook,
123: uintptr_t *__defcook,
124: const La_x86_64_regs *__inregs,
125: La_x86_64_retval *__outregs,
126: const char *__symname);
127:
128: __END_DECLS
129:
130: #endif
131:
© Andrew Scott 2006 -
2025,
All Rights Reserved