Coverage Report

Created: 2026-07-24 06:20

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/elfutils/libelf/abstract.h
Line
Count
Source
1
/* Abstract description of component ELF types.
2
   Copyright (C) 1998, 1999, 2000, 2002, 2004, 2007, 2015 Red Hat, Inc.
3
   This file is part of elfutils.
4
   Written by Ulrich Drepper <drepper@redhat.com>, 1998.
5
6
   This file is free software; you can redistribute it and/or modify
7
   it under the terms of either
8
9
     * the GNU Lesser General Public License as published by the Free
10
       Software Foundation; either version 3 of the License, or (at
11
       your option) any later version
12
13
   or
14
15
     * the GNU General Public License as published by the Free
16
       Software Foundation; either version 2 of the License, or (at
17
       your option) any later version
18
19
   or both in parallel, as here.
20
21
   elfutils is distributed in the hope that it will be useful, but
22
   WITHOUT ANY WARRANTY; without even the implied warranty of
23
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24
   General Public License for more details.
25
26
   You should have received copies of the GNU General Public License and
27
   the GNU Lesser General Public License along with this program.  If
28
   not, see <http://www.gnu.org/licenses/>.  */
29
30
/* ELF header.  */
31
17.2k
#define Ehdr(Bits, Ext) \
32
34.5k
START (Bits, Ehdr, Ext##Ehdr)                  \
33
34.5k
  TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];)            \
34
34.5k
  TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);)        \
35
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_type)             \
36
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine)              \
37
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_version)              \
38
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry)              \
39
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff)             \
40
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff)             \
41
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags)              \
42
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize)             \
43
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize)            \
44
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum)              \
45
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize)            \
46
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum)              \
47
34.5k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx)           \
48
17.2k
END (Bits, Ext##Ehdr)
gelf_xlate.c:Elf32_cvt_Ehdr
Line
Count
Source
31
15.3k
#define Ehdr(Bits, Ext) \
32
30.6k
START (Bits, Ehdr, Ext##Ehdr)                  \
33
30.6k
  TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];)            \
34
30.6k
  TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);)        \
35
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_type)             \
36
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine)              \
37
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_version)              \
38
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry)              \
39
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff)             \
40
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff)             \
41
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags)              \
42
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize)             \
43
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize)            \
44
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum)              \
45
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize)            \
46
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum)              \
47
30.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx)           \
48
15.3k
END (Bits, Ext##Ehdr)
gelf_xlate.c:Elf64_cvt_Ehdr
Line
Count
Source
31
1.94k
#define Ehdr(Bits, Ext) \
32
3.88k
START (Bits, Ehdr, Ext##Ehdr)                  \
33
3.88k
  TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];)            \
34
3.88k
  TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);)        \
