Coverage Report

Created: 2026-01-25 06:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-elf-struct.c
Line
Count
Source
1
/*
2
 * This file is auto-generated, do not modify!
3
 *
4
 * SPDX-License-Identifier: LGPL-2.1-or-later
5
 */
6
7
#include "config.h"
8
9
#include <glib.h>
10
11
#include "fu-elf-struct.h"
12
#include "fu-byte-array.h"
13
#include "fu-mem-private.h"
14
#include "fu-string.h"
15
16
#ifdef G_LOG_DOMAIN
17
  #undef G_LOG_DOMAIN
18
#endif
19
0
#define G_LOG_DOMAIN "FuStruct"
20
21
/**
22
 * fu_elf_file_header_type_to_string:
23
 * @val: value, e.g. %FU_ELF_FILE_HEADER_TYPE_REL
24
 *
25
 * Converts an enumerated value to a string.
26
 *
27
 * Returns: identifier string
28
 **/
29
static const gchar *
30
fu_elf_file_header_type_to_string(FuElfFileHeaderType val)
31
0
{
32
0
    if (val == FU_ELF_FILE_HEADER_TYPE_NONE)
33
0
        return "none";
34
0
    if (val == FU_ELF_FILE_HEADER_TYPE_REL)
35
0
        return "rel";
36
0
    if (val == FU_ELF_FILE_HEADER_TYPE_EXEC)
37
0
        return "exec";
38
0
    if (val == FU_ELF_FILE_HEADER_TYPE_DYN)
39
0
        return "dyn";
40
0
    if (val == FU_ELF_FILE_HEADER_TYPE_CORE)
41
0
        return "core";
42
0
    return NULL;
43
0
}
44
45
/**
46
 * fu_elf_section_header_type_to_string:
47
 * @val: value, e.g. %FU_ELF_SECTION_HEADER_TYPE_PROGBITS
48
 *
49
 * Converts an enumerated value to a string.
50
 *
51
 * Returns: identifier string
52
 **/
53
const gchar *
54
fu_elf_section_header_type_to_string(FuElfSectionHeaderType val)
55
99
{
56
99
    if (val == FU_ELF_SECTION_HEADER_TYPE_NULL)
57
3
        return "null";
58
96
    if (val == FU_ELF_SECTION_HEADER_TYPE_PROGBITS)
59
1
        return "progbits";
60
95
    if (val == FU_ELF_SECTION_HEADER_TYPE_SYMTAB)
61
1
        return "symtab";
62
94
    if (val == FU_ELF_SECTION_HEADER_TYPE_STRTAB)
63
0
        return "strtab";
64
94
    if (val == FU_ELF_SECTION_HEADER_TYPE_RELA)
65
1
        return "rela";
66
93
    if (val == FU_ELF_SECTION_HEADER_TYPE_HASH)
67
1
        return "hash";
68
92
    if (val == FU_ELF_SECTION_HEADER_TYPE_DYNAMIC)
69
1
        return "dynamic";
70
91
    if (val == FU_ELF_SECTION_HEADER_TYPE_NOTE)
71
1
        return "note";
72
90
    if (val == FU_ELF_SECTION_HEADER_TYPE_NOBITS)
73
1
        return "nobits";
74
89
    if (val == FU_ELF_SECTION_HEADER_TYPE_REL)
75
1
        return "rel";
76
88
    if (val == FU_ELF_SECTION_HEADER_TYPE_SHLIB)
77
1
        return "shlib";
78
87
    if (val == FU_ELF_SECTION_HEADER_TYPE_DYNSYM)
79
1
        return "dynsym";
80
86
    if (val == FU_ELF_SECTION_HEADER_TYPE_INIT_ARRAY)
81
1
        return "init-array";
82
85
    if (val == FU_ELF_SECTION_HEADER_TYPE_FINI_ARRAY)
83
1
        return "fini-array";
84
84
    if (val == FU_ELF_SECTION_HEADER_TYPE_PREINIT_ARRAY)
85
1
        return "preinit-array";
86
83
    if (val == FU_ELF_SECTION_HEADER_TYPE_GROUP)
87
1
        return "group";
88
82
    if (val == FU_ELF_SECTION_HEADER_TYPE_SYMTAB_SHNDX)
89
1
        return "symtab-shndx";
90
81
    if (val == FU_ELF_SECTION_HEADER_TYPE_NUM)
91
1
        return "num";
92
80
    return NULL;
93
81
}
94
/**
95
 * fu_struct_elf_file_header64le_ref: (skip):
96
 **/
97
FuStructElfFileHeader64le *
98
fu_struct_elf_file_header64le_ref(FuStructElfFileHeader64le *st)
99
0
{
100
0
    g_return_val_if_fail(st != NULL, NULL);
101
0
    st->refcount++;
102
0
    return st;
103
0
}
104
/**
105
 * fu_struct_elf_file_header64le_unref: (skip):
106
 **/
107
void
108
fu_struct_elf_file_header64le_unref(FuStructElfFileHeader64le *st)
109
2.23k
{
110
2.23k
    g_return_if_fail(st != NULL);
111
2.23k
    if (st->refcount == 0) {
112
0
        g_critical("FuStructElfFileHeader64le refcount already zero");
113
0
        return;
114
0
    }
115
2.23k
    if (--st->refcount > 0)
116
0
        return;
117
2.23k
    if (st->buf != NULL)
118
2.23k
        g_byte_array_unref(st->buf);
119
2.23k
    g_free(st);
120
2.23k
}
121
/**
122
 * fu_struct_elf_file_header64le_new_internal: (skip):
123
 **/
124
static FuStructElfFileHeader64le *
125
fu_struct_elf_file_header64le_new_internal(void)
126
2.23k
{
127
2.23k
    FuStructElfFileHeader64le *st = g_new0(FuStructElfFileHeader64le, 1);
128
2.23k
    st->refcount = 1;
129
2.23k
    return st;
130
2.23k
}
131
132
/* getters */
133
/**
134
 * fu_struct_elf_file_header64le_get_ei_magic: (skip):
135
 **/
136
static gchar *
137
fu_struct_elf_file_header64le_get_ei_magic(const FuStructElfFileHeader64le *st)
138
44
{
139
44
    g_return_val_if_fail(st != NULL, NULL);
140
44
    return fu_memstrsafe(st->buf->data, st->buf->len, 0, 4, NULL);
141
44
}
142
/**
143
 * fu_struct_elf_file_header64le_get_ei_class: (skip):
144
 **/
145
static guint8
146
fu_struct_elf_file_header64le_get_ei_class(const FuStructElfFileHeader64le *st)
147
1.92k
{
148
1.92k
    g_return_val_if_fail(st != NULL, 0x0);
149
1.92k
    return st->buf->data[4];
150
1.92k
}
151
/**
152
 * fu_struct_elf_file_header64le_get_ei_data: (skip):
153
 **/
154
static guint8
155
fu_struct_elf_file_header64le_get_ei_data(const FuStructElfFileHeader64le *st)
156
1.91k
{
157
1.91k
    g_return_val_if_fail(st != NULL, 0x0);
158
1.91k
    return st->buf->data[5];
159
1.91k
}
160
/**
161
 * fu_struct_elf_file_header64le_get_ei_version: (skip):
162
 **/
163
static guint8
164
fu_struct_elf_file_header64le_get_ei_version(const FuStructElfFileHeader64le *st)
165
1.91k
{
166
1.91k
    g_return_val_if_fail(st != NULL, 0x0);
167
1.91k
    return st->buf->data[6];
168
1.91k
}
169
/**
170
 * fu_struct_elf_file_header64le_get_ei_osabi: (skip):
171
 **/
