/* auto-generated, do not modify */
#pragma once
#include <fwupd-common.h>
typedef enum {
    FU_ELF_FILE_HEADER_TYPE_NONE = 0x00,
    FU_ELF_FILE_HEADER_TYPE_REL = 0x01,
    FU_ELF_FILE_HEADER_TYPE_EXEC = 0x02,
    FU_ELF_FILE_HEADER_TYPE_DYN = 0x03,
    FU_ELF_FILE_HEADER_TYPE_CORE = 0x04,
} FuElfFileHeaderType;
typedef enum {
    FU_ELF_SECTION_HEADER_TYPE_NULL = 0x0,
    FU_ELF_SECTION_HEADER_TYPE_PROGBITS = 0x1,
    FU_ELF_SECTION_HEADER_TYPE_SYMTAB = 0x2,
    FU_ELF_SECTION_HEADER_TYPE_STRTAB = 0x3,
    FU_ELF_SECTION_HEADER_TYPE_RELA = 0x4,
    FU_ELF_SECTION_HEADER_TYPE_HASH = 0x5,
    FU_ELF_SECTION_HEADER_TYPE_DYNAMIC = 0x6,
    FU_ELF_SECTION_HEADER_TYPE_NOTE = 0x7,
    FU_ELF_SECTION_HEADER_TYPE_NOBITS = 0x8,
    FU_ELF_SECTION_HEADER_TYPE_REL = 0x9,
    FU_ELF_SECTION_HEADER_TYPE_SHLIB = 0x0a,
    FU_ELF_SECTION_HEADER_TYPE_DYNSYM = 0x0b,
    FU_ELF_SECTION_HEADER_TYPE_INIT_ARRAY = 0x0e,
    FU_ELF_SECTION_HEADER_TYPE_FINI_ARRAY = 0x0f,
    FU_ELF_SECTION_HEADER_TYPE_PREINIT_ARRAY = 0x10,
    FU_ELF_SECTION_HEADER_TYPE_GROUP = 0x11,
    FU_ELF_SECTION_HEADER_TYPE_SYMTAB_SHNDX = 0x12,
    FU_ELF_SECTION_HEADER_TYPE_NUM = 0x13,
} FuElfSectionHeaderType;

GByteArray *fu_struct_elf_file_header64le_parse_bytes(GBytes *blob, gsize offset, GError **error);
gboolean fu_struct_elf_file_header64le_validate_bytes(GBytes *blob, gsize offset, GError **error);
guint8 fu_struct_elf_file_header64le_get_ei_osabi(const GByteArray *st);
guint8 fu_struct_elf_file_header64le_get_ei_abiversion(const GByteArray *st);
FuElfFileHeaderType fu_struct_elf_file_header64le_get_type(const GByteArray *st);
guint16 fu_struct_elf_file_header64le_get_machine(const GByteArray *st);
guint64 fu_struct_elf_file_header64le_get_entry(const GByteArray *st);
guint64 fu_struct_elf_file_header64le_get_phoff(const GByteArray *st);
guint64 fu_struct_elf_file_header64le_get_shoff(const GByteArray *st);
guint32 fu_struct_elf_file_header64le_get_flags(const GByteArray *st);
guint16 fu_struct_elf_file_header64le_get_ehsize(const GByteArray *st);
guint16 fu_struct_elf_file_header64le_get_phentsize(const GByteArray *st);
guint16 fu_struct_elf_file_header64le_get_phnum(const GByteArray *st);
guint16 fu_struct_elf_file_header64le_get_shentsize(const GByteArray *st);
guint16 fu_struct_elf_file_header64le_get_shnum(const GByteArray *st);
guint16 fu_struct_elf_file_header64le_get_shstrndx(const GByteArray *st);
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_EI_MAGIC 0x0
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_EI_CLASS 0x4
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_EI_DATA 0x5
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_EI_VERSION 0x6
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_EI_OSABI 0x7
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_EI_ABIVERSION 0x8
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_TYPE 0x10
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_MACHINE 0x12
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_VERSION 0x14
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_ENTRY 0x18
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_PHOFF 0x20
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_SHOFF 0x28
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_FLAGS 0x30
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_EHSIZE 0x34
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_PHENTSIZE 0x36
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_PHNUM 0x38
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_SHENTSIZE 0x3A
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_SHNUM 0x3C
#define FU_STRUCT_ELF_FILE_HEADER64LE_OFFSET_SHSTRNDX 0x3E
#define FU_STRUCT_ELF_FILE_HEADER64LE_SIZE_EI_MAGIC 0x4
#define FU_STRUCT_ELF_FILE_HEADER64LE_SIZE 0x40
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_EI_MAGIC "\x7F\x45\x4C\x46"
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_EI_CLASS 0x2
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_EI_DATA 0x1
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_EI_VERSION 0x1
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_EI_OSABI 0x3
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_VERSION 0x1
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_PHOFF 64
#define FU_STRUCT_ELF_FILE_HEADER64LE_DEFAULT_EHSIZE 64

GByteArray *fu_struct_elf_program_header64le_parse_bytes(GBytes *blob, gsize offset, GError **error);
guint32 fu_struct_elf_program_header64le_get_flags(const GByteArray *st);
guint64 fu_struct_elf_program_header64le_get_offset(const GByteArray *st);
guint64 fu_struct_elf_program_header64le_get_vaddr(const GByteArray *st);
guint64 fu_struct_elf_program_header64le_get_paddr(const GByteArray *st);
guint64 fu_struct_elf_program_header64le_get_filesz(const GByteArray *st);
guint64 fu_struct_elf_program_header64le_get_memsz(const GByteArray *st);
guint32 fu_struct_elf_program_header64le_get_flags2(const GByteArray *st);
guint64 fu_struct_elf_program_header64le_get_align(const GByteArray *st);
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_FLAGS 0x0
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_OFFSET 0x4
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_VADDR 0xC
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_PADDR 0x14
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_FILESZ 0x1C
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_MEMSZ 0x24
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_FLAGS2 0x2C
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_OFFSET_ALIGN 0x30
#define FU_STRUCT_ELF_PROGRAM_HEADER64LE_SIZE 0x38

GByteArray *fu_struct_elf_section_header64le_parse_bytes(GBytes *blob, gsize offset, GError **error);
guint32 fu_struct_elf_section_header64le_get_name(const GByteArray *st);
FuElfSectionHeaderType fu_struct_elf_section_header64le_get_type(const GByteArray *st);
guint64 fu_struct_elf_section_header64le_get_flags(const GByteArray *st);
guint64 fu_struct_elf_section_header64le_get_addr(const GByteArray *st);
guint64 fu_struct_elf_section_header64le_get_offset(const GByteArray *st);
guint64 fu_struct_elf_section_header64le_get_size(const GByteArray *st);
guint32 fu_struct_elf_section_header64le_get_link(const GByteArray *st);
guint32 fu_struct_elf_section_header64le_get_info(const GByteArray *st);
guint64 fu_struct_elf_section_header64le_get_addralign(const GByteArray *st);
guint64 fu_struct_elf_section_header64le_get_entsize(const GByteArray *st);
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_NAME 0x0
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_TYPE 0x4
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_FLAGS 0x8
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_ADDR 0x10
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_OFFSET 0x18
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_SIZE 0x20
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_LINK 0x28
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_INFO 0x2C
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_ADDRALIGN 0x30
#define FU_STRUCT_ELF_SECTION_HEADER64LE_OFFSET_ENTSIZE 0x38
#define FU_STRUCT_ELF_SECTION_HEADER64LE_SIZE 0x40
