Coverage Report

Created: 2025-07-12 06:44

/src/elfutils/libelf/abstract.h
Line
Count
Source (jump to first uncovered line)
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
15
#define Sym32(Ext) \
112
30.0k
START (32, Sym, Ext##Sym)                  \
113
30.0k
  TYPE_NAME (ElfW2(32, Ext##Word), st_name)              \
114
30.0k
  TYPE_NAME (ElfW2(32, Ext##Addr), st_value)             \
115
30.0k
  TYPE_NAME (ElfW2(32, Ext##Word), st_size)              \
116
30.0k
  TYPE_EXTRA (unsigned char st_info;)               \
117
30.0k
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
118
30.0k
  TYPE_EXTRA (unsigned char st_other;)                \
119
30.0k
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
120
30.0k
  TYPE_NAME (ElfW2(32, Ext##Half), st_shndx)             \
121
29.9k
END (32, Ext##Sym)
122
8
#define Sym64(Ext) \
123
818
START (64, Sym, Ext##Sym)                  \
124
818
  TYPE_NAME (ElfW2(64, Ext##Word), st_name)              \
125
818
  TYPE_EXTRA (unsigned char st_info;)               \
126
818
  TYPE_XLATE (tdest->st_info = tsrc->st_info;)              \
127
818
  TYPE_EXTRA (unsigned char st_other;)                \
128
818
  TYPE_XLATE (tdest->st_other = tsrc->st_other;)            \
129
818
  TYPE_NAME (ElfW2(64, Ext##Half), st_shndx)             \
130
818
  TYPE_NAME (ElfW2(64, Ext##Addr), st_value)             \
131
818
  TYPE_NAME (ElfW2(64, Ext##Xword), st_size)             \
132
810
END (64, Ext##Sym)
133
134
135
/* Relocation.  */
136
13
#define Rel32(Ext) \
137
142k
START (32, Rel, Ext##Rel)                  \
138
142k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
139
142k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
140
142k
END (32, Ext##Rel)
141
8
#define Rel64(Ext) \
142
245
START (64, Rel, Ext##Rel)                  \
143
245
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
144
245
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
145
237
END (64, Ext##Rel)
146
147
14
#define Rela32(Ext) \
148
278k
START (32, Rela, Ext##Rela)                  \
149
278k
  TYPE_NAME (ElfW2(32, Ext##Addr), r_offset)             \
150
278k
  TYPE_NAME (ElfW2(32, Ext##Word), r_info)             \
151
278k
  TYPE_NAME (ElfW2(32, Ext##Sword), r_addend)              \
152
278k
END (32, Ext##Rela)
153
9
#define Rela64(Ext) \
154
22.6k
START (64, Rela, Ext##Rela)                  \
155
22.6k
  TYPE_NAME (ElfW2(64, Ext##Addr), r_offset)             \
156
22.6k
  TYPE_NAME (ElfW2(64, Ext##Xword), r_info)              \
157
22.6k
  TYPE_NAME (ElfW2(64, Ext##Sxword), r_addend)             \
158
22.6k
END (64, Ext##Rela)
159
160
161
/* Note entry header.  */
162
4.38M
#define Note(Bits, Ext) \
163
8.77M
START (Bits, Nhdr, Ext##Nhdr)                  \
164
8.77M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
8.77M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
8.77M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
4.38M
END (Bits, Ext##Nhdr)
gelf_xlate.c:Elf32_cvt_Nhdr
Line
Count
Source
162
4.38M
#define Note(Bits, Ext) \
163
8.77M
START (Bits, Nhdr, Ext##Nhdr)                  \
164
8.77M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz)             \
165
8.77M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz)             \
166
8.77M
  TYPE_NAME (ElfW2(Bits, Ext##Word), n_type)             \
167
4.38M
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
19
#define Dyn32(Ext) \
177
491k
START (32, Dyn, Ext##Dyn)                  \
178
491k
  TYPE_NAME (ElfW2(32, Ext##Sword), d_tag)             \
179
491k
  TYPE_EXTRA (union {)                    \
180
491k
  TYPE_EXTRA (ElfW2(32, Ext##Word) d_val;)              \
181
491k
  TYPE_EXTRA (ElfW2(32, Ext##Addr) d_ptr;)              \
182
491k
  TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
183
491k
  TYPE_EXTRA (ElfW2(32, Ext##Off) d_off;)             \
184
491k
  TYPE_EXTRA (} d_un;)                    \
185
491k
END (32, Ext##Dyn)
186
17
#define Dyn64(Ext) \
187
189k
START (64, Dyn, Ext##Dyn)                  \
188
189k
  TYPE_NAME (ElfW2(64, Ext##Xword), d_tag)             \
189
189k
  TYPE_EXTRA (union {)                    \
190
189k
  TYPE_EXTRA (ElfW2(64, Ext##Xword) d_val;)             \
191
189k
  TYPE_EXTRA (ElfW2(64, Ext##Addr) d_ptr;)              \
192
189k
  TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);)       \
193
189k
  TYPE_EXTRA (} d_un;)                    \
194
189k
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
21
#define Syminfo(Bits, Ext) \
258
70.6k
START (Bits, Syminfo, Ext##Syminfo)                \
259
70.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
70.6k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
70.6k
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf32_cvt_Syminfo
Line
Count
Source
257
10
#define Syminfo(Bits, Ext) \
258
311
START (Bits, Syminfo, Ext##Syminfo)                \
259
311
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
311
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
301
END (Bits, Ext##Syminfo)
gelf_xlate.c:Elf64_cvt_Syminfo
Line
Count
Source
257
11
#define Syminfo(Bits, Ext) \
258
70.3k
START (Bits, Syminfo, Ext##Syminfo)                \
259
70.3k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto)           \
260
70.3k
  TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags)             \
261
70.3k
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
21
#define Move(Bits, Ext) \
270
8.24k
START (Bits, Move, Ext##Move)                  \
271
8.24k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
8.24k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
8.24k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
8.24k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
8.24k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
8.22k
END (Bits, Ext##Move)
gelf_xlate.c:Elf32_cvt_Move
Line
Count
Source
269
8
#define Move(Bits, Ext) \
270
357
START (Bits, Move, Ext##Move)                  \
271
357
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
357
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
357
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
357
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
357
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
349
END (Bits, Ext##Move)
gelf_xlate.c:Elf64_cvt_Move
Line
Count
Source
269
13
#define Move(Bits, Ext) \
270
7.88k
START (Bits, Move, Ext##Move)                  \
271
7.88k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value)             \
272
7.88k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info)              \
273
7.88k
  TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset)           \
274
7.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat)             \
275
7.88k
  TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride)             \
276
7.87k
END (Bits, Ext##Move)
277
278
#define Move32(Ext) \
279
  Move (32, Ext)
280
#define Move64(Ext) \
281
  Move (64, Ext)
282
283
17
#define Lib(Bits, Ext) \
284
25.0k
START (Bits, Lib, Ext##Lib)                  \
285
25.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
25.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
25.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
25.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
25.0k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
25.0k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf32_cvt_Lib
Line
Count
Source
283
8
#define Lib(Bits, Ext) \
284
3.31k
START (Bits, Lib, Ext##Lib)                  \
285
3.31k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_name)             \
286
3.31k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp)           \
287
3.31k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum)           \
288
3.31k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_version)              \
289
3.31k
  TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags)              \
290
3.30k
END (Bits, Ext##Lib)
gelf_xlate.c:Elf64_cvt_Lib
Line
Count
Source
283
9
#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.7k
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
209
#define Chdr32(Ext) \
318
418
START (32, Chdr, Ext##Chdr)            \
319
418
  TYPE_NAME (ElfW2(32, Ext##Word), ch_type)        \
320
418
  TYPE_NAME (ElfW2(32, Ext##Word), ch_size)        \
321
418
  TYPE_NAME (ElfW2(32, Ext##Word), ch_addralign)     \
322
209
END (32, Ext##Chdr)
323
324
259
#define Chdr64(Ext) \
325
518
START (64, Chdr, Ext##Chdr)            \
326
518
  TYPE_NAME (ElfW2(64, Ext##Word), ch_type)        \
327
518
  TYPE_NAME (ElfW2(64, Ext##Word), ch_reserved)        \
328
518
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_size)       \
329
518
  TYPE_NAME (ElfW2(64, Ext##Xword), ch_addralign)      \
330
259
END (64, Ext##Chdr)