172
guint8
173
fu_struct_elf_file_header64le_get_ei_osabi(const FuStructElfFileHeader64le *st)
174
0
{
175
0
    g_return_val_if_fail(st != NULL, 0x0);
176
0
    return st->buf->data[7];
177
0
}
178
/**
179
 * fu_struct_elf_file_header64le_get_ei_abiversion: (skip):
180
 **/
181
guint8
182
fu_struct_elf_file_header64le_get_ei_abiversion(const FuStructElfFileHeader64le *st)
183
0
{
184
0
    g_return_val_if_fail(st != NULL, 0x0);
185
0
    return st->buf->data[8];
186
0
}
187
/**
188
 * fu_struct_elf_file_header64le_get_type: (skip):
189
 **/
190
FuElfFileHeaderType
191
fu_struct_elf_file_header64le_get_type(const FuStructElfFileHeader64le *st)
192
0
{
193
0
    g_return_val_if_fail(st != NULL, 0x0);
194
0
    return fu_memread_uint16(st->buf->data + 16, G_LITTLE_ENDIAN);
195
0
}
196
/**
197
 * fu_struct_elf_file_header64le_get_machine: (skip):
198
 **/
199
guint16
200
fu_struct_elf_file_header64le_get_machine(const FuStructElfFileHeader64le *st)
201
0
{
202
0
    g_return_val_if_fail(st != NULL, 0x0);
203
0
    return fu_memread_uint16(st->buf->data + 18, G_LITTLE_ENDIAN);
204
0
}
205
/**
206
 * fu_struct_elf_file_header64le_get_version: (skip):
207
 **/
208
static guint32
209
fu_struct_elf_file_header64le_get_version(const FuStructElfFileHeader64le *st)
210
1.95k
{
211
1.95k
    g_return_val_if_fail(st != NULL, 0x0);
212
1.95k
    return fu_memread_uint32(st->buf->data + 20, G_LITTLE_ENDIAN);
213
1.95k
}
214
/**
215
 * fu_struct_elf_file_header64le_get_entry: (skip):
216
 **/
217
guint64
218
fu_struct_elf_file_header64le_get_entry(const FuStructElfFileHeader64le *st)
219
0
{
220
0
    g_return_val_if_fail(st != NULL, 0x0);
221
0
    return fu_memread_uint64(st->buf->data + 24, G_LITTLE_ENDIAN);
222
0
}
223
/**
224
 * fu_struct_elf_file_header64le_get_phoff: (skip):
225
 **/
226
guint64
227
fu_struct_elf_file_header64le_get_phoff(const FuStructElfFileHeader64le *st)
228
935
{
229
935
    g_return_val_if_fail(st != NULL, 0x0);
230
935
    return fu_memread_uint64(st->buf->data + 32, G_LITTLE_ENDIAN);
231
935
}
232
/**
233
 * fu_struct_elf_file_header64le_get_shoff: (skip):
234
 **/
235
guint64
236
fu_struct_elf_file_header64le_get_shoff(const FuStructElfFileHeader64le *st)
237
829
{
238
829
    g_return_val_if_fail(st != NULL, 0x0);
239
829
    return fu_memread_uint64(st->buf->data + 40, G_LITTLE_ENDIAN);
240
829
}
241
/**
242
 * fu_struct_elf_file_header64le_get_flags: (skip):
243
 **/
244
guint32
245
fu_struct_elf_file_header64le_get_flags(const FuStructElfFileHeader64le *st)
246
0
{
247
0
    g_return_val_if_fail(st != NULL, 0x0);
248
0
    return fu_memread_uint32(st->buf->data + 48, G_LITTLE_ENDIAN);
249
0
}
250
/**
251
 * fu_struct_elf_file_header64le_get_ehsize: (skip):
252
 **/
253
guint16
254
fu_struct_elf_file_header64le_get_ehsize(const FuStructElfFileHeader64le *st)
255
0
{
256
0
    g_return_val_if_fail(st != NULL, 0x0);
257
0
    return fu_memread_uint16(st->buf->data + 52, G_LITTLE_ENDIAN);
258
0
}
259
/**
260
 * fu_struct_elf_file_header64le_get_phentsize: (skip):
261
 **/
262
guint16
263
fu_struct_elf_file_header64le_get_phentsize(const FuStructElfFileHeader64le *st)
264
935
{
265
935
    g_return_val_if_fail(st != NULL, 0x0);
266
935
    return fu_memread_uint16(st->buf->data + 54, G_LITTLE_ENDIAN);
267
935
}
268
/**
269
 * fu_struct_elf_file_header64le_get_phnum: (skip):
270
 **/
271
guint16
272
fu_struct_elf_file_header64le_get_phnum(const FuStructElfFileHeader64le *st)
273
935
{
274
935
    g_return_val_if_fail(st != NULL, 0x0);
275
935
    return fu_memread_uint16(st->buf->data + 56, G_LITTLE_ENDIAN);
276
935
}
277
/**
278
 * fu_struct_elf_file_header64le_get_shentsize: (skip):
279
 **/
280
guint16
281
fu_struct_elf_file_header64le_get_shentsize(const FuStructElfFileHeader64le *st)
282
12.3M
{
283
12.3M
    g_return_val_if_fail(st != NULL, 0x0);
284
12.3M
    return fu_memread_uint16(st->buf->data + 58, G_LITTLE_ENDIAN);
285
12.3M
}
286
/**
287
 * fu_struct_elf_file_header64le_get_shnum: (skip):
288
 **/
289
guint16
290
fu_struct_elf_file_header64le_get_shnum(const FuStructElfFileHeader64le *st)
291
829
{
292
829
    g_return_val_if_fail(st != NULL, 0x0);
293
829
    return fu_memread_uint16(st->buf->data + 60, G_LITTLE_ENDIAN);
294
829
}
295
/**
296
 * fu_struct_elf_file_header64le_get_shstrndx: (skip):
297
 **/
298
guint16
299
fu_struct_elf_file_header64le_get_shstrndx(const FuStructElfFileHeader64le *st)
300
6.07M
{
301
6.07M
    g_return_val_if_fail(st != NULL, 0x0);
302
6.07M
    return fu_memread_uint16(st->buf->data + 62, G_LITTLE_ENDIAN);
303
6.07M
}
304
305
/* setters */
306
/**
307
 * fu_struct_elf_file_header64le_set_ei_magic: (skip):
308
 **/
309
static gboolean
310
fu_struct_elf_file_header64le_set_ei_magic(FuStructElfFileHeader64le *st, const gchar *value, GError **error)
311
241
{
312
241
    gsize len;
313
241
    g_return_val_if_fail(st != NULL, FALSE);
314
241
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
315
241
    if (value == NULL) {
316
0
        memset(st->buf->data + 0, 0x0, 4);
317
0
        return TRUE;
318
0
    }
319
241
    len = strlen(value);
320
241
    if (len > 4) {
321
0
        g_set_error(error,
322
0
                    FWUPD_ERROR,
323
0
                    FWUPD_ERROR_INVALID_DATA,
324
0
                    "string '%s' (0x%x bytes) does not fit in FuStructElfFileHeader64le.ei_magic (0x%x bytes)",
325
0
                    value, (guint) len, (guint) 4);
326
0
        return FALSE;
327
0
    }
328
241
    return fu_memcpy_safe(st->buf->data, st->buf->len, 0, (const guint8 *)value, len, 0x0, len, error);
329
241
}
330
/**
331
 * fu_struct_elf_file_header64le_set_ei_class: (skip):
332
 **/
333
static void
334
fu_struct_elf_file_header64le_set_ei_class(FuStructElfFileHeader64le *st, guint8 value)
335
241
{
336
241
    g_return_if_fail(st != NULL);
337
241
    st->buf->data[4] = value;
338
241
}
339
/**
340
 * fu_struct_elf_file_header64le_set_ei_data: (skip):
341
 **/
