Coverage Report

Created: 2026-02-26 06:46

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
0
#define Ehdr(Bits, Ext) \
32
0
START (Bits, Ehdr, Ext##Ehdr)                  \
33
0
  TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];)            \
34
0
  TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);)        \
35
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_type)             \
36
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine)              \
37
0
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_version)              \
38
0
  TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry)              \
39
0
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff)             \
40
0
  TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff)             \
41
0
  TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags)              \
42
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize)             \
43
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize)            \
44
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum)              \
45
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize)            \
46
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum)              \
47
0
  TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx)           \
48
0
END (Bits, Ext##Ehdr)
Unexecuted instantiation: gelf_xlate.c:Elf32_cvt_Ehdr
Unexecuted instantiation: gelf_xlate.c:Elf64_cvt_Ehdr
49
50
#define Ehdr32(Ext) \
51
  Ehdr(32, Ext)
52
#define Ehdr64(Ext) \
53
  Ehdr(64, Ext)
54
55
56
/* Program header.  */
57
0
#define Phdr32(Ext) \
58
0
START (32, Phdr, Ext##Phdr)                  \
59
0
  TYPE_NAME (ElfW2(32, Ext##Word), p_type)             \
60
0
  TYPE_NAME (ElfW2(32, Ext##Off), p_offset)              \
61
0
  TYPE_NAME (ElfW2(32, Ext##Addr), p_vaddr)              \
62
0
  TYPE_NAME (ElfW2(32, Ext##Addr), p_paddr)              \
63
0
  TYPE_NAME (ElfW2(32, Ext##Word), p_filesz)             \
64
0
  TYPE_NAME (ElfW2(32, Ext##Word), p_memsz)              \
65
0
  TYPE_NAME (ElfW2(32, Ext##Word), p_flags)              \
66
0
  TYPE_NAME (ElfW2(32, Ext##Word), p_align)              \
67
0
END (32, Ext##Phdr)
68
0
#define Phdr64(Ext) \
69
0
START (64, Phdr, Ext##Phdr)                  \
70
0
  TYPE_NAME (ElfW2(64, Ext##Word), p_type)             \
71
0
  TYPE_NAME (ElfW2(64, Ext##Word), p_flags)              \
72
0
  TYPE_NAME (ElfW2(64, Ext##Off), p_offset)              \
73
0
  TYPE_NAME (ElfW2(64, Ext##Addr), p_vaddr)              \
74
0
  TYPE_NAME (ElfW2(64, Ext##Addr), p_paddr)              \
75
0
  TYPE_NAME (ElfW2(64, Ext##Xword), p_filesz)              \
76
0
  TYPE_NAME (ElfW2(64, Ext##Xword), p_memsz)             \
77
0
  TYPE_NAME (ElfW2(64, Ext##Xword), p_align)             \
78
0
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
343
#define Sym32(Ext) \
112
6.17k
START (32, Sym, Ext##Sym)                  \
113
6.17k
  TYPE_NAME (ElfW2(32, Ext##Word), st_name)              \
114
6.17k
  TYPE_NAME (ElfW2(32, Ext##Addr), st_value)             \
115
6.17k
  TYPE_NAME (ElfW2(32, Ext##Word), st_size)              \
116
6.17k
  TYPE_EXTRA (unsigned char st_info;)               \
117
6.17k
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
118
6.17k
  TYPE_EXTRA (unsigned char st_other;)                \
119
6.17k
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
120
6.17k
  TYPE_NAME (ElfW2(32, Ext##Half), st_shndx)             \
121
5.83k
END (32, Ext##Sym)
122
118
#define Sym64(Ext) \
123
4.18k
START (64, Sym, Ext##Sym)                  \
124
4.18k
  TYPE_NAME (ElfW2(64, Ext##Word), st_name)              \
125
4.18k
  TYPE_EXTRA (unsigned char st_info;)               \
126
4.18k
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
127
4.18k
  TYPE_EXTRA (unsigned char st_other;)                \
128
4.18k
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
129
4.18k
  TYPE_NAME (ElfW2(64, Ext##Half), st_shndx)             \
130
4.18k
  TYPE_NAME (ElfW2(64, Ext##Addr), st_value)             \
131
4.18k
  TYPE_NAME (ElfW2(64, Ext##Xword), st_size)             \
132
4.06k
END (64, Ext##Sym)
133
134
135
/* Relocation.  */
136
236
#define Rel32(Ext) \
137
11.1k
START (32, Rel, Ext##Rel)                  \
138
11.1k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
139
11.1k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
140
10.8k
END (32, Ext##Rel)
141
128
#define Rel64(Ext) \
142
1.08k
START (64, Rel, Ext##Rel)                  \
143
1.08k
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
144
1.08k
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
145
960
END (64, Ext##Rel)
146
147
171
#define Rela32(Ext) \
148
74.2k
START (32, Rela, Ext##Rela)                  \
149
74.2k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
150
74.2k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
151
74.2k
  TYPE_NAME (ElfW2(32, Ext##Sword), r_addend)              \
152
74.1k
END (32, Ext##Rela)
153
94
#define Rela64(Ext) \
154
17.9k
START (64, Rela, Ext##Rela)                  \
155
17.9k
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
156
17.9k
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
157
17.9k
  TYPE_NAME (ElfW2(64, Ext##Sxword), r_addend)             \
158
17.8k
END (64, Ext##Rela)
159
160
161
/* Note entry header.  */
162
6.54k
#define Note(Bits, Ext) \
163
13.0k
START (Bits, Nhdr, Ext##Nhdr)                  \
164
13.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
13.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
13.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
6.54k
END (Bits, Ext##Nhdr)
gelf_xlate.c:Elf32_cvt_Nhdr
Line
Count
Source
162
6.54k
#define Note(Bits, Ext) \
163
13.0k
START (Bits, Nhdr, Ext##Nhdr)                  \
164
13.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
13.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
13.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
6.54k
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
679
#define Dyn32(Ext) \
177
8.59k
START (32, Dyn, Ext##Dyn)                  \
178
8.59k
  TYPE_NAME (ElfW2(32, Ext##Sword), d_tag)             \
179
8.59k
  TYPE_EXTRA (union {)                    \
180
8.59k
  TYPE_EXTRA (ElfW2(32, Ext##Word) d_val;)              \
181
8.59k
  TYPE_EXTRA (ElfW2(32, Ext##Addr) d_ptr;)              \
182
8.59k
  TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
183
8.59k
  TYPE_EXTRA (ElfW2(32, Ext##Off) d_off;)             \
184
8.59k
  TYPE_EXTRA (} d_un;)                    \
185
7.91k
END (32, Ext##Dyn)
186
70
#define Dyn64(Ext) \
187
4.19k
START (64, Dyn, Ext##Dyn)                  \
188
4.19k
  TYPE_NAME (ElfW2(64, Ext##Xword), d_tag)             \
189
4.19k
  TYPE_EXTRA (union {)                    \
190
4.19k
  TYPE_EXTRA (ElfW2(64, Ext##Xword) d_val;)             \
191
4.19k
  TYPE_EXTRA (ElfW2(64, Ext##Addr) d_ptr;)              \
192
4.19k
  TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
193
4.19k
  TYPE_EXTRA (} d_un;)                    \
194
4.12k
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
342
#define Syminfo(Bits, Ext) \
258
237k
START (Bits, Syminfo, Ext##Syminfo)                \
259
237k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
237k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
236k
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf32_cvt_Syminfo
Line
Count
Source
257
252
#define Syminfo(Bits, Ext) \
258
189k
START (Bits, Syminfo, Ext##Syminfo)                \
259
189k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
189k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
188k
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf64_cvt_Syminfo
Line
Count
Source
257
90
#define Syminfo(Bits, Ext) \
258
48.1k
START (Bits, Syminfo, Ext##Syminfo)                \
259
48.1k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
48.1k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
48.0k
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
599
#define Move(Bits, Ext) \
270
20.2k
START (Bits, Move, Ext##Move)                  \
271
20.2k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
20.2k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
20.2k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
20.2k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
20.2k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
19.6k
END (Bits, Ext##Move)
gelf_xlate.c:Elf32_cvt_Move
Line
Count
Source
269
520
#define Move(Bits, Ext) \
270
19.6k
START (Bits, Move, Ext##Move)                  \
271
19.6k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
19.6k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
19.6k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
19.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
19.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
19.1k
END (Bits, Ext##Move)
gelf_xlate.c:Elf64_cvt_Move
Line
Count
Source
269
79
#define Move(Bits, Ext) \
270
561
START (Bits, Move, Ext##Move)                  \
271
561
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
561
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
561
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
561
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
561
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
482
END (Bits, Ext##Move)
277
278
#define Move32(Ext) \
279
  Move (32, Ext)
280
#define Move64(Ext) \
281
  Move (64, Ext)
282
283
334
#define Lib(Bits, Ext) \
284
17.8k
START (Bits, Lib, Ext##Lib)                  \
285
17.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
17.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
17.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
17.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
17.8k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
17.5k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf32_cvt_Lib
Line
Count
Source
283
247
#define Lib(Bits, Ext) \
284
13.3k
START (Bits, Lib, Ext##Lib)                  \
285
13.3k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
13.3k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
13.3k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
13.3k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
13.3k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
13.0k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf64_cvt_Lib
Line
Count
Source
283
87
#define Lib(Bits, Ext) \
284
4.56k
START (Bits, Lib, Ext##Lib)                  \
285
4.56k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
4.56k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
4.56k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
4.56k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
4.56k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
4.48k
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
40.2k
#define Chdr32(Ext) \
318
80.4k
START (32, Chdr, Ext##Chdr)            \
319
80.4k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_type)        \
320
80.4k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_size)        \
321
80.4k
  TYPE_NAME (ElfW2(32, Ext##Word), ch_addralign)     \
322
40.2k
END (32, Ext##Chdr)
323
324
2.10k
#define Chdr64(Ext) \
325
4.21k
START (64, Chdr, Ext##Chdr)            \
326
4.21k
  TYPE_NAME (ElfW2(64, Ext##Word), ch_type)        \
327
4.21k
  TYPE_NAME (ElfW2(64, Ext##Word), ch_reserved)        \
328
4.21k
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_size)       \
329
4.21k
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_addralign)      \
330
2.10k
END (64, Ext##Chdr)