Coverage Report

Created: 2025-11-09 06:34

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
19.8k
#define Ehdr(Bits, Ext) \
32
39.7k
START (Bits, Ehdr, Ext##Ehdr)                  \
33
39.7k
  TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];)            \
34
39.7k
  TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);)        \
35
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_type)             \
36
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine)              \
37
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_version)              \
38
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry)              \
39
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff)             \
40
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff)             \
41
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags)              \
42
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize)             \
43
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize)            \
44
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum)              \
45
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize)            \
46
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum)              \
47
39.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx)           \
48
19.8k
END (Bits, Ext##Ehdr)
gelf_xlate.c:Elf32_cvt_Ehdr
Line
Count
Source
31
18.3k
#define Ehdr(Bits, Ext) \
32
36.6k
START (Bits, Ehdr, Ext##Ehdr)                  \
33
36.6k
  TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];)            \
34
36.6k
  TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);)        \
35
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_type)             \
36
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine)              \
37
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_version)              \
38
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry)              \
39
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff)             \
40
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff)             \
41
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags)              \
42
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize)             \
43
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize)            \
44
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum)              \
45
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize)            \
46
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum)              \
47
36.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx)           \
48
18.3k
END (Bits, Ext##Ehdr)
gelf_xlate.c:Elf64_cvt_Ehdr
Line
Count
Source
31
1.53k
#define Ehdr(Bits, Ext) \
32
3.06k
START (Bits, Ehdr, Ext##Ehdr)                  \
33
3.06k
  TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];)            \
34
3.06k
  TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);)        \