342
static void
343
fu_struct_elf_file_header64le_set_ei_data(FuStructElfFileHeader64le *st, guint8 value)
344
241
{
345
241
    g_return_if_fail(st != NULL);
346
241
    st->buf->data[5] = value;
347
241
}
348
/**
349
 * fu_struct_elf_file_header64le_set_ei_version: (skip):
350
 **/
351
static void
352
fu_struct_elf_file_header64le_set_ei_version(FuStructElfFileHeader64le *st, guint8 value)
353
241
{
354
241
    g_return_if_fail(st != NULL);
355
241
    st->buf->data[6] = value;
356
241
}
357
/**
358
 * fu_struct_elf_file_header64le_set_ei_osabi: (skip):
359
 **/
360
void
361
fu_struct_elf_file_header64le_set_ei_osabi(FuStructElfFileHeader64le *st, guint8 value)
362
241
{
363
241
    g_return_if_fail(st != NULL);
364
241
    st->buf->data[7] = value;
365
241
}
366
/**
367
 * fu_struct_elf_file_header64le_set_ei_abiversion: (skip):
368
 **/
369
void
370
fu_struct_elf_file_header64le_set_ei_abiversion(FuStructElfFileHeader64le *st, guint8 value)
371
0
{
372
0
    g_return_if_fail(st != NULL);
373
0
    st->buf->data[8] = value;
374
0
}
375
/**
376
 * fu_struct_elf_file_header64le_set_type: (skip):
377
 **/
378
void
379
fu_struct_elf_file_header64le_set_type(FuStructElfFileHeader64le *st, FuElfFileHeaderType value)
380
0
{
381
0
    g_return_if_fail(st != NULL);
382
0
    fu_memwrite_uint16(st->buf->data + 16, value, G_LITTLE_ENDIAN);
383
0
}
384
/**
385
 * fu_struct_elf_file_header64le_set_machine: (skip):
386
 **/
387
void
388
fu_struct_elf_file_header64le_set_machine(FuStructElfFileHeader64le *st, guint16 value)
389
0
{
390
0
    g_return_if_fail(st != NULL);
391
0
    fu_memwrite_uint16(st->buf->data + 18, value, G_LITTLE_ENDIAN);
392
0
}
393
/**
394
 * fu_struct_elf_file_header64le_set_version: (skip):
395
 **/
396
static void
397
fu_struct_elf_file_header64le_set_version(FuStructElfFileHeader64le *st, guint32 value)
398
241
{
399
241
    g_return_if_fail(st != NULL);
400
241
    fu_memwrite_uint32(st->buf->data + 20, value, G_LITTLE_ENDIAN);
401
241
}
402
/**
403
 * fu_struct_elf_file_header64le_set_entry: (skip):
404
 **/
405
void
406
fu_struct_elf_file_header64le_set_entry(FuStructElfFileHeader64le *st, guint64 value)
407
165
{
408
165
    g_return_if_fail(st != NULL);
409
165
    fu_memwrite_uint64(st->buf->data + 24, value, G_LITTLE_ENDIAN);
410
165
}
411
/**
412
 * fu_struct_elf_file_header64le_set_phoff: (skip):
413
 **/
414
void
415
fu_struct_elf_file_header64le_set_phoff(FuStructElfFileHeader64le *st, guint64 value)
416
241
{
417
241
    g_return_if_fail(st != NULL);
418
241
    fu_memwrite_uint64(st->buf->data + 32, value, G_LITTLE_ENDIAN);
419
241
}
420
/**
421
 * fu_struct_elf_file_header64le_set_shoff: (skip):
422
 **/
423
void
424
fu_struct_elf_file_header64le_set_shoff(FuStructElfFileHeader64le *st, guint64 value)
425
165
{
426
165
    g_return_if_fail(st != NULL);
427
165
    fu_memwrite_uint64(st->buf->data + 40, value, G_LITTLE_ENDIAN);
428
165
}
429
/**
430
 * fu_struct_elf_file_header64le_set_flags: (skip):
431
 **/
432
void
433
fu_struct_elf_file_header64le_set_flags(FuStructElfFileHeader64le *st, guint32 value)
434
0
{
435
0
    g_return_if_fail(st != NULL);
436
0
    fu_memwrite_uint32(st->buf->data + 48, value, G_LITTLE_ENDIAN);
437
0
}
438
/**
439
 * fu_struct_elf_file_header64le_set_ehsize: (skip):
440
 **/
441
void
442
fu_struct_elf_file_header64le_set_ehsize(FuStructElfFileHeader64le *st, guint16 value)
443
241
{
444
241
    g_return_if_fail(st != NULL);
445
241
    fu_memwrite_uint16(st->buf->data + 52, value, G_LITTLE_ENDIAN);
446
241
}
447
/**
448
 * fu_struct_elf_file_header64le_set_phentsize: (skip):
449
 **/
450
void
451
fu_struct_elf_file_header64le_set_phentsize(FuStructElfFileHeader64le *st, guint16 value)
452
165
{
453
165
    g_return_if_fail(st != NULL);
454
165
    fu_memwrite_uint16(st->buf->data + 54, value, G_LITTLE_ENDIAN);
455
165
}
456
/**
457
 * fu_struct_elf_file_header64le_set_phnum: (skip):
458
 **/
459
void
460
fu_struct_elf_file_header64le_set_phnum(FuStructElfFileHeader64le *st, guint16 value)
461
165
{
462
165
    g_return_if_fail(st != NULL);
463
165
    fu_memwrite_uint16(st->buf->data + 56, value, G_LITTLE_ENDIAN);
464
165
}
465
/**
466
 * fu_struct_elf_file_header64le_set_shentsize: (skip):
467
 **/
468
void
469
fu_struct_elf_file_header64le_set_shentsize(FuStructElfFileHeader64le *st, guint16 value)
470
165
{
471
165
    g_return_if_fail(st != NULL);
472
165
    fu_memwrite_uint16(st->buf->data + 58, value, G_LITTLE_ENDIAN);
473
165
}
474
/**
475
 * fu_struct_elf_file_header64le_set_shnum: (skip):
476
 **/
477
void
478
fu_struct_elf_file_header64le_set_shnum(FuStructElfFileHeader64le *st, guint16 value)
479
165
{
480
165
    g_return_if_fail(st != NULL);
481
165
    fu_memwrite_uint16(st->buf->data + 60, value, G_LITTLE_ENDIAN);
482
165
}
483
/**
484
 * fu_struct_elf_file_header64le_set_shstrndx: (skip):
485
 **/
486
void
487
fu_struct_elf_file_header64le_set_shstrndx(FuStructElfFileHeader64le *st, guint16 value)
488
165
{
489
165
    g_return_if_fail(st != NULL);
490
165
    fu_memwrite_uint16(st->buf->data + 62, value, G_LITTLE_ENDIAN);
491
165
}
492
/**
493
 * fu_struct_elf_file_header64le_new: (skip):
494
 **/
495
FuStructElfFileHeader64le *
496
fu_struct_elf_file_header64le_new(void)
497
241
{
498
241
    FuStructElfFileHeader64le *st = fu_struct_elf_file_header64le_new_internal();
499
241
    st->buf = g_byte_array_sized_new(64);
500
241
    fu_byte_array_set_size(st->buf, 64, 0x0);
501
241
    fu_struct_elf_file_header64le_set_ei_magic(st, "\x7F\x45\x4C\x46", NULL);
502
241
    fu_struct_elf_file_header64le_set_ei_class(st, 0x2);
503
241
    fu_struct_elf_file_header64le_set_ei_data(st, 0x1);
504
241
    fu_struct_elf_file_header64le_set_ei_version(st, 0x1);
505
241
    fu_struct_elf_file_header64le_set_ei_osabi(st, 0x3);
506
241
    fu_struct_elf_file_header64le_set_version(st, 0x1);
507
241
    fu_struct_elf_file_header64le_set_phoff(st, 64);
508
241
    fu_struct_elf_file_header64le_set_ehsize(st, 64);
509
241
    return st;
510
241
}
511
/**
512
 * fu_struct_elf_file_header64le_to_string: (skip):
513
 **/