35
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_type)             \
36
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine)              \
37
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_version)              \
38
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry)              \
39
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff)             \
40
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff)             \
41
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags)              \
42
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize)             \
43
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize)            \
44
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum)              \
45
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize)            \
46
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum)              \
47
3.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx)           \
48
1.94k
END (Bits, Ext##Ehdr)
49
50
#define Ehdr32(Ext) \
51
  Ehdr(32, Ext)
52
#define Ehdr64(Ext) \
53
  Ehdr(64, Ext)
54
55
56
/* Program header.  */
57
13.7k
#define Phdr32(Ext) \
58
1.35M
START (32, Phdr, Ext##Phdr)                  \
59
1.35M
  TYPE_NAME (ElfW2(32, Ext##Word), p_type)             \
60
1.35M
  TYPE_NAME (ElfW2(32, Ext##Off), p_offset)              \
61
1.35M
  TYPE_NAME (ElfW2(32, Ext##Addr), p_vaddr)              \
62
1.35M
  TYPE_NAME (ElfW2(32, Ext##Addr), p_paddr)              \
63
1.35M
  TYPE_NAME (ElfW2(32, Ext##Word), p_filesz)             \
64
1.35M
  TYPE_NAME (ElfW2(32, Ext##Word), p_memsz)              \
65
1.35M
  TYPE_NAME (ElfW2(32, Ext##Word), p_flags)              \
66
1.35M
  TYPE_NAME (ElfW2(32, Ext##Word), p_align)              \
67
1.34M
END (32, Ext##Phdr)
68
1.66k
#define Phdr64(Ext) \
69
17.2k
START (64, Phdr, Ext##Phdr)                  \
70
17.2k
  TYPE_NAME (ElfW2(64, Ext##Word), p_type)             \
71
17.2k
  TYPE_NAME (ElfW2(64, Ext##Word), p_flags)              \
72
17.2k
  TYPE_NAME (ElfW2(64, Ext##Off), p_offset)              \
73
17.2k
  TYPE_NAME (ElfW2(64, Ext##Addr), p_vaddr)              \
74
17.2k
  TYPE_NAME (ElfW2(64, Ext##Addr), p_paddr)              \
75
17.2k
  TYPE_NAME (ElfW2(64, Ext##Xword), p_filesz)              \
76
17.2k
  TYPE_NAME (ElfW2(64, Ext##Xword), p_memsz)             \
77
17.2k
  TYPE_NAME (ElfW2(64, Ext##Xword), p_align)             \
78
15.5k
END (64, Ext##Phdr)
79
80
81
/* Section header.  */
82
0
#define Shdr32(Ext) \
83
0
START (32, Shdr, Ext##Shdr)                  \
84
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_name)              \
85
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_type)              \
86
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_flags)             \
87
0
  TYPE_NAME (ElfW2(32, Ext##Addr), sh_addr)              \
88
0
  TYPE_NAME (ElfW2(32, Ext##Off), sh_offset)             \
89
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_size)              \
90
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_link)              \
91
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_info)              \
92
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_addralign)           \
93
0
  TYPE_NAME (ElfW2(32, Ext##Word), sh_entsize)             \
94
0
END (32, Ext##Shdr)
95
0
#define Shdr64(Ext) \
96
0
START (64, Shdr, Ext##Shdr)                  \
97
0
  TYPE_NAME (ElfW2(64, Ext##Word), sh_name)              \
98
0
  TYPE_NAME (ElfW2(64, Ext##Word), sh_type)              \
99
0
  TYPE_NAME (ElfW2(64, Ext##Xword), sh_flags)              \
100
0
  TYPE_NAME (ElfW2(64, Ext##Addr), sh_addr)              \
101
0
  TYPE_NAME (ElfW2(64, Ext##Off), sh_offset)             \
102
0
  TYPE_NAME (ElfW2(64, Ext##Xword), sh_size)             \
103
0
  TYPE_NAME (ElfW2(64, Ext##Word), sh_link)              \
104
0
  TYPE_NAME (ElfW2(64, Ext##Word), sh_info)              \
105
0
  TYPE_NAME (ElfW2(64, Ext##Xword), sh_addralign)            \
106
0
  TYPE_NAME (ElfW2(64, Ext##Xword), sh_entsize)              \
107
0
END (64, Ext##Shdr)
108
109
110
/* Symbol table.  */
111
220
#define Sym32(Ext) \
112
38.7k
START (32, Sym, Ext##Sym)                  \
113
38.7k
  TYPE_NAME (ElfW2(32, Ext##Word), st_name)              \
114
38.7k
  TYPE_NAME (ElfW2(32, Ext##Addr), st_value)             \
115
38.7k
  TYPE_NAME (ElfW2(32, Ext##Word), st_size)              \
116
38.7k
  TYPE_EXTRA (unsigned char st_info;)               \
117
38.7k
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
118
38.7k
  TYPE_EXTRA (unsigned char st_other;)                \
119
38.7k
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
120
38.7k
  TYPE_NAME (ElfW2(32, Ext##Half), st_shndx)             \
121
38.5k
END (32, Ext##Sym)
122
136
#define Sym64(Ext) \
123
97.0k
START (64, Sym, Ext##Sym)                  \
124
97.0k
  TYPE_NAME (ElfW2(64, Ext##Word), st_name)              \
125
97.0k
  TYPE_EXTRA (unsigned char st_info;)               \
126
97.0k
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
127
97.0k
  TYPE_EXTRA (unsigned char st_other;)                \
128
97.0k
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
129
97.0k
  TYPE_NAME (ElfW2(64, Ext##Half), st_shndx)             \
130
97.0k
  TYPE_NAME (ElfW2(64, Ext##Addr), st_value)             \
131
97.0k
  TYPE_NAME (ElfW2(64, Ext##Xword), st_size)             \
132
96.8k
END (64, Ext##Sym)
133
134
135
/* Relocation.  */
136
268
#define Rel32(Ext) \
137
27.1k
START (32, Rel, Ext##Rel)                  \
138
27.1k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
139
27.1k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
140
26.9k
END (32, Ext##Rel)
141
151
#define Rel64(Ext) \
142
1.62k
START (64, Rel, Ext##Rel)                  \
143
1.62k
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
144
1.62k
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
145
1.47k
END (64, Ext##Rel)
146
147
158
#define Rela32(Ext) \
148
92.6k
START (32, Rela, Ext##Rela)                  \
149
92.6k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
150
92.6k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
151
92.6k
  TYPE_NAME (ElfW2(32, Ext##Sword), r_addend)              \
152
92.4k
END (32, Ext##Rela)
153
100
#define Rela64(Ext) \
154
14.3k
START (64, Rela, Ext##Rela)                  \
155
14.3k
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
156
14.3k
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
157
14.3k
  TYPE_NAME (ElfW2(64, Ext##Sxword), r_addend)             \
158
14.2k
END (64, Ext##Rela)
159
160
161
/* Note entry header.  */
162
1.82M
#define Note(Bits, Ext) \
163
3.65M
START (Bits, Nhdr, Ext##Nhdr)                  \
164
3.65M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
3.65M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
3.65M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
1.82M
END (Bits, Ext##Nhdr)
gelf_xlate.c:Elf32_cvt_Nhdr
Line
Count
Source
162
1.82M
#define Note(Bits, Ext) \
163
3.65M
START (Bits, Nhdr, Ext##Nhdr)                  \
164
3.65M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
3.65M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
3.65M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
1.82M
END (Bits, Ext##Nhdr)
Unexecuted instantiation: gelf_xlate.c:Elf64_cvt_Nhdr
168
169
#define Note32(Ext) \
170
  Note (32, Ext)
171
#define Note64(Ext) \
172
  Note (64, Ext)
173
174
175
/* Dynamic section data.  */
176
3.55k
#define Dyn32(Ext) \
177
558k
START (32, Dyn, Ext##Dyn)                  \
178
558k
  TYPE_NAME (ElfW2(32, Ext##Sword), d_tag)             \
179
558k
  TYPE_EXTRA (union {)                    \
180
558k
  TYPE_EXTRA (ElfW2(32, Ext##Word) d_val;)              \
181
558k
  TYPE_EXTRA (ElfW2(32, Ext##Addr) d_ptr;)              \
182
558k
  TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
183
558k
  TYPE_EXTRA (ElfW2(32, Ext##Off) d_off;)             \
184
558k
  TYPE_EXTRA (} d_un;)                    \
185
554k
END (32, Ext##Dyn)
186
750
#define Dyn64(Ext) \
187
20.3k
START (64, Dyn, Ext##Dyn)                  \
188
20.3k
  TYPE_NAME (ElfW2(64, Ext##Xword), d_tag)             \
189
20.3k
  TYPE_EXTRA (union {)                    \
190
20.3k
  TYPE_EXTRA (ElfW2(64, Ext##Xword) d_val;)             \
191
20.3k
  TYPE_EXTRA (ElfW2(64, Ext##Addr) d_ptr;)              \
192
20.3k
  TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
193
20.3k
  TYPE_EXTRA (} d_un;)                    \
194
19.6k
END (64, Ext##Dyn)
195
196
197
#ifndef GENERATE_CONVERSION
198
/* Version definitions.  */
199
# define Verdef(Bits, Ext) \
200
START (Bits, Verdef, Ext##Verdef)               \
201
  TYPE_NAME (ElfW2(Bits, Ext##Half), vd_version)            \
202
  TYPE_NAME (ElfW2(Bits, Ext##Half), vd_flags)              \
203
  TYPE_NAME (ElfW2(Bits, Ext##Half), vd_ndx)              \
204
  TYPE_NAME (ElfW2(Bits, Ext##Half), vd_cnt)              \
205
  TYPE_NAME (ElfW2(Bits, Ext##Word), vd_hash)             \
206
  TYPE_NAME (ElfW2(Bits, Ext##Word), vd_aux)              \
207
  TYPE_NAME (ElfW2(Bits, Ext##Word), vd_next)             \
208
END (Bits, Ext##Verdef)
209
210
# define Verdef32(Ext) \
211
  Verdef (32, Ext)
212
# define Verdef64(Ext) \
213
  Verdef (64, Ext)
214
215
# define Verdaux(Bits, Ext) \
216
START (Bits, Verdaux, Ext##Verdaux)               \
217
  TYPE_NAME (ElfW2(Bits, Ext##Word), vda_name)              \
218
  TYPE_NAME (ElfW2(Bits, Ext##Word), vda_next)              \
219
END (Bits, Ext##Verdaux)
220
221
# define Verdaux32(Ext) \
222
  Verdaux (32, Ext)
223
# define Verdaux64(Ext) \
224
  Verdaux (64, Ext)
225
226
/* Required versions.  */
227
# define Verneed(Bits, Ext) \
228
START (Bits, Verneed, Ext##Verneed)               \
229
  TYPE_NAME (ElfW2(Bits, Ext##Half), vn_version)            \
230
  TYPE_NAME (ElfW2(Bits, Ext##Half), vn_cnt)              \
231
  TYPE_NAME (ElfW2(Bits, Ext##Word), vn_file)             \
232
  TYPE_NAME (ElfW2(Bits, Ext##Word), vn_aux)              \
233
  TYPE_NAME (ElfW2(Bits, Ext##Word), vn_next)             \
234
END (Bits, Ext##Verneed)
235
236
# define Verneed32(Ext) \
237
  Verneed (32, Ext)
238
# define Verneed64(Ext) \
239
  Verneed (64, Ext)
240
241
# define Vernaux(Bits, Ext) \
242
START (Bits, Vernaux, Ext##Vernaux)               \
243
  TYPE_NAME (ElfW2(Bits, Ext##Word), vna_hash)              \
244
  TYPE_NAME (ElfW2(Bits, Ext##Half), vna_flags)             \
245
  TYPE_NAME (ElfW2(Bits, Ext##Half), vna_other)             \
246
  TYPE_NAME (ElfW2(Bits, Ext##Word), vna_name)              \
247
  TYPE_NAME (ElfW2(Bits, Ext##Word), vna_next)              \
248
END (Bits, Ext##Vernaux)
249
250
# define Vernaux32(Ext) \
251
  Vernaux (32, Ext)
252
# define Vernaux64(Ext) \
253
  Vernaux (64, Ext)
254
#endif
255
256
/* Symbol information.  */
257
238
#define Syminfo(Bits, Ext) \
258
174k
START (Bits, Syminfo, Ext##Syminfo)                \
259
174k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
174k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
174k
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf32_cvt_Syminfo
Line
Count
Source
257
141
#define Syminfo(Bits, Ext) \
258
80.9k
START (Bits, Syminfo, Ext##Syminfo)                \
259
80.9k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
80.9k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
80.7k
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf64_cvt_Syminfo
Line
Count
Source
257
97
#define Syminfo(Bits, Ext) \
258
93.7k
START (Bits, Syminfo, Ext##Syminfo)                \
259
93.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
93.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
93.6k
END (Bits, Ext##Syminfo)
262
263
#define Syminfo32(Ext) \
264
  Syminfo (32, Ext)
265
#define Syminfo64(Ext) \
266
  Syminfo (64, Ext)
267
268
/* Move information.  */
269
757
#define Move(Bits, Ext) \
270
23.3k
START (Bits, Move, Ext##Move)                  \
271
23.3k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
23.3k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
23.3k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
23.3k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
23.3k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
22.6k
END (Bits, Ext##Move)
gelf_xlate.c:Elf32_cvt_Move
Line
Count
Source
269
666
#define Move(Bits, Ext) \
270
17.3k
START (Bits, Move, Ext##Move)                  \
271
17.3k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
17.3k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
17.3k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
17.3k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
17.3k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
16.6k
END (Bits, Ext##Move)
gelf_xlate.c:Elf64_cvt_Move
Line
Count
Source
269
91
#define Move(Bits, Ext) \
270
6.04k
START (Bits, Move, Ext##Move)                  \
271
6.04k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
6.04k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
6.04k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
6.04k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
6.04k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
5.95k
END (Bits, Ext##Move)
277
278
#define Move32(Ext) \
279
  Move (32, Ext)
280
#define Move64(Ext) \
281
  Move (64, Ext)
282
283
387
#define Lib(Bits, Ext) \
284
21.7k
START (Bits, Lib, Ext##Lib)                  \
285
21.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
21.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
21.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
21.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
21.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
21.3k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf32_cvt_Lib
Line
Count
Source
283
277
#define Lib(Bits, Ext) \
284
13.8k
START (Bits, Lib, Ext##Lib)                  \
285
13.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
13.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
13.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
13.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
13.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
13.5k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf64_cvt_Lib
Line
Count
Source
283
110
#define Lib(Bits, Ext) \
284
7.96k
START (Bits, Lib, Ext##Lib)                  \
285
7.96k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
7.96k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
7.96k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
7.96k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
7.96k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
7.85k
END (Bits, Ext##Lib)
291
292
#define Lib32(Ext) \
293
  Lib (32, Ext)
294
#define Lib64(Ext) \
295
  Lib (64, Ext)
296
297
0
#define auxv_t32(Ext) \
298
0
START (32, auxv_t, Ext##auxv_t)                  \
299
0
  TYPE_NAME (ElfW2(32, Ext##Word), a_type)             \
300
0
  TYPE_EXTRA (union {)                    \
301
0
  TYPE_EXTRA (ElfW2(32, Ext##Word) a_val;)              \
302
0
  TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->a_un.a_val, &tsrc->a_un.a_val);)       \
303
0
  TYPE_EXTRA (} a_un;)                    \
304
0
END (32, Ext##auxv_t)
305
0
#define auxv_t64(Ext) \
306
0
START (64, auxv_t, Ext##auxv_t)                  \
307
0
  TYPE_NAME (ElfW2(64, Ext##Xword), a_type)              \
308
0
  TYPE_EXTRA (union {)                    \
309
0
  TYPE_EXTRA (ElfW2(64, Ext##Xword) a_val;)             \
310
0
  TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->a_un.a_val, &tsrc->a_un.a_val);)       \
311
0
  TYPE_EXTRA (} a_un;)                    \
312
0
END (64, Ext##auxv_t)
313
314
/* Note that there is actual compression data right after the Chdr.
315
   So we also have a separate conversion function for the whole
316
   section.  */
317
39.9k
#define Chdr32(Ext) \
318
79.8k
START (32, Chdr, Ext##Chdr)            \
319
79.8k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_type)        \
320
79.8k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_size)        \
321
79.8k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_addralign)     \
322
39.9k
END (32, Ext##Chdr)
323
324
2.38k
#define Chdr64(Ext) \
325
4.76k
START (64, Chdr, Ext##Chdr)            \
326
4.76k
  TYPE_NAME (ElfW2(64, Ext##Word), ch_type)        \
327
4.76k
  TYPE_NAME (ElfW2(64, Ext##Word), ch_reserved)        \
328
4.76k
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_size)       \
329
4.76k
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_addralign)      \
330
2.38k
END (64, Ext##Chdr)