35
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_type)             \
36
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine)              \
37
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_version)              \
38
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry)              \
39
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff)             \
40
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff)             \
41
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags)              \
42
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize)             \
43
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize)            \
44
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum)              \
45
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize)            \
46
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum)              \
47
3.06k
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx)           \
48
1.53k
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
17.8k
#define Phdr32(Ext) \
58
13.9M
START (32, Phdr, Ext##Phdr)                  \
59
13.9M
  TYPE_NAME (ElfW2(32, Ext##Word), p_type)             \
60
13.9M
  TYPE_NAME (ElfW2(32, Ext##Off), p_offset)              \
61
13.9M
  TYPE_NAME (ElfW2(32, Ext##Addr), p_vaddr)              \
62
13.9M
  TYPE_NAME (ElfW2(32, Ext##Addr), p_paddr)              \
63
13.9M
  TYPE_NAME (ElfW2(32, Ext##Word), p_filesz)             \
64
13.9M
  TYPE_NAME (ElfW2(32, Ext##Word), p_memsz)              \
65
13.9M
  TYPE_NAME (ElfW2(32, Ext##Word), p_flags)              \
66
13.9M
  TYPE_NAME (ElfW2(32, Ext##Word), p_align)              \
67
13.8M
END (32, Ext##Phdr)
68
1.50k
#define Phdr64(Ext) \
69
15.9k
START (64, Phdr, Ext##Phdr)                  \
70
15.9k
  TYPE_NAME (ElfW2(64, Ext##Word), p_type)             \
71
15.9k
  TYPE_NAME (ElfW2(64, Ext##Word), p_flags)              \
72
15.9k
  TYPE_NAME (ElfW2(64, Ext##Off), p_offset)              \
73
15.9k
  TYPE_NAME (ElfW2(64, Ext##Addr), p_vaddr)              \
74
15.9k
  TYPE_NAME (ElfW2(64, Ext##Addr), p_paddr)              \
75
15.9k
  TYPE_NAME (ElfW2(64, Ext##Xword), p_filesz)              \
76
15.9k
  TYPE_NAME (ElfW2(64, Ext##Xword), p_memsz)             \
77
15.9k
  TYPE_NAME (ElfW2(64, Ext##Xword), p_align)             \
78
14.4k
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
517
#define Sym32(Ext) \
112
10.3k
START (32, Sym, Ext##Sym)                  \
113
10.3k
  TYPE_NAME (ElfW2(32, Ext##Word), st_name)              \
114
10.3k
  TYPE_NAME (ElfW2(32, Ext##Addr), st_value)             \
115
10.3k
  TYPE_NAME (ElfW2(32, Ext##Word), st_size)              \
116
10.3k
  TYPE_EXTRA (unsigned char st_info;)               \
117
10.3k
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
118
10.3k
  TYPE_EXTRA (unsigned char st_other;)                \
119
10.3k
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
120
10.3k
  TYPE_NAME (ElfW2(32, Ext##Half), st_shndx)             \
121
9.79k
END (32, Ext##Sym)
122
150
#define Sym64(Ext) \
123
10.2k
START (64, Sym, Ext##Sym)                  \
124
10.2k
  TYPE_NAME (ElfW2(64, Ext##Word), st_name)              \
125
10.2k
  TYPE_EXTRA (unsigned char st_info;)               \
126
10.2k
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
127
10.2k
  TYPE_EXTRA (unsigned char st_other;)                \
128
10.2k
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
129
10.2k
  TYPE_NAME (ElfW2(64, Ext##Half), st_shndx)             \
130
10.2k
  TYPE_NAME (ElfW2(64, Ext##Addr), st_value)             \
131
10.2k
  TYPE_NAME (ElfW2(64, Ext##Xword), st_size)             \
132
10.1k
END (64, Ext##Sym)
133
134
135
/* Relocation.  */
136
453
#define Rel32(Ext) \
137
28.8k
START (32, Rel, Ext##Rel)                  \
138
28.8k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
139
28.8k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
140
28.3k
END (32, Ext##Rel)
141
115
#define Rel64(Ext) \
142
1.37k
START (64, Rel, Ext##Rel)                  \
143
1.37k
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
144
1.37k
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
145
1.26k
END (64, Ext##Rel)
146
147
140
#define Rela32(Ext) \
148
135k
START (32, Rela, Ext##Rela)                  \
149
135k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
150
135k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
151
135k
  TYPE_NAME (ElfW2(32, Ext##Sword), r_addend)              \
152
135k
END (32, Ext##Rela)
153
122
#define Rela64(Ext) \
154
19.3k
START (64, Rela, Ext##Rela)                  \
155
19.3k
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
156
19.3k
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
157
19.3k
  TYPE_NAME (ElfW2(64, Ext##Sxword), r_addend)             \
158
19.2k
END (64, Ext##Rela)
159
160
161
/* Note entry header.  */
162
91.9k
#define Note(Bits, Ext) \
163
183k
START (Bits, Nhdr, Ext##Nhdr)                  \
164
183k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
183k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
183k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
91.9k
END (Bits, Ext##Nhdr)
gelf_xlate.c:Elf32_cvt_Nhdr
Line
Count
Source
162
91.9k
#define Note(Bits, Ext) \
163
183k
START (Bits, Nhdr, Ext##Nhdr)                  \
164
183k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
183k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
183k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
91.9k
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
4.49k
#define Dyn32(Ext) \
177
1.78M
START (32, Dyn, Ext##Dyn)                  \
178
1.78M
  TYPE_NAME (ElfW2(32, Ext##Sword), d_tag)             \
179
1.78M
  TYPE_EXTRA (union {)                    \
180
1.78M
  TYPE_EXTRA (ElfW2(32, Ext##Word) d_val;)              \
181
1.78M
  TYPE_EXTRA (ElfW2(32, Ext##Addr) d_ptr;)              \
182
1.78M
  TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
183
1.78M
  TYPE_EXTRA (ElfW2(32, Ext##Off) d_off;)             \
184
1.78M
  TYPE_EXTRA (} d_un;)                    \
185
1.78M
END (32, Ext##Dyn)
186
665
#define Dyn64(Ext) \
187
29.9k
START (64, Dyn, Ext##Dyn)                  \
188
29.9k
  TYPE_NAME (ElfW2(64, Ext##Xword), d_tag)             \
189
29.9k
  TYPE_EXTRA (union {)                    \
190
29.9k
  TYPE_EXTRA (ElfW2(64, Ext##Xword) d_val;)             \
191
29.9k
  TYPE_EXTRA (ElfW2(64, Ext##Addr) d_ptr;)              \
192
29.9k
  TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
193
29.9k
  TYPE_EXTRA (} d_un;)                    \
194
29.2k
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
566
#define Syminfo(Bits, Ext) \
258
398k
START (Bits, Syminfo, Ext##Syminfo)                \
259
398k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
398k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
398k
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf32_cvt_Syminfo
Line
Count
Source
257
452
#define Syminfo(Bits, Ext) \
258
364k
START (Bits, Syminfo, Ext##Syminfo)                \
259
364k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
364k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
364k
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf64_cvt_Syminfo
Line
Count
Source
257
114
#define Syminfo(Bits, Ext) \
258
34.0k
START (Bits, Syminfo, Ext##Syminfo)                \
259
34.0k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
34.0k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
33.9k
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
481
#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.8k
END (Bits, Ext##Move)
gelf_xlate.c:Elf32_cvt_Move
Line
Count
Source
269
391
#define Move(Bits, Ext) \
270
22.7k
START (Bits, Move, Ext##Move)                  \
271
22.7k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
22.7k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
22.7k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
22.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
22.7k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
22.3k
END (Bits, Ext##Move)
gelf_xlate.c:Elf64_cvt_Move
Line
Count
Source
269
90
#define Move(Bits, Ext) \
270
556
START (Bits, Move, Ext##Move)                  \
271
556
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
556
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
556
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
556
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
556
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
466
END (Bits, Ext##Move)
277
278
#define Move32(Ext) \
279
  Move (32, Ext)
280
#define Move64(Ext) \
281
  Move (64, Ext)
282
283
436
#define Lib(Bits, Ext) \
284
18.4k
START (Bits, Lib, Ext##Lib)                  \
285
18.4k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
18.4k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
18.4k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
18.4k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
18.4k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
18.0k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf32_cvt_Lib
Line
Count
Source
283
351
#define Lib(Bits, Ext) \
284
17.7k
START (Bits, Lib, Ext##Lib)                  \
285
17.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
17.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
17.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
17.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
17.7k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
17.3k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf64_cvt_Lib
Line
Count
Source
283
85
#define Lib(Bits, Ext) \
284
745
START (Bits, Lib, Ext##Lib)                  \
285
745
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
745
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
745
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
745
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
745
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
660
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
41.9k
#define Chdr32(Ext) \
318
83.8k
START (32, Chdr, Ext##Chdr)            \
319
83.8k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_type)        \
320
83.8k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_size)        \
321
83.8k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_addralign)     \
322
41.9k
END (32, Ext##Chdr)
323
324
2.14k
#define Chdr64(Ext) \
325
4.28k
START (64, Chdr, Ext##Chdr)            \
326
4.28k
  TYPE_NAME (ElfW2(64, Ext##Word), ch_type)        \
327
4.28k
  TYPE_NAME (ElfW2(64, Ext##Word), ch_reserved)        \
328
4.28k
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_size)       \
329
4.28k
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_addralign)      \
330
2.14k
END (64, Ext##Chdr)