514
static gchar *
515
fu_struct_elf_file_header64le_to_string(const FuStructElfFileHeader64le *st)
516
0
{
517
0
    g_autoptr(GString) str = g_string_new("FuStructElfFileHeader64le:\n");
518
0
    g_return_val_if_fail(st != NULL, NULL);
519
0
    {
520
0
        g_autofree gchar *tmp = fu_struct_elf_file_header64le_get_ei_magic(st);
521
0
        if (tmp != NULL)
522
0
            g_string_append_printf(str, "  ei_magic: %s\n", tmp);
523
0
    }
524
0
    g_string_append_printf(str, "  ei_class: 0x%x\n",
525
0
                           (guint) fu_struct_elf_file_header64le_get_ei_class(st));
526
0
    g_string_append_printf(str, "  ei_data: 0x%x\n",
527
0
                           (guint) fu_struct_elf_file_header64le_get_ei_data(st));
528
0
    g_string_append_printf(str, "  ei_version: 0x%x\n",
529
0
                           (guint) fu_struct_elf_file_header64le_get_ei_version(st));
530
0
    g_string_append_printf(str, "  ei_osabi: 0x%x\n",
531
0
                           (guint) fu_struct_elf_file_header64le_get_ei_osabi(st));
532
0
    g_string_append_printf(str, "  ei_abiversion: 0x%x\n",
533
0
                           (guint) fu_struct_elf_file_header64le_get_ei_abiversion(st));
534
0
    {
535
0
        const gchar *tmp = fu_elf_file_header_type_to_string(fu_struct_elf_file_header64le_get_type(st));
536
0
        if (tmp != NULL) {
537
0
            g_string_append_printf(str, "  type: 0x%x [%s]\n", (guint) fu_struct_elf_file_header64le_get_type(st), tmp);
538
0
        } else {
539
0
            g_string_append_printf(str, "  type: 0x%x\n", (guint) fu_struct_elf_file_header64le_get_type(st));
540
0
        }
541
0
    }
542
0
    g_string_append_printf(str, "  machine: 0x%x\n",
543
0
                           (guint) fu_struct_elf_file_header64le_get_machine(st));
544
0
    g_string_append_printf(str, "  version: 0x%x\n",
545
0
                           (guint) fu_struct_elf_file_header64le_get_version(st));
546
0
    g_string_append_printf(str, "  entry: 0x%x\n",
547
0
                           (guint) fu_struct_elf_file_header64le_get_entry(st));
548
0
    g_string_append_printf(str, "  phoff: 0x%x\n",
549
0
                           (guint) fu_struct_elf_file_header64le_get_phoff(st));
550
0
    g_string_append_printf(str, "  shoff: 0x%x\n",
551
0
                           (guint) fu_struct_elf_file_header64le_get_shoff(st));
552
0
    g_string_append_printf(str, "  flags: 0x%x\n",
553
0
                           (guint) fu_struct_elf_file_header64le_get_flags(st));
554
0
    g_string_append_printf(str, "  ehsize: 0x%x\n",
555
0
                           (guint) fu_struct_elf_file_header64le_get_ehsize(st));
556
0
    g_string_append_printf(str, "  phentsize: 0x%x\n",
557
0
                           (guint) fu_struct_elf_file_header64le_get_phentsize(st));
558
0
    g_string_append_printf(str, "  phnum: 0x%x\n",
559
0
                           (guint) fu_struct_elf_file_header64le_get_phnum(st));
560
0
    g_string_append_printf(str, "  shentsize: 0x%x\n",
561
0
                           (guint) fu_struct_elf_file_header64le_get_shentsize(st));
562
0
    g_string_append_printf(str, "  shnum: 0x%x\n",
563
0
                           (guint) fu_struct_elf_file_header64le_get_shnum(st));
564
0
    g_string_append_printf(str, "  shstrndx: 0x%x\n",
565
0
                           (guint) fu_struct_elf_file_header64le_get_shstrndx(st));
566
0
    if (str->len > 0)
567
0
        g_string_set_size(str, str->len - 1);
568
0
    return g_string_free(g_steal_pointer(&str), FALSE);
569
0
}
570
static gboolean
571
fu_struct_elf_file_header64le_validate_internal(FuStructElfFileHeader64le *st, GError **error)
572
1.97k
{
573
1.97k
    g_return_val_if_fail(st != NULL, FALSE);
574
1.97k
    if (strncmp((const gchar *) (st->buf->data + 0), "\x7F\x45\x4C\x46", 4) != 0) {
575
44
        g_autofree gchar *str = fu_struct_elf_file_header64le_get_ei_magic(st);
576
44
        g_set_error(error,
577
44
                    FWUPD_ERROR,
578
44
                    FWUPD_ERROR_INVALID_DATA,
579
44
                    "constant FuStructElfFileHeader64le.ei_magic was not valid, "
580
44
                    "expected '\x7F\x45\x4C\x46' and got '%s'",
581
44
                    str);
582
44
        return FALSE;
583
44
    }
584
1.92k
    if (fu_struct_elf_file_header64le_get_ei_class(st) != 0x2) {
585
8
        g_set_error_literal(error,
586
8
                            FWUPD_ERROR,
587
8
                            FWUPD_ERROR_INVALID_DATA,
588
8
                            "constant FuStructElfFileHeader64le.ei_class was not valid");
589
8
        return FALSE;
590
8
    }
591
1.91k
    if (fu_struct_elf_file_header64le_get_ei_data(st) != 0x1) {
592
4
        g_set_error_literal(error,
593
4
                            FWUPD_ERROR,
594
4
                            FWUPD_ERROR_INVALID_DATA,
595
4
                            "constant FuStructElfFileHeader64le.ei_data was not valid");
596
4
        return FALSE;
597
4
    }
598
1.91k
    if (fu_struct_elf_file_header64le_get_ei_version(st) != 0x1) {
599
4
        g_set_error_literal(error,
600
4
                            FWUPD_ERROR,
601
4
                            FWUPD_ERROR_INVALID_DATA,
602
4
                            "constant FuStructElfFileHeader64le.ei_version was not valid");
603
4
        return FALSE;
604
4
    }
605
1.91k
    if (fu_struct_elf_file_header64le_get_version(st) != 0x1) {
606
41
        g_set_error(error,
607
41
                    FWUPD_ERROR,
608
41
                    FWUPD_ERROR_INVALID_DATA,
609
41
                    "constant FuStructElfFileHeader64le.version was not valid, "
610
41
                    "expected 0x%x and got 0x%x",
611
41
                    (guint) 0x1,
612
41
                    (guint) fu_struct_elf_file_header64le_get_version(st));
613
41
        return FALSE;
614
41
    }
615
1.87k
    return TRUE;
616
1.91k
}
617
/**
618
 * fu_struct_elf_file_header64le_validate_stream: (skip):
619
 **/
