summaryrefslogtreecommitdiff
path: root/lib/sys_elf.h.in
blob: b71a20d220226c2dcf82ffc34e53d000ed492bbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
sys_elf.h.in - configure template for private "switch" file.
Copyright (C) 1998 - 2001 Michael Riepe

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/

/* @(#) $Id: sys_elf.h.in,v 1.13 2008/05/23 08:57:07 michael Exp $ */

/*
 * DO NOT USE THIS IN APPLICATIONS - #include <libelf.h> INSTEAD!
 */

/* Define to `<elf.h>' or `<sys/elf.h>' if one of them is present */
#undef __LIBELF_HEADER_ELF_H

/* Define if Elf32_Dyn is declared in <link.h> */
#undef __LIBELF_NEED_LINK_H

/* Define if Elf32_Dyn is declared in <sys/link.h> */
#undef __LIBELF_NEED_SYS_LINK_H

/* Define if you want 64-bit support (and your system supports it) */
#undef __LIBELF64

/* Define if you want 64-bit support, and are running IRIX */
#undef __LIBELF64_IRIX

/* Define if you want 64-bit support, and are running Linux */
#undef __LIBELF64_LINUX

/* Define if you want symbol versioning (and your system supports it) */
#undef __LIBELF_SYMBOL_VERSIONS

/* Define to a 64-bit signed integer type if one exists */
#undef __libelf_i64_t

/* Define to a 64-bit unsigned integer type if one exists */
#undef __libelf_u64_t

/* Define to a 32-bit signed integer type if one exists */
#undef __libelf_i32_t

/* Define to a 32-bit unsigned integer type if one exists */
#undef __libelf_u32_t

/* Define to a 16-bit signed integer type if one exists */
#undef __libelf_i16_t

/* Define to a 16-bit unsigned integer type if one exists */
#undef __libelf_u16_t

/*
 * Ok, now get the correct instance of elf.h...
 */
#ifdef __LIBELF_HEADER_ELF_H
# include __LIBELF_HEADER_ELF_H
#else /* __LIBELF_HEADER_ELF_H */
# if __LIBELF_INTERNAL__
#  include <elf_repl.h>
# else /* __LIBELF_INTERNAL__ */
#  include <libelf/elf_repl.h>
# endif /* __LIBELF_INTERNAL__ */
#endif /* __LIBELF_HEADER_ELF_H */

/*
 * On some systems, <elf.h> is severely broken.  Try to fix it.
 */
#ifdef __LIBELF_HEADER_ELF_H

# ifndef ELF32_FSZ_ADDR
#  define ELF32_FSZ_ADDR	4
#  define ELF32_FSZ_HALF	2
#  define ELF32_FSZ_OFF		4
#  define ELF32_FSZ_SWORD	4
#  define ELF32_FSZ_WORD	4
# endif /* ELF32_FSZ_ADDR */

# ifndef STN_UNDEF
#  define STN_UNDEF	0
# endif /* STN_UNDEF */

# if __LIBELF64

#  ifndef ELF64_FSZ_ADDR
#   define ELF64_FSZ_ADDR	8
#   define ELF64_FSZ_HALF	2
#   define ELF64_FSZ_OFF	8
#   define ELF64_FSZ_SWORD	4
#   define ELF64_FSZ_WORD	4
#   define ELF64_FSZ_SXWORD	8
#   define ELF64_FSZ_XWORD	8
#  endif /* ELF64_FSZ_ADDR */

#  ifndef ELF64_ST_BIND
#   define ELF64_ST_BIND(i)	((i)>>4)
#   define ELF64_ST_TYPE(i)	((i)&0xf)
#   define ELF64_ST_INFO(b,t)	(((b)<<4)+((t)&0xf))
#  endif /* ELF64_ST_BIND */

#  ifndef ELF64_R_SYM
#   define ELF64_R_SYM(i)	((Elf64_Xword)(i)>>32)
#   define ELF64_R_TYPE(i)	((i)&0xffffffffL)
#   define ELF64_R_INFO(s,t)	(((Elf64_Xword)(s)<<32)+((t)&0xffffffffL))
#  endif /* ELF64_R_SYM */

#  if __LIBELF64_LINUX
typedef __libelf_u64_t	Elf64_Addr;
typedef __libelf_u16_t	Elf64_Half;
typedef __libelf_u64_t	Elf64_Off;
typedef __libelf_i32_t	Elf64_Sword;
typedef __libelf_u32_t	Elf64_Word;
typedef __libelf_i64_t	Elf64_Sxword;
typedef __libelf_u64_t	Elf64_Xword;
#  endif /* __LIBELF64_LINUX */

# endif /* __LIBELF64 */
#endif /* __LIBELF_HEADER_ELF_H */