3 @@ -45,7 +45,7 @@ typedef __libelf_u32_t Elf32_Word;
4 #define ELF32_FSZ_SWORD 4
5 #define ELF32_FSZ_WORD 4
8 +#if defined(__LIBELF64)
10 typedef __libelf_u64_t Elf64_Addr;
11 typedef __libelf_u16_t Elf64_Half;
12 @@ -93,7 +93,7 @@ typedef struct {
13 Elf32_Half e_shstrndx;
17 +#if defined(__LIBELF64)
19 unsigned char e_ident[EI_NIDENT];
21 @@ -307,7 +307,7 @@ typedef struct {
22 Elf32_Word sh_entsize;
26 +#if defined(__LIBELF64)
30 @@ -434,7 +434,7 @@ typedef struct {
35 +#if defined(__LIBELF64)
38 unsigned char st_info;
39 @@ -457,7 +457,7 @@ typedef struct {
40 #define ELF32_ST_TYPE(i) ((i)&0xf)
41 #define ELF32_ST_INFO(b,t) (((b)<<4)+((t)&0xf))
44 +#if defined(__LIBELF64)
45 #define ELF64_ST_BIND(i) ((i)>>4)
46 #define ELF64_ST_TYPE(i) ((i)&0xf)
47 #define ELF64_ST_INFO(b,t) (((b)<<4)+((t)&0xf))
48 @@ -495,7 +495,7 @@ typedef struct {
49 * Macros for manipulating st_other
51 #define ELF32_ST_VISIBILITY(o) ((o)&0x3)
53 +#if defined(__LIBELF64)
54 #define ELF64_ST_VISIBILITY(o) ((o)&0x3)
55 #endif /* __LIBELF64 */
57 @@ -521,7 +521,7 @@ typedef struct {
62 +#if defined(__LIBELF64)
66 @@ -541,7 +541,7 @@ typedef struct {
67 #define ELF32_R_TYPE(i) ((unsigned char)(i))
68 #define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))
71 +#if defined(__LIBELF64)
72 #define ELF64_R_SYM(i) ((Elf64_Xword)(i)>>32)
73 #define ELF64_R_TYPE(i) ((i)&0xffffffffL)
74 #define ELF64_R_INFO(s,t) (((Elf64_Xword)(s)<<32)+((t)&0xffffffffL))
75 @@ -556,7 +556,7 @@ typedef struct {
76 Elf32_Word n_type; /* descriptor type */
80 +#if defined(__LIBELF64)
81 /* Solaris and GNU use this layout. Be compatible. */
82 /* XXX: Latest ELF specs say it's 64-bit!!! */
84 @@ -587,7 +587,7 @@ typedef struct {
89 +#if defined(__LIBELF64)
93 @@ -654,7 +654,7 @@ typedef struct {
98 +#if defined(__LIBELF64)
102 @@ -798,7 +798,7 @@ typedef struct {
107 +#if defined(__LIBELF64)
109 Elf64_Half si_boundto;
111 @@ -863,7 +863,7 @@ typedef struct {
113 typedef Elf32_Half Elf32_Versym;
116 +#if defined(__LIBELF64)
119 Elf64_Half vd_version;
120 @@ -933,7 +933,7 @@ typedef Elf64_Half Elf64_Versym;
125 +#if defined(__LIBELF64)
129 @@ -973,7 +973,7 @@ typedef struct {
134 +#if defined(__LIBELF64)
144 -#if __LIBELF_INTERNAL__
145 +#if defined(__LIBELF_INTERNAL__)
147 #else /* __LIBELF_INTERNAL__ */
148 #include <libelf/libelf.h>
149 #endif /* __LIBELF_INTERNAL__ */
151 -#if __LIBELF_NEED_LINK_H
152 +#if defined(__LIBELF_NEED_LINK_H)
154 -#elif __LIBELF_NEED_SYS_LINK_H
155 +#elif defined(__LIBELF_NEED_SYS_LINK_H)
156 #include <sys/link.h>
157 #endif /* __LIBELF_NEED_LINK_H */
159 @@ -71,7 +71,7 @@ typedef Elf64_Sym GElf_Sym;
163 -#if __LIBELF_SYMBOL_VERSIONS
164 +#if defined(__LIBELF_SYMBOL_VERSIONS)
165 typedef Elf64_Verdef GElf_Verdef;
166 typedef Elf64_Verneed GElf_Verneed;
167 typedef Elf64_Verdaux GElf_Verdaux;
171 #include <stddef.h> /* for size_t */
172 #include <sys/types.h>
174 -#if __LIBELF_INTERNAL__
175 +#if defined(__LIBELF_INTERNAL__)
177 #else /* __LIBELF_INTERNAL__ */
178 #include <libelf/sys_elf.h>
179 @@ -224,7 +224,7 @@ extern Elf_Data *elf32_xlatetom __P((Elf
181 extern long elf32_checksum __P((Elf *__elf));
184 +#if defined(__LIBELF64)
186 * 64-bit ELF functions
187 * Not available on all platforms
188 --- a/lib/sys_elf.h.in
189 +++ b/lib/sys_elf.h.in
190 @@ -116,7 +116,7 @@ Foundation, Inc., 51 Franklin Street, Fi
191 # define ELF64_R_INFO(s,t) (((Elf64_Xword)(s)<<32)+((t)&0xffffffffL))
192 # endif /* ELF64_R_SYM */
194 -# if __LIBELF64_LINUX
195 +# if defined(__LIBELF64_LINUX)
196 typedef __libelf_u64_t Elf64_Addr;
197 typedef __libelf_u16_t Elf64_Half;
198 typedef __libelf_u64_t Elf64_Off;