620
gboolean
621
fu_struct_elf_file_header64le_validate_stream(GInputStream *stream, gsize offset, GError **error)
622
1.05k
{
623
1.05k
    g_autoptr(FuStructElfFileHeader64le) st = fu_struct_elf_file_header64le_new_internal();
624
1.05k
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
625
1.05k
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
626
1.05k
    st->buf = fu_input_stream_read_byte_array(stream, offset, 64, NULL, error);
627
1.05k
    if (st->buf == NULL) {
628
0
        g_prefix_error(error, "FuStructElfFileHeader64le failed read of 0x%x: ", (guint) 64);
629
0
        return FALSE;
630
0
    }
631
1.05k
    if (st->buf->len != 64) {
632
21
        g_set_error(error,
633
21
                    FWUPD_ERROR,
634
21
                    FWUPD_ERROR_INVALID_DATA,
635
21
                    "FuStructElfFileHeader64le requested 0x%x and got 0x%x",
636
21
                    (guint) 64,
637
21
                    (guint) st->buf->len);
638
21
        return FALSE;
639
21
    }
640
1.03k
    return fu_struct_elf_file_header64le_validate_internal(st, error);
641
1.05k
}
642
static gboolean
643
fu_struct_elf_file_header64le_parse_internal(FuStructElfFileHeader64le *st, GError **error)
644
935
{
645
935
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
646
0
        g_autofree gchar *str = fu_struct_elf_file_header64le_to_string(st);
647
0
        g_debug("%s", str);
648
0
    }
649
935
    if (!fu_struct_elf_file_header64le_validate_internal(st, error))
650
0
        return FALSE;
651
935
    return TRUE;
652
935
}
653
/**
654
 * fu_struct_elf_file_header64le_parse_stream: (skip):
655
 **/
656
FuStructElfFileHeader64le *
657
fu_struct_elf_file_header64le_parse_stream(GInputStream *stream, gsize offset, GError **error)
658
935
{
659
935
    g_autoptr(FuStructElfFileHeader64le) st = fu_struct_elf_file_header64le_new_internal();
660
935
    st->buf = fu_input_stream_read_byte_array(stream, offset, 64, NULL, error);
661
935
    if (st->buf == NULL) {
662
0
        g_prefix_error(error, "FuStructElfFileHeader64le failed read of 0x%x: ", (guint) 64);
663
0
        return NULL;
664
0
    }
665
935
    if (st->buf->len != 64) {
666
0
        g_set_error(error,
667
0
                    FWUPD_ERROR,
668
0
                    FWUPD_ERROR_INVALID_DATA,
669
0
                    "FuStructElfFileHeader64le requested 0x%x and got 0x%x",
670
0
                    (guint) 64,
671
0
                    (guint) st->buf->len);
672
0
        return NULL;
673
0
    }
674
935
    if (!fu_struct_elf_file_header64le_parse_internal(st, error))
675
0
        return NULL;
676
935
    return g_steal_pointer(&st);
677
935
}
678
/**
679
 * fu_struct_elf_program_header64le_ref: (skip):
680
 **/
681
FuStructElfProgramHeader64le *
682
fu_struct_elf_program_header64le_ref(FuStructElfProgramHeader64le *st)
683
0
{
684
0
    g_return_val_if_fail(st != NULL, NULL);
685
0
    st->refcount++;
686
0
    return st;
687
0
}
688
/**
689
 * fu_struct_elf_program_header64le_unref: (skip):
690
 **/
691
void
692
fu_struct_elf_program_header64le_unref(FuStructElfProgramHeader64le *st)
693
3.32M
{
694
3.32M
    g_return_if_fail(st != NULL);
695
3.32M
    if (st->refcount == 0) {
696
0
        g_critical("FuStructElfProgramHeader64le refcount already zero");
697
0
        return;
698
0
    }
699
3.32M
    if (--st->refcount > 0)
700
0
        return;
701
3.32M
    if (st->buf != NULL)
702
3.32M
        g_byte_array_unref(st->buf);
703
3.32M
    g_free(st);
704
3.32M
}
705
/**
706
 * fu_struct_elf_program_header64le_new_internal: (skip):
707
 **/
708
static FuStructElfProgramHeader64le *
709
fu_struct_elf_program_header64le_new_internal(void)
710
3.32M
{
711
3.32M
    FuStructElfProgramHeader64le *st = g_new0(FuStructElfProgramHeader64le, 1);
712
3.32M
    st->refcount = 1;
713
3.32M
    return st;
714
3.32M
}
715
716
/* getters */
717
/**
718
 * fu_struct_elf_program_header64le_get_flags: (skip):
719
 **/
720
guint32
721
fu_struct_elf_program_header64le_get_flags(const FuStructElfProgramHeader64le *st)
722
0
{
723
0
    g_return_val_if_fail(st != NULL, 0x0);
724
0
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
725
0
}
726
/**
727
 * fu_struct_elf_program_header64le_get_offset: (skip):
728
 **/
729
guint64
730
fu_struct_elf_program_header64le_get_offset(const FuStructElfProgramHeader64le *st)
731
0
{
732
0
    g_return_val_if_fail(st != NULL, 0x0);
733
0
    return fu_memread_uint64(st->buf->data + 4, G_LITTLE_ENDIAN);
734
0
}
735
/**
736
 * fu_struct_elf_program_header64le_get_vaddr: (skip):
737
 **/
738
guint64
739
fu_struct_elf_program_header64le_get_vaddr(const FuStructElfProgramHeader64le *st)
740
0
{
741
0
    g_return_val_if_fail(st != NULL, 0x0);
742
0
    return fu_memread_uint64(st->buf->data + 12, G_LITTLE_ENDIAN);
743
0
}
744
/**
745
 * fu_struct_elf_program_header64le_get_paddr: (skip):
746
 **/
747
guint64
748
fu_struct_elf_program_header64le_get_paddr(const FuStructElfProgramHeader64le *st)
749
0
{
750
0
    g_return_val_if_fail(st != NULL, 0x0);
751
0
    return fu_memread_uint64(st->buf->data + 20, G_LITTLE_ENDIAN);
752
0
}
753
/**
754
 * fu_struct_elf_program_header64le_get_filesz: (skip):
755
 **/
756
guint64
757
fu_struct_elf_program_header64le_get_filesz(const FuStructElfProgramHeader64le *st)
758
0
{
759
0
    g_return_val_if_fail(st != NULL, 0x0);
760
0
    return fu_memread_uint64(st->buf->data + 28, G_LITTLE_ENDIAN);
761
0
}
762
/**
763
 * fu_struct_elf_program_header64le_get_memsz: (skip):
764
 **/
765
guint64
766
fu_struct_elf_program_header64le_get_memsz(const FuStructElfProgramHeader64le *st)
767
0
{
768
0
    g_return_val_if_fail(st != NULL, 0x0);
769
0
    return fu_memread_uint64(st->buf->data + 36, G_LITTLE_ENDIAN);
770
0
}
771
/**
772
 * fu_struct_elf_program_header64le_get_flags2: (skip):
773
 **/
774
guint32
775
fu_struct_elf_program_header64le_get_flags2(const FuStructElfProgramHeader64le *st)
776
0
{
777
0
    g_return_val_if_fail(st != NULL, 0x0);
778
0
    return fu_memread_uint32(st->buf->data + 44, G_LITTLE_ENDIAN);
779
0
}
780
/**
781
 * fu_struct_elf_program_header64le_get_align: (skip):
782
 **/
783
guint64
784
fu_struct_elf_program_header64le_get_align(const FuStructElfProgramHeader64le *st)
785
0
{
786
0
    g_return_val_if_fail(st != NULL, 0x0);
787
0
    return fu_memread_uint64(st->buf->data + 48, G_LITTLE_ENDIAN);
788
0
}
789
790
/* setters */
791
/**
792
 * fu_struct_elf_program_header64le_set_flags: (skip):
793
 **/
794
void
795
fu_struct_elf_program_header64le_set_flags(FuStructElfProgramHeader64le *st, guint32 value)
796
0
{
797
0
    g_return_if_fail(st != NULL);
798
0
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
799
0
}
800
/**
801
 * fu_struct_elf_program_header64le_set_offset: (skip):
802
 **/
803
void
804
fu_struct_elf_program_header64le_set_offset(FuStructElfProgramHeader64le *st, guint64 value)
805
0
{
806
0
    g_return_if_fail(st != NULL);
807
0
    fu_memwrite_uint64(st->buf->data + 4, value, G_LITTLE_ENDIAN);
808
0
}
809
/**
810
 * fu_struct_elf_program_header64le_set_vaddr: (skip):
811
 **/
812
void
813
fu_struct_elf_program_header64le_set_vaddr(FuStructElfProgramHeader64le *st, guint64 value)
814
165
{
815
165
    g_return_if_fail(st != NULL);
816
165
    fu_memwrite_uint64(st->buf->data + 12, value, G_LITTLE_ENDIAN);
817
165
}
818
/**
819
 * fu_struct_elf_program_header64le_set_paddr: (skip):
820
 **/
821
void
822
fu_struct_elf_program_header64le_set_paddr(FuStructElfProgramHeader64le *st, guint64 value)
823
165
{
824
165
    g_return_if_fail(st != NULL);
825
165
    fu_memwrite_uint64(st->buf->data + 20, value, G_LITTLE_ENDIAN);
826
165
}
827
/**
828
 * fu_struct_elf_program_header64le_set_filesz: (skip):
829
 **/
830
void
831
fu_struct_elf_program_header64le_set_filesz(FuStructElfProgramHeader64le *st, guint64 value)
832
165
{
833
165
    g_return_if_fail(st != NULL);
834
165
    fu_memwrite_uint64(st->buf->data + 28, value, G_LITTLE_ENDIAN);
835
165
}
836
/**
837
 * fu_struct_elf_program_header64le_set_memsz: (skip):
838
 **/
839
void
840
fu_struct_elf_program_header64le_set_memsz(FuStructElfProgramHeader64le *st, guint64 value)
841
165
{
842
165
    g_return_if_fail(st != NULL);
843
165
    fu_memwrite_uint64(st->buf->data + 36, value, G_LITTLE_ENDIAN);
844
165
}
845
/**
846
 * fu_struct_elf_program_header64le_set_flags2: (skip):
847
 **/
848
void
849
fu_struct_elf_program_header64le_set_flags2(FuStructElfProgramHeader64le *st, guint32 value)
850
0
{
851
0
    g_return_if_fail(st != NULL);
852
0
    fu_memwrite_uint32(st->buf->data + 44, value, G_LITTLE_ENDIAN);
853
0
}
854
/**
855
 * fu_struct_elf_program_header64le_set_align: (skip):
856
 **/
857
void
858
fu_struct_elf_program_header64le_set_align(FuStructElfProgramHeader64le *st, guint64 value)
859
0
{
860
0
    g_return_if_fail(st != NULL);
861
0
    fu_memwrite_uint64(st->buf->data + 48, value, G_LITTLE_ENDIAN);
862
0
}
863
/**
864
 * fu_struct_elf_program_header64le_new: (skip):
865
 **/
866
FuStructElfProgramHeader64le *
867
fu_struct_elf_program_header64le_new(void)
868
241
{
869
241
    FuStructElfProgramHeader64le *st = fu_struct_elf_program_header64le_new_internal();
870
241
    st->buf = g_byte_array_sized_new(56);
871
241
    fu_byte_array_set_size(st->buf, 56, 0x0);
872
241
    return st;
873
241
}
874
/**
875
 * fu_struct_elf_program_header64le_to_string: (skip):
876
 **/
877
static gchar *
878
fu_struct_elf_program_header64le_to_string(const FuStructElfProgramHeader64le *st)
879
0
{
880
0
    g_autoptr(GString) str = g_string_new("FuStructElfProgramHeader64le:\n");
881
0
    g_return_val_if_fail(st != NULL, NULL);
882
0
    g_string_append_printf(str, "  flags: 0x%x\n",
883
0
                           (guint) fu_struct_elf_program_header64le_get_flags(st));
884
0
    g_string_append_printf(str, "  offset: 0x%x\n",
885
0
                           (guint) fu_struct_elf_program_header64le_get_offset(st));
886
0
    g_string_append_printf(str, "  vaddr: 0x%x\n",
887
0
                           (guint) fu_struct_elf_program_header64le_get_vaddr(st));
888
0
    g_string_append_printf(str, "  paddr: 0x%x\n",
889
0
                           (guint) fu_struct_elf_program_header64le_get_paddr(st));
890
0
    g_string_append_printf(str, "  filesz: 0x%x\n",
891
0
                           (guint) fu_struct_elf_program_header64le_get_filesz(st));
892
0
    g_string_append_printf(str, "  memsz: 0x%x\n",
893
0
                           (guint) fu_struct_elf_program_header64le_get_memsz(st));
894
0
    g_string_append_printf(str, "  flags2: 0x%x\n",
895
0
                           (guint) fu_struct_elf_program_header64le_get_flags2(st));
896
0
    g_string_append_printf(str, "  align: 0x%x\n",
897
0
                           (guint) fu_struct_elf_program_header64le_get_align(st));
898
0
    if (str->len > 0)
899
0
        g_string_set_size(str, str->len - 1);
900
0
    return g_string_free(g_steal_pointer(&str), FALSE);
901
0
}
902
static gboolean
903
fu_struct_elf_program_header64le_validate_internal(FuStructElfProgramHeader64le *st, GError **error)
904
3.32M
{
905
3.32M
    g_return_val_if_fail(st != NULL, FALSE);
906
3.32M
    return TRUE;
907
3.32M
}
908
static gboolean
909
fu_struct_elf_program_header64le_parse_internal(FuStructElfProgramHeader64le *st, GError **error)
910
3.32M
{
911
3.32M
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
912
0
        g_autofree gchar *str = fu_struct_elf_program_header64le_to_string(st);
913
0
        g_debug("%s", str);
914
0
    }
915
3.32M
    if (!fu_struct_elf_program_header64le_validate_internal(st, error))
916
0
        return FALSE;
917
3.32M
    return TRUE;
918
3.32M
}
919
/**
920
 * fu_struct_elf_program_header64le_parse_stream: (skip):
921
 **/
922
FuStructElfProgramHeader64le *
923
fu_struct_elf_program_header64le_parse_stream(GInputStream *stream, gsize offset, GError **error)
924
3.32M
{
925
3.32M
    g_autoptr(FuStructElfProgramHeader64le) st = fu_struct_elf_program_header64le_new_internal();
926
3.32M
    st->buf = fu_input_stream_read_byte_array(stream, offset, 56, NULL, error);
927
3.32M
    if (st->buf == NULL) {
928
97
        g_prefix_error(error, "FuStructElfProgramHeader64le failed read of 0x%x: ", (guint) 56);
929
97
        return NULL;
930
97
    }
931
3.32M
    if (st->buf->len != 56) {
932
9
        g_set_error(error,
933
9
                    FWUPD_ERROR,
934
9
                    FWUPD_ERROR_INVALID_DATA,
935
9
                    "FuStructElfProgramHeader64le requested 0x%x and got 0x%x",
936
9
                    (guint) 56,
937
9
                    (guint) st->buf->len);
938
9
        return NULL;
939
9
    }
940
3.32M
    if (!fu_struct_elf_program_header64le_parse_internal(st, error))
941
0
        return NULL;
942
3.32M
    return g_steal_pointer(&st);
943
3.32M
}
944
/**
945
 * fu_struct_elf_section_header64le_ref: (skip):
946
 **/
947
FuStructElfSectionHeader64le *
948
fu_struct_elf_section_header64le_ref(FuStructElfSectionHeader64le *st)
949
0
{
950
0
    g_return_val_if_fail(st != NULL, NULL);
951
0
    st->refcount++;
952
0
    return st;
953
0
}
954
/**
955
 * fu_struct_elf_section_header64le_unref: (skip):
956
 **/
957
void
958
fu_struct_elf_section_header64le_unref(FuStructElfSectionHeader64le *st)
959
12.3M
{
960
12.3M
    g_return_if_fail(st != NULL);
961
12.3M
    if (st->refcount == 0) {
962
0
        g_critical("FuStructElfSectionHeader64le refcount already zero");
963
0
        return;
964
0
    }
965
12.3M
    if (--st->refcount > 0)
966
0
        return;
967
12.3M
    if (st->buf != NULL)
968
12.3M
        g_byte_array_unref(st->buf);
969
12.3M
    g_free(st);
970
12.3M
}
971
/**
972
 * fu_struct_elf_section_header64le_new_internal: (skip):
973
 **/
974
static FuStructElfSectionHeader64le *
975
fu_struct_elf_section_header64le_new_internal(void)
976
12.3M
{
977
12.3M
    FuStructElfSectionHeader64le *st = g_new0(FuStructElfSectionHeader64le, 1);
978
12.3M
    st->refcount = 1;
979
12.3M
    return st;
980
12.3M
}
981
982
/* getters */
983
/**
984
 * fu_struct_elf_section_header64le_get_name: (skip):
985
 **/
986
guint32
987
fu_struct_elf_section_header64le_get_name(const FuStructElfSectionHeader64le *st)
988
5.88M
{
989
5.88M
    g_return_val_if_fail(st != NULL, 0x0);
990
5.88M
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
991
5.88M
}
992
/**
993
 * fu_struct_elf_section_header64le_get_type: (skip):
994
 **/
995
FuElfSectionHeaderType
996
fu_struct_elf_section_header64le_get_type(const FuStructElfSectionHeader64le *st)
997
23.8M
{
998
23.8M
    g_return_val_if_fail(st != NULL, 0x0);
999
23.8M
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
1000
23.8M
}
1001
/**
1002
 * fu_struct_elf_section_header64le_get_flags: (skip):
1003
 **/
1004
guint64
1005
fu_struct_elf_section_header64le_get_flags(const FuStructElfSectionHeader64le *st)
1006
0
{
1007
0
    g_return_val_if_fail(st != NULL, 0x0);
1008
0
    return fu_memread_uint64(st->buf->data + 8, G_LITTLE_ENDIAN);
1009
0
}
1010
/**
1011
 * fu_struct_elf_section_header64le_get_addr: (skip):
1012
 **/
1013
guint64
1014
fu_struct_elf_section_header64le_get_addr(const FuStructElfSectionHeader64le *st)
1015
0
{
1016
0
    g_return_val_if_fail(st != NULL, 0x0);
1017
0
    return fu_memread_uint64(st->buf->data + 16, G_LITTLE_ENDIAN);
1018
0
}
1019
/**
1020
 * fu_struct_elf_section_header64le_get_offset: (skip):
1021
 **/
1022
guint64
1023
fu_struct_elf_section_header64le_get_offset(const FuStructElfSectionHeader64le *st)
1024
6.07M
{
1025
6.07M
    g_return_val_if_fail(st != NULL, 0x0);
1026
6.07M
    return fu_memread_uint64(st->buf->data + 24, G_LITTLE_ENDIAN);
1027
6.07M
}
1028
/**
1029
 * fu_struct_elf_section_header64le_get_size: (skip):
1030
 **/
1031
guint64
1032
fu_struct_elf_section_header64le_get_size(const FuStructElfSectionHeader64le *st)
1033
6.07M
{
1034
6.07M
    g_return_val_if_fail(st != NULL, 0x0);
1035
6.07M
    return fu_memread_uint64(st->buf->data + 32, G_LITTLE_ENDIAN);
1036
6.07M
}
1037
/**
1038
 * fu_struct_elf_section_header64le_get_link: (skip):
1039
 **/
1040
guint32
1041
fu_struct_elf_section_header64le_get_link(const FuStructElfSectionHeader64le *st)
1042
0
{
1043
0
    g_return_val_if_fail(st != NULL, 0x0);
1044
0
    return fu_memread_uint32(st->buf->data + 40, G_LITTLE_ENDIAN);
1045
0
}
1046
/**
1047
 * fu_struct_elf_section_header64le_get_info: (skip):
1048
 **/
1049
guint32
1050
fu_struct_elf_section_header64le_get_info(const FuStructElfSectionHeader64le *st)
1051
0
{
1052
0
    g_return_val_if_fail(st != NULL, 0x0);
1053
0
    return fu_memread_uint32(st->buf->data + 44, G_LITTLE_ENDIAN);
1054
0
}
1055
/**
1056
 * fu_struct_elf_section_header64le_get_addralign: (skip):
1057
 **/
1058
guint64
1059
fu_struct_elf_section_header64le_get_addralign(const FuStructElfSectionHeader64le *st)
1060
0
{
1061
0
    g_return_val_if_fail(st != NULL, 0x0);
1062
0
    return fu_memread_uint64(st->buf->data + 48, G_LITTLE_ENDIAN);
1063
0
}
1064
/**
1065
 * fu_struct_elf_section_header64le_get_entsize: (skip):
1066
 **/
1067
guint64
1068
fu_struct_elf_section_header64le_get_entsize(const FuStructElfSectionHeader64le *st)
1069
0
{
1070
0
    g_return_val_if_fail(st != NULL, 0x0);
1071
0
    return fu_memread_uint64(st->buf->data + 56, G_LITTLE_ENDIAN);
1072
0
}
1073
1074
/* setters */
1075
/**
1076
 * fu_struct_elf_section_header64le_set_name: (skip):
1077
 **/
1078
void
1079
fu_struct_elf_section_header64le_set_name(FuStructElfSectionHeader64le *st, guint32 value)
1080
165
{
1081
165
    g_return_if_fail(st != NULL);
1082
165
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
1083
165
}
1084
/**
1085
 * fu_struct_elf_section_header64le_set_type: (skip):
1086
 **/
1087
void
1088
fu_struct_elf_section_header64le_set_type(FuStructElfSectionHeader64le *st, FuElfSectionHeaderType value)
1089
165
{
1090
165
    g_return_if_fail(st != NULL);
1091
165
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
1092
165
}
1093
/**
1094
 * fu_struct_elf_section_header64le_set_flags: (skip):
1095
 **/
1096
void
1097
fu_struct_elf_section_header64le_set_flags(FuStructElfSectionHeader64le *st, guint64 value)
1098
0
{
1099
0
    g_return_if_fail(st != NULL);
1100
0
    fu_memwrite_uint64(st->buf->data + 8, value, G_LITTLE_ENDIAN);
1101
0
}
1102
/**
1103
 * fu_struct_elf_section_header64le_set_addr: (skip):
1104
 **/
1105
void
1106
fu_struct_elf_section_header64le_set_addr(FuStructElfSectionHeader64le *st, guint64 value)
1107
0
{
1108
0
    g_return_if_fail(st != NULL);
1109
0
    fu_memwrite_uint64(st->buf->data + 16, value, G_LITTLE_ENDIAN);
1110
0
}
1111
/**
1112
 * fu_struct_elf_section_header64le_set_offset: (skip):
1113
 **/
1114
void
1115
fu_struct_elf_section_header64le_set_offset(FuStructElfSectionHeader64le *st, guint64 value)
1116
165
{
1117
165
    g_return_if_fail(st != NULL);
1118
165
    fu_memwrite_uint64(st->buf->data + 24, value, G_LITTLE_ENDIAN);
1119
165
}
1120
/**
1121
 * fu_struct_elf_section_header64le_set_size: (skip):
1122
 **/
1123
void
1124
fu_struct_elf_section_header64le_set_size(FuStructElfSectionHeader64le *st, guint64 value)
1125
165
{
1126
165
    g_return_if_fail(st != NULL);
1127
165
    fu_memwrite_uint64(st->buf->data + 32, value, G_LITTLE_ENDIAN);
1128
165
}
1129
/**
1130
 * fu_struct_elf_section_header64le_set_link: (skip):
1131
 **/
1132
void
1133
fu_struct_elf_section_header64le_set_link(FuStructElfSectionHeader64le *st, guint32 value)
1134
0
{
1135
0
    g_return_if_fail(st != NULL);
1136
0
    fu_memwrite_uint32(st->buf->data + 40, value, G_LITTLE_ENDIAN);
1137
0
}
1138
/**
1139
 * fu_struct_elf_section_header64le_set_info: (skip):
1140
 **/
1141
void
1142
fu_struct_elf_section_header64le_set_info(FuStructElfSectionHeader64le *st, guint32 value)
1143
0
{
1144
0
    g_return_if_fail(st != NULL);
1145
0
    fu_memwrite_uint32(st->buf->data + 44, value, G_LITTLE_ENDIAN);
1146
0
}
1147
/**
1148
 * fu_struct_elf_section_header64le_set_addralign: (skip):
1149
 **/
1150
void
1151
fu_struct_elf_section_header64le_set_addralign(FuStructElfSectionHeader64le *st, guint64 value)
1152
0
{
1153
0
    g_return_if_fail(st != NULL);
1154
0
    fu_memwrite_uint64(st->buf->data + 48, value, G_LITTLE_ENDIAN);
1155
0
}
1156
/**
1157
 * fu_struct_elf_section_header64le_set_entsize: (skip):
1158
 **/
1159
void
1160
fu_struct_elf_section_header64le_set_entsize(FuStructElfSectionHeader64le *st, guint64 value)
1161
0
{
1162
0
    g_return_if_fail(st != NULL);
1163
0
    fu_memwrite_uint64(st->buf->data + 56, value, G_LITTLE_ENDIAN);
1164
0
}
1165
/**
1166
 * fu_struct_elf_section_header64le_new: (skip):
1167
 **/
1168
FuStructElfSectionHeader64le *
1169
fu_struct_elf_section_header64le_new(void)
1170
165
{
1171
165
    FuStructElfSectionHeader64le *st = fu_struct_elf_section_header64le_new_internal();
1172
165
    st->buf = g_byte_array_sized_new(64);
1173
165
    fu_byte_array_set_size(st->buf, 64, 0x0);
1174
165
    return st;
1175
165
}
1176
/**
1177
 * fu_struct_elf_section_header64le_to_string: (skip):
1178
 **/
1179
static gchar *
1180
fu_struct_elf_section_header64le_to_string(const FuStructElfSectionHeader64le *st)
1181
0
{
1182
0
    g_autoptr(GString) str = g_string_new("FuStructElfSectionHeader64le:\n");
1183
0
    g_return_val_if_fail(st != NULL, NULL);
1184
0
    g_string_append_printf(str, "  name: 0x%x\n",
1185
0
                           (guint) fu_struct_elf_section_header64le_get_name(st));
1186
0
    {
1187
0
        const gchar *tmp = fu_elf_section_header_type_to_string(fu_struct_elf_section_header64le_get_type(st));
1188
0
        if (tmp != NULL) {
1189
0
            g_string_append_printf(str, "  type: 0x%x [%s]\n", (guint) fu_struct_elf_section_header64le_get_type(st), tmp);
1190
0
        } else {
1191
0
            g_string_append_printf(str, "  type: 0x%x\n", (guint) fu_struct_elf_section_header64le_get_type(st));
1192
0
        }
1193
0
    }
1194
0
    g_string_append_printf(str, "  flags: 0x%x\n",
1195
0
                           (guint) fu_struct_elf_section_header64le_get_flags(st));
1196
0
    g_string_append_printf(str, "  addr: 0x%x\n",
1197
0
                           (guint) fu_struct_elf_section_header64le_get_addr(st));
1198
0
    g_string_append_printf(str, "  offset: 0x%x\n",
1199
0
                           (guint) fu_struct_elf_section_header64le_get_offset(st));
1200
0
    g_string_append_printf(str, "  size: 0x%x\n",
1201
0
                           (guint) fu_struct_elf_section_header64le_get_size(st));
1202
0
    g_string_append_printf(str, "  link: 0x%x\n",
1203
0
                           (guint) fu_struct_elf_section_header64le_get_link(st));
1204
0
    g_string_append_printf(str, "  info: 0x%x\n",
1205
0
                           (guint) fu_struct_elf_section_header64le_get_info(st));
1206
0
    g_string_append_printf(str, "  addralign: 0x%x\n",
1207
0
                           (guint) fu_struct_elf_section_header64le_get_addralign(st));
1208
0
    g_string_append_printf(str, "  entsize: 0x%x\n",
1209
0
                           (guint) fu_struct_elf_section_header64le_get_entsize(st));
1210
0
    if (str->len > 0)
1211
0
        g_string_set_size(str, str->len - 1);
1212
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1213
0
}
1214
static gboolean
1215
fu_struct_elf_section_header64le_validate_internal(FuStructElfSectionHeader64le *st, GError **error)
1216
12.3M
{
1217
12.3M
    g_return_val_if_fail(st != NULL, FALSE);
1218
12.3M
    return TRUE;
1219
12.3M
}
1220
static gboolean
1221
fu_struct_elf_section_header64le_parse_internal(FuStructElfSectionHeader64le *st, GError **error)
1222
12.3M
{
1223
12.3M
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1224
0
        g_autofree gchar *str = fu_struct_elf_section_header64le_to_string(st);
1225
0
        g_debug("%s", str);
1226
0
    }
1227
12.3M
    if (!fu_struct_elf_section_header64le_validate_internal(st, error))
1228
0
        return FALSE;
1229
12.3M
    return TRUE;
1230
12.3M
}
1231
/**
1232
 * fu_struct_elf_section_header64le_parse_stream: (skip):
1233
 **/
1234
FuStructElfSectionHeader64le *
1235
fu_struct_elf_section_header64le_parse_stream(GInputStream *stream, gsize offset, GError **error)
1236
12.3M
{
1237
12.3M
    g_autoptr(FuStructElfSectionHeader64le) st = fu_struct_elf_section_header64le_new_internal();
1238
12.3M
    st->buf = fu_input_stream_read_byte_array(stream, offset, 64, NULL, error);
1239
12.3M
    if (st->buf == NULL) {
1240
61
        g_prefix_error(error, "FuStructElfSectionHeader64le failed read of 0x%x: ", (guint) 64);
1241
61
        return NULL;
1242
61
    }
1243
12.3M
    if (st->buf->len != 64) {
1244
12
        g_set_error(error,
1245
12
                    FWUPD_ERROR,
1246
12
                    FWUPD_ERROR_INVALID_DATA,
1247
12
                    "FuStructElfSectionHeader64le requested 0x%x and got 0x%x",
1248
12
                    (guint) 64,
1249
12
                    (guint) st->buf->len);
1250
12
        return NULL;
1251
12
    }
1252
12.3M
    if (!fu_struct_elf_section_header64le_parse_internal(st, error))
1253
0
        return NULL;
1254
12.3M
    return g_steal_pointer(&st);
1255
12.